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:
@@ -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 };
|
||||||
|
|||||||
Reference in New Issue
Block a user