From 8dd27bc58d0fa373c57129974df0bccaa783bfd8 Mon Sep 17 00:00:00 2001 From: gavrielc Date: Fri, 6 Feb 2026 20:29:04 +0200 Subject: [PATCH] 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 --- container/agent-runner/src/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/container/agent-runner/src/index.ts b/container/agent-runner/src/index.ts index f3a103a..fd57e7e 100644 --- a/container/agent-runner/src/index.ts +++ b/container/agent-runner/src/index.ts @@ -294,10 +294,14 @@ async function main(): Promise { if (message.type === 'result') { if (message.subtype === 'success' && message.structured_output) { 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}` : ''}`); - } else if (message.subtype === 'error_max_structured_output_retries') { - // Agent couldn't produce valid structured output — fall back to text result - log('Agent failed to produce structured output, falling back to text'); + } else if (message.subtype === 'success' || message.subtype === 'error_max_structured_output_retries') { + // Structured output missing or agent couldn't produce valid structured output — fall 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; if (textResult) { result = { outputType: 'message', userMessage: textResult };