Fix Codex subagent final result preservation (#602)

This commit is contained in:
SmallSpider
2026-05-09 08:58:31 +08:00
committed by GitHub
parent 752a505973
commit 3eac3456b4
4 changed files with 352 additions and 33 deletions
+15 -4
View File
@@ -295,11 +295,22 @@ function statusObjectFromAgentState(value: unknown): unknown {
const record = asRecord(value);
if (!record) return value;
const message = asString(record.message);
const message = asString(record.message)
?? asString(record.output)
?? asString(record.result)
?? asString(record.finalMessage)
?? asString(record.final_message);
const status = asString(record.status ?? record.state);
if (status === 'completed' && message) return { completed: message };
if ((status === 'failed' || status === 'error') && message) return { failed: message };
if ((status === 'canceled' || status === 'cancelled') && message) return { canceled: message };
const normalizedStatus = status?.trim().toLowerCase().replace(/[\s_-]/g, '');
const completed = normalizedStatus === 'completed'
|| normalizedStatus === 'complete'
|| normalizedStatus === 'done'
|| record.completed === true
|| record.done === true;
if (completed && message) return { completed: message };
if (completed) return { ...record, status: 'completed' };
if ((normalizedStatus === 'failed' || normalizedStatus === 'error') && message) return { failed: message };
if ((normalizedStatus === 'canceled' || normalizedStatus === 'cancelled') && message) return { canceled: message };
return value;
}