fix: preserve code agent sessions after turn failures

This commit is contained in:
Codex
2026-06-03 00:28:40 +08:00
parent 4187c1b0ce
commit 0d4f5ef098
14 changed files with 72 additions and 52 deletions
+8 -1
View File
@@ -502,7 +502,7 @@ export async function handleCodeAgentChatResultHttp(request, response, url, opti
}
if (synced.result && synced.result.status !== "running") {
recordCodeAgentConversationFact(synced.result, options);
await recordCodeAgentSessionOwner({ payload: synced.result, params: synced.result, options, status: synced.result.status === "completed" ? "active" : synced.result.status });
await recordCodeAgentSessionOwner({ payload: synced.result, params: synced.result, options, status: codeAgentOwnerStatusForResult(synced.result) });
sendJson(response, 200, compactCodeAgentChatResultPayload(synced.result, options));
return;
}
@@ -1057,6 +1057,13 @@ async function recordCodeAgentSessionOwner({ payload = {}, params = {}, options
}
}
function codeAgentOwnerStatusForResult(result = {}) {
if (result?.status === "completed") return "active";
if (result?.status === "canceled" || result?.status === "cancelled") return "canceled";
if (result?.agentRun && result?.reuseEligible !== false && result?.agentRun?.reuseEligible !== false) return "active";
return result?.status ?? "active";
}
async function claimWorkbenchWorkspaceTurn({ params = {}, options = {}, traceId, response } = {}) {
const workspaceId = safeWorkspaceId(params.workspaceId);
if (!workspaceId || !options.accessController?.store || !options.actor) return null;