fix: defend against missing structured output and message without content

- Fall back to text result when success subtype has no structured_output
- Treat outputType 'message' without userMessage as 'log' with warning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
gavrielc
2026-02-06 20:29:04 +02:00
parent 2ecda36df2
commit 8dd27bc58d

View File

@@ -294,10 +294,14 @@ async function main(): Promise<void> {
if (message.type === 'result') { if (message.type === 'result') {
if (message.subtype === 'success' && message.structured_output) { if (message.subtype === 'success' && message.structured_output) {
result = message.structured_output as AgentResponse; result = message.structured_output as AgentResponse;
if (result.outputType === 'message' && !result.userMessage) {
log('Warning: outputType is "message" but userMessage is missing, treating as "log"');
result = { outputType: 'log', internalLog: result.internalLog };
}
log(`Agent result: outputType=${result.outputType}${result.internalLog ? `, log=${result.internalLog}` : ''}`); log(`Agent result: outputType=${result.outputType}${result.internalLog ? `, log=${result.internalLog}` : ''}`);
} else if (message.subtype === 'error_max_structured_output_retries') { } else if (message.subtype === 'success' || message.subtype === 'error_max_structured_output_retries') {
// Agent couldn't produce valid structured output — fall back to text result // Structured output missing or agent couldn't produce valid structured output — fall back to text
log('Agent failed to produce structured output, falling back to text'); log(`Structured output unavailable (subtype=${message.subtype}), falling back to text`);
const textResult = 'result' in message ? (message as { result?: string }).result : null; const textResult = 'result' in message ? (message as { result?: string }).result : null;
if (textResult) { if (textResult) {
result = { outputType: 'message', userMessage: textResult }; result = { outputType: 'message', userMessage: textResult };