diff --git a/dist/acp-agent.js b/dist/acp-agent.js --- a/dist/acp-agent.js +++ b/dist/acp-agent.js @@ -451,6 +451,7 @@ export class ClaudeAcpAgent { let handedOff = false; let errored = false; let stopReason = "end_turn"; + let sawResult = false; try { while (true) { const { value: message, done } = await session.query.next(); @@ -458,6 +459,9 @@ export class ClaudeAcpAgent { if (session.cancelled) { return { stopReason: "cancelled" }; } + if (sawResult) { + return { stopReason, usage: sessionUsage(session) }; + } break; } if (session.emitRawSDKMessages && @@ -562,7 +566,7 @@ export class ClaudeAcpAgent { break; } case "session_state_changed": { - if (message.state === "idle") { + if (message.state === "idle" && sawResult) { if (session.cancelled) { stopReason = "cancelled"; } @@ -728,6 +732,9 @@ export class ClaudeAcpAgent { unreachable(message, this.logger); break; } + if (!isTaskNotification) { + sawResult = true; + } break; } case "stream_event": {