mirror of
https://github.com/wu736139669/hapi.git
synced 2026-11-08 01:43:07 +00:00
Fix Codex subagent final result preservation (#602)
This commit is contained in:
@@ -279,7 +279,10 @@ describe('AppServerEventConverter', () => {
|
||||
status: 'completed',
|
||||
receiverThreadIds: ['agent-1'],
|
||||
agentsStates: {
|
||||
'agent-1': { status: 'completed', message: '42' }
|
||||
'agent-1': { status: 'completed', message: '42' },
|
||||
'agent-2': { status: 'done', message: null },
|
||||
'agent-3': { status: 'done', result: { text: 'structured result' } },
|
||||
'agent-4': { status: 'completed', message: '', output: { value: 42 } }
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -289,7 +292,10 @@ describe('AppServerEventConverter', () => {
|
||||
name: 'wait_agent',
|
||||
output: {
|
||||
status: {
|
||||
'agent-1': { completed: '42' }
|
||||
'agent-1': { completed: '42' },
|
||||
'agent-2': { status: 'completed', message: null },
|
||||
'agent-3': { status: 'completed', result: { text: 'structured result' } },
|
||||
'agent-4': { status: 'completed', message: '', output: { value: 42 } }
|
||||
},
|
||||
timed_out: false
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user