fix: require explicit agentrun terminal events

This commit is contained in:
lyon
2026-06-22 06:05:23 +08:00
parent 437ea223bb
commit ba49294ea7
2 changed files with 12 additions and 6 deletions
@@ -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);
+8 -2
View File
@@ -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;
}