{"record":{"id":"8cc873b7244bf066","repo":"JuliusBrussee/caveman","slug":"cave-tool-result-requires-recovery","errorCode":null,"errorMessage":"cave_tool_result_requires_recovery","messagePattern":"cave_tool_result_requires_recovery","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/agent/src/runtime.ts","lineNumber":3772,"sourceCode":"        if (raw.byteLength > maxInlineBytes) throw new Error(\"cave_tool_result_inline_limit\");\n        return {\n          content: [{ type: \"text\", text: text ?? \"null\" }],\n          details: { effect: definition.effect, resultPolicy: definition.result },\n        };\n      }\n      const mustOffload = definition.result === \"page\" ||\n        definition.result === \"compress\" ||\n        definition.result === \"exact_ccr\" ||\n        raw.byteLength > maxInlineBytes;\n      if (!mustOffload) {\n        return {\n          content: [{ type: \"text\", text: text ?? \"null\" }],\n          details: { effect: definition.effect, resultPolicy: definition.result },\n        };\n      }\n      const transformed = await engineCompress(raw, engineBin);\n      if (!transformed.handle || !recoveryHandles) {\n        throw new Error(\"cave_tool_result_requires_recovery\");\n      }\n      const recovered = await engineRetrieve(transformed.handle, undefined, engineBin);\n      if (!bytesEqual(recovered, raw)) throw new Error(\"cave_tool_result_recovery_mismatch\");\n      recoveryHandles.add(transformed.handle);\n      const compressed = new TextDecoder().decode(transformed.output);\n      return {\n        content: [{\n          type: \"text\",\n          text: [\n            compressed,\n            `<<cave_retrieve:${transformed.handle}>>`,\n            definition.result === \"page\"\n              ? \"Use cave_retrieve with a narrow query to page relevant detail.\"\n              : \"Use cave_retrieve for omitted detail.\",\n          ].join(\"\\n\"),\n        }],\n        details: {\n          effect: definition.effect,","sourceCodeStart":3754,"sourceCodeEnd":3790,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/packages/agent/src/runtime.ts#L3754-L3790","documentation":"Error \"cave_tool_result_requires_recovery\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at packages/agent/src/runtime.ts:3772 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The tool result must carry recovery metadata; emit the result through the recovery-aware path."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}