@caupulican/pi-agent-core 0.93.2 → 0.93.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +10 -8
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent.d.ts +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +2 -2
- package/dist/agent.js.map +1 -1
- package/dist/tool-failure-memory.d.ts +2 -0
- package/dist/tool-failure-memory.d.ts.map +1 -1
- package/dist/tool-failure-memory.js +14 -0
- package/dist/tool-failure-memory.js.map +1 -1
- package/dist/tool-failure-recovery-gate.d.ts +17 -8
- package/dist/tool-failure-recovery-gate.d.ts.map +1 -1
- package/dist/tool-failure-recovery-gate.js +162 -121
- package/dist/tool-failure-recovery-gate.js.map +1 -1
- package/dist/types.d.ts +12 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-failure-memory.js","sourceRoot":"","sources":["../src/tool-failure-memory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tgetToolExecutionAttemptMemory,\n\tgetToolExecutionErrorPolicy,\n\ttype ToolFailurePhase,\n} from \"@caupulican/pi-ai/tool-repair-registry\";\nimport type { AssistantMessage, ToolResultMessage } from \"@caupulican/pi-ai/types\";\nimport {\n\tMANDATORY_TOOL_FAILURE_RECOVERY_PROTOCOL_PROMPT,\n\tmandatoryToolFailureRecoveryMetadata,\n} from \"./tool-failure-recovery-protocol.ts\";\nimport type { AgentMessage, AgentToolCall, AgentToolResult } from \"./types.ts\";\nimport { sanitizeBinaryOutput } from \"./utils/shell-output.ts\";\n\nconst TOOL_FAILURE_MEMORY_VERSION = 1;\nconst TOOL_FAILURE_DIRECTIVE_VERSION = 1;\nconst TOOL_FAILURE_EXECUTION_KEY = Symbol(\"ToolFailureExecutionKey\");\nconst MAX_OPERATION_CHARS = 240;\nconst MAX_FAILURE_CODE_CHARS = 48;\nconst MAX_DIAGNOSTIC_CHARS = 240;\nconst MAX_CORRECTION_CHARS = 320;\nconst MAX_TOOL_NAME_CHARS = 64;\nconst TOOL_SIGNATURE_HEX_CHARS = 32;\nconst MAX_ACTIVE_FAILURES = 8;\nconst MAX_TRACKED_FAILURES = 64;\nconst REPAIRABLE_REJECTION_CODES = new Set([\"invalid_arguments\", \"malformed_call\", \"unknown_tool\"]);\nconst LEGACY_GENERIC_EXECUTION_CORRECTION =\n\t\"Change the arguments or approach before retrying; do not resend the unchanged operation.\";\nconst BLOCKED_REPLAY_CAVEMAN_CORRECTION =\n\t\"CAVEMAN MODE - MANDATORY. SAME OPERATION BLOCKED. Do not repeat an unchanged operation. NEVER call it again with the same arguments in this run. This is not a harness loop or failure.\";\nconst CLOSED_OPERATION_CAVEMAN_CORRECTION =\n\t\"CAVEMAN MODE - MANDATORY: OPERATION CLOSED; not executed. Do not repeat an unchanged operation. NEVER call it again with the same arguments in this run. Use a different operation/tool or continue independent work. The recovery guard prevented a loop; this is not harness failure.\";\n\nexport type ToolFailureState = \"failed\" | \"rejected\";\n\nexport interface ToolFailureMemoryRecord {\n\tversion: typeof TOOL_FAILURE_MEMORY_VERSION;\n\tfailureKey: string;\n\t/** Exact identity is process-internal and omitted from serialized failure memory. */\n\treadonly [TOOL_FAILURE_EXECUTION_KEY]?: string;\n\ttool: string;\n\toperation: string;\n\toccurrence: number;\n\tkindMistakes?: number;\n\tmistakeKind?: string;\n\tstate: ToolFailureState;\n\tphase: ToolFailurePhase;\n\tfailureCode: string;\n\tdiagnostic?: string;\n\tcorrection: string;\n\tattemptMemory?: \"discard\";\n}\n\nexport interface ToolFailureMemoryDetails {\n\tpiToolFailureMemory: ToolFailureMemoryRecord;\n}\n\nexport interface ToolFailureDirectiveDetails {\n\tpiToolFailureDirective: {\n\t\tversion: typeof TOOL_FAILURE_DIRECTIVE_VERSION;\n\t\tstate: ToolFailureState;\n\t\tphase: ToolFailurePhase;\n\t\tfailureCode: string;\n\t\tdiagnostic?: string;\n\t\tnextAction: string;\n\t};\n}\n\nexport type ToolFailureResultDetails = ToolFailureMemoryDetails | ToolFailureDirectiveDetails;\n\nexport type ToolFailureMemoryTracker = Map<string, ToolFailureMemoryRecord>;\n\ninterface ToolOperationIdentity {\n\tfailureKey: string;\n\texecutionKey: string;\n\ttool: string;\n\toperation: string;\n}\n\ninterface ActiveFailure {\n\trecord: ToolFailureMemoryRecord;\n\tsequence: number;\n}\n\ninterface FailureContextAnalysis {\n\tmessages: AgentMessage[];\n\tactiveRecords: ToolFailureMemoryRecord[];\n\tactiveDirectives: ToolFailureDirectiveDetails[\"piToolFailureDirective\"][];\n\tkindMistakesSummary: Record<string, number>;\n}\n\nfunction truncate(value: string, maxChars: number): string {\n\tif (value.length <= maxChars) return value;\n\tlet end = maxChars - 1;\n\tconst code = value.charCodeAt(end - 1);\n\tif (code >= 0xd800 && code <= 0xdbff) end--;\n\treturn `${value.slice(0, end)}…`;\n}\n\nfunction truncateMiddle(value: string, maxChars: number): string {\n\tif (value.length <= maxChars) return value;\n\tconst available = maxChars - 1;\n\tlet headEnd = Math.ceil(available / 2);\n\tlet tailStart = value.length - Math.floor(available / 2);\n\tconst headCode = value.charCodeAt(headEnd - 1);\n\tif (headCode >= 0xd800 && headCode <= 0xdbff) headEnd--;\n\tconst tailCode = value.charCodeAt(tailStart);\n\tif (tailCode >= 0xdc00 && tailCode <= 0xdfff) tailStart++;\n\treturn `${value.slice(0, headEnd)}…${value.slice(tailStart)}`;\n}\n\nfunction safeJson(value: unknown): string {\n\ttry {\n\t\treturn JSON.stringify(value) ?? \"null\";\n\t} catch {\n\t\treturn \"[unserializable]\";\n\t}\n}\n\ninterface SignatureHash {\n\tfirst: number;\n\tsecond: number;\n\tthird: number;\n\tfourth: number;\n}\n\nconst VOLATILE_SIGNATURE_PATTERN =\n\t/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|(\\d{4}-\\d{2}-\\d{2}[tT][0-9:.]+(?:z|[+-]\\d{2}:?\\d{2})?)|(\\b[0-9a-f]{16,}\\b)|(\\d{10,})/gi;\nconst MAX_SIGNATURE_DEPTH = 128;\nconst MAX_PREVIEW_DEPTH = 6;\nconst MAX_PREVIEW_ITEMS = 8;\nconst MAX_PREVIEW_STRING_CHARS = 96;\n\nfunction updateHashCode(hash: SignatureHash, code: number): void {\n\thash.first = Math.imul(hash.first ^ code, 0x01000193);\n\thash.second = Math.imul(hash.second ^ code, 0x85ebca6b);\n\thash.third = Math.imul(hash.third ^ code, 0x27d4eb2d);\n\thash.fourth = Math.imul(hash.fourth ^ code, 0x165667b1);\n}\n\nfunction updateHashRange(hash: SignatureHash, value: string, start = 0, end = value.length): void {\n\tfor (let index = start; index < end; index++) updateHashCode(hash, value.charCodeAt(index));\n}\n\nfunction updateNormalizedHashString(hash: SignatureHash, value: string): void {\n\tif (value.length < 10) {\n\t\tupdateExactHashString(hash, value);\n\t\treturn;\n\t}\n\tVOLATILE_SIGNATURE_PATTERN.lastIndex = 0;\n\tlet offset = 0;\n\tlet normalizedLength = value.length;\n\tfor (const match of value.matchAll(VOLATILE_SIGNATURE_PATTERN)) {\n\t\tconst index = match.index;\n\t\tupdateHashRange(hash, value, offset, index);\n\t\tconst replacement = match[1] ? \"<uuid>\" : match[2] ? \"<ts>\" : match[3] ? \"<hex>\" : \"<num>\";\n\t\tupdateHashRange(hash, replacement);\n\t\tnormalizedLength += replacement.length - match[0].length;\n\t\toffset = index + match[0].length;\n\t}\n\tupdateHashRange(hash, value, offset);\n\tupdateHashRange(hash, `:${normalizedLength};`);\n}\n\nfunction updateExactHashString(hash: SignatureHash, value: string): void {\n\tupdateHashRange(hash, value);\n\tupdateHashRange(hash, `:${value.length};`);\n}\n\nfunction updateStructuredHash(\n\thash: SignatureHash,\n\tvalue: unknown,\n\tactive: Set<object>,\n\tdepth: number,\n\tupdateHashString: (hash: SignatureHash, value: string) => void,\n): void {\n\tif (depth > MAX_SIGNATURE_DEPTH) {\n\t\tupdateHashRange(hash, \"depth;\");\n\t\treturn;\n\t}\n\tif (value === null) {\n\t\tupdateHashRange(hash, \"null;\");\n\t\treturn;\n\t}\n\tswitch (typeof value) {\n\t\tcase \"string\":\n\t\t\tupdateHashRange(hash, \"string:\");\n\t\t\tupdateHashString(hash, value);\n\t\t\treturn;\n\t\tcase \"number\":\n\t\t\tupdateHashRange(hash, \"number:\");\n\t\t\tupdateHashString(hash, Object.is(value, -0) ? \"-0\" : String(value));\n\t\t\treturn;\n\t\tcase \"boolean\":\n\t\t\tupdateHashRange(hash, value ? \"true;\" : \"false;\");\n\t\t\treturn;\n\t\tcase \"undefined\":\n\t\t\tupdateHashRange(hash, \"undefined;\");\n\t\t\treturn;\n\t\tcase \"bigint\":\n\t\t\tupdateHashRange(hash, `bigint:${value.toString()};`);\n\t\t\treturn;\n\t\tcase \"symbol\":\n\t\t\tupdateHashRange(hash, `symbol:${String(value.description ?? \"\")};`);\n\t\t\treturn;\n\t\tcase \"function\":\n\t\t\tupdateHashRange(hash, `function:${value.name};`);\n\t\t\treturn;\n\t\tcase \"object\":\n\t\t\tbreak;\n\t}\n\n\tif (active.has(value)) {\n\t\tupdateHashRange(hash, \"circular;\");\n\t\treturn;\n\t}\n\tactive.add(value);\n\tif (Array.isArray(value)) {\n\t\tupdateHashRange(hash, `array:${value.length}[`);\n\t\tfor (const item of value) updateStructuredHash(hash, item, active, depth + 1, updateHashString);\n\t\tupdateHashRange(hash, \"];\");\n\t} else {\n\t\tconst keys = Object.keys(value).sort();\n\t\tupdateHashRange(hash, `object:${keys.length}{`);\n\t\tfor (const key of keys) {\n\t\t\tupdateHashString(hash, key);\n\t\t\tupdateStructuredHash(hash, (value as Record<string, unknown>)[key], active, depth + 1, updateHashString);\n\t\t}\n\t\tupdateHashRange(hash, \"};\");\n\t}\n\tactive.delete(value);\n}\n\nfunction createSignatureHash(): SignatureHash {\n\treturn {\n\t\tfirst: 0x811c9dc5,\n\t\tsecond: 0x9e3779b9,\n\t\tthird: 0x85ebca6b,\n\t\tfourth: 0xc2b2ae35,\n\t};\n}\n\nfunction renderSignatureHash(hash: SignatureHash): string {\n\treturn [hash.first, hash.second, hash.third, hash.fourth]\n\t\t.map((part) => (part >>> 0).toString(16).padStart(8, \"0\"))\n\t\t.join(\"\");\n}\n\nfunction structuredHash(value: unknown, normalizeVolatile: boolean): string {\n\tconst hash = createSignatureHash();\n\tupdateStructuredHash(\n\t\thash,\n\t\tvalue,\n\t\tnew Set(),\n\t\t0,\n\t\tnormalizeVolatile ? updateNormalizedHashString : updateExactHashString,\n\t);\n\treturn renderSignatureHash(hash);\n}\n\nfunction boundedJsonPreview(value: unknown, maxChars: number): string {\n\tlet output = \"\";\n\tlet exhausted = false;\n\tconst active = new Set<object>();\n\tconst append = (text: string): void => {\n\t\tif (exhausted) return;\n\t\tconst available = maxChars - output.length;\n\t\tif (text.length <= available) {\n\t\t\toutput += text;\n\t\t\treturn;\n\t\t}\n\t\tif (available > 1) output += `${text.slice(0, available - 1)}…`;\n\t\texhausted = true;\n\t};\n\tconst visit = (item: unknown, depth: number): void => {\n\t\tif (exhausted) return;\n\t\tif (depth > MAX_PREVIEW_DEPTH) {\n\t\t\tappend('\"[depth]\"');\n\t\t\treturn;\n\t\t}\n\t\tif (typeof item === \"string\") {\n\t\t\tappend(safeJson(truncateMiddle(item, MAX_PREVIEW_STRING_CHARS)));\n\t\t\treturn;\n\t\t}\n\t\tif (item === null || typeof item === \"number\" || typeof item === \"boolean\") {\n\t\t\tappend(String(item));\n\t\t\treturn;\n\t\t}\n\t\tif (typeof item !== \"object\") {\n\t\t\tappend(safeJson(`[${typeof item}]`));\n\t\t\treturn;\n\t\t}\n\t\tif (active.has(item)) {\n\t\t\tappend('\"[circular]\"');\n\t\t\treturn;\n\t\t}\n\t\tactive.add(item);\n\t\tif (Array.isArray(item)) {\n\t\t\tappend(\"[\");\n\t\t\tconst count = Math.min(item.length, MAX_PREVIEW_ITEMS);\n\t\t\tfor (let index = 0; index < count && !exhausted; index++) {\n\t\t\t\tif (index > 0) append(\",\");\n\t\t\t\tvisit(item[index], depth + 1);\n\t\t\t}\n\t\t\tif (item.length > count) append(`${count > 0 ? \",\" : \"\"}\"[+${item.length - count} items]\"`);\n\t\t\tappend(\"]\");\n\t\t} else {\n\t\t\tappend(\"{\");\n\t\t\tlet count = 0;\n\t\t\tlet omitted = 0;\n\t\t\tconst keys = Object.keys(item).sort();\n\t\t\tfor (const key of keys) {\n\t\t\t\tif (count >= MAX_PREVIEW_ITEMS) {\n\t\t\t\t\tomitted++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (count > 0) append(\",\");\n\t\t\t\tappend(safeJson(truncateMiddle(key, MAX_PREVIEW_STRING_CHARS)));\n\t\t\t\tappend(\":\");\n\t\t\t\tvisit((item as Record<string, unknown>)[key], depth + 1);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tif (omitted > 0) append(`${count > 0 ? \",\" : \"\"}\"[omitted]\":${omitted}`);\n\t\t\tappend(\"}\");\n\t\t}\n\t\tactive.delete(item);\n\t};\n\tvisit(value, 0);\n\treturn truncateMiddle(output || \"null\", maxChars);\n}\n\n/**\n * Fingerprint a tool operation without materializing or retaining its serialized payload.\n * Volatile identifiers normalize before hashing; short numbers and ordinary paths remain significant.\n */\n/**\n * Resource-envelope fields are not the operation. Changing `timeout` (or a sibling wait bound)\n * must not mint a new execution identity — that is how a failed command is replayed forever.\n */\nconst OPERATION_ENVELOPE_KEYS = new Set([\n\t\"timeout\",\n\t\"timeoutms\",\n\t\"timeout_ms\",\n\t\"timeoutsec\",\n\t\"timeout_sec\",\n\t\"timeoutseconds\",\n\t\"timeout_seconds\",\n\t\"maxwait\",\n\t\"max_wait\",\n\t\"maxwaitms\",\n\t\"max_wait_ms\",\n\t\"waitms\",\n\t\"wait_ms\",\n\t\"waitsec\",\n\t\"wait_sec\",\n\t\"waitseconds\",\n\t\"wait_seconds\",\n]);\n\nfunction omitOperationEnvelopeFields(value: unknown): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst record = value as Record<string, unknown>;\n\tlet changed = false;\n\tconst next: Record<string, unknown> = {};\n\tfor (const [key, entry] of Object.entries(record)) {\n\t\tif (OPERATION_ENVELOPE_KEYS.has(key.toLowerCase())) {\n\t\t\tchanged = true;\n\t\t\tcontinue;\n\t\t}\n\t\tnext[key] = entry;\n\t}\n\treturn changed ? next : value;\n}\n\nexport function normalizeToolSignature(pairs: Array<[string, unknown]>): string {\n\treturn structuredHash(\n\t\tpairs.map(([name, args]) => [name, omitOperationEnvelopeFields(args)]),\n\t\ttrue,\n\t);\n}\n\nfunction toolOperationKey(tool: string, args: unknown, normalizeVolatile: boolean): string {\n\tconst identityArgs = omitOperationEnvelopeFields(args);\n\tconst boundedTool = truncate(tool, MAX_TOOL_NAME_CHARS);\n\tconst hash = createSignatureHash();\n\tconst updateHashString = normalizeVolatile ? updateNormalizedHashString : updateExactHashString;\n\tconst active = new Set<object>();\n\t// Preserve the stable structured-hash wire identity without allocating the two synthetic arrays.\n\tupdateHashRange(hash, \"array:1[array:2[\");\n\tupdateStructuredHash(hash, tool, active, 2, updateHashString);\n\tupdateStructuredHash(hash, identityArgs, active, 2, updateHashString);\n\tupdateHashRange(hash, \"];];\");\n\tconst signature = renderSignatureHash(hash);\n\treturn `${boundedTool}:${signature}`;\n}\n\nfunction operationIdentity(tool: string, args: unknown): ToolOperationIdentity {\n\treturn {\n\t\tfailureKey: toolOperationKey(tool, args, true),\n\t\texecutionKey: toolOperationKey(tool, args, false),\n\t\ttool: truncate(tool, MAX_TOOL_NAME_CHARS),\n\t\toperation: boundedJsonPreview(args, MAX_OPERATION_CHARS),\n\t};\n}\n\nfunction getToolFailureKey(tool: string, args: unknown): string {\n\treturn toolOperationKey(tool, args, true);\n}\n\nexport function getToolExecutionKey(tool: string, args: unknown): string {\n\treturn toolOperationKey(tool, args, false);\n}\n\nexport function getToolFailureRecordExecutionKey(record: ToolFailureMemoryRecord): string | undefined {\n\treturn record[TOOL_FAILURE_EXECUTION_KEY];\n}\n\nexport function getUnresolvedToolFailure(\n\ttracker: ToolFailureMemoryTracker,\n\ttool: string,\n\targs: unknown,\n): ToolFailureMemoryRecord | undefined {\n\treturn tracker.get(getToolFailureKey(tool, args));\n}\n\nexport function readVisibleToolFailureCode(result: ToolResultMessage): string | undefined {\n\tfor (const block of result.content) {\n\t\tif (block.type !== \"text\") continue;\n\t\tconst match = /\"failure_code\"\\s*:\\s*\"([^\"]+)\"/.exec(block.text);\n\t\tif (match) return match[1];\n\t}\n\treturn undefined;\n}\n\nexport function isClosedOperationFailureCode(code: string | undefined): boolean {\n\treturn code === \"operation_recovery_exhausted\" || code === \"recovery_exhausted\";\n}\n\n/** Failures that only a new owner prompt can clear. Do not restore their circuit across user turns. */\nexport function isPromptScopedFailureCode(code: string | undefined): boolean {\n\treturn code === \"owner_authorization_required\";\n}\n\nexport function restoreToolFailureRecord(\n\tresult: ToolResultMessage,\n\ttool: string,\n\targs: unknown,\n): ToolFailureMemoryRecord {\n\tconst executionKey = getToolExecutionKey(tool, args);\n\tconst persisted = readFailureRecord(result.details);\n\tif (persisted) {\n\t\treturn {\n\t\t\t...persisted,\n\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: getToolFailureRecordExecutionKey(persisted) ?? executionKey,\n\t\t};\n\t}\n\tconst identity = operationIdentity(tool, args);\n\treturn {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: identity.failureKey,\n\t\t[TOOL_FAILURE_EXECUTION_KEY]: executionKey,\n\t\ttool: identity.tool,\n\t\toperation: identity.operation,\n\t\toccurrence: 1,\n\t\tstate: \"failed\",\n\t\tphase: \"execution\",\n\t\tfailureCode: boundedFailureCode(readVisibleToolFailureCode(result) ?? \"tool_error\"),\n\t\tcorrection: fallbackFailureGuidance(\"failed\", false, \"execution\"),\n\t};\n}\n\nexport interface PairedToolResult {\n\ttool: string;\n\targs: unknown;\n\texecutionKey: string;\n\tresult: ToolResultMessage;\n}\n\nexport function forEachPairedToolResult(\n\tmessages: readonly AgentMessage[],\n\tvisit: (pair: PairedToolResult) => boolean | undefined,\n): void {\n\tconst callsById = new Map<string, { name: string; args: unknown }>();\n\tfor (const message of messages) {\n\t\tif (message.role === \"assistant\") {\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\t\tcallsById.set(block.id, { name: block.name, args: block.arguments });\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"toolResult\") continue;\n\t\tconst call = callsById.get(message.toolCallId);\n\t\tif (!call) continue;\n\t\tif (\n\t\t\tvisit({\n\t\t\t\ttool: call.name,\n\t\t\t\targs: call.args,\n\t\t\t\texecutionKey: getToolExecutionKey(call.name, call.args),\n\t\t\t\tresult: message,\n\t\t\t}) === false\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nexport function transcriptHasClosedToolOperation(messages: readonly AgentMessage[]): boolean {\n\tconst closedByExecutionKey = new Map<string, true>();\n\tforEachPairedToolResult(messages, ({ executionKey, result }) => {\n\t\tif (!result.isError) {\n\t\t\tclosedByExecutionKey.delete(executionKey);\n\t\t\treturn;\n\t\t}\n\t\tif (isClosedOperationFailureCode(readVisibleToolFailureCode(result))) {\n\t\t\tclosedByExecutionKey.set(executionKey, true);\n\t\t}\n\t});\n\treturn closedByExecutionKey.size > 0;\n}\n\nfunction boundedFailureCode(value: string): string {\n\tconst normalized = value\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_.:-]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\");\n\treturn truncate(normalized || \"tool_error\", MAX_FAILURE_CODE_CHARS);\n}\n\n/**\n * bash.ts's own trailer (`appendStatus`) always ends the message with a line like \"Command\n * exited with code 1\"; a structured result (e.g. run_process) instead puts \"exitCode: 1\" on its\n * own line near the top. Both are anchored to the START of their own line, with at most one\n * leading tool-name token (\"Command\"/\"Python\"/...) — ordinary stdout/stderr prose is never\n * anchored that way, so a captured line like \"container will exit 0 on SIGTERM\" can never be\n * read as the process exit status. Scan from the end of the message so the tool's own trailer —\n * always the last line it appends — outranks any earlier, non-authoritative line that matches.\n */\nconst EXIT_STATUS_LINE_PATTERN = /^(?:\\S+\\s+)?(?:exit(?:ed)?(?:\\s+with)?(?:\\s+code)?|exitcode)\\s*[:=]?\\s*(-?\\d+)\\b/i;\n\nfunction processExitFailureCode(message: string): string | undefined {\n\tconst lines = message.split(/\\r\\n|\\n/);\n\tfor (let index = lines.length - 1; index >= 0; index--) {\n\t\tconst match = EXIT_STATUS_LINE_PATTERN.exec(lines[index].trim());\n\t\tif (match) return boundedFailureCode(`exit_${match[1]}`);\n\t}\n\treturn undefined;\n}\n\nexport function classifyToolFailure(message: string, errorClass?: string): string {\n\t// A tool-owned terminal status is authoritative; stdout may contain arbitrary all-caps identifiers.\n\tconst exitFailureCode = processExitFailureCode(message);\n\tif (exitFailureCode) return exitFailureCode;\n\tconst errno = /\\b(E[A-Z][A-Z0-9_]{2,})\\b/.exec(message)?.[1];\n\tif (errno) return boundedFailureCode(errno);\n\treturn boundedFailureCode(errorClass ?? \"tool_error\");\n}\n\nfunction isToolFailurePhase(value: unknown): value is ToolFailurePhase {\n\treturn (\n\t\tvalue === \"validation\" ||\n\t\tvalue === \"policy\" ||\n\t\tvalue === \"preflight\" ||\n\t\tvalue === \"execution\" ||\n\t\tvalue === \"timeout\" ||\n\t\tvalue === \"cancelled\" ||\n\t\tvalue === \"provisioning\"\n\t);\n}\n\nfunction inferToolFailurePhase(state: ToolFailureState, failureCode: string): ToolFailurePhase {\n\tif (failureCode === \"malformed_call\" || failureCode === \"unknown_tool\" || failureCode === \"invalid_arguments\") {\n\t\treturn \"validation\";\n\t}\n\tif (\n\t\tfailureCode === \"blocked\" ||\n\t\tfailureCode === \"permission_denied\" ||\n\t\tfailureCode === \"owner_authorization_required\"\n\t) {\n\t\treturn \"policy\";\n\t}\n\tif (failureCode === \"preflight_error\") return \"preflight\";\n\tif (failureCode === \"aborted\" || failureCode === \"cancelled\") return \"cancelled\";\n\tif (failureCode === \"timeout\" || failureCode === \"etimedout\") return \"timeout\";\n\tif (failureCode === \"provisioning_failed\" || failureCode === \"command_not_found\") return \"provisioning\";\n\treturn state === \"rejected\" ? \"validation\" : \"execution\";\n}\n\nfunction fallbackFailureGuidance(state: ToolFailureState, hasDiagnostic: boolean, phase: ToolFailurePhase): string {\n\tif (phase === \"preflight\") {\n\t\treturn hasDiagnostic\n\t\t\t? \"Arguments valid; preflight failed before execution. Resolve diagnostic/host condition before retry.\"\n\t\t\t: \"Arguments valid; preflight failed before execution. Inspect host policy/capability before retry.\";\n\t}\n\tif (phase === \"policy\") return \"Resolve authority/policy restriction or choose allowed approach before retry.\";\n\tif (phase === \"cancelled\") return \"Retry only when operation remains required, cancellation condition cleared.\";\n\tif (phase === \"timeout\") return \"Narrow/split work; retry once only when safe.\";\n\tif (phase === \"provisioning\") {\n\t\treturn hasDiagnostic\n\t\t\t? \"Fix provisioning diagnostic; retry only after environment changes.\"\n\t\t\t: \"Inspect tool availability; request bounded provisioning diagnostic before retry.\";\n\t}\n\treturn state === \"rejected\"\n\t\t? \"Re-read current tool schema; change invalid operation before retry.\"\n\t\t: hasDiagnostic\n\t\t\t? \"Read diagnostic; identify cause; repair parameters or corrective state before retry.\"\n\t\t\t: \"No diagnostic output. Inspect tool contract or request bounded diagnostic before retry.\";\n}\n\nexport function toolFailureCorrection(\n\tmessage: string,\n\tstate: ToolFailureState,\n\tphase: ToolFailurePhase = state === \"rejected\" ? \"validation\" : \"execution\",\n): string {\n\tconst policy = getToolExecutionErrorPolicy(message);\n\treturn policy\n\t\t? truncate(policy.guidance, MAX_CORRECTION_CHARS)\n\t\t: fallbackFailureGuidance(state, message.trim().length > 0, phase);\n}\n\nfunction extractFailureDiagnostic(\n\tmessage: string,\n\tallowUnclassifiedFallback: boolean,\n\trequireStrongSignal = false,\n): string | undefined {\n\tconst rawLines = sanitizeBinaryOutput(message).replaceAll(\"\\r\\n\", \"\\n\").split(\"\\n\");\n\tconst strongDiagnosticPattern =\n\t\t/^(?:(?:error(?:\\[[^\\]]+\\])?|fatal(?: error)?|panic|fail(?:ed|ure)?|invalid|unknown|unsupported|not found|no such|cannot|can't|missing|denied|refused|usage)(?:\\b|:)|[a-z][a-z0-9_.]*error(?::|$)|thread .+ panicked at\\b|--- fail:|\\[fail(?:ed)?\\]|not ok\\b|[×✗]\\s|.{1,160}:\\s+(?:error(?:\\[[^\\]]+\\])?|fatal(?: error)?)(?:\\b|:))/i;\n\tconst stderrMarkerIndex = rawLines.findLastIndex((line) => /^stderr:\\s*$/i.test(line.trim()));\n\tif (stderrMarkerIndex >= 0) {\n\t\tconst stderrLines = rawLines\n\t\t\t.slice(stderrMarkerIndex + 1)\n\t\t\t.map((line) => line.trim())\n\t\t\t.filter(\n\t\t\t\t(line) =>\n\t\t\t\t\tline.length > 0 && !/^command (?:exited with code|timed out after|aborted|killed after)\\b/i.test(line),\n\t\t\t);\n\t\tif (stderrLines.length > 0) {\n\t\t\tconst classified = stderrLines.find((line) => strongDiagnosticPattern.test(line));\n\t\t\tif (classified) return truncateMiddle(classified, MAX_DIAGNOSTIC_CHARS);\n\t\t\t// No stderr line carries a strong signal. Under requireStrongSignal, the caller has\n\t\t\t// already decided uncatalogued output must never be fabricated into a diagnostic (see\n\t\t\t// assessToolFailure) — falling back to the last raw stderr lines here would defeat that\n\t\t\t// guarantee for the common bash case, so fall through to the same allowUnclassifiedFallback\n\t\t\t// gate the no-stderr path below applies.\n\t\t\tif (!requireStrongSignal) {\n\t\t\t\treturn truncateMiddle(stderrLines.slice(-4).join(\" | \"), MAX_DIAGNOSTIC_CHARS);\n\t\t\t}\n\t\t}\n\t}\n\tconst lines = rawLines\n\t\t.map((line) => line.trim())\n\t\t.filter(\n\t\t\t(line) =>\n\t\t\t\tline.length > 0 &&\n\t\t\t\t!/^command (?:exited with code|timed out after|aborted|killed after)\\b/i.test(line) &&\n\t\t\t\t!/^outcome:\\s*(?:failed|aborted|timeout|output_limit)\\b/i.test(line) &&\n\t\t\t\t!/^exitcode:\\s*-?\\d+\\b/i.test(line) &&\n\t\t\t\t!/^(?:stdout|stderr):(?:\\s*\\(empty\\))?$/i.test(line),\n\t\t);\n\tif (lines.length === 0) return undefined;\n\tconst diagnosticPattern = requireStrongSignal\n\t\t? strongDiagnosticPattern\n\t\t: /(?:^|\\b)(?:error|fatal|fail(?:ed|ure)?|invalid|unknown|unsupported|not found|no such|cannot|can't|missing|denied|refused|usage)(?:\\b|:)/i;\n\tconst classified = requireStrongSignal\n\t\t? lines.find((line) => diagnosticPattern.test(line))\n\t\t: [...lines].reverse().find((line) => diagnosticPattern.test(line));\n\tconst diagnostic = classified ?? (allowUnclassifiedFallback ? lines.at(-1) : undefined);\n\treturn diagnostic ? truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined;\n}\n\nexport interface ToolFailureAssessment {\n\tfailureCode: string;\n\tphase: ToolFailurePhase;\n\tdiagnostic?: string;\n\tguidance: string;\n\tattemptMemory?: \"discard\";\n}\n\nexport function assessToolFailure(\n\tmessage: string,\n\tstate: ToolFailureState,\n\terrorClass?: string,\n): ToolFailureAssessment {\n\tconst policy = getToolExecutionErrorPolicy(message);\n\tconst exitFailureCode = processExitFailureCode(message);\n\tconst retainPolicyDiagnostic = policy?.retainDiagnostic === true;\n\tconst diagnostic =\n\t\tstate === \"failed\" && (!policy || policy.retainDiagnostic)\n\t\t\t? extractFailureDiagnostic(\n\t\t\t\t\tmessage,\n\t\t\t\t\texitFailureCode === undefined && (errorClass !== undefined || retainPolicyDiagnostic),\n\t\t\t\t\texitFailureCode !== undefined && !retainPolicyDiagnostic,\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst failureCode = policy?.failureCode ?? classifyToolFailure(message, errorClass);\n\treturn {\n\t\tfailureCode,\n\t\tphase: policy?.phase ?? inferToolFailurePhase(state, failureCode),\n\t\t...(diagnostic ? { diagnostic } : {}),\n\t\tguidance: policy\n\t\t\t? truncate(policy.guidance, MAX_CORRECTION_CHARS)\n\t\t\t: fallbackFailureGuidance(state, diagnostic !== undefined, inferToolFailurePhase(state, failureCode)),\n\t\t...(policy?.attemptMemory === \"discard\" ? { attemptMemory: \"discard\" as const } : {}),\n\t};\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction readFailureRecord(details: unknown): ToolFailureMemoryRecord | undefined {\n\tif (!isRecord(details) || !isRecord(details.piToolFailureMemory)) return undefined;\n\tconst candidate = details.piToolFailureMemory;\n\tif (\n\t\tcandidate.version !== TOOL_FAILURE_MEMORY_VERSION ||\n\t\ttypeof candidate.failureKey !== \"string\" ||\n\t\ttypeof candidate.tool !== \"string\" ||\n\t\ttypeof candidate.operation !== \"string\" ||\n\t\ttypeof candidate.occurrence !== \"number\" ||\n\t\t!Number.isSafeInteger(candidate.occurrence) ||\n\t\tcandidate.occurrence < 1 ||\n\t\t(candidate.state !== \"failed\" && candidate.state !== \"rejected\") ||\n\t\ttypeof candidate.failureCode !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\tconst diagnostic =\n\t\ttypeof candidate.diagnostic === \"string\" ? truncate(candidate.diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined;\n\tconst retainedCorrection =\n\t\ttypeof candidate.correction === \"string\" ? truncate(candidate.correction, MAX_CORRECTION_CHARS) : undefined;\n\tconst correction =\n\t\tcandidate.state === \"failed\" && retainedCorrection === LEGACY_GENERIC_EXECUTION_CORRECTION\n\t\t\t? fallbackFailureGuidance(\"failed\", diagnostic !== undefined, \"execution\")\n\t\t\t: (retainedCorrection ?? toolFailureCorrection(\"\", candidate.state));\n\tconst phase = isToolFailurePhase(candidate.phase)\n\t\t? candidate.phase\n\t\t: inferToolFailurePhase(candidate.state, candidate.failureCode);\n\tconst candidateExecutionKey: unknown = Reflect.get(candidate, TOOL_FAILURE_EXECUTION_KEY);\n\treturn {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: truncate(candidate.failureKey, MAX_TOOL_NAME_CHARS + 1 + TOOL_SIGNATURE_HEX_CHARS),\n\t\t...(typeof candidateExecutionKey === \"string\"\n\t\t\t? {\n\t\t\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: truncate(\n\t\t\t\t\t\tcandidateExecutionKey,\n\t\t\t\t\t\tMAX_TOOL_NAME_CHARS + 1 + TOOL_SIGNATURE_HEX_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\ttool: truncate(candidate.tool, MAX_TOOL_NAME_CHARS),\n\t\toperation: truncateMiddle(candidate.operation, MAX_OPERATION_CHARS),\n\t\toccurrence: candidate.occurrence,\n\t\tstate: candidate.state,\n\t\tphase,\n\t\tfailureCode: boundedFailureCode(candidate.failureCode),\n\t\tdiagnostic,\n\t\tcorrection,\n\t};\n}\n\nfunction readFailureDirective(details: unknown): ToolFailureDirectiveDetails[\"piToolFailureDirective\"] | undefined {\n\tif (!isRecord(details) || !isRecord(details.piToolFailureDirective)) return undefined;\n\tconst candidate = details.piToolFailureDirective;\n\tif (\n\t\tcandidate.version !== TOOL_FAILURE_DIRECTIVE_VERSION ||\n\t\ttypeof candidate.failureCode !== \"string\" ||\n\t\ttypeof candidate.nextAction !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tversion: TOOL_FAILURE_DIRECTIVE_VERSION,\n\t\tstate: candidate.state === \"rejected\" ? \"rejected\" : \"failed\",\n\t\tphase: isToolFailurePhase(candidate.phase)\n\t\t\t? candidate.phase\n\t\t\t: inferToolFailurePhase(\"failed\", candidate.failureCode),\n\t\tfailureCode: boundedFailureCode(candidate.failureCode),\n\t\tdiagnostic:\n\t\t\ttypeof candidate.diagnostic === \"string\" ? truncate(candidate.diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\tnextAction: truncate(candidate.nextAction, MAX_CORRECTION_CHARS),\n\t};\n}\n\nexport interface ToolFailureTelemetry {\n\tstate: ToolFailureState;\n\tphase: ToolFailurePhase;\n\tfailureCode: string;\n\tdiagnostic?: string;\n\tnextAction: string;\n}\n\n/** Read only bounded failure identity and guidance; operation arguments never cross this telemetry boundary. */\nexport function readToolFailureTelemetry(details: unknown): ToolFailureTelemetry | undefined {\n\tconst record = readFailureRecord(details);\n\tif (record) {\n\t\treturn {\n\t\t\tstate: record.state,\n\t\t\tphase: record.phase,\n\t\t\tfailureCode: record.failureCode,\n\t\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t\tnextAction: record.correction,\n\t\t};\n\t}\n\tconst directive = readFailureDirective(details);\n\tif (!directive) return undefined;\n\treturn {\n\t\tstate: directive.state,\n\t\tphase: directive.phase,\n\t\tfailureCode: directive.failureCode,\n\t\t...(directive.diagnostic ? { diagnostic: directive.diagnostic } : {}),\n\t\tnextAction: directive.nextAction,\n\t};\n}\n\nfunction firstText(message: ToolResultMessage): string {\n\tconst content = message.content;\n\tif (typeof content === \"string\") return content;\n\tif (Array.isArray(content)) {\n\t\tfor (let index = 0; index < content.length; index++) {\n\t\t\tconst block = content[index];\n\t\t\tif (block.type === \"text\") return block.text;\n\t\t}\n\t}\n\treturn \"\";\n}\n\nfunction fastTextSignature(text: string): string {\n\tif (text.length <= 128) return text;\n\treturn `${text.length}:${text.slice(0, 48)}:${text.slice(-48)}`;\n}\n\nfunction analyzeToolFailureContext(messages: AgentMessage[]): FailureContextAnalysis {\n\tconst callById = new Map<string, AgentToolCall>();\n\tconst omittedCallIds = new Set<string>();\n\tconst orphanFailedResults = new Set<ToolResultMessage>();\n\tconst active = new Map<string, ActiveFailure>();\n\tconst activeDirectives = new Map<string, ToolFailureDirectiveDetails[\"piToolFailureDirective\"]>();\n\tlet sequence = 0;\n\tconst kindMistakesMap = new Map<string, number>();\n\n\tconst latestSuccessfulByOpKey = new Map<string, string>();\n\tconst latestSuccessfulByPayloadKey = new Map<string, string>();\n\n\tfor (let index = 0; index < messages.length; index++) {\n\t\tconst message = messages[index];\n\t\tif (message.role === \"assistant\") {\n\t\t\tactiveDirectives.clear();\n\t\t\tconst content = message.content;\n\t\t\tfor (let blockIdx = 0; blockIdx < content.length; blockIdx++) {\n\t\t\t\tconst block = content[blockIdx];\n\t\t\t\tif (block.type !== \"toolCall\") continue;\n\t\t\t\tcallById.set(block.id, block);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"toolResult\") continue;\n\n\t\tconst call = callById.get(message.toolCallId);\n\t\tcallById.delete(message.toolCallId);\n\t\tconst textPayload = firstText(message);\n\t\tconst isFailure = message.isError === true || textPayload.startsWith(\"[harness] \");\n\t\tif (isFailure) {\n\t\t\tconst toolName = call?.name ?? message.toolName;\n\t\t\tconst kindCount = (kindMistakesMap.get(toolName) ?? 0) + 1;\n\t\t\tkindMistakesMap.set(toolName, kindCount);\n\n\t\t\tconst directive = readFailureDirective(message.details);\n\t\t\tif (directive) {\n\t\t\t\tactiveDirectives.delete(directive.failureCode);\n\t\t\t\tactiveDirectives.set(directive.failureCode, directive);\n\t\t\t\tif (call) omittedCallIds.add(call.id);\n\t\t\t\telse orphanFailedResults.add(message);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst retained = readFailureRecord(message.details);\n\t\t\tconst state = retained?.state ?? \"failed\";\n\t\t\tconst assessment = retained ? undefined : assessToolFailure(textPayload, state);\n\t\t\tlet failureKey: string;\n\t\t\tlet executionKey: string | undefined;\n\t\t\tlet tool: string;\n\t\t\tlet operation: string;\n\t\t\tif (retained) {\n\t\t\t\tfailureKey = retained.failureKey;\n\t\t\t\texecutionKey = call\n\t\t\t\t\t? getToolExecutionKey(call.name, call.arguments)\n\t\t\t\t\t: getToolFailureRecordExecutionKey(retained);\n\t\t\t\ttool = retained.tool;\n\t\t\t\toperation = retained.operation;\n\t\t\t} else {\n\t\t\t\tconst identity = operationIdentity(\n\t\t\t\t\tcall?.name ?? message.toolName,\n\t\t\t\t\tcall?.arguments ?? { toolCallId: message.toolCallId },\n\t\t\t\t);\n\t\t\t\tfailureKey = identity.failureKey;\n\t\t\t\texecutionKey = identity.executionKey;\n\t\t\t\ttool = identity.tool;\n\t\t\t\toperation = identity.operation;\n\t\t\t}\n\t\t\tconst previous = active.get(failureKey)?.record;\n\t\t\tconst occurrence = Math.max(retained?.occurrence ?? 0, (previous?.occurrence ?? 0) + 1);\n\t\t\tconst record: ToolFailureMemoryRecord = {\n\t\t\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\t\t\tfailureKey,\n\t\t\t\t...(executionKey ? { [TOOL_FAILURE_EXECUTION_KEY]: executionKey } : {}),\n\t\t\t\ttool,\n\t\t\t\toperation,\n\t\t\t\toccurrence,\n\t\t\t\tkindMistakes: kindCount,\n\t\t\t\tmistakeKind: toolName,\n\t\t\t\tstate,\n\t\t\t\tphase: retained?.phase ?? assessment?.phase ?? inferToolFailurePhase(state, \"tool_error\"),\n\t\t\t\tfailureCode: retained?.failureCode ?? assessment?.failureCode ?? \"tool_error\",\n\t\t\t\tdiagnostic: retained?.diagnostic ?? assessment?.diagnostic,\n\t\t\t\tcorrection:\n\t\t\t\t\tretained?.correction ??\n\t\t\t\t\tassessment?.guidance ??\n\t\t\t\t\tfallbackFailureGuidance(state, false, inferToolFailurePhase(state, \"tool_error\")),\n\t\t\t};\n\t\t\tactive.delete(failureKey);\n\t\t\tactive.set(failureKey, { record, sequence: sequence++ });\n\t\t\twhile (active.size > MAX_TRACKED_FAILURES) {\n\t\t\t\tconst oldest = active.keys().next().value;\n\t\t\t\tif (oldest === undefined) break;\n\t\t\t\tactive.delete(oldest);\n\t\t\t}\n\t\t\tif (call) omittedCallIds.add(call.id);\n\t\t\telse orphanFailedResults.add(message);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (call) {\n\t\t\tconst opKey = getToolFailureKey(call.name, call.arguments);\n\t\t\tactive.delete(opKey);\n\t\t\tconst previousOperationCallId = latestSuccessfulByOpKey.get(opKey);\n\t\t\tif (previousOperationCallId) omittedCallIds.add(previousOperationCallId);\n\t\t\tlatestSuccessfulByOpKey.set(opKey, call.id);\n\n\t\t\tconst textPayload = firstText(message);\n\t\t\tif (textPayload.length >= 64) {\n\t\t\t\tconst payloadKey = `payload:${fastTextSignature(textPayload)}`;\n\t\t\t\tconst previousPayloadCallId = latestSuccessfulByPayloadKey.get(payloadKey);\n\t\t\t\tif (previousPayloadCallId) omittedCallIds.add(previousPayloadCallId);\n\t\t\t\tlatestSuccessfulByPayloadKey.set(payloadKey, call.id);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst kindMistakesSummary = Object.fromEntries(kindMistakesMap);\n\n\tif (omittedCallIds.size === 0 && orphanFailedResults.size === 0) {\n\t\treturn { messages, activeRecords: [], activeDirectives: [], kindMistakesSummary };\n\t}\n\n\tconst filteredMessages: AgentMessage[] = [];\n\tfor (let index = 0; index < messages.length; index++) {\n\t\tconst message = messages[index];\n\t\tif (message.role === \"toolResult\") {\n\t\t\tif (omittedCallIds.has(message.toolCallId) || orphanFailedResults.has(message)) continue;\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"assistant\") {\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tconst content = message.content;\n\t\tif (content.length === 1) {\n\t\t\tconst block = content[0];\n\t\t\tif (block.type === \"toolCall\" && omittedCallIds.has(block.id)) continue;\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tlet hasOmitted = false;\n\t\tfor (let blockIdx = 0; blockIdx < content.length; blockIdx++) {\n\t\t\tconst block = content[blockIdx];\n\t\t\tif (block.type === \"toolCall\" && omittedCallIds.has(block.id)) {\n\t\t\t\thasOmitted = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!hasOmitted) {\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tconst retainedContent = content.filter((block) => block.type !== \"toolCall\" || !omittedCallIds.has(block.id));\n\t\tif (retainedContent.length > 0) {\n\t\t\tfilteredMessages.push({ ...message, content: retainedContent } satisfies AssistantMessage);\n\t\t}\n\t}\n\tconst activeRecords = [...active.values()]\n\t\t.sort((left, right) => left.sequence - right.sequence)\n\t\t.map(({ record }) => record);\n\treturn {\n\t\tmessages: filteredMessages,\n\t\tactiveRecords,\n\t\tactiveDirectives: [...activeDirectives.values()],\n\t\tkindMistakesSummary,\n\t};\n}\n\nexport function createToolFailureMemoryTracker(messages: AgentMessage[]): ToolFailureMemoryTracker {\n\treturn new Map(analyzeToolFailureContext(messages).activeRecords.map((record) => [record.failureKey, record]));\n}\n\nexport function rememberToolFailure(\n\ttracker: ToolFailureMemoryTracker,\n\ttool: string,\n\targs: unknown,\n\tstate: ToolFailureState,\n\tfailureCode: string,\n\tcorrection: string,\n\tdiagnostic?: string,\n\tphase: ToolFailurePhase = inferToolFailurePhase(state, failureCode),\n): ToolFailureMemoryRecord {\n\tlet kindCount = 1;\n\tfor (const previous of tracker.values()) {\n\t\tif (previous.tool === tool) {\n\t\t\tkindCount = Math.max(kindCount, (previous.kindMistakes ?? previous.occurrence) + 1);\n\t\t}\n\t}\n\tif (getToolExecutionAttemptMemory(failureCode) === \"discard\") {\n\t\tfor (const [failureKey, previous] of tracker) {\n\t\t\tif (previous.tool === tool && previous.failureCode === failureCode) tracker.delete(failureKey);\n\t\t}\n\t\treturn {\n\t\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\t\tfailureKey: `directive:${boundedFailureCode(failureCode)}`,\n\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: getToolExecutionKey(tool, args),\n\t\t\ttool: truncate(tool, MAX_TOOL_NAME_CHARS),\n\t\t\toperation: \"[discarded]\",\n\t\t\toccurrence: 1,\n\t\t\tkindMistakes: kindCount,\n\t\t\tmistakeKind: tool,\n\t\t\tstate,\n\t\t\tphase,\n\t\t\tfailureCode: boundedFailureCode(failureCode),\n\t\t\tdiagnostic: diagnostic ? truncate(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\t\tcorrection: truncate(correction, MAX_CORRECTION_CHARS),\n\t\t\tattemptMemory: \"discard\",\n\t\t};\n\t}\n\tconst identity = operationIdentity(tool, args);\n\tconst previous = tracker.get(identity.failureKey);\n\tconst record: ToolFailureMemoryRecord = {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: identity.failureKey,\n\t\t[TOOL_FAILURE_EXECUTION_KEY]: identity.executionKey,\n\t\ttool: identity.tool,\n\t\toperation: identity.operation,\n\t\toccurrence: (previous?.occurrence ?? 0) + 1,\n\t\tkindMistakes: kindCount,\n\t\tmistakeKind: tool,\n\t\tstate,\n\t\tphase,\n\t\tfailureCode: boundedFailureCode(failureCode),\n\t\tdiagnostic: diagnostic ? truncate(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\tcorrection: truncate(correction, MAX_CORRECTION_CHARS),\n\t};\n\ttracker.delete(identity.failureKey);\n\ttracker.set(identity.failureKey, record);\n\twhile (tracker.size > MAX_TRACKED_FAILURES) {\n\t\tconst oldest = tracker.keys().next().value;\n\t\tif (oldest === undefined) break;\n\t\ttracker.delete(oldest);\n\t}\n\treturn record;\n}\n\nexport function clearToolFailure(tracker: ToolFailureMemoryTracker, tool: string, args: unknown): void {\n\tconst failureKey = getToolFailureKey(tool, args);\n\tconst record = tracker.get(failureKey);\n\tconst executionKey = record ? getToolFailureRecordExecutionKey(record) : undefined;\n\tif (!executionKey || executionKey === getToolExecutionKey(tool, args)) tracker.delete(failureKey);\n}\n\nfunction failureGuidance(record: ToolFailureMemoryRecord): { repair: string } | { next_action: string } {\n\treturn record.state === \"rejected\" && REPAIRABLE_REJECTION_CODES.has(record.failureCode)\n\t\t? { repair: record.correction }\n\t\t: { next_action: record.correction };\n}\n\nfunction formatRecordJson(record: ToolFailureMemoryRecord, includeOperation = false): string {\n\tconst guidance = failureGuidance(record);\n\treturn JSON.stringify({\n\t\t...mandatoryToolFailureRecoveryMetadata(),\n\t\tfailure_key: record.failureKey,\n\t\tocc: record.occurrence,\n\t\tkind_mistakes: record.kindMistakes ?? record.occurrence,\n\t\tmistake_kind: record.mistakeKind ?? record.tool,\n\t\tstate: record.state,\n\t\tphase: record.phase,\n\t\ttool: record.tool,\n\t\t...(includeOperation ? { operation: record.operation } : {}),\n\t\tfailure_code: record.failureCode,\n\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t...guidance,\n\t\t...(record.attemptMemory === \"discard\" ? { attempt_memory: \"discarded\" } : {}),\n\t});\n}\n\nexport function createToolFailureResult(\n\trecord: ToolFailureMemoryRecord,\n\tterminate?: boolean,\n): AgentToolResult<ToolFailureResultDetails> {\n\tconst discardAttempt = record.attemptMemory === \"discard\";\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `[harness] ${formatRecordJson(record, false)}`,\n\t\t\t},\n\t\t],\n\t\tdetails: discardAttempt\n\t\t\t? {\n\t\t\t\t\tpiToolFailureDirective: {\n\t\t\t\t\t\tversion: TOOL_FAILURE_DIRECTIVE_VERSION,\n\t\t\t\t\t\tstate: record.state,\n\t\t\t\t\t\tphase: record.phase,\n\t\t\t\t\t\tfailureCode: record.failureCode,\n\t\t\t\t\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t\t\t\t\tnextAction: record.correction,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: { piToolFailureMemory: record },\n\t\t...(terminate === undefined ? {} : { terminate }),\n\t};\n}\n\nexport function createRepeatedToolFailureResult(\n\trecord: ToolFailureMemoryRecord,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = {\n\t\t...retainBlockedToolFailure(record),\n\t\tcorrection: BLOCKED_REPLAY_CAVEMAN_CORRECTION,\n\t};\n\tconst diagnostic = truncateMiddle(\n\t\t`The unchanged operation was not executed. Unchanged replay blocked after ${record.failureCode}`,\n\t\tMAX_DIAGNOSTIC_CHARS,\n\t);\n\tconst blockedResult = createToolFailureResult({\n\t\t...retainedRecord,\n\t\tstate: \"rejected\",\n\t\tfailureCode: \"repeated_failed_operation\",\n\t\tdiagnostic,\n\t\tcorrection: retainedRecord.correction,\n\t});\n\treturn {\n\t\t...blockedResult,\n\t\t// The visible result describes this rejected replay, while retained memory keeps the\n\t\t// authoritative cause so later blocks do not recursively wrap synthetic failures.\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nexport function createToolFailureRecoveryExhaustedResult(\n\trecord: ToolFailureMemoryRecord,\n\tdiagnostic: string,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = retainBlockedToolFailure(record);\n\tconst exhaustedResult = createToolFailureResult(\n\t\t{\n\t\t\t...retainedRecord,\n\t\t\tstate: \"rejected\",\n\t\t\tfailureCode: \"recovery_exhausted\",\n\t\t\tdiagnostic: truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS),\n\t\t\tcorrection:\n\t\t\t\t\"Stop retrying tools in this run. Report the unresolved failure and the user or environment action required to continue.\",\n\t\t},\n\t\ttrue,\n\t);\n\treturn {\n\t\t...exhaustedResult,\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nexport function createToolFailureOperationExhaustedResult(\n\trecord: ToolFailureMemoryRecord,\n\tdiagnostic: string,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = {\n\t\t...retainBlockedToolFailure(record),\n\t\tcorrection: CLOSED_OPERATION_CAVEMAN_CORRECTION,\n\t};\n\tconst exhaustedResult = createToolFailureResult(\n\t\t{\n\t\t\t...retainedRecord,\n\t\t\tstate: \"rejected\",\n\t\t\tfailureCode: \"operation_recovery_exhausted\",\n\t\t\tdiagnostic: truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS),\n\t\t},\n\t\tfalse,\n\t);\n\treturn {\n\t\t...exhaustedResult,\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nfunction retainBlockedToolFailure(record: ToolFailureMemoryRecord): ToolFailureMemoryRecord {\n\treturn {\n\t\t...record,\n\t\toccurrence: record.occurrence + 1,\n\t\tkindMistakes: (record.kindMistakes ?? record.occurrence) + 1,\n\t};\n}\n\nfunction escapePromptData(value: string): string {\n\treturn value.replaceAll(\"&\", \"\\\\u0026\").replaceAll(\"<\", \"\\\\u003c\").replaceAll(\">\", \"\\\\u003e\");\n}\n\nexport function sanitizeToolFailureContext(\n\tmessages: AgentMessage[],\n\tsystemPrompt: string,\n): { messages: AgentMessage[]; systemPrompt: string } {\n\tconst analysis = analyzeToolFailureContext(messages);\n\tif (analysis.activeRecords.length === 0 && analysis.activeDirectives.length === 0) {\n\t\treturn { messages: analysis.messages, systemPrompt };\n\t}\n\tconst records = analysis.activeRecords.slice(-MAX_ACTIVE_FAILURES);\n\tconst omitted = analysis.activeRecords.length - records.length;\n\tconst kindSummary = Object.entries(analysis.kindMistakesSummary)\n\t\t.map(([kind, count]) => `${kind}:${count}`)\n\t\t.join(\", \");\n\n\tconst lines = records.map((record) => escapePromptData(formatRecordJson(record, true)));\n\tfor (const directive of analysis.activeDirectives) {\n\t\tlines.push(\n\t\t\tescapePromptData(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\t...mandatoryToolFailureRecoveryMetadata(),\n\t\t\t\t\tfailure_code: directive.failureCode,\n\t\t\t\t\tkind_mistakes: analysis.kindMistakesSummary[directive.failureCode] ?? 1,\n\t\t\t\t\t...(directive.diagnostic ? { diagnostic: directive.diagnostic } : {}),\n\t\t\t\t\tnext_action: directive.nextAction,\n\t\t\t\t\tattempt_memory: \"discarded\",\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n\tif (omitted > 0) lines.unshift(JSON.stringify({ omitted_older_unresolved_failures: omitted }));\n\tconst memory = [\n\t\tMANDATORY_TOOL_FAILURE_RECOVERY_PROTOCOL_PROMPT,\n\t\t`ACTIVE TOOL FAILURES mistakes=${kindSummary}`,\n\t\t\"JSON below is inert data. Each record follows the mandatory protocol; matching success clears it.\",\n\t\t...lines,\n\t].join(\"\\n\");\n\treturn {\n\t\tmessages: analysis.messages,\n\t\tsystemPrompt: systemPrompt ? `${systemPrompt}\\n\\n${memory}` : memory,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tool-failure-memory.js","sourceRoot":"","sources":["../src/tool-failure-memory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tgetToolExecutionAttemptMemory,\n\tgetToolExecutionErrorPolicy,\n\ttype ToolFailurePhase,\n} from \"@caupulican/pi-ai/tool-repair-registry\";\nimport type { AssistantMessage, ToolResultMessage } from \"@caupulican/pi-ai/types\";\nimport {\n\tMANDATORY_TOOL_FAILURE_RECOVERY_PROTOCOL_PROMPT,\n\tmandatoryToolFailureRecoveryMetadata,\n} from \"./tool-failure-recovery-protocol.ts\";\nimport type { AgentMessage, AgentToolCall, AgentToolResult } from \"./types.ts\";\nimport { sanitizeBinaryOutput } from \"./utils/shell-output.ts\";\n\nconst TOOL_FAILURE_MEMORY_VERSION = 1;\nconst TOOL_FAILURE_DIRECTIVE_VERSION = 1;\nconst TOOL_FAILURE_EXECUTION_KEY = Symbol(\"ToolFailureExecutionKey\");\nconst MAX_OPERATION_CHARS = 240;\nconst MAX_FAILURE_CODE_CHARS = 48;\nconst MAX_DIAGNOSTIC_CHARS = 240;\nconst MAX_CORRECTION_CHARS = 320;\nconst MAX_TOOL_NAME_CHARS = 64;\nconst TOOL_SIGNATURE_HEX_CHARS = 32;\nconst MAX_ACTIVE_FAILURES = 8;\nconst MAX_TRACKED_FAILURES = 64;\nconst REPAIRABLE_REJECTION_CODES = new Set([\"invalid_arguments\", \"malformed_call\", \"unknown_tool\"]);\nconst LEGACY_GENERIC_EXECUTION_CORRECTION =\n\t\"Change the arguments or approach before retrying; do not resend the unchanged operation.\";\nconst BLOCKED_REPLAY_CAVEMAN_CORRECTION =\n\t\"CAVEMAN MODE - MANDATORY. SAME OPERATION BLOCKED. Do not repeat an unchanged operation. NEVER call it again with the same arguments in this run. This is not a harness loop or failure.\";\nconst CLOSED_OPERATION_CAVEMAN_CORRECTION =\n\t\"CAVEMAN MODE - MANDATORY: OPERATION CLOSED; not executed. Do not repeat an unchanged operation. NEVER call it again with the same arguments in this run. Use a different operation/tool or continue independent work. The recovery guard prevented a loop; this is not harness failure.\";\n\nexport type ToolFailureState = \"failed\" | \"rejected\";\n\nexport interface ToolFailureMemoryRecord {\n\tversion: typeof TOOL_FAILURE_MEMORY_VERSION;\n\tfailureKey: string;\n\t/** Exact identity is process-internal and omitted from serialized failure memory. */\n\treadonly [TOOL_FAILURE_EXECUTION_KEY]?: string;\n\ttool: string;\n\toperation: string;\n\toccurrence: number;\n\tkindMistakes?: number;\n\tmistakeKind?: string;\n\tstate: ToolFailureState;\n\tphase: ToolFailurePhase;\n\tfailureCode: string;\n\tdiagnostic?: string;\n\tcorrection: string;\n\tattemptMemory?: \"discard\";\n}\n\nexport interface ToolFailureMemoryDetails {\n\tpiToolFailureMemory: ToolFailureMemoryRecord;\n}\n\nexport interface ToolFailureDirectiveDetails {\n\tpiToolFailureDirective: {\n\t\tversion: typeof TOOL_FAILURE_DIRECTIVE_VERSION;\n\t\tstate: ToolFailureState;\n\t\tphase: ToolFailurePhase;\n\t\tfailureCode: string;\n\t\tdiagnostic?: string;\n\t\tnextAction: string;\n\t};\n}\n\nexport type ToolFailureResultDetails = ToolFailureMemoryDetails | ToolFailureDirectiveDetails;\n\nexport type ToolFailureMemoryTracker = Map<string, ToolFailureMemoryRecord>;\n\ninterface ToolOperationIdentity {\n\tfailureKey: string;\n\texecutionKey: string;\n\ttool: string;\n\toperation: string;\n}\n\ninterface ActiveFailure {\n\trecord: ToolFailureMemoryRecord;\n\tsequence: number;\n}\n\ninterface FailureContextAnalysis {\n\tmessages: AgentMessage[];\n\tactiveRecords: ToolFailureMemoryRecord[];\n\tactiveDirectives: ToolFailureDirectiveDetails[\"piToolFailureDirective\"][];\n\tkindMistakesSummary: Record<string, number>;\n}\n\nfunction truncate(value: string, maxChars: number): string {\n\tif (value.length <= maxChars) return value;\n\tlet end = maxChars - 1;\n\tconst code = value.charCodeAt(end - 1);\n\tif (code >= 0xd800 && code <= 0xdbff) end--;\n\treturn `${value.slice(0, end)}…`;\n}\n\nfunction truncateMiddle(value: string, maxChars: number): string {\n\tif (value.length <= maxChars) return value;\n\tconst available = maxChars - 1;\n\tlet headEnd = Math.ceil(available / 2);\n\tlet tailStart = value.length - Math.floor(available / 2);\n\tconst headCode = value.charCodeAt(headEnd - 1);\n\tif (headCode >= 0xd800 && headCode <= 0xdbff) headEnd--;\n\tconst tailCode = value.charCodeAt(tailStart);\n\tif (tailCode >= 0xdc00 && tailCode <= 0xdfff) tailStart++;\n\treturn `${value.slice(0, headEnd)}…${value.slice(tailStart)}`;\n}\n\nfunction safeJson(value: unknown): string {\n\ttry {\n\t\treturn JSON.stringify(value) ?? \"null\";\n\t} catch {\n\t\treturn \"[unserializable]\";\n\t}\n}\n\ninterface SignatureHash {\n\tfirst: number;\n\tsecond: number;\n\tthird: number;\n\tfourth: number;\n}\n\nconst VOLATILE_SIGNATURE_PATTERN =\n\t/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|(\\d{4}-\\d{2}-\\d{2}[tT][0-9:.]+(?:z|[+-]\\d{2}:?\\d{2})?)|(\\b[0-9a-f]{16,}\\b)|(\\d{10,})/gi;\nconst MAX_SIGNATURE_DEPTH = 128;\nconst MAX_PREVIEW_DEPTH = 6;\nconst MAX_PREVIEW_ITEMS = 8;\nconst MAX_PREVIEW_STRING_CHARS = 96;\n\nfunction updateHashCode(hash: SignatureHash, code: number): void {\n\thash.first = Math.imul(hash.first ^ code, 0x01000193);\n\thash.second = Math.imul(hash.second ^ code, 0x85ebca6b);\n\thash.third = Math.imul(hash.third ^ code, 0x27d4eb2d);\n\thash.fourth = Math.imul(hash.fourth ^ code, 0x165667b1);\n}\n\nfunction updateHashRange(hash: SignatureHash, value: string, start = 0, end = value.length): void {\n\tfor (let index = start; index < end; index++) updateHashCode(hash, value.charCodeAt(index));\n}\n\nfunction updateNormalizedHashString(hash: SignatureHash, value: string): void {\n\tif (value.length < 10) {\n\t\tupdateExactHashString(hash, value);\n\t\treturn;\n\t}\n\tVOLATILE_SIGNATURE_PATTERN.lastIndex = 0;\n\tlet offset = 0;\n\tlet normalizedLength = value.length;\n\tfor (const match of value.matchAll(VOLATILE_SIGNATURE_PATTERN)) {\n\t\tconst index = match.index;\n\t\tupdateHashRange(hash, value, offset, index);\n\t\tconst replacement = match[1] ? \"<uuid>\" : match[2] ? \"<ts>\" : match[3] ? \"<hex>\" : \"<num>\";\n\t\tupdateHashRange(hash, replacement);\n\t\tnormalizedLength += replacement.length - match[0].length;\n\t\toffset = index + match[0].length;\n\t}\n\tupdateHashRange(hash, value, offset);\n\tupdateHashRange(hash, `:${normalizedLength};`);\n}\n\nfunction updateExactHashString(hash: SignatureHash, value: string): void {\n\tupdateHashRange(hash, value);\n\tupdateHashRange(hash, `:${value.length};`);\n}\n\nfunction updateStructuredHash(\n\thash: SignatureHash,\n\tvalue: unknown,\n\tactive: Set<object>,\n\tdepth: number,\n\tupdateHashString: (hash: SignatureHash, value: string) => void,\n): void {\n\tif (depth > MAX_SIGNATURE_DEPTH) {\n\t\tupdateHashRange(hash, \"depth;\");\n\t\treturn;\n\t}\n\tif (value === null) {\n\t\tupdateHashRange(hash, \"null;\");\n\t\treturn;\n\t}\n\tswitch (typeof value) {\n\t\tcase \"string\":\n\t\t\tupdateHashRange(hash, \"string:\");\n\t\t\tupdateHashString(hash, value);\n\t\t\treturn;\n\t\tcase \"number\":\n\t\t\tupdateHashRange(hash, \"number:\");\n\t\t\tupdateHashString(hash, Object.is(value, -0) ? \"-0\" : String(value));\n\t\t\treturn;\n\t\tcase \"boolean\":\n\t\t\tupdateHashRange(hash, value ? \"true;\" : \"false;\");\n\t\t\treturn;\n\t\tcase \"undefined\":\n\t\t\tupdateHashRange(hash, \"undefined;\");\n\t\t\treturn;\n\t\tcase \"bigint\":\n\t\t\tupdateHashRange(hash, `bigint:${value.toString()};`);\n\t\t\treturn;\n\t\tcase \"symbol\":\n\t\t\tupdateHashRange(hash, `symbol:${String(value.description ?? \"\")};`);\n\t\t\treturn;\n\t\tcase \"function\":\n\t\t\tupdateHashRange(hash, `function:${value.name};`);\n\t\t\treturn;\n\t\tcase \"object\":\n\t\t\tbreak;\n\t}\n\n\tif (active.has(value)) {\n\t\tupdateHashRange(hash, \"circular;\");\n\t\treturn;\n\t}\n\tactive.add(value);\n\tif (Array.isArray(value)) {\n\t\tupdateHashRange(hash, `array:${value.length}[`);\n\t\tfor (const item of value) updateStructuredHash(hash, item, active, depth + 1, updateHashString);\n\t\tupdateHashRange(hash, \"];\");\n\t} else {\n\t\tconst keys = Object.keys(value).sort();\n\t\tupdateHashRange(hash, `object:${keys.length}{`);\n\t\tfor (const key of keys) {\n\t\t\tupdateHashString(hash, key);\n\t\t\tupdateStructuredHash(hash, (value as Record<string, unknown>)[key], active, depth + 1, updateHashString);\n\t\t}\n\t\tupdateHashRange(hash, \"};\");\n\t}\n\tactive.delete(value);\n}\n\nfunction createSignatureHash(): SignatureHash {\n\treturn {\n\t\tfirst: 0x811c9dc5,\n\t\tsecond: 0x9e3779b9,\n\t\tthird: 0x85ebca6b,\n\t\tfourth: 0xc2b2ae35,\n\t};\n}\n\nfunction renderSignatureHash(hash: SignatureHash): string {\n\treturn [hash.first, hash.second, hash.third, hash.fourth]\n\t\t.map((part) => (part >>> 0).toString(16).padStart(8, \"0\"))\n\t\t.join(\"\");\n}\n\nfunction structuredHash(value: unknown, normalizeVolatile: boolean): string {\n\tconst hash = createSignatureHash();\n\tupdateStructuredHash(\n\t\thash,\n\t\tvalue,\n\t\tnew Set(),\n\t\t0,\n\t\tnormalizeVolatile ? updateNormalizedHashString : updateExactHashString,\n\t);\n\treturn renderSignatureHash(hash);\n}\n\nfunction boundedJsonPreview(value: unknown, maxChars: number): string {\n\tlet output = \"\";\n\tlet exhausted = false;\n\tconst active = new Set<object>();\n\tconst append = (text: string): void => {\n\t\tif (exhausted) return;\n\t\tconst available = maxChars - output.length;\n\t\tif (text.length <= available) {\n\t\t\toutput += text;\n\t\t\treturn;\n\t\t}\n\t\tif (available > 1) output += `${text.slice(0, available - 1)}…`;\n\t\texhausted = true;\n\t};\n\tconst visit = (item: unknown, depth: number): void => {\n\t\tif (exhausted) return;\n\t\tif (depth > MAX_PREVIEW_DEPTH) {\n\t\t\tappend('\"[depth]\"');\n\t\t\treturn;\n\t\t}\n\t\tif (typeof item === \"string\") {\n\t\t\tappend(safeJson(truncateMiddle(item, MAX_PREVIEW_STRING_CHARS)));\n\t\t\treturn;\n\t\t}\n\t\tif (item === null || typeof item === \"number\" || typeof item === \"boolean\") {\n\t\t\tappend(String(item));\n\t\t\treturn;\n\t\t}\n\t\tif (typeof item !== \"object\") {\n\t\t\tappend(safeJson(`[${typeof item}]`));\n\t\t\treturn;\n\t\t}\n\t\tif (active.has(item)) {\n\t\t\tappend('\"[circular]\"');\n\t\t\treturn;\n\t\t}\n\t\tactive.add(item);\n\t\tif (Array.isArray(item)) {\n\t\t\tappend(\"[\");\n\t\t\tconst count = Math.min(item.length, MAX_PREVIEW_ITEMS);\n\t\t\tfor (let index = 0; index < count && !exhausted; index++) {\n\t\t\t\tif (index > 0) append(\",\");\n\t\t\t\tvisit(item[index], depth + 1);\n\t\t\t}\n\t\t\tif (item.length > count) append(`${count > 0 ? \",\" : \"\"}\"[+${item.length - count} items]\"`);\n\t\t\tappend(\"]\");\n\t\t} else {\n\t\t\tappend(\"{\");\n\t\t\tlet count = 0;\n\t\t\tlet omitted = 0;\n\t\t\tconst keys = Object.keys(item).sort();\n\t\t\tfor (const key of keys) {\n\t\t\t\tif (count >= MAX_PREVIEW_ITEMS) {\n\t\t\t\t\tomitted++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (count > 0) append(\",\");\n\t\t\t\tappend(safeJson(truncateMiddle(key, MAX_PREVIEW_STRING_CHARS)));\n\t\t\t\tappend(\":\");\n\t\t\t\tvisit((item as Record<string, unknown>)[key], depth + 1);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tif (omitted > 0) append(`${count > 0 ? \",\" : \"\"}\"[omitted]\":${omitted}`);\n\t\t\tappend(\"}\");\n\t\t}\n\t\tactive.delete(item);\n\t};\n\tvisit(value, 0);\n\treturn truncateMiddle(output || \"null\", maxChars);\n}\n\n/**\n * Fingerprint a tool operation without materializing or retaining its serialized payload.\n * Volatile identifiers normalize before hashing; short numbers and ordinary paths remain significant.\n */\n/**\n * Resource-envelope fields are not the operation. Changing `timeout` (or a sibling wait bound)\n * must not mint a new execution identity — that is how a failed command is replayed forever.\n */\nconst OPERATION_ENVELOPE_KEYS = new Set([\n\t\"timeout\",\n\t\"timeoutms\",\n\t\"timeout_ms\",\n\t\"timeoutsec\",\n\t\"timeout_sec\",\n\t\"timeoutseconds\",\n\t\"timeout_seconds\",\n\t\"maxwait\",\n\t\"max_wait\",\n\t\"maxwaitms\",\n\t\"max_wait_ms\",\n\t\"waitms\",\n\t\"wait_ms\",\n\t\"waitsec\",\n\t\"wait_sec\",\n\t\"waitseconds\",\n\t\"wait_seconds\",\n]);\n\nfunction omitOperationEnvelopeFields(value: unknown): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst record = value as Record<string, unknown>;\n\tlet changed = false;\n\tconst next: Record<string, unknown> = {};\n\tfor (const [key, entry] of Object.entries(record)) {\n\t\tif (OPERATION_ENVELOPE_KEYS.has(key.toLowerCase())) {\n\t\t\tchanged = true;\n\t\t\tcontinue;\n\t\t}\n\t\tnext[key] = entry;\n\t}\n\treturn changed ? next : value;\n}\n\nexport function normalizeToolSignature(pairs: Array<[string, unknown]>): string {\n\treturn structuredHash(\n\t\tpairs.map(([name, args]) => [name, omitOperationEnvelopeFields(args)]),\n\t\ttrue,\n\t);\n}\n\nfunction toolOperationKey(tool: string, args: unknown, normalizeVolatile: boolean): string {\n\tconst identityArgs = omitOperationEnvelopeFields(args);\n\tconst boundedTool = truncate(tool, MAX_TOOL_NAME_CHARS);\n\tconst hash = createSignatureHash();\n\tconst updateHashString = normalizeVolatile ? updateNormalizedHashString : updateExactHashString;\n\tconst active = new Set<object>();\n\t// Preserve the stable structured-hash wire identity without allocating the two synthetic arrays.\n\tupdateHashRange(hash, \"array:1[array:2[\");\n\tupdateStructuredHash(hash, tool, active, 2, updateHashString);\n\tupdateStructuredHash(hash, identityArgs, active, 2, updateHashString);\n\tupdateHashRange(hash, \"];];\");\n\tconst signature = renderSignatureHash(hash);\n\treturn `${boundedTool}:${signature}`;\n}\n\nfunction operationIdentity(tool: string, args: unknown): ToolOperationIdentity {\n\treturn {\n\t\tfailureKey: toolOperationKey(tool, args, true),\n\t\texecutionKey: toolOperationKey(tool, args, false),\n\t\ttool: truncate(tool, MAX_TOOL_NAME_CHARS),\n\t\toperation: boundedJsonPreview(args, MAX_OPERATION_CHARS),\n\t};\n}\n\nfunction getToolFailureKey(tool: string, args: unknown): string {\n\treturn toolOperationKey(tool, args, true);\n}\n\nexport function getToolExecutionKey(tool: string, args: unknown): string {\n\treturn toolOperationKey(tool, args, false);\n}\n\n/** Read the four hash words already encoded by this module's exact execution-key owner. */\nexport function getToolExecutionKeyHashParts(executionKey: string): readonly [number, number, number, number] {\n\tconst separator = executionKey.lastIndexOf(\":\");\n\tconst signature = executionKey.slice(separator + 1);\n\tif (separator < 0 || signature.length !== TOOL_SIGNATURE_HEX_CHARS || !/^[0-9a-f]+$/.test(signature)) {\n\t\tthrow new TypeError(\"Tool execution key has an invalid hash signature.\");\n\t}\n\treturn [\n\t\tNumber.parseInt(signature.slice(0, 8), 16),\n\t\tNumber.parseInt(signature.slice(8, 16), 16),\n\t\tNumber.parseInt(signature.slice(16, 24), 16),\n\t\tNumber.parseInt(signature.slice(24, 32), 16),\n\t];\n}\n\nexport function getToolFailureRecordExecutionKey(record: ToolFailureMemoryRecord): string | undefined {\n\treturn record[TOOL_FAILURE_EXECUTION_KEY];\n}\n\nexport function getUnresolvedToolFailure(\n\ttracker: ToolFailureMemoryTracker,\n\ttool: string,\n\targs: unknown,\n): ToolFailureMemoryRecord | undefined {\n\treturn tracker.get(getToolFailureKey(tool, args));\n}\n\nexport function readVisibleToolFailureCode(result: ToolResultMessage): string | undefined {\n\tfor (const block of result.content) {\n\t\tif (block.type !== \"text\") continue;\n\t\tconst match = /\"failure_code\"\\s*:\\s*\"([^\"]+)\"/.exec(block.text);\n\t\tif (match) return match[1];\n\t}\n\treturn undefined;\n}\n\nexport function isClosedOperationFailureCode(code: string | undefined): boolean {\n\treturn code === \"operation_recovery_exhausted\" || code === \"recovery_exhausted\";\n}\n\n/** Failures that only a new owner prompt can clear. Do not restore their circuit across user turns. */\nexport function isPromptScopedFailureCode(code: string | undefined): boolean {\n\treturn code === \"owner_authorization_required\";\n}\n\nexport function restoreToolFailureRecord(\n\tresult: ToolResultMessage,\n\ttool: string,\n\targs: unknown,\n): ToolFailureMemoryRecord {\n\tconst executionKey = getToolExecutionKey(tool, args);\n\tconst persisted = readFailureRecord(result.details);\n\tif (persisted) {\n\t\treturn {\n\t\t\t...persisted,\n\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: getToolFailureRecordExecutionKey(persisted) ?? executionKey,\n\t\t};\n\t}\n\tconst identity = operationIdentity(tool, args);\n\treturn {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: identity.failureKey,\n\t\t[TOOL_FAILURE_EXECUTION_KEY]: executionKey,\n\t\ttool: identity.tool,\n\t\toperation: identity.operation,\n\t\toccurrence: 1,\n\t\tstate: \"failed\",\n\t\tphase: \"execution\",\n\t\tfailureCode: boundedFailureCode(readVisibleToolFailureCode(result) ?? \"tool_error\"),\n\t\tcorrection: fallbackFailureGuidance(\"failed\", false, \"execution\"),\n\t};\n}\n\nexport interface PairedToolResult {\n\ttool: string;\n\targs: unknown;\n\texecutionKey: string;\n\tresult: ToolResultMessage;\n}\n\nexport function forEachPairedToolResult(\n\tmessages: readonly AgentMessage[],\n\tvisit: (pair: PairedToolResult) => boolean | undefined,\n): void {\n\tconst callsById = new Map<string, { name: string; args: unknown }>();\n\tfor (const message of messages) {\n\t\tif (message.role === \"assistant\") {\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\t\tcallsById.set(block.id, { name: block.name, args: block.arguments });\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"toolResult\") continue;\n\t\tconst call = callsById.get(message.toolCallId);\n\t\tif (!call) continue;\n\t\tif (\n\t\t\tvisit({\n\t\t\t\ttool: call.name,\n\t\t\t\targs: call.args,\n\t\t\t\texecutionKey: getToolExecutionKey(call.name, call.args),\n\t\t\t\tresult: message,\n\t\t\t}) === false\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nexport function transcriptHasClosedToolOperation(messages: readonly AgentMessage[]): boolean {\n\tconst closedByExecutionKey = new Map<string, true>();\n\tforEachPairedToolResult(messages, ({ executionKey, result }) => {\n\t\tif (!result.isError) {\n\t\t\tclosedByExecutionKey.delete(executionKey);\n\t\t\treturn;\n\t\t}\n\t\tif (isClosedOperationFailureCode(readVisibleToolFailureCode(result))) {\n\t\t\tclosedByExecutionKey.set(executionKey, true);\n\t\t}\n\t});\n\treturn closedByExecutionKey.size > 0;\n}\n\nfunction boundedFailureCode(value: string): string {\n\tconst normalized = value\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_.:-]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\");\n\treturn truncate(normalized || \"tool_error\", MAX_FAILURE_CODE_CHARS);\n}\n\n/**\n * bash.ts's own trailer (`appendStatus`) always ends the message with a line like \"Command\n * exited with code 1\"; a structured result (e.g. run_process) instead puts \"exitCode: 1\" on its\n * own line near the top. Both are anchored to the START of their own line, with at most one\n * leading tool-name token (\"Command\"/\"Python\"/...) — ordinary stdout/stderr prose is never\n * anchored that way, so a captured line like \"container will exit 0 on SIGTERM\" can never be\n * read as the process exit status. Scan from the end of the message so the tool's own trailer —\n * always the last line it appends — outranks any earlier, non-authoritative line that matches.\n */\nconst EXIT_STATUS_LINE_PATTERN = /^(?:\\S+\\s+)?(?:exit(?:ed)?(?:\\s+with)?(?:\\s+code)?|exitcode)\\s*[:=]?\\s*(-?\\d+)\\b/i;\n\nfunction processExitFailureCode(message: string): string | undefined {\n\tconst lines = message.split(/\\r\\n|\\n/);\n\tfor (let index = lines.length - 1; index >= 0; index--) {\n\t\tconst match = EXIT_STATUS_LINE_PATTERN.exec(lines[index].trim());\n\t\tif (match) return boundedFailureCode(`exit_${match[1]}`);\n\t}\n\treturn undefined;\n}\n\nexport function classifyToolFailure(message: string, errorClass?: string): string {\n\t// A tool-owned terminal status is authoritative; stdout may contain arbitrary all-caps identifiers.\n\tconst exitFailureCode = processExitFailureCode(message);\n\tif (exitFailureCode) return exitFailureCode;\n\tconst errno = /\\b(E[A-Z][A-Z0-9_]{2,})\\b/.exec(message)?.[1];\n\tif (errno) return boundedFailureCode(errno);\n\treturn boundedFailureCode(errorClass ?? \"tool_error\");\n}\n\nfunction isToolFailurePhase(value: unknown): value is ToolFailurePhase {\n\treturn (\n\t\tvalue === \"validation\" ||\n\t\tvalue === \"policy\" ||\n\t\tvalue === \"preflight\" ||\n\t\tvalue === \"execution\" ||\n\t\tvalue === \"timeout\" ||\n\t\tvalue === \"cancelled\" ||\n\t\tvalue === \"provisioning\"\n\t);\n}\n\nfunction inferToolFailurePhase(state: ToolFailureState, failureCode: string): ToolFailurePhase {\n\tif (failureCode === \"malformed_call\" || failureCode === \"unknown_tool\" || failureCode === \"invalid_arguments\") {\n\t\treturn \"validation\";\n\t}\n\tif (\n\t\tfailureCode === \"blocked\" ||\n\t\tfailureCode === \"permission_denied\" ||\n\t\tfailureCode === \"owner_authorization_required\"\n\t) {\n\t\treturn \"policy\";\n\t}\n\tif (failureCode === \"preflight_error\") return \"preflight\";\n\tif (failureCode === \"aborted\" || failureCode === \"cancelled\") return \"cancelled\";\n\tif (failureCode === \"timeout\" || failureCode === \"etimedout\") return \"timeout\";\n\tif (failureCode === \"provisioning_failed\" || failureCode === \"command_not_found\") return \"provisioning\";\n\treturn state === \"rejected\" ? \"validation\" : \"execution\";\n}\n\nfunction fallbackFailureGuidance(state: ToolFailureState, hasDiagnostic: boolean, phase: ToolFailurePhase): string {\n\tif (phase === \"preflight\") {\n\t\treturn hasDiagnostic\n\t\t\t? \"Arguments valid; preflight failed before execution. Resolve diagnostic/host condition before retry.\"\n\t\t\t: \"Arguments valid; preflight failed before execution. Inspect host policy/capability before retry.\";\n\t}\n\tif (phase === \"policy\") return \"Resolve authority/policy restriction or choose allowed approach before retry.\";\n\tif (phase === \"cancelled\") return \"Retry only when operation remains required, cancellation condition cleared.\";\n\tif (phase === \"timeout\") return \"Narrow/split work; retry once only when safe.\";\n\tif (phase === \"provisioning\") {\n\t\treturn hasDiagnostic\n\t\t\t? \"Fix provisioning diagnostic; retry only after environment changes.\"\n\t\t\t: \"Inspect tool availability; request bounded provisioning diagnostic before retry.\";\n\t}\n\treturn state === \"rejected\"\n\t\t? \"Re-read current tool schema; change invalid operation before retry.\"\n\t\t: hasDiagnostic\n\t\t\t? \"Read diagnostic; identify cause; repair parameters or corrective state before retry.\"\n\t\t\t: \"No diagnostic output. Inspect tool contract or request bounded diagnostic before retry.\";\n}\n\nexport function toolFailureCorrection(\n\tmessage: string,\n\tstate: ToolFailureState,\n\tphase: ToolFailurePhase = state === \"rejected\" ? \"validation\" : \"execution\",\n): string {\n\tconst policy = getToolExecutionErrorPolicy(message);\n\treturn policy\n\t\t? truncate(policy.guidance, MAX_CORRECTION_CHARS)\n\t\t: fallbackFailureGuidance(state, message.trim().length > 0, phase);\n}\n\nfunction extractFailureDiagnostic(\n\tmessage: string,\n\tallowUnclassifiedFallback: boolean,\n\trequireStrongSignal = false,\n): string | undefined {\n\tconst rawLines = sanitizeBinaryOutput(message).replaceAll(\"\\r\\n\", \"\\n\").split(\"\\n\");\n\tconst strongDiagnosticPattern =\n\t\t/^(?:(?:error(?:\\[[^\\]]+\\])?|fatal(?: error)?|panic|fail(?:ed|ure)?|invalid|unknown|unsupported|not found|no such|cannot|can't|missing|denied|refused|usage)(?:\\b|:)|[a-z][a-z0-9_.]*error(?::|$)|thread .+ panicked at\\b|--- fail:|\\[fail(?:ed)?\\]|not ok\\b|[×✗]\\s|.{1,160}:\\s+(?:error(?:\\[[^\\]]+\\])?|fatal(?: error)?)(?:\\b|:))/i;\n\tconst stderrMarkerIndex = rawLines.findLastIndex((line) => /^stderr:\\s*$/i.test(line.trim()));\n\tif (stderrMarkerIndex >= 0) {\n\t\tconst stderrLines = rawLines\n\t\t\t.slice(stderrMarkerIndex + 1)\n\t\t\t.map((line) => line.trim())\n\t\t\t.filter(\n\t\t\t\t(line) =>\n\t\t\t\t\tline.length > 0 && !/^command (?:exited with code|timed out after|aborted|killed after)\\b/i.test(line),\n\t\t\t);\n\t\tif (stderrLines.length > 0) {\n\t\t\tconst classified = stderrLines.find((line) => strongDiagnosticPattern.test(line));\n\t\t\tif (classified) return truncateMiddle(classified, MAX_DIAGNOSTIC_CHARS);\n\t\t\t// No stderr line carries a strong signal. Under requireStrongSignal, the caller has\n\t\t\t// already decided uncatalogued output must never be fabricated into a diagnostic (see\n\t\t\t// assessToolFailure) — falling back to the last raw stderr lines here would defeat that\n\t\t\t// guarantee for the common bash case, so fall through to the same allowUnclassifiedFallback\n\t\t\t// gate the no-stderr path below applies.\n\t\t\tif (!requireStrongSignal) {\n\t\t\t\treturn truncateMiddle(stderrLines.slice(-4).join(\" | \"), MAX_DIAGNOSTIC_CHARS);\n\t\t\t}\n\t\t}\n\t}\n\tconst lines = rawLines\n\t\t.map((line) => line.trim())\n\t\t.filter(\n\t\t\t(line) =>\n\t\t\t\tline.length > 0 &&\n\t\t\t\t!/^command (?:exited with code|timed out after|aborted|killed after)\\b/i.test(line) &&\n\t\t\t\t!/^outcome:\\s*(?:failed|aborted|timeout|output_limit)\\b/i.test(line) &&\n\t\t\t\t!/^exitcode:\\s*-?\\d+\\b/i.test(line) &&\n\t\t\t\t!/^(?:stdout|stderr):(?:\\s*\\(empty\\))?$/i.test(line),\n\t\t);\n\tif (lines.length === 0) return undefined;\n\tconst diagnosticPattern = requireStrongSignal\n\t\t? strongDiagnosticPattern\n\t\t: /(?:^|\\b)(?:error|fatal|fail(?:ed|ure)?|invalid|unknown|unsupported|not found|no such|cannot|can't|missing|denied|refused|usage)(?:\\b|:)/i;\n\tconst classified = requireStrongSignal\n\t\t? lines.find((line) => diagnosticPattern.test(line))\n\t\t: [...lines].reverse().find((line) => diagnosticPattern.test(line));\n\tconst diagnostic = classified ?? (allowUnclassifiedFallback ? lines.at(-1) : undefined);\n\treturn diagnostic ? truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined;\n}\n\nexport interface ToolFailureAssessment {\n\tfailureCode: string;\n\tphase: ToolFailurePhase;\n\tdiagnostic?: string;\n\tguidance: string;\n\tattemptMemory?: \"discard\";\n}\n\nexport function assessToolFailure(\n\tmessage: string,\n\tstate: ToolFailureState,\n\terrorClass?: string,\n): ToolFailureAssessment {\n\tconst policy = getToolExecutionErrorPolicy(message);\n\tconst exitFailureCode = processExitFailureCode(message);\n\tconst retainPolicyDiagnostic = policy?.retainDiagnostic === true;\n\tconst diagnostic =\n\t\tstate === \"failed\" && (!policy || policy.retainDiagnostic)\n\t\t\t? extractFailureDiagnostic(\n\t\t\t\t\tmessage,\n\t\t\t\t\texitFailureCode === undefined && (errorClass !== undefined || retainPolicyDiagnostic),\n\t\t\t\t\texitFailureCode !== undefined && !retainPolicyDiagnostic,\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst failureCode = policy?.failureCode ?? classifyToolFailure(message, errorClass);\n\treturn {\n\t\tfailureCode,\n\t\tphase: policy?.phase ?? inferToolFailurePhase(state, failureCode),\n\t\t...(diagnostic ? { diagnostic } : {}),\n\t\tguidance: policy\n\t\t\t? truncate(policy.guidance, MAX_CORRECTION_CHARS)\n\t\t\t: fallbackFailureGuidance(state, diagnostic !== undefined, inferToolFailurePhase(state, failureCode)),\n\t\t...(policy?.attemptMemory === \"discard\" ? { attemptMemory: \"discard\" as const } : {}),\n\t};\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction readFailureRecord(details: unknown): ToolFailureMemoryRecord | undefined {\n\tif (!isRecord(details) || !isRecord(details.piToolFailureMemory)) return undefined;\n\tconst candidate = details.piToolFailureMemory;\n\tif (\n\t\tcandidate.version !== TOOL_FAILURE_MEMORY_VERSION ||\n\t\ttypeof candidate.failureKey !== \"string\" ||\n\t\ttypeof candidate.tool !== \"string\" ||\n\t\ttypeof candidate.operation !== \"string\" ||\n\t\ttypeof candidate.occurrence !== \"number\" ||\n\t\t!Number.isSafeInteger(candidate.occurrence) ||\n\t\tcandidate.occurrence < 1 ||\n\t\t(candidate.state !== \"failed\" && candidate.state !== \"rejected\") ||\n\t\ttypeof candidate.failureCode !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\tconst diagnostic =\n\t\ttypeof candidate.diagnostic === \"string\" ? truncate(candidate.diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined;\n\tconst retainedCorrection =\n\t\ttypeof candidate.correction === \"string\" ? truncate(candidate.correction, MAX_CORRECTION_CHARS) : undefined;\n\tconst correction =\n\t\tcandidate.state === \"failed\" && retainedCorrection === LEGACY_GENERIC_EXECUTION_CORRECTION\n\t\t\t? fallbackFailureGuidance(\"failed\", diagnostic !== undefined, \"execution\")\n\t\t\t: (retainedCorrection ?? toolFailureCorrection(\"\", candidate.state));\n\tconst phase = isToolFailurePhase(candidate.phase)\n\t\t? candidate.phase\n\t\t: inferToolFailurePhase(candidate.state, candidate.failureCode);\n\tconst candidateExecutionKey: unknown = Reflect.get(candidate, TOOL_FAILURE_EXECUTION_KEY);\n\treturn {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: truncate(candidate.failureKey, MAX_TOOL_NAME_CHARS + 1 + TOOL_SIGNATURE_HEX_CHARS),\n\t\t...(typeof candidateExecutionKey === \"string\"\n\t\t\t? {\n\t\t\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: truncate(\n\t\t\t\t\t\tcandidateExecutionKey,\n\t\t\t\t\t\tMAX_TOOL_NAME_CHARS + 1 + TOOL_SIGNATURE_HEX_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\ttool: truncate(candidate.tool, MAX_TOOL_NAME_CHARS),\n\t\toperation: truncateMiddle(candidate.operation, MAX_OPERATION_CHARS),\n\t\toccurrence: candidate.occurrence,\n\t\tstate: candidate.state,\n\t\tphase,\n\t\tfailureCode: boundedFailureCode(candidate.failureCode),\n\t\tdiagnostic,\n\t\tcorrection,\n\t};\n}\n\nfunction readFailureDirective(details: unknown): ToolFailureDirectiveDetails[\"piToolFailureDirective\"] | undefined {\n\tif (!isRecord(details) || !isRecord(details.piToolFailureDirective)) return undefined;\n\tconst candidate = details.piToolFailureDirective;\n\tif (\n\t\tcandidate.version !== TOOL_FAILURE_DIRECTIVE_VERSION ||\n\t\ttypeof candidate.failureCode !== \"string\" ||\n\t\ttypeof candidate.nextAction !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tversion: TOOL_FAILURE_DIRECTIVE_VERSION,\n\t\tstate: candidate.state === \"rejected\" ? \"rejected\" : \"failed\",\n\t\tphase: isToolFailurePhase(candidate.phase)\n\t\t\t? candidate.phase\n\t\t\t: inferToolFailurePhase(\"failed\", candidate.failureCode),\n\t\tfailureCode: boundedFailureCode(candidate.failureCode),\n\t\tdiagnostic:\n\t\t\ttypeof candidate.diagnostic === \"string\" ? truncate(candidate.diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\tnextAction: truncate(candidate.nextAction, MAX_CORRECTION_CHARS),\n\t};\n}\n\nexport interface ToolFailureTelemetry {\n\tstate: ToolFailureState;\n\tphase: ToolFailurePhase;\n\tfailureCode: string;\n\tdiagnostic?: string;\n\tnextAction: string;\n}\n\n/** Read only bounded failure identity and guidance; operation arguments never cross this telemetry boundary. */\nexport function readToolFailureTelemetry(details: unknown): ToolFailureTelemetry | undefined {\n\tconst record = readFailureRecord(details);\n\tif (record) {\n\t\treturn {\n\t\t\tstate: record.state,\n\t\t\tphase: record.phase,\n\t\t\tfailureCode: record.failureCode,\n\t\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t\tnextAction: record.correction,\n\t\t};\n\t}\n\tconst directive = readFailureDirective(details);\n\tif (!directive) return undefined;\n\treturn {\n\t\tstate: directive.state,\n\t\tphase: directive.phase,\n\t\tfailureCode: directive.failureCode,\n\t\t...(directive.diagnostic ? { diagnostic: directive.diagnostic } : {}),\n\t\tnextAction: directive.nextAction,\n\t};\n}\n\nfunction firstText(message: ToolResultMessage): string {\n\tconst content = message.content;\n\tif (typeof content === \"string\") return content;\n\tif (Array.isArray(content)) {\n\t\tfor (let index = 0; index < content.length; index++) {\n\t\t\tconst block = content[index];\n\t\t\tif (block.type === \"text\") return block.text;\n\t\t}\n\t}\n\treturn \"\";\n}\n\nfunction fastTextSignature(text: string): string {\n\tif (text.length <= 128) return text;\n\treturn `${text.length}:${text.slice(0, 48)}:${text.slice(-48)}`;\n}\n\nfunction analyzeToolFailureContext(messages: AgentMessage[]): FailureContextAnalysis {\n\tconst callById = new Map<string, AgentToolCall>();\n\tconst omittedCallIds = new Set<string>();\n\tconst orphanFailedResults = new Set<ToolResultMessage>();\n\tconst active = new Map<string, ActiveFailure>();\n\tconst activeDirectives = new Map<string, ToolFailureDirectiveDetails[\"piToolFailureDirective\"]>();\n\tlet sequence = 0;\n\tconst kindMistakesMap = new Map<string, number>();\n\n\tconst latestSuccessfulByOpKey = new Map<string, string>();\n\tconst latestSuccessfulByPayloadKey = new Map<string, string>();\n\n\tfor (let index = 0; index < messages.length; index++) {\n\t\tconst message = messages[index];\n\t\tif (message.role === \"assistant\") {\n\t\t\tactiveDirectives.clear();\n\t\t\tconst content = message.content;\n\t\t\tfor (let blockIdx = 0; blockIdx < content.length; blockIdx++) {\n\t\t\t\tconst block = content[blockIdx];\n\t\t\t\tif (block.type !== \"toolCall\") continue;\n\t\t\t\tcallById.set(block.id, block);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"toolResult\") continue;\n\n\t\tconst call = callById.get(message.toolCallId);\n\t\tcallById.delete(message.toolCallId);\n\t\tconst textPayload = firstText(message);\n\t\tconst isFailure = message.isError === true || textPayload.startsWith(\"[harness] \");\n\t\tif (isFailure) {\n\t\t\tconst toolName = call?.name ?? message.toolName;\n\t\t\tconst kindCount = (kindMistakesMap.get(toolName) ?? 0) + 1;\n\t\t\tkindMistakesMap.set(toolName, kindCount);\n\n\t\t\tconst directive = readFailureDirective(message.details);\n\t\t\tif (directive) {\n\t\t\t\tactiveDirectives.delete(directive.failureCode);\n\t\t\t\tactiveDirectives.set(directive.failureCode, directive);\n\t\t\t\tif (call) omittedCallIds.add(call.id);\n\t\t\t\telse orphanFailedResults.add(message);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst retained = readFailureRecord(message.details);\n\t\t\tconst state = retained?.state ?? \"failed\";\n\t\t\tconst assessment = retained ? undefined : assessToolFailure(textPayload, state);\n\t\t\tlet failureKey: string;\n\t\t\tlet executionKey: string | undefined;\n\t\t\tlet tool: string;\n\t\t\tlet operation: string;\n\t\t\tif (retained) {\n\t\t\t\tfailureKey = retained.failureKey;\n\t\t\t\texecutionKey = call\n\t\t\t\t\t? getToolExecutionKey(call.name, call.arguments)\n\t\t\t\t\t: getToolFailureRecordExecutionKey(retained);\n\t\t\t\ttool = retained.tool;\n\t\t\t\toperation = retained.operation;\n\t\t\t} else {\n\t\t\t\tconst identity = operationIdentity(\n\t\t\t\t\tcall?.name ?? message.toolName,\n\t\t\t\t\tcall?.arguments ?? { toolCallId: message.toolCallId },\n\t\t\t\t);\n\t\t\t\tfailureKey = identity.failureKey;\n\t\t\t\texecutionKey = identity.executionKey;\n\t\t\t\ttool = identity.tool;\n\t\t\t\toperation = identity.operation;\n\t\t\t}\n\t\t\tconst previous = active.get(failureKey)?.record;\n\t\t\tconst occurrence = Math.max(retained?.occurrence ?? 0, (previous?.occurrence ?? 0) + 1);\n\t\t\tconst record: ToolFailureMemoryRecord = {\n\t\t\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\t\t\tfailureKey,\n\t\t\t\t...(executionKey ? { [TOOL_FAILURE_EXECUTION_KEY]: executionKey } : {}),\n\t\t\t\ttool,\n\t\t\t\toperation,\n\t\t\t\toccurrence,\n\t\t\t\tkindMistakes: kindCount,\n\t\t\t\tmistakeKind: toolName,\n\t\t\t\tstate,\n\t\t\t\tphase: retained?.phase ?? assessment?.phase ?? inferToolFailurePhase(state, \"tool_error\"),\n\t\t\t\tfailureCode: retained?.failureCode ?? assessment?.failureCode ?? \"tool_error\",\n\t\t\t\tdiagnostic: retained?.diagnostic ?? assessment?.diagnostic,\n\t\t\t\tcorrection:\n\t\t\t\t\tretained?.correction ??\n\t\t\t\t\tassessment?.guidance ??\n\t\t\t\t\tfallbackFailureGuidance(state, false, inferToolFailurePhase(state, \"tool_error\")),\n\t\t\t};\n\t\t\tactive.delete(failureKey);\n\t\t\tactive.set(failureKey, { record, sequence: sequence++ });\n\t\t\twhile (active.size > MAX_TRACKED_FAILURES) {\n\t\t\t\tconst oldest = active.keys().next().value;\n\t\t\t\tif (oldest === undefined) break;\n\t\t\t\tactive.delete(oldest);\n\t\t\t}\n\t\t\tif (call) omittedCallIds.add(call.id);\n\t\t\telse orphanFailedResults.add(message);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (call) {\n\t\t\tconst opKey = getToolFailureKey(call.name, call.arguments);\n\t\t\tactive.delete(opKey);\n\t\t\tconst previousOperationCallId = latestSuccessfulByOpKey.get(opKey);\n\t\t\tif (previousOperationCallId) omittedCallIds.add(previousOperationCallId);\n\t\t\tlatestSuccessfulByOpKey.set(opKey, call.id);\n\n\t\t\tconst textPayload = firstText(message);\n\t\t\tif (textPayload.length >= 64) {\n\t\t\t\tconst payloadKey = `payload:${fastTextSignature(textPayload)}`;\n\t\t\t\tconst previousPayloadCallId = latestSuccessfulByPayloadKey.get(payloadKey);\n\t\t\t\tif (previousPayloadCallId) omittedCallIds.add(previousPayloadCallId);\n\t\t\t\tlatestSuccessfulByPayloadKey.set(payloadKey, call.id);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst kindMistakesSummary = Object.fromEntries(kindMistakesMap);\n\n\tif (omittedCallIds.size === 0 && orphanFailedResults.size === 0) {\n\t\treturn { messages, activeRecords: [], activeDirectives: [], kindMistakesSummary };\n\t}\n\n\tconst filteredMessages: AgentMessage[] = [];\n\tfor (let index = 0; index < messages.length; index++) {\n\t\tconst message = messages[index];\n\t\tif (message.role === \"toolResult\") {\n\t\t\tif (omittedCallIds.has(message.toolCallId) || orphanFailedResults.has(message)) continue;\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role !== \"assistant\") {\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tconst content = message.content;\n\t\tif (content.length === 1) {\n\t\t\tconst block = content[0];\n\t\t\tif (block.type === \"toolCall\" && omittedCallIds.has(block.id)) continue;\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tlet hasOmitted = false;\n\t\tfor (let blockIdx = 0; blockIdx < content.length; blockIdx++) {\n\t\t\tconst block = content[blockIdx];\n\t\t\tif (block.type === \"toolCall\" && omittedCallIds.has(block.id)) {\n\t\t\t\thasOmitted = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!hasOmitted) {\n\t\t\tfilteredMessages.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tconst retainedContent = content.filter((block) => block.type !== \"toolCall\" || !omittedCallIds.has(block.id));\n\t\tif (retainedContent.length > 0) {\n\t\t\tfilteredMessages.push({ ...message, content: retainedContent } satisfies AssistantMessage);\n\t\t}\n\t}\n\tconst activeRecords = [...active.values()]\n\t\t.sort((left, right) => left.sequence - right.sequence)\n\t\t.map(({ record }) => record);\n\treturn {\n\t\tmessages: filteredMessages,\n\t\tactiveRecords,\n\t\tactiveDirectives: [...activeDirectives.values()],\n\t\tkindMistakesSummary,\n\t};\n}\n\nexport function createToolFailureMemoryTracker(messages: AgentMessage[]): ToolFailureMemoryTracker {\n\treturn new Map(analyzeToolFailureContext(messages).activeRecords.map((record) => [record.failureKey, record]));\n}\n\nexport function rememberToolFailure(\n\ttracker: ToolFailureMemoryTracker,\n\ttool: string,\n\targs: unknown,\n\tstate: ToolFailureState,\n\tfailureCode: string,\n\tcorrection: string,\n\tdiagnostic?: string,\n\tphase: ToolFailurePhase = inferToolFailurePhase(state, failureCode),\n): ToolFailureMemoryRecord {\n\tlet kindCount = 1;\n\tfor (const previous of tracker.values()) {\n\t\tif (previous.tool === tool) {\n\t\t\tkindCount = Math.max(kindCount, (previous.kindMistakes ?? previous.occurrence) + 1);\n\t\t}\n\t}\n\tif (getToolExecutionAttemptMemory(failureCode) === \"discard\") {\n\t\tfor (const [failureKey, previous] of tracker) {\n\t\t\tif (previous.tool === tool && previous.failureCode === failureCode) tracker.delete(failureKey);\n\t\t}\n\t\treturn {\n\t\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\t\tfailureKey: `directive:${boundedFailureCode(failureCode)}`,\n\t\t\t[TOOL_FAILURE_EXECUTION_KEY]: getToolExecutionKey(tool, args),\n\t\t\ttool: truncate(tool, MAX_TOOL_NAME_CHARS),\n\t\t\toperation: \"[discarded]\",\n\t\t\toccurrence: 1,\n\t\t\tkindMistakes: kindCount,\n\t\t\tmistakeKind: tool,\n\t\t\tstate,\n\t\t\tphase,\n\t\t\tfailureCode: boundedFailureCode(failureCode),\n\t\t\tdiagnostic: diagnostic ? truncate(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\t\tcorrection: truncate(correction, MAX_CORRECTION_CHARS),\n\t\t\tattemptMemory: \"discard\",\n\t\t};\n\t}\n\tconst identity = operationIdentity(tool, args);\n\tconst previous = tracker.get(identity.failureKey);\n\tconst record: ToolFailureMemoryRecord = {\n\t\tversion: TOOL_FAILURE_MEMORY_VERSION,\n\t\tfailureKey: identity.failureKey,\n\t\t[TOOL_FAILURE_EXECUTION_KEY]: identity.executionKey,\n\t\ttool: identity.tool,\n\t\toperation: identity.operation,\n\t\toccurrence: (previous?.occurrence ?? 0) + 1,\n\t\tkindMistakes: kindCount,\n\t\tmistakeKind: tool,\n\t\tstate,\n\t\tphase,\n\t\tfailureCode: boundedFailureCode(failureCode),\n\t\tdiagnostic: diagnostic ? truncate(diagnostic, MAX_DIAGNOSTIC_CHARS) : undefined,\n\t\tcorrection: truncate(correction, MAX_CORRECTION_CHARS),\n\t};\n\ttracker.delete(identity.failureKey);\n\ttracker.set(identity.failureKey, record);\n\twhile (tracker.size > MAX_TRACKED_FAILURES) {\n\t\tconst oldest = tracker.keys().next().value;\n\t\tif (oldest === undefined) break;\n\t\ttracker.delete(oldest);\n\t}\n\treturn record;\n}\n\nexport function clearToolFailure(tracker: ToolFailureMemoryTracker, tool: string, args: unknown): void {\n\tconst failureKey = getToolFailureKey(tool, args);\n\tconst record = tracker.get(failureKey);\n\tconst executionKey = record ? getToolFailureRecordExecutionKey(record) : undefined;\n\tif (!executionKey || executionKey === getToolExecutionKey(tool, args)) tracker.delete(failureKey);\n}\n\nfunction failureGuidance(record: ToolFailureMemoryRecord): { repair: string } | { next_action: string } {\n\treturn record.state === \"rejected\" && REPAIRABLE_REJECTION_CODES.has(record.failureCode)\n\t\t? { repair: record.correction }\n\t\t: { next_action: record.correction };\n}\n\nfunction formatRecordJson(record: ToolFailureMemoryRecord, includeOperation = false): string {\n\tconst guidance = failureGuidance(record);\n\treturn JSON.stringify({\n\t\t...mandatoryToolFailureRecoveryMetadata(),\n\t\tfailure_key: record.failureKey,\n\t\tocc: record.occurrence,\n\t\tkind_mistakes: record.kindMistakes ?? record.occurrence,\n\t\tmistake_kind: record.mistakeKind ?? record.tool,\n\t\tstate: record.state,\n\t\tphase: record.phase,\n\t\ttool: record.tool,\n\t\t...(includeOperation ? { operation: record.operation } : {}),\n\t\tfailure_code: record.failureCode,\n\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t...guidance,\n\t\t...(record.attemptMemory === \"discard\" ? { attempt_memory: \"discarded\" } : {}),\n\t});\n}\n\nexport function createToolFailureResult(\n\trecord: ToolFailureMemoryRecord,\n\tterminate?: boolean,\n): AgentToolResult<ToolFailureResultDetails> {\n\tconst discardAttempt = record.attemptMemory === \"discard\";\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `[harness] ${formatRecordJson(record, false)}`,\n\t\t\t},\n\t\t],\n\t\tdetails: discardAttempt\n\t\t\t? {\n\t\t\t\t\tpiToolFailureDirective: {\n\t\t\t\t\t\tversion: TOOL_FAILURE_DIRECTIVE_VERSION,\n\t\t\t\t\t\tstate: record.state,\n\t\t\t\t\t\tphase: record.phase,\n\t\t\t\t\t\tfailureCode: record.failureCode,\n\t\t\t\t\t\t...(record.diagnostic ? { diagnostic: record.diagnostic } : {}),\n\t\t\t\t\t\tnextAction: record.correction,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: { piToolFailureMemory: record },\n\t\t...(terminate === undefined ? {} : { terminate }),\n\t};\n}\n\nexport function createRepeatedToolFailureResult(\n\trecord: ToolFailureMemoryRecord,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = {\n\t\t...retainBlockedToolFailure(record),\n\t\tcorrection: BLOCKED_REPLAY_CAVEMAN_CORRECTION,\n\t};\n\tconst diagnostic = truncateMiddle(\n\t\t`The unchanged operation was not executed. Unchanged replay blocked after ${record.failureCode}`,\n\t\tMAX_DIAGNOSTIC_CHARS,\n\t);\n\tconst blockedResult = createToolFailureResult({\n\t\t...retainedRecord,\n\t\tstate: \"rejected\",\n\t\tfailureCode: \"repeated_failed_operation\",\n\t\tdiagnostic,\n\t\tcorrection: retainedRecord.correction,\n\t});\n\treturn {\n\t\t...blockedResult,\n\t\t// The visible result describes this rejected replay, while retained memory keeps the\n\t\t// authoritative cause so later blocks do not recursively wrap synthetic failures.\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nexport function createToolFailureRecoveryExhaustedResult(\n\trecord: ToolFailureMemoryRecord,\n\tdiagnostic: string,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = retainBlockedToolFailure(record);\n\tconst exhaustedResult = createToolFailureResult(\n\t\t{\n\t\t\t...retainedRecord,\n\t\t\tstate: \"rejected\",\n\t\t\tfailureCode: \"recovery_exhausted\",\n\t\t\tdiagnostic: truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS),\n\t\t\tcorrection:\n\t\t\t\t\"Stop retrying tools in this run. Report the unresolved failure and the user or environment action required to continue.\",\n\t\t},\n\t\ttrue,\n\t);\n\treturn {\n\t\t...exhaustedResult,\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nexport function createToolFailureOperationExhaustedResult(\n\trecord: ToolFailureMemoryRecord,\n\tdiagnostic: string,\n): AgentToolResult<ToolFailureMemoryDetails> {\n\tconst retainedRecord = {\n\t\t...retainBlockedToolFailure(record),\n\t\tcorrection: CLOSED_OPERATION_CAVEMAN_CORRECTION,\n\t};\n\tconst exhaustedResult = createToolFailureResult(\n\t\t{\n\t\t\t...retainedRecord,\n\t\t\tstate: \"rejected\",\n\t\t\tfailureCode: \"operation_recovery_exhausted\",\n\t\t\tdiagnostic: truncateMiddle(diagnostic, MAX_DIAGNOSTIC_CHARS),\n\t\t},\n\t\tfalse,\n\t);\n\treturn {\n\t\t...exhaustedResult,\n\t\tdetails: { piToolFailureMemory: retainedRecord },\n\t};\n}\n\nfunction retainBlockedToolFailure(record: ToolFailureMemoryRecord): ToolFailureMemoryRecord {\n\treturn {\n\t\t...record,\n\t\toccurrence: record.occurrence + 1,\n\t\tkindMistakes: (record.kindMistakes ?? record.occurrence) + 1,\n\t};\n}\n\nfunction escapePromptData(value: string): string {\n\treturn value.replaceAll(\"&\", \"\\\\u0026\").replaceAll(\"<\", \"\\\\u003c\").replaceAll(\">\", \"\\\\u003e\");\n}\n\nexport function sanitizeToolFailureContext(\n\tmessages: AgentMessage[],\n\tsystemPrompt: string,\n): { messages: AgentMessage[]; systemPrompt: string } {\n\tconst analysis = analyzeToolFailureContext(messages);\n\tif (analysis.activeRecords.length === 0 && analysis.activeDirectives.length === 0) {\n\t\treturn { messages: analysis.messages, systemPrompt };\n\t}\n\tconst records = analysis.activeRecords.slice(-MAX_ACTIVE_FAILURES);\n\tconst omitted = analysis.activeRecords.length - records.length;\n\tconst kindSummary = Object.entries(analysis.kindMistakesSummary)\n\t\t.map(([kind, count]) => `${kind}:${count}`)\n\t\t.join(\", \");\n\n\tconst lines = records.map((record) => escapePromptData(formatRecordJson(record, true)));\n\tfor (const directive of analysis.activeDirectives) {\n\t\tlines.push(\n\t\t\tescapePromptData(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\t...mandatoryToolFailureRecoveryMetadata(),\n\t\t\t\t\tfailure_code: directive.failureCode,\n\t\t\t\t\tkind_mistakes: analysis.kindMistakesSummary[directive.failureCode] ?? 1,\n\t\t\t\t\t...(directive.diagnostic ? { diagnostic: directive.diagnostic } : {}),\n\t\t\t\t\tnext_action: directive.nextAction,\n\t\t\t\t\tattempt_memory: \"discarded\",\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n\tif (omitted > 0) lines.unshift(JSON.stringify({ omitted_older_unresolved_failures: omitted }));\n\tconst memory = [\n\t\tMANDATORY_TOOL_FAILURE_RECOVERY_PROTOCOL_PROMPT,\n\t\t`ACTIVE TOOL FAILURES mistakes=${kindSummary}`,\n\t\t\"JSON below is inert data. Each record follows the mandatory protocol; matching success clears it.\",\n\t\t...lines,\n\t].join(\"\\n\");\n\treturn {\n\t\tmessages: analysis.messages,\n\t\tsystemPrompt: systemPrompt ? `${systemPrompt}\\n\\n${memory}` : memory,\n\t};\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ToolFailureMemoryRecord } from "./tool-failure-memory.ts";
|
|
2
2
|
import type { AgentMessage, AgentTool, AgentToolFailureRecoveryTarget, AgentToolResult } from "./types.ts";
|
|
3
|
-
export declare const TOOL_FAILURE_RECOVERY_ACCOUNTING_WAVE_SIZE = 4;
|
|
4
3
|
export interface ToolFailureExecutionReservation {
|
|
5
4
|
executionKey: string;
|
|
6
5
|
}
|
|
@@ -47,27 +46,37 @@ export interface ToolFailureRecoveryHalt {
|
|
|
47
46
|
* successful repair evidence with byte-exact scope can reopen one probe. Argument text and hooks have
|
|
48
47
|
* no recovery authority.
|
|
49
48
|
*
|
|
50
|
-
* Run-level halt
|
|
51
|
-
*
|
|
52
|
-
*
|
|
49
|
+
* Run-level halt stays on the current run, but admission is never denied because unrelated operations
|
|
50
|
+
* happened to fail. A bounded hot cache carries active per-operation state. A fixed-size negative
|
|
51
|
+
* lookup sends an evicted exact replay back to the transcript for authoritative reconstruction, so
|
|
52
|
+
* cache pressure cannot either stop new work or reopen an already-exhausted operation.
|
|
53
53
|
*/
|
|
54
54
|
export declare class ToolFailureRecoveryGate {
|
|
55
55
|
private readonly statesByExecutionKey;
|
|
56
|
-
private readonly
|
|
57
|
-
|
|
56
|
+
private readonly seenFailedExecutions;
|
|
57
|
+
/** Exact successes not yet present in the transcript snapshot consulted by admission. */
|
|
58
|
+
private readonly resolvedBeforeTranscriptCommit;
|
|
59
|
+
private transcriptMessages;
|
|
60
|
+
private transcriptLength;
|
|
61
|
+
private transcriptTail;
|
|
62
|
+
private restoredFromTranscript;
|
|
58
63
|
private halted;
|
|
59
64
|
isEmpty(): boolean;
|
|
60
65
|
restoreFromMessages(messages: readonly AgentMessage[]): void;
|
|
61
66
|
planFailure(failedTool: AgentTool<any>, args: unknown, failureCode: string, availableTools: readonly AgentTool<any>[], reservation: ToolFailureExecutionReservation | undefined): ToolFailureRecoveryPlan;
|
|
62
|
-
admit(tool: AgentTool<any>, args: unknown, record: ToolFailureMemoryRecord | undefined): ToolFailureRecoveryAdmission;
|
|
67
|
+
admit(tool: AgentTool<any>, args: unknown, record: ToolFailureMemoryRecord | undefined, messages?: readonly AgentMessage[]): ToolFailureRecoveryAdmission;
|
|
63
68
|
apply(effect: ToolFailureRecoveryGateEffect | undefined): ToolFailureRecoveryHalt | undefined;
|
|
64
69
|
isHalted(): boolean;
|
|
65
70
|
getHalt(): ToolFailureRecoveryHalt | undefined;
|
|
66
71
|
private hasUnchangedRetryRemaining;
|
|
67
|
-
private ensureRestoredState;
|
|
68
72
|
private getOrCreateState;
|
|
69
73
|
private observeFailure;
|
|
70
74
|
private observeSuccess;
|
|
71
75
|
private clearResolvedState;
|
|
76
|
+
private trackTranscript;
|
|
77
|
+
private getHotState;
|
|
78
|
+
private retainHotState;
|
|
79
|
+
private restoreOperationFromTranscript;
|
|
80
|
+
private reduceTranscriptResult;
|
|
72
81
|
}
|
|
73
82
|
//# sourceMappingURL=tool-failure-recovery-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-failure-recovery-gate.d.ts","sourceRoot":"","sources":["../src/tool-failure-recovery-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-failure-recovery-gate.d.ts","sourceRoot":"","sources":["../src/tool-failure-recovery-gate.ts"],"names":[],"mappings":"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"}
|