From ba49294ea70624211e8ad1a5b8ead5bd1f774118 Mon Sep 17 00:00:00 2001 From: lyon Date: Mon, 22 Jun 2026 06:05:23 +0800 Subject: [PATCH] fix: require explicit agentrun terminal events --- internal/cloud/code-agent-agentrun-adapter.ts | 8 ++++---- internal/cloud/server-code-agent-http.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/internal/cloud/code-agent-agentrun-adapter.ts b/internal/cloud/code-agent-agentrun-adapter.ts index 995db6a5..fa8a1198 100644 --- a/internal/cloud/code-agent-agentrun-adapter.ts +++ b/internal/cloud/code-agent-agentrun-adapter.ts @@ -715,8 +715,8 @@ async function writeWorkbenchProjectionStateForAgentRun(runtimeStore, params = { function agentRunCommandResultSyncRequired(mapped = {}, eventsResponse = null) { const agentRun = mapped?.agentRun && typeof mapped.agentRun === "object" ? mapped.agentRun : {}; - if (isAgentRunTerminalStatus(mapped?.status)) return true; - if (isAgentRunTerminalStatus(agentRun.terminalStatus ?? agentRun.commandState ?? agentRun.status)) return true; + if (agentRunTerminalResultRefreshSatisfied(mapped, mapped?.traceId)) return true; + if (isAgentRunTerminalStatus(agentRun.terminalStatus ?? agentRun.commandState)) return true; return Boolean(agentRunTerminalStatusFromEvents(eventsResponse?.events)); } @@ -755,8 +755,8 @@ function agentRunTerminalStatusFromEvents(events = []) { event?.type === "terminal_status" ? payload.terminalStatus : null, payload.phase === "command-terminal" ? payload.terminalStatus : null, payload.phase === "turn:completed" || payload.phase === "turn/steer:completed" ? "completed" : null, - payload.terminalStatus, - payload.status + event?.terminal === true || event?.final === true || event?.replyAuthority === true ? payload.terminalStatus ?? payload.status ?? event?.status ?? "completed" : null, + payload.terminal === true ? payload.terminalStatus ?? payload.status ?? "completed" : null ]; for (const value of candidates) { const status = normalizeAgentRunStatus(value); diff --git a/internal/cloud/server-code-agent-http.ts b/internal/cloud/server-code-agent-http.ts index b9182a97..588636b2 100644 --- a/internal/cloud/server-code-agent-http.ts +++ b/internal/cloud/server-code-agent-http.ts @@ -1680,7 +1680,7 @@ function codeAgentPayloadWithObservedTerminalStatus(payload, runnerTrace) { function codeAgentObservedTerminalStatus(result, runnerTrace) { const agentRun = result?.agentRun && typeof result.agentRun === "object" ? result.agentRun : {}; if (codeAgentPayloadHasSealedFinalResponse(result)) return "completed"; - for (const value of [result?.status, agentRun.status, agentRun.runStatus, agentRun.commandState, agentRun.terminalStatus]) { + for (const value of [agentRun.terminalStatus, agentRun.commandState]) { const terminalStatus = normalizeCodeAgentTerminalStatus(value); if (terminalStatus) return terminalStatus; } @@ -1691,7 +1691,13 @@ function codeAgentObservedTerminalStatus(result, runnerTrace) { const payload = event?.payload && typeof event.payload === "object" ? event.payload : {}; const eventCommandId = textValue(event?.commandId ?? payload.commandId); if (commandId && eventCommandId && eventCommandId !== commandId) continue; - for (const value of [event?.status, payload.status, payload.terminalStatus, payload.phase === "command-terminal" ? payload.terminalStatus : null, event?.terminal === true ? "completed" : null]) { + for (const value of [ + event?.type === "terminal_status" ? payload.terminalStatus : null, + payload.phase === "command-terminal" ? payload.terminalStatus : null, + payload.phase === "turn:completed" || payload.phase === "turn/steer:completed" ? "completed" : null, + event?.terminal === true || event?.final === true || event?.replyAuthority === true ? payload.terminalStatus ?? payload.status ?? event.status ?? "completed" : null, + payload.terminal === true ? payload.terminalStatus ?? payload.status ?? "completed" : null + ]) { const terminalStatus = normalizeCodeAgentTerminalStatus(value); if (terminalStatus) return terminalStatus; }