
























@@ -68,36 +68,41 @@ async function flushMicrotasks(): Promise<void> {
6868await Promise.resolve();
6969}
707071+function createAgentWithSession(query: ManualAsyncIterator) {
72+const agent = new ClaudeAcpAgent({
73+sessionUpdate: vi.fn(),
74+extNotification: vi.fn(),
75+} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);
76+agent.sessions["session-1"] = {
77+cancelled: false,
78+accumulatedUsage: {
79+inputTokens: 0,
80+outputTokens: 0,
81+cachedReadTokens: 0,
82+cachedWriteTokens: 0,
83+},
84+contextWindowSize: 200_000,
85+cwd: "/tmp",
86+emitRawSDKMessages: false,
87+input: {
88+push: vi.fn(),
89+end: vi.fn(),
90+},
91+nextPendingOrder: 0,
92+pendingMessages: new Map(),
93+promptRunning: false,
94+ query,
95+settingsManager: {
96+dispose: vi.fn(),
97+},
98+} as unknown as (typeof agent.sessions)[string];
99+return agent;
100+}
101+71102describe("patched claude-agent-acp completion", () => {
72103it("does not resolve a prompt on idle before the result message", async () => {
73104const query = new ManualAsyncIterator();
74-const agent = new ClaudeAcpAgent({
75-sessionUpdate: vi.fn(),
76-extNotification: vi.fn(),
77-} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);
78-agent.sessions["session-1"] = {
79-cancelled: false,
80-accumulatedUsage: {
81-inputTokens: 0,
82-outputTokens: 0,
83-cachedReadTokens: 0,
84-cachedWriteTokens: 0,
85-},
86-contextWindowSize: 200_000,
87-cwd: "/tmp",
88-emitRawSDKMessages: false,
89-input: {
90-push: vi.fn(),
91-end: vi.fn(),
92-},
93-nextPendingOrder: 0,
94-pendingMessages: new Map(),
95-promptRunning: false,
96- query,
97-settingsManager: {
98-dispose: vi.fn(),
99-},
100-} as unknown as (typeof agent.sessions)[string];
105+const agent = createAgentWithSession(query);
101106102107let resolved = false;
103108const promptPromise = agent
@@ -127,33 +132,7 @@ describe("patched claude-agent-acp completion", () => {
127132128133it("does not resolve a prompt after a task-notification result goes idle", async () => {
129134const query = new ManualAsyncIterator();
130-const agent = new ClaudeAcpAgent({
131-sessionUpdate: vi.fn(),
132-extNotification: vi.fn(),
133-} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);
134-agent.sessions["session-1"] = {
135-cancelled: false,
136-accumulatedUsage: {
137-inputTokens: 0,
138-outputTokens: 0,
139-cachedReadTokens: 0,
140-cachedWriteTokens: 0,
141-},
142-contextWindowSize: 200_000,
143-cwd: "/tmp",
144-emitRawSDKMessages: false,
145-input: {
146-push: vi.fn(),
147-end: vi.fn(),
148-},
149-nextPendingOrder: 0,
150-pendingMessages: new Map(),
151-promptRunning: false,
152- query,
153-settingsManager: {
154-dispose: vi.fn(),
155-},
156-} as unknown as (typeof agent.sessions)[string];
135+const agent = createAgentWithSession(query);
157136158137let resolved = false;
159138const promptPromise = agent
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。