{"record":{"id":"ba44b3bd8c7e04e1","repo":"coleam00/Archon","slug":"node-node-id-timed-out-no-output-for-stri","errorCode":null,"errorMessage":"Node '${node.id}': timed out (no output for ${String(effectiveIdleTimeout / 60000)} min) before producing the required structured output.","messagePattern":"Node '(.+?)': timed out \\(no output for (.+?) min\\) before producing the required structured output\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/workflows/src/dag-executor.ts","lineNumber":3069,"sourceCode":"        }\n        throw new Error(\n          `Node '${node.id}': output_format declared but the provider's structured output failed schema validation: ${validation.errors.join('; ')}`\n        );\n      }\n\n      // No structured output at all (prose / refusal / parse miss / timeout).\n      getLog().warn(\n        { nodeId: node.id, workflowRunId: workflowRun.id },\n        'dag.structured_output_missing'\n      );\n      if (canReask) {\n        await scheduleReask(['no JSON object was found in the response']);\n        continue;\n      }\n      // Surface the real cause: a timeout/abort produces no structured output too,\n      // and reporting it as \"the model replied with prose\" would mislead.\n      if (nodeIdleTimedOut) {\n        throw new Error(\n          `Node '${node.id}': timed out (no output for ${String(effectiveIdleTimeout / 60000)} min) before producing the required structured output.`\n        );\n      }\n      throw new Error(\n        `Node '${node.id}': output_format declared but the provider returned no schema-valid structured output. ` +\n          'The model likely replied with prose, refused, or emitted unparseable JSON.'\n      );\n    }\n\n    // Only post \"completed via idle timeout\" when output exists — zero-output timeout falls through to the empty-output guard below.\n    if (nodeIdleTimedOut && (nodeOutputText.trim() !== '' || structuredOutput !== undefined)) {\n      getLog().warn(\n        { nodeId: node.id, timeoutMs: effectiveIdleTimeout },\n        'dag_node_completed_via_idle_timeout'\n      );\n      await safeSendMessage(\n        platform,\n        conversationId,","sourceCodeStart":3051,"sourceCodeEnd":3087,"githubUrl":"https://github.com/coleam00/Archon/blob/0773b9745896ef0612e709c80845a0f7db315b19/packages/workflows/src/dag-executor.ts#L3051-L3087","documentation":"When a node declares output_format and the turn ends via idle timeout (no output for effectiveIdleTimeout minutes) before any structured output was produced, the executor throws this dedicated timeout error rather than the generic 'no schema-valid structured output' message, so the real cause (a timeout/abort) is not misreported as the model replying with prose.","triggerScenarios":"The node's idle-timeout fired (no streaming output for effectiveIdleTimeout/60000 minutes) while output_format was declared and no valid structured output had arrived yet.","commonSituations":"Model hung or provider stalled mid-generation; extremely long generation exceeding the idle window; network stall; idle timeout configured too aggressively for a slow model or big output.","solutions":["Increase the node's idle timeout so long generations are not cut off.","Check provider status/network — a stalled stream is often environmental.","Reduce output size or use a faster model so generation fits the idle window.","Add retry so a timed-out attempt is retried instead of failing the run."],"exampleFix":"// before\nnode:\n  idle_timeout_ms: 60000\n// after\nnode:\n  idle_timeout_ms: 600000","handlingStrategy":"retry","validationCode":"// ensure idle timeout is generous relative to expected generation time\nif (node.idle_timeout_ms !== undefined && node.idle_timeout_ms < 120000) console.warn('idle_timeout_ms < 2min may cut off slow generations');","typeGuard":null,"tryCatchPattern":"try {\n  await runNode(node);\n} catch (e) {\n  if (String(e).includes('timed out (no output')) await retryWithBackoff(() => runNode(node), { attempts: 2 });\n  else throw e;\n}","preventionTips":["Set idle timeouts well above worst-case generation latency.","Check network stability and provider status for stalled streams.","Configure retry policy on structured-output nodes."],"tags":["timeout","structured-output","streaming"],"backgroundTag":"idle-timeout-no-output","analyzedSha":"0773b9745896ef0612e709c80845a0f7db315b19","analyzedAt":"2026-09-01T02:28:07.064Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}