fix: preserve code agent sessions after turn failures
This commit is contained in:
@@ -907,13 +907,14 @@ function agentRunResultToCodeAgentPayload({ base, result, traceStore, traceId })
|
||||
valuesPrinted: false
|
||||
});
|
||||
const partialContext = partialAgentRunContext(runnerTrace);
|
||||
const recoverableFailure = !canceled;
|
||||
return {
|
||||
...base,
|
||||
status: canceled ? "canceled" : "failed",
|
||||
canceled,
|
||||
updatedAt: now,
|
||||
session: agentRunSessionSummary(base, canceled ? "canceled" : "failed"),
|
||||
sessionReuse: agentRunSessionReuseSummary(base, base.agentRun.reused === true),
|
||||
session: agentRunSessionSummary(base, canceled ? "canceled" : "idle"),
|
||||
sessionReuse: agentRunSessionReuseSummary(base, base.agentRun.reused === true, { status: recoverableFailure ? "available-after-failed-command" : undefined }),
|
||||
runner: agentRunRunnerSummary(base.agentRun),
|
||||
runnerTrace: partialContext ? { ...runnerTrace, partialContext } : runnerTrace,
|
||||
toolCalls: agentRunToolCalls(result, canceled ? "canceled" : "failed"),
|
||||
@@ -940,7 +941,8 @@ function agentRunResultToCodeAgentPayload({ base, result, traceStore, traceId })
|
||||
route: "/v1/agent/chat",
|
||||
toolName: "agentrun.manual-dispatch"
|
||||
},
|
||||
agentRun: { ...base.agentRun, terminalStatus, completed: false, providerTrace, valuesPrinted: false },
|
||||
agentRun: { ...base.agentRun, terminalStatus, completed: false, reuseEligible: recoverableFailure, providerTrace, valuesPrinted: false },
|
||||
reuseEligible: recoverableFailure,
|
||||
...(partialContext ? { partialContext } : {}),
|
||||
valuesPrinted: false
|
||||
};
|
||||
@@ -1318,13 +1320,13 @@ function agentRunSessionSummary(base, status) {
|
||||
};
|
||||
}
|
||||
|
||||
function agentRunSessionReuseSummary(base, reused) {
|
||||
function agentRunSessionReuseSummary(base, reused, options = {}) {
|
||||
return {
|
||||
sessionId: base.sessionId ?? base.agentRun?.sessionId ?? null,
|
||||
conversationId: base.conversationId ?? base.agentRun?.conversationId ?? null,
|
||||
threadId: base.threadId ?? base.agentRun?.threadId ?? null,
|
||||
reused: Boolean(reused),
|
||||
status: reused ? "reused" : "new",
|
||||
status: options.status ?? (reused ? "reused" : "new"),
|
||||
runnerReused: Boolean(reused),
|
||||
valuesRedacted: true
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user