@caupulican/pi-adaptative 0.93.1 → 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/CHANGELOG.md +16 -0
- package/dist/bundled-resources/skills/worker-profile-writer/SKILL.md +6 -6
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session-contracts.d.ts +2 -2
- package/dist/core/agent-session-contracts.d.ts.map +1 -1
- package/dist/core/agent-session-contracts.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/subagent-prompt.d.ts +1 -1
- package/dist/core/autonomy/subagent-prompt.js.map +1 -1
- package/dist/core/compaction-controller.d.ts.map +1 -1
- package/dist/core/compaction-controller.js +9 -3
- package/dist/core/compaction-controller.js.map +1 -1
- package/dist/core/cost-guard.js +1 -1
- package/dist/core/cost-guard.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +7 -5
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -1
- package/dist/core/delegation/worker-conversation-store.js +3 -45
- package/dist/core/delegation/worker-conversation-store.js.map +1 -1
- package/dist/core/delegation/worker-delegation-request.d.ts +5 -2
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-request.js +1 -1
- package/dist/core/delegation/worker-delegation-request.js.map +1 -1
- package/dist/core/extensions/bundled-virtual-modules.js +2 -0
- package/dist/core/extensions/bundled-virtual-modules.js.map +1 -1
- package/dist/core/extensions/virtual-modules.d.ts +1 -0
- package/dist/core/extensions/virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/virtual-modules.js +1 -0
- package/dist/core/extensions/virtual-modules.js.map +1 -1
- package/dist/core/goals/goal-session-controller.js +1 -1
- package/dist/core/goals/goal-session-controller.js.map +1 -1
- package/dist/core/model-router-controller.js +2 -2
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/orchestration/risk-budget.d.ts +0 -10
- package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
- package/dist/core/orchestration/risk-budget.js +0 -14
- package/dist/core/orchestration/risk-budget.js.map +1 -1
- package/dist/core/provider-prompt-contracts.d.ts +1 -0
- package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
- package/dist/core/provider-prompt-contracts.js +6 -5
- package/dist/core/provider-prompt-contracts.js.map +1 -1
- package/dist/core/provider-request-runtime-controller.js +2 -2
- package/dist/core/provider-request-runtime-controller.js.map +1 -1
- package/dist/core/reflection-controller.js +1 -1
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/settings-manager.d.ts +5 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +8 -13
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt-builder.d.ts +1 -4
- package/dist/core/system-prompt-builder.d.ts.map +1 -1
- package/dist/core/system-prompt-builder.js +10 -10
- package/dist/core/system-prompt-builder.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +0 -16
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +21 -11
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/edit.js +1 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/profile-writer.d.ts +0 -9
- package/dist/core/tools/profile-writer.d.ts.map +1 -1
- package/dist/core/tools/profile-writer.js +0 -3
- package/dist/core/tools/profile-writer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +7 -16
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +2 -11
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
- package/dist/modes/interactive/local-model-commands.js +1 -10
- package/dist/modes/interactive/local-model-commands.js.map +1 -1
- package/dist/modes/interactive/thinking-level-descriptions.d.ts +4 -0
- package/dist/modes/interactive/thinking-level-descriptions.d.ts.map +1 -0
- package/dist/modes/interactive/thinking-level-descriptions.js +12 -0
- package/dist/modes/interactive/thinking-level-descriptions.js.map +1 -0
- package/docs/resources.md +1 -1
- package/docs/settings.md +7 -5
- package/docs/worker-profiles.md +3 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-attempt-executor.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-attempt-executor.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { compact } from \"@caupulican/pi-agent-core/compaction/compaction\";\nimport {\n\tclassifyFailure,\n\tcomputeRetryDelayMs,\n\ttype RetryPolicy,\n\tsleepAbortable,\n} from \"@caupulican/pi-agent-core/reliability\";\nimport { sanitizeToolFailureContext } from \"@caupulican/pi-agent-core/tool-failure-memory\";\nimport type { AgentMessage, ThinkingLevel } from \"@caupulican/pi-agent-core/types\";\nimport { addUsage, createEmptyUsage } from \"@caupulican/pi-agent-core/usage\";\nimport type { Api, AssistantMessage, Message, Model, Usage } from \"@caupulican/pi-ai\";\nimport type { IsolatedCompletionOptions, IsolatedCompletionResult } from \"../agent-session-contracts.ts\";\nimport { BoundedCompletionFailureError } from \"../autonomy/bounded-completion.ts\";\nimport type { WorkerRequest } from \"../autonomy/contracts.ts\";\nimport type { LaneToolSurface } from \"../autonomy/lane-tool-surface.ts\";\nimport { safeRealpathSync } from \"../autonomy/path-scope.ts\";\nimport type { ModelCapabilityProfile } from \"../model-capability.ts\";\nimport { attemptUsageFromGatewayUsage, EMPTY_ATTEMPT_USAGE } from \"../orchestration/attempt-usage.ts\";\nimport { CapabilityGatewayDeniedError, type ProviderBudgetReservation } from \"../orchestration/capability-gateway.ts\";\nimport type { AttemptUsageSnapshot, ExecutionGrant } from \"../orchestration/contracts.ts\";\nimport type { StartedDelegationAttempt } from \"../orchestration/delegation-ledger.ts\";\nimport { WorkerActionJournal } from \"./worker-action-journal.ts\";\nimport type { AppliedActionsReport, WorkerAction } from \"./worker-actions.ts\";\nimport type { WorkerAgentControlCoordinator } from \"./worker-agent-control-coordinator.ts\";\nimport { WorkerConversationOwnershipError } from \"./worker-conversation-revision.ts\";\nimport type { WorkerConversation, WorkerConversationRetentionPolicy } from \"./worker-conversation-store.ts\";\nimport type { WorkerExecutionPlan } from \"./worker-execution-policy.ts\";\nimport type { WorkerLifecycle } from \"./worker-lifecycle.ts\";\nimport { WorkerCompletionProtocolError, WorkerProviderTurnProtocol } from \"./worker-provider-turn-protocol.ts\";\nimport { runWorker, type WorkerRunOutcome } from \"./worker-runner.ts\";\nimport { buildWorkerSystemPrompt } from \"./worker-system-prompt.ts\";\nimport { WorkerTreeBudgetExceededError } from \"./worker-tree-budget-coordinator.ts\";\n\nexport interface RecoveredWorkerTerminalCompletion {\n\ttext: string;\n\tusage: Usage;\n\tstopReason: string;\n}\n\n/** The live mutable state that must be visible to session disposal before provider work yields. */\nexport interface WorkerAttemptExecutionLedger {\n\tchangedFiles: Set<string>;\n\tgetUsage(): AttemptUsageSnapshot;\n}\n\nexport interface WorkerAttemptExecutionResult {\n\trawOutcome: WorkerRunOutcome;\n\tusage: AttemptUsageSnapshot;\n\tchangedFiles: readonly string[];\n}\n\n/**\n * Backoff policy for transient worker provider failures. Without it, a dropped provider socket\n * kills the attempt instantly at $0 spend and an immediate re-dispatch hits the same dead\n * connection (field session 019fd4dc: paired $0 `completion_error` lanes ~10s apart). Jitter\n * de-synchronizes sibling workers that all lost the same connection at once.\n */\nconst WORKER_PROVIDER_RETRY_POLICY: RetryPolicy = {\n\tmaxAttempts: 3,\n\tbaseDelayMs: 2_000,\n\tmaxDelayMs: 30_000,\n\tjitterRatio: 0.2,\n};\n\nexport async function runProviderCompletionWithBackoff(args: {\n\tattempt: () => Promise<IsolatedCompletionResult>;\n\t/** Release per-attempt provider reservations before waiting; the final failure is rethrown. */\n\tonAttemptFailure: () => void;\n\tprovider: string;\n\tlaneId: string;\n\twarn: (message: string) => void;\n\tsignal?: AbortSignal;\n}): Promise<IsolatedCompletionResult> {\n\tfor (let attempt = 1; ; attempt++) {\n\t\ttry {\n\t\t\tconst completion = await args.attempt();\n\t\t\tif (completion.stopReason !== \"error\") return completion;\n\t\t\tthrow new Error(\n\t\t\t\tcompletion.errorMessage?.trim() || \"Provider completion stopped with an error without diagnostic detail.\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\targs.onAttemptFailure();\n\t\t\tif (args.signal?.aborted) throw error;\n\t\t\tif (\n\t\t\t\terror instanceof WorkerCompletionProtocolError ||\n\t\t\t\terror instanceof WorkerConversationOwnershipError ||\n\t\t\t\terror instanceof CapabilityGatewayDeniedError ||\n\t\t\t\terror instanceof WorkerTreeBudgetExceededError ||\n\t\t\t\terror instanceof BoundedCompletionFailureError\n\t\t\t) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst classified = classifyFailure({\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\tprovider: args.provider,\n\t\t\t});\n\t\t\tif (!classified.retryable || attempt >= WORKER_PROVIDER_RETRY_POLICY.maxAttempts) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new BoundedCompletionFailureError(\"failed\", \"completion_error\", message, error);\n\t\t\t}\n\t\t\tconst delayMs = computeRetryDelayMs(WORKER_PROVIDER_RETRY_POLICY, attempt, {\n\t\t\t\t...(classified.retryAfterMs !== undefined ? { retryAfterMs: classified.retryAfterMs } : {}),\n\t\t\t});\n\t\t\targs.warn(\n\t\t\t\t`Worker ${args.laneId} provider request failed (${classified.reason}); retrying in ${Math.ceil(delayMs / 1000)}s (attempt ${attempt + 1}/${WORKER_PROVIDER_RETRY_POLICY.maxAttempts}).`,\n\t\t\t);\n\t\t\tawait sleepAbortable(delayMs, args.signal);\n\t\t}\n\t}\n}\n\n/**\n * The provider/tool-loop portion of a prepared worker attempt.\n *\n * Admission, durable leasing, grant compilation, terminalization, notification, verification, and\n * scheduling remain outside this boundary. This unit owns only the ordered child conversation:\n * persist assistant tool requests before execution, append messages before mailbox acknowledgements,\n * checkpoint cumulative usage before later boundaries, and compact only the provider projection.\n */\nexport interface WorkerAttemptExecutorOptions {\n\trequest: WorkerRequest;\n\tgrant: ExecutionGrant;\n\texecutionPlan: WorkerExecutionPlan;\n\ttoolSurface: LaneToolSurface;\n\tconversation: WorkerConversation;\n\tlifecycle: Pick<WorkerLifecycle, \"checkpoint\">;\n\tlaneId: string;\n\tagentId: string;\n\tdurableHandle: StartedDelegationAttempt;\n\tparentSessionId: string;\n\tagentDir: string;\n\tcwd: string;\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n\tlaneCapability: Pick<ModelCapabilityProfile, \"laneMaxOutputTokens\">;\n\tsoul?: string;\n\tworkerResourceSystemPrompt: string;\n\tinitialUsage: AttemptUsageSnapshot;\n\thasPersistedUsageCheckpoint: boolean;\n\tusageReportId: string;\n\tprocessCapable: boolean;\n\tverificationSubjectTaskId?: string;\n\trecoveredTerminal?: RecoveredWorkerTerminalCompletion;\n\tretentionPolicy?: WorkerConversationRetentionPolicy;\n\tsignal?: AbortSignal;\n\trunIsolatedCompletion(options: IsolatedCompletionOptions): Promise<IsolatedCompletionResult>;\n\tagentControl: Pick<WorkerAgentControlCoordinator, \"acknowledgeMailboxMessage\" | \"mailboxMessagesForConversation\">;\n\tapplyActions?(actions: readonly WorkerAction[], actionJournal?: WorkerActionJournal): AppliedActionsReport;\n\twarn(message: string): void;\n}\n\nfunction isToolRequest(message: Message): boolean {\n\treturn message.role === \"assistant\" && message.content.some((content) => content.type === \"toolCall\");\n}\n\nfunction workerCompletionCallbackFailure(error: unknown): Error {\n\tif (\n\t\terror instanceof WorkerCompletionProtocolError ||\n\t\terror instanceof WorkerConversationOwnershipError ||\n\t\terror instanceof CapabilityGatewayDeniedError ||\n\t\terror instanceof WorkerTreeBudgetExceededError\n\t) {\n\t\treturn error;\n\t}\n\treturn new WorkerCompletionProtocolError(\n\t\t\"Worker completion callback failed before its authority and durable transcript were verified.\",\n\t);\n}\n\nfunction callbackEvidencedCompletion(\n\tresult: IsolatedCompletionResult,\n\thistoryLength: number,\n\temittedMessages: readonly Message[],\n): { completion: IsolatedCompletionResult; suffix: Message[] } {\n\tif (result.messages !== undefined && result.messages.length < historyLength) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol returned fewer messages than its input history.\",\n\t\t);\n\t}\n\tlet suffix: Message[];\n\tif (result.messages !== undefined) {\n\t\tsuffix = result.messages.slice(historyLength);\n\t\tif (!isDeepStrictEqual(suffix, emittedMessages)) {\n\t\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\t\"Worker completion protocol returned a suffix without exact callback evidence.\",\n\t\t\t);\n\t\t}\n\t} else {\n\t\tsuffix = [...emittedMessages];\n\t}\n\tif (suffix.length === 0) {\n\t\tthrow new WorkerCompletionProtocolError(\"Worker completion protocol returned no durable message suffix.\");\n\t}\n\tif (!suffix.some((message) => message.role === \"assistant\")) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol returned no assistant in its durable suffix.\",\n\t\t);\n\t}\n\tconst assistants = emittedMessages.filter((message): message is AssistantMessage => message.role === \"assistant\");\n\tconst finalMessage = emittedMessages.at(-1);\n\tif (!finalMessage || finalMessage.role !== \"assistant\") {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol did not durably emit an assistant as its terminal message.\",\n\t\t);\n\t}\n\tconst usage = createEmptyUsage();\n\tfor (const assistant of assistants) addUsage(usage, assistant.usage);\n\tconst text = finalMessage.content.flatMap((content) => (content.type === \"text\" ? [content.text] : [])).join(\"\");\n\tif (\n\t\tresult.text !== text ||\n\t\tresult.stopReason !== finalMessage.stopReason ||\n\t\t!isDeepStrictEqual(result.usage, usage) ||\n\t\tresult.errorMessage !== finalMessage.errorMessage\n\t) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion result disagrees with its durable callback-evidenced terminal assistant.\",\n\t\t);\n\t}\n\treturn {\n\t\tsuffix,\n\t\tcompletion: {\n\t\t\ttext,\n\t\t\tusage,\n\t\t\tstopReason: finalMessage.stopReason,\n\t\t\t...(finalMessage.errorMessage ? { errorMessage: finalMessage.errorMessage } : {}),\n\t\t},\n\t};\n}\n\n/**\n * Constructs one execution exactly once. The caller registers {@link ledger} before calling\n * {@link run}, allowing synchronous disposal to observe mutations and cumulative usage while the\n * provider/tool loop is suspended.\n */\nexport function createWorkerAttemptExecutor(options: WorkerAttemptExecutorOptions): {\n\tledger: WorkerAttemptExecutionLedger;\n\tcheckpointUsage(summary: string): AttemptUsageSnapshot;\n\trun(): Promise<WorkerAttemptExecutionResult>;\n} {\n\tconst changedFiles = new Set(options.conversation.getChangedFiles(options.durableHandle.attemptId));\n\tconst toolIssues = new Set<string>();\n\tconst recordChangedFile = (filePath: string): void => {\n\t\tchangedFiles.add(filePath);\n\t\ttry {\n\t\t\toptions.conversation.recordChangedFile(options.durableHandle.attemptId, filePath);\n\t\t} catch (error) {\n\t\t\ttoolIssues.add(\"worker changed-file progress could not be persisted; parent review is required\");\n\t\t\toptions.warn(\n\t\t\t\t`Worker changed-file progress persistence failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t};\n\tconst actionJournal = options.request.envelope.capabilities.includes(\"filesystem.write\")\n\t\t? new WorkerActionJournal({\n\t\t\t\tagentDir: options.agentDir,\n\t\t\t\tparentSessionId: options.parentSessionId,\n\t\t\t\ttaskId: options.durableHandle.taskId,\n\t\t\t\tattemptId: options.durableHandle.attemptId,\n\t\t\t\tfencingToken: options.durableHandle.fencingToken,\n\t\t\t})\n\t\t: undefined;\n\tlet retentionWarningEmitted = false;\n\tlet firstMailboxPoll = true;\n\tlet ran = false;\n\n\tconst currentUsage = (): AttemptUsageSnapshot =>\n\t\tattemptUsageFromGatewayUsage(\n\t\t\toptions.toolSurface.gateway?.getUsage() ?? {\n\t\t\t\t...EMPTY_ATTEMPT_USAGE,\n\t\t\t\twallClockMs: options.initialUsage.activeWallClockMs,\n\t\t\t},\n\t\t);\n\tconst checkpointUsage = (summary: string): AttemptUsageSnapshot => {\n\t\tconst usage = currentUsage();\n\t\toptions.lifecycle.checkpoint(options.laneId, { summary, usage });\n\t\treturn usage;\n\t};\n\tconst remainingAttemptTokens = (): number | undefined => options.toolSurface.gateway?.remainingAttemptTokenBudget();\n\tconst reserveProviderBudget = async (\n\t\trequestedMaxTokens: number,\n\t\tsubject: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<ProviderBudgetReservation> => {\n\t\tif (options.toolSurface.gateway) {\n\t\t\treturn options.toolSurface.gateway.reserveProviderBudget(requestedMaxTokens, subject, signal);\n\t\t}\n\t\tif (signal?.aborted) throw signal.reason;\n\t\treturn { maxTokens: requestedMaxTokens, release: () => undefined };\n\t};\n\tconst createRetentionPolicy = (completeSignal: AbortSignal): WorkerConversationRetentionPolicy | undefined => {\n\t\tif (!options.retentionPolicy) return undefined;\n\t\tlet failedCompactionUsage: Usage | undefined;\n\t\treturn {\n\t\t\t...options.retentionPolicy,\n\t\t\tgenerateVerifiedCompaction: async (preparation: Parameters<typeof compact>[0]) => {\n\t\t\t\tconst compactionUsage = createEmptyUsage();\n\t\t\t\tfailedCompactionUsage = compactionUsage;\n\t\t\t\treturn compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\toptions.model,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tcompleteSignal,\n\t\t\t\t\toptions.thinkingLevel,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t{\n\t\t\t\t\t\tcompletion: async (model, context, requestOptions): Promise<AssistantMessage> => {\n\t\t\t\t\t\t\tconst requestSignal = requestOptions.signal ?? completeSignal;\n\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\tif (model.provider !== options.model.provider || model.id !== options.model.id) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction attempted to select a model outside the lane binding.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_compaction_provider_completion\");\n\t\t\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before compaction provider completion.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst requestedMaxTokens = requestOptions.maxTokens;\n\t\t\t\t\t\t\tconst configuredMaxTokens =\n\t\t\t\t\t\t\t\ttypeof requestedMaxTokens === \"number\" &&\n\t\t\t\t\t\t\t\tNumber.isSafeInteger(requestedMaxTokens) &&\n\t\t\t\t\t\t\t\trequestedMaxTokens > 0\n\t\t\t\t\t\t\t\t\t? requestedMaxTokens\n\t\t\t\t\t\t\t\t\t: options.laneCapability.laneMaxOutputTokens;\n\t\t\t\t\t\t\tconst maxTokens = Math.min(configuredMaxTokens, availableTokens ?? configuredMaxTokens);\n\t\t\t\t\t\t\tif (!Number.isSafeInteger(maxTokens) || maxTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction provider completion has no valid remaining token budget.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet preflightFailed = false;\n\t\t\t\t\t\t\tlet preflightFailure: unknown;\n\t\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\t\treserveProviderBudget(maxTokens, \"worker_compaction_provider_completion\", requestSignal),\n\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\tonFailure: (error) => {\n\t\t\t\t\t\t\t\t\tif (preflightFailed) return;\n\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcompletion = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\t\tsystemPrompt: context.systemPrompt ?? \"\",\n\t\t\t\t\t\t\t\t\t\tmessages: context.messages,\n\t\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\t\t\tmaxTokens,\n\t\t\t\t\t\t\t\t\t\trequestPreflight: () => providerTurn.requestPreflight(),\n\t\t\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\t\t\tcacheRetention: \"none\",\n\t\t\t\t\t\t\t\t\t\tlaneKind: \"worker-compaction\",\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tconst response: AssistantMessage = {\n\t\t\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\t\t\tcontent: completion.text ? [{ type: \"text\", text: completion.text }] : [],\n\t\t\t\t\t\t\t\t\tapi: options.model.api,\n\t\t\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\t\t\tmodel: options.model.id,\n\t\t\t\t\t\t\t\t\tusage: completion.usage,\n\t\t\t\t\t\t\t\t\tstopReason: completion.stopReason,\n\t\t\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\t\t\t...(completion.stopReason === \"error\"\n\t\t\t\t\t\t\t\t\t\t? { errorMessage: completion.text || \"Worker compaction provider request failed.\" }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taddUsage(compactionUsage, completion.usage);\n\t\t\t\t\t\t\t\tif (providerTurn.hasOutstandingAssistantReservation()) {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(completion.usage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountUnverifiedResultUsageDelta(completion.usage);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker compaction provider usage before verification.\");\n\t\t\t\t\t\t\t\tif (providerTurn.hasSuccessfulPreflight()) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\tif (!preflightFailed) {\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight(\"compaction\");\n\t\t\t\t\t\t\t\treturn response;\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t\tgetFailedCompactionUsage: () => failedCompactionUsage,\n\t\t};\n\t};\n\tconst ledger: WorkerAttemptExecutionLedger = {\n\t\tchangedFiles,\n\t\tgetUsage: currentUsage,\n\t};\n\n\treturn {\n\t\tledger,\n\t\tcheckpointUsage,\n\t\tasync run(): Promise<WorkerAttemptExecutionResult> {\n\t\t\tif (ran) throw new Error(\"A worker attempt executor may run only once.\");\n\t\t\tran = true;\n\t\t\toptions.conversation.beginAttemptUsage(options.durableHandle.attemptId);\n\t\t\tif (!options.hasPersistedUsageCheckpoint) {\n\t\t\t\tcheckpointUsage(\"Persisted deterministic cumulative usage baseline for the durable worker transcript.\");\n\t\t\t}\n\t\t\tconst rawOutcome = await runWorker({\n\t\t\t\trequest: options.request,\n\t\t\t\tmaxUsd: options.grant.budget.maxCostUsd,\n\t\t\t\tmaxWallClockMs: options.grant.budget.maxWallClockMs ?? 0,\n\t\t\t\tusageReportId: options.usageReportId,\n\t\t\t\tgetChangedFiles: () => [...changedFiles],\n\t\t\t\tsignal: options.signal,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tprocessCapable: options.processCapable,\n\t\t\t\tdelegationCapable: options.toolSurface.allowedTools.includes(\"delegate\"),\n\t\t\t\t...(options.verificationSubjectTaskId\n\t\t\t\t\t? { verificationSubjectTaskId: options.verificationSubjectTaskId }\n\t\t\t\t\t: {}),\n\t\t\t\t...(options.applyActions\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tapplyActions: (actions: readonly WorkerAction[]) => {\n\t\t\t\t\t\t\t\tconst report = options.applyActions!(actions, actionJournal);\n\t\t\t\t\t\t\t\tfor (const filePath of report.changedFiles) recordChangedFile(filePath);\n\t\t\t\t\t\t\t\treturn report;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tcomplete: async ({ systemPrompt, userPrompt, signal }) => {\n\t\t\t\t\tif (options.recoveredTerminal) {\n\t\t\t\t\t\tcheckpointUsage(\"Reused the persisted terminal worker assistant response after recovery.\");\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: options.recoveredTerminal.text,\n\t\t\t\t\t\t\tcostUsd: options.initialUsage.costUsd,\n\t\t\t\t\t\t\tstopReason: options.recoveredTerminal.stopReason,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst retentionPolicy = createRetentionPolicy(signal);\n\t\t\t\t\tconst persistedToolAssistantIds = new Set<string>();\n\t\t\t\t\tconst pendingToolAssistants = new Map<string, AssistantMessage>();\n\t\t\t\t\tlet activeProviderTurn: WorkerProviderTurnProtocol | undefined;\n\t\t\t\t\tconst closeActiveProviderTurn = (): void => {\n\t\t\t\t\t\tconst active = activeProviderTurn;\n\t\t\t\t\t\tactiveProviderTurn = undefined;\n\t\t\t\t\t\tactive?.close();\n\t\t\t\t\t};\n\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_provider_completion\");\n\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before provider completion.\");\n\t\t\t\t\t}\n\t\t\t\t\toptions.conversation.ensureAttemptUserPrompt(options.durableHandle.attemptId, userPrompt);\n\t\t\t\t\tlet history: Message[] = [];\n\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\tconst attemptProviderCompletion = async (): Promise<IsolatedCompletionResult> => {\n\t\t\t\t\t\t// Later attempts resume from the durably persisted transcript, not a stale snapshot.\n\t\t\t\t\t\tconst transcriptCommit = options.conversation.beginTranscriptCommit();\n\t\t\t\t\t\thistory = transcriptCommit.history;\n\t\t\t\t\t\tconst historyLength = history.length;\n\t\t\t\t\t\tconst transcriptCursor = transcriptCommit.cursor;\n\t\t\t\t\t\tconst durableCallbackMessages: Message[] = [];\n\t\t\t\t\t\tlet callbackFailed = false;\n\t\t\t\t\t\tlet callbackFailure: unknown;\n\t\t\t\t\t\tconst retainCallbackFailure = (error: unknown): void => {\n\t\t\t\t\t\t\tif (callbackFailed) return;\n\t\t\t\t\t\t\tcallbackFailed = true;\n\t\t\t\t\t\t\tcallbackFailure = error;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\treserveProviderBudget(\n\t\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\t\t\"worker_provider_completion\",\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tonFailure: retainCallbackFailure,\n\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tactiveProviderTurn = providerTurn;\n\t\t\t\t\t\tconst persistToolRequest = (message: AssistantMessage): void => {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst toolCallIds = message.content.flatMap((content) =>\n\t\t\t\t\t\t\t\tcontent.type === \"toolCall\" ? [content.id] : [],\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (toolCallIds.length === 0 || toolCallIds.every((id) => persistedToolAssistantIds.has(id)))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\tfor (const id of toolCallIds) {\n\t\t\t\t\t\t\t\tpersistedToolAssistantIds.add(id);\n\t\t\t\t\t\t\t\tpendingToolAssistants.delete(id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker assistant tool request and its cumulative provider usage.\");\n\t\t\t\t\t\t\tproviderTurn.consumeToolAssistantAndRelease();\n\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet committed = false;\n\t\t\t\t\t\tconst abortTranscriptCursor = (): void => {\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\toptions.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsignal.addEventListener(\"abort\", abortTranscriptCursor, { once: true });\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tlet result: IsolatedCompletionResult;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresult = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\tsystemPrompt: buildWorkerSystemPrompt({\n\t\t\t\t\t\t\t\t\t\tsoul: options.soul,\n\t\t\t\t\t\t\t\t\t\trolePrompt: systemPrompt,\n\t\t\t\t\t\t\t\t\t\tworkerResourceSystemPrompt: options.workerResourceSystemPrompt,\n\t\t\t\t\t\t\t\t\t\tagentDir: options.agentDir,\n\t\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\thistory,\n\t\t\t\t\t\t\t\t\tmessages: [],\n\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\t\tmaxTokens: Math.min(\n\t\t\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\t\t\tavailableTokens ?? Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\ttools: options.toolSurface.tools,\n\t\t\t\t\t\t\t\t\trequestPreflight: () => providerTurn.requestPreflight(),\n\t\t\t\t\t\t\t\t\tbeforeToolCall: async (context, toolSignal) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tpersistToolRequest(context.assistantMessage);\n\t\t\t\t\t\t\t\t\t\t\tconst decision = await options.toolSurface.beforeToolCall(context, toolSignal);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (!decision?.block) {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Authorized worker tool '${context.toolCall.name}' under its durable grant.`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn decision;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterToolCall: async ({ toolCall, args }) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t(toolCall.name === \"write\" || toolCall.name === \"edit\") &&\n\t\t\t\t\t\t\t\t\t\t\t\targs &&\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof args === \"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!Array.isArray(args)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst rawPath = (args as Record<string, unknown>).path;\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof rawPath === \"string\" && rawPath.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst absolutePath = path.isAbsolute(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? path.resolve(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: path.resolve(options.cwd, rawPath);\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet canonicalPath = absolutePath;\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcanonicalPath = safeRealpathSync(absolutePath);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The operation entered execution; retain its lexical target if canonicalization failed.\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trecordChangedFile(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath.relative(options.cwd, canonicalPath).split(path.sep).join(\"/\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonMessage: (message) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && isToolRequest(message)) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Known calls are normalized before beforeToolCall and persist from that hook.\n\t\t\t\t\t\t\t\t\t\t\t\t// Retain the request only so immediate unknown/malformed results can close the\n\t\t\t\t\t\t\t\t\t\t\t\t// transcript without freezing pre-repair arguments into durable history.\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (content.type === \"toolCall\") pendingToolAssistants.set(content.id, message);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tmessage.role === \"toolResult\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!persistedToolAssistantIds.has(message.toolCallId)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst pending = pendingToolAssistants.get(message.toolCallId);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pending) persistToolRequest(pending);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\t\t\t\t\toptions.agentControl.acknowledgeMailboxMessage(options.agentId, message);\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Persisted worker assistant response and its cumulative provider usage.\",\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"toolResult\")\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(`Persisted worker tool result '${message.toolCallId}'.`);\n\t\t\t\t\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetSteeringMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst includeFollowUp = firstMailboxPoll;\n\t\t\t\t\t\t\t\t\t\t\tfirstMailboxPoll = false;\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\tincludeFollowUp,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetFollowUpMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t...(retentionPolicy\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\ttransformContext: async (messages: AgentMessage[]) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst retained = await options.conversation.compactProviderContext(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionPolicy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.contextUsage.tokens > retentionPolicy.maxContextTokens &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!retentionWarningEmitted\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker ${options.laneId} has one retained turn larger than its context policy; provider overflow recovery may be required.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_verified\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_deterministic\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn sanitizeToolFailureContext(retained.context.messages, \"\").messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (signal.aborted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (error instanceof WorkerConversationOwnershipError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!retentionWarningEmitted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker context retention failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\tcacheRetention: \"short\",\n\t\t\t\t\t\t\t\t\tlaneKind: \"worker\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\tif (signal.aborted) throw error;\n\t\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tproviderTurn.assertEverySuccessfulPreflightConsumed();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tif (providerTurn.accountUnverifiedResultUsageDelta(result.usage)) {\n\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\"Persisted supplemental provider result usage before rejecting unverified completion evidence.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight();\n\t\t\t\t\t\t\tconst evidenced = callbackEvidencedCompletion(result, historyLength, durableCallbackMessages);\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst appended = options.conversation.commitTranscript(transcriptCursor, evidenced.suffix, {\n\t\t\t\t\t\t\t\tappendMissing: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (appended !== 0) {\n\t\t\t\t\t\t\t\tthrow new WorkerConversationOwnershipError(\n\t\t\t\t\t\t\t\t\t\"Worker callback transcript verification unexpectedly appended missing messages.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcommitted = true;\n\t\t\t\t\t\t\treturn evidenced.completion;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tsignal.removeEventListener(\"abort\", abortTranscriptCursor);\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (activeProviderTurn === providerTurn) activeProviderTurn = undefined;\n\t\t\t\t\t\t\tif (!committed) options.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcompletion = await runProviderCompletionWithBackoff({\n\t\t\t\t\t\t\tattempt: attemptProviderCompletion,\n\t\t\t\t\t\t\tonAttemptFailure: closeActiveProviderTurn,\n\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\tlaneId: options.laneId,\n\t\t\t\t\t\t\twarn: options.warn,\n\t\t\t\t\t\t\t...(signal ? { signal } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcloseActiveProviderTurn();\n\t\t\t\t\t}\n\t\t\t\t\tconst cumulativeUsage = checkpointUsage(\n\t\t\t\t\t\t\"Verified the callback-persisted worker conversation terminal suffix.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: completion.text,\n\t\t\t\t\t\tcostUsd: cumulativeUsage.costUsd,\n\t\t\t\t\t\tstopReason: String(completion.stopReason),\n\t\t\t\t\t\tchangedFiles: [...changedFiles],\n\t\t\t\t\t\tblockers: [...toolIssues],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst usage = checkpointUsage(\"Persisted final cumulative worker usage before terminal result.\");\n\t\t\treturn { rawOutcome, usage, changedFiles: [...changedFiles] };\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"worker-attempt-executor.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-attempt-executor.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { compact } from \"@caupulican/pi-agent-core/compaction/compaction\";\nimport {\n\tclassifyFailure,\n\tcomputeRetryDelayMs,\n\ttype RetryPolicy,\n\tsleepAbortable,\n} from \"@caupulican/pi-agent-core/reliability\";\nimport { sanitizeToolFailureContext } from \"@caupulican/pi-agent-core/tool-failure-memory\";\nimport type { AgentMessage, ThinkingLevel } from \"@caupulican/pi-agent-core/types\";\nimport { addUsage, createEmptyUsage } from \"@caupulican/pi-agent-core/usage\";\nimport type { Api, AssistantMessage, Message, Model, Usage } from \"@caupulican/pi-ai\";\nimport type { IsolatedCompletionOptions, IsolatedCompletionResult } from \"../agent-session-contracts.ts\";\nimport { BoundedCompletionFailureError } from \"../autonomy/bounded-completion.ts\";\nimport type { WorkerRequest } from \"../autonomy/contracts.ts\";\nimport type { LaneToolSurface } from \"../autonomy/lane-tool-surface.ts\";\nimport { safeRealpathSync } from \"../autonomy/path-scope.ts\";\nimport type { ModelCapabilityProfile } from \"../model-capability.ts\";\nimport { attemptUsageFromGatewayUsage, EMPTY_ATTEMPT_USAGE } from \"../orchestration/attempt-usage.ts\";\nimport { CapabilityGatewayDeniedError, type ProviderBudgetReservation } from \"../orchestration/capability-gateway.ts\";\nimport type { AttemptUsageSnapshot, ExecutionGrant } from \"../orchestration/contracts.ts\";\nimport type { StartedDelegationAttempt } from \"../orchestration/delegation-ledger.ts\";\nimport { WorkerActionJournal } from \"./worker-action-journal.ts\";\nimport type { AppliedActionsReport, WorkerAction } from \"./worker-actions.ts\";\nimport type { WorkerAgentControlCoordinator } from \"./worker-agent-control-coordinator.ts\";\nimport { WorkerConversationOwnershipError } from \"./worker-conversation-revision.ts\";\nimport type { WorkerConversation, WorkerConversationRetentionPolicy } from \"./worker-conversation-store.ts\";\nimport type { WorkerExecutionPlan } from \"./worker-execution-policy.ts\";\nimport type { WorkerLifecycle } from \"./worker-lifecycle.ts\";\nimport { WorkerCompletionProtocolError, WorkerProviderTurnProtocol } from \"./worker-provider-turn-protocol.ts\";\nimport { runWorker, type WorkerRunOutcome } from \"./worker-runner.ts\";\nimport { buildWorkerSystemPrompt } from \"./worker-system-prompt.ts\";\nimport { WorkerTreeBudgetExceededError } from \"./worker-tree-budget-coordinator.ts\";\n\nexport interface RecoveredWorkerTerminalCompletion {\n\ttext: string;\n\tusage: Usage;\n\tstopReason: string;\n}\n\n/** The live mutable state that must be visible to session disposal before provider work yields. */\nexport interface WorkerAttemptExecutionLedger {\n\tchangedFiles: Set<string>;\n\tgetUsage(): AttemptUsageSnapshot;\n}\n\nexport interface WorkerAttemptExecutionResult {\n\trawOutcome: WorkerRunOutcome;\n\tusage: AttemptUsageSnapshot;\n\tchangedFiles: readonly string[];\n}\n\n/**\n * Backoff policy for transient worker provider failures. Without it, a dropped provider socket\n * kills the attempt instantly at $0 spend and an immediate re-dispatch hits the same dead\n * connection (field session 019fd4dc: paired $0 `completion_error` lanes ~10s apart). Jitter\n * de-synchronizes sibling workers that all lost the same connection at once.\n */\nconst WORKER_PROVIDER_RETRY_POLICY: RetryPolicy = {\n\tmaxAttempts: 3,\n\tbaseDelayMs: 2_000,\n\tmaxDelayMs: 30_000,\n\tjitterRatio: 0.2,\n};\n\nexport async function runProviderCompletionWithBackoff(args: {\n\tattempt: () => Promise<IsolatedCompletionResult>;\n\t/** Release per-attempt provider reservations before waiting; the final failure is rethrown. */\n\tonAttemptFailure: () => void;\n\tprovider: string;\n\tlaneId: string;\n\twarn: (message: string) => void;\n\tsignal?: AbortSignal;\n}): Promise<IsolatedCompletionResult> {\n\tfor (let attempt = 1; ; attempt++) {\n\t\ttry {\n\t\t\tconst completion = await args.attempt();\n\t\t\tif (completion.stopReason !== \"error\") return completion;\n\t\t\tthrow new Error(\n\t\t\t\tcompletion.errorMessage?.trim() || \"Provider completion stopped with an error without diagnostic detail.\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\targs.onAttemptFailure();\n\t\t\tif (args.signal?.aborted) throw error;\n\t\t\tif (error instanceof WorkerCompletionProtocolError) {\n\t\t\t\tthrow new BoundedCompletionFailureError(\"failed\", \"worker_protocol_error\", error.message, error);\n\t\t\t}\n\t\t\tif (\n\t\t\t\terror instanceof WorkerConversationOwnershipError ||\n\t\t\t\terror instanceof CapabilityGatewayDeniedError ||\n\t\t\t\terror instanceof WorkerTreeBudgetExceededError ||\n\t\t\t\terror instanceof BoundedCompletionFailureError\n\t\t\t) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst classified = classifyFailure({\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\tprovider: args.provider,\n\t\t\t});\n\t\t\tif (!classified.retryable || attempt >= WORKER_PROVIDER_RETRY_POLICY.maxAttempts) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new BoundedCompletionFailureError(\"failed\", \"completion_error\", message, error);\n\t\t\t}\n\t\t\tconst delayMs = computeRetryDelayMs(WORKER_PROVIDER_RETRY_POLICY, attempt, {\n\t\t\t\t...(classified.retryAfterMs !== undefined ? { retryAfterMs: classified.retryAfterMs } : {}),\n\t\t\t});\n\t\t\targs.warn(\n\t\t\t\t`Worker ${args.laneId} provider request failed (${classified.reason}); retrying in ${Math.ceil(delayMs / 1000)}s (attempt ${attempt + 1}/${WORKER_PROVIDER_RETRY_POLICY.maxAttempts}).`,\n\t\t\t);\n\t\t\tawait sleepAbortable(delayMs, args.signal);\n\t\t}\n\t}\n}\n\n/**\n * The provider/tool-loop portion of a prepared worker attempt.\n *\n * Admission, durable leasing, grant compilation, terminalization, notification, verification, and\n * scheduling remain outside this boundary. This unit owns only the ordered child conversation:\n * persist assistant tool requests before execution, append messages before mailbox acknowledgements,\n * checkpoint cumulative usage before later boundaries, and compact only the provider projection.\n */\nexport interface WorkerAttemptExecutorOptions {\n\trequest: WorkerRequest;\n\tgrant: ExecutionGrant;\n\texecutionPlan: WorkerExecutionPlan;\n\ttoolSurface: LaneToolSurface;\n\tconversation: WorkerConversation;\n\tlifecycle: Pick<WorkerLifecycle, \"checkpoint\">;\n\tlaneId: string;\n\tagentId: string;\n\tdurableHandle: StartedDelegationAttempt;\n\tparentSessionId: string;\n\tagentDir: string;\n\tcwd: string;\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n\tlaneCapability: Pick<ModelCapabilityProfile, \"laneMaxOutputTokens\">;\n\tsoul?: string;\n\tworkerResourceSystemPrompt: string;\n\tinitialUsage: AttemptUsageSnapshot;\n\thasPersistedUsageCheckpoint: boolean;\n\tusageReportId: string;\n\tprocessCapable: boolean;\n\tverificationSubjectTaskId?: string;\n\trecoveredTerminal?: RecoveredWorkerTerminalCompletion;\n\tretentionPolicy?: WorkerConversationRetentionPolicy;\n\tsignal?: AbortSignal;\n\trunIsolatedCompletion(options: IsolatedCompletionOptions): Promise<IsolatedCompletionResult>;\n\tagentControl: Pick<WorkerAgentControlCoordinator, \"acknowledgeMailboxMessage\" | \"mailboxMessagesForConversation\">;\n\tapplyActions?(actions: readonly WorkerAction[], actionJournal?: WorkerActionJournal): AppliedActionsReport;\n\twarn(message: string): void;\n}\n\nfunction isToolRequest(message: Message): boolean {\n\treturn message.role === \"assistant\" && message.content.some((content) => content.type === \"toolCall\");\n}\n\nfunction workerCompletionCallbackFailure(error: unknown): Error {\n\tif (\n\t\terror instanceof WorkerCompletionProtocolError ||\n\t\terror instanceof WorkerConversationOwnershipError ||\n\t\terror instanceof CapabilityGatewayDeniedError ||\n\t\terror instanceof WorkerTreeBudgetExceededError\n\t) {\n\t\treturn error;\n\t}\n\treturn new WorkerCompletionProtocolError(\n\t\t\"Worker completion callback failed before its authority and durable transcript were verified.\",\n\t);\n}\n\nfunction callbackEvidencedCompletion(\n\tresult: IsolatedCompletionResult,\n\thistoryLength: number,\n\temittedMessages: readonly Message[],\n): { completion: IsolatedCompletionResult; suffix: Message[] } {\n\tif (result.messages !== undefined && result.messages.length < historyLength) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol returned fewer messages than its input history.\",\n\t\t);\n\t}\n\tlet suffix: Message[];\n\tif (result.messages !== undefined) {\n\t\tsuffix = result.messages.slice(historyLength);\n\t\tif (!isDeepStrictEqual(suffix, emittedMessages)) {\n\t\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\t\"Worker completion protocol returned a suffix without exact callback evidence.\",\n\t\t\t);\n\t\t}\n\t} else {\n\t\tsuffix = [...emittedMessages];\n\t}\n\tif (suffix.length === 0) {\n\t\tthrow new WorkerCompletionProtocolError(\"Worker completion protocol returned no durable message suffix.\");\n\t}\n\tif (!suffix.some((message) => message.role === \"assistant\")) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol returned no assistant in its durable suffix.\",\n\t\t);\n\t}\n\tconst assistants = emittedMessages.filter((message): message is AssistantMessage => message.role === \"assistant\");\n\tconst finalMessage = emittedMessages.at(-1);\n\tif (!finalMessage || finalMessage.role !== \"assistant\") {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion protocol did not durably emit an assistant as its terminal message.\",\n\t\t);\n\t}\n\tconst usage = createEmptyUsage();\n\tfor (const assistant of assistants) addUsage(usage, assistant.usage);\n\tconst text = finalMessage.content.flatMap((content) => (content.type === \"text\" ? [content.text] : [])).join(\"\");\n\tif (\n\t\tresult.text !== text ||\n\t\tresult.stopReason !== finalMessage.stopReason ||\n\t\t!isDeepStrictEqual(result.usage, usage) ||\n\t\tresult.errorMessage !== finalMessage.errorMessage\n\t) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion result disagrees with its durable callback-evidenced terminal assistant.\",\n\t\t);\n\t}\n\treturn {\n\t\tsuffix,\n\t\tcompletion: {\n\t\t\ttext,\n\t\t\tusage,\n\t\t\tstopReason: finalMessage.stopReason,\n\t\t\t...(finalMessage.errorMessage ? { errorMessage: finalMessage.errorMessage } : {}),\n\t\t},\n\t};\n}\n\n/**\n * Constructs one execution exactly once. The caller registers {@link ledger} before calling\n * {@link run}, allowing synchronous disposal to observe mutations and cumulative usage while the\n * provider/tool loop is suspended.\n */\nexport function createWorkerAttemptExecutor(options: WorkerAttemptExecutorOptions): {\n\tledger: WorkerAttemptExecutionLedger;\n\tcheckpointUsage(summary: string): AttemptUsageSnapshot;\n\trun(): Promise<WorkerAttemptExecutionResult>;\n} {\n\tconst changedFiles = new Set(options.conversation.getChangedFiles(options.durableHandle.attemptId));\n\tconst toolIssues = new Set<string>();\n\tconst recordChangedFile = (filePath: string): void => {\n\t\tchangedFiles.add(filePath);\n\t\ttry {\n\t\t\toptions.conversation.recordChangedFile(options.durableHandle.attemptId, filePath);\n\t\t} catch (error) {\n\t\t\ttoolIssues.add(\"worker changed-file progress could not be persisted; parent review is required\");\n\t\t\toptions.warn(\n\t\t\t\t`Worker changed-file progress persistence failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t};\n\tconst actionJournal = options.request.envelope.capabilities.includes(\"filesystem.write\")\n\t\t? new WorkerActionJournal({\n\t\t\t\tagentDir: options.agentDir,\n\t\t\t\tparentSessionId: options.parentSessionId,\n\t\t\t\ttaskId: options.durableHandle.taskId,\n\t\t\t\tattemptId: options.durableHandle.attemptId,\n\t\t\t\tfencingToken: options.durableHandle.fencingToken,\n\t\t\t})\n\t\t: undefined;\n\tlet retentionWarningEmitted = false;\n\tlet firstMailboxPoll = true;\n\tlet ran = false;\n\n\tconst currentUsage = (): AttemptUsageSnapshot =>\n\t\tattemptUsageFromGatewayUsage(\n\t\t\toptions.toolSurface.gateway?.getUsage() ?? {\n\t\t\t\t...EMPTY_ATTEMPT_USAGE,\n\t\t\t\twallClockMs: options.initialUsage.activeWallClockMs,\n\t\t\t},\n\t\t);\n\tconst checkpointUsage = (summary: string): AttemptUsageSnapshot => {\n\t\tconst usage = currentUsage();\n\t\toptions.lifecycle.checkpoint(options.laneId, { summary, usage });\n\t\treturn usage;\n\t};\n\tconst remainingAttemptTokens = (): number | undefined => options.toolSurface.gateway?.remainingAttemptTokenBudget();\n\tconst reserveProviderBudget = async (\n\t\trequestedMaxTokens: number,\n\t\tsubject: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<ProviderBudgetReservation> => {\n\t\tif (options.toolSurface.gateway) {\n\t\t\treturn options.toolSurface.gateway.reserveProviderBudget(requestedMaxTokens, subject, signal);\n\t\t}\n\t\tif (signal?.aborted) throw signal.reason;\n\t\treturn { maxTokens: requestedMaxTokens, release: () => undefined };\n\t};\n\tconst createRetentionPolicy = (completeSignal: AbortSignal): WorkerConversationRetentionPolicy | undefined => {\n\t\tif (!options.retentionPolicy) return undefined;\n\t\tlet failedCompactionUsage: Usage | undefined;\n\t\treturn {\n\t\t\t...options.retentionPolicy,\n\t\t\tgenerateVerifiedCompaction: async (preparation: Parameters<typeof compact>[0]) => {\n\t\t\t\tconst compactionUsage = createEmptyUsage();\n\t\t\t\tfailedCompactionUsage = compactionUsage;\n\t\t\t\treturn compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\toptions.model,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tcompleteSignal,\n\t\t\t\t\toptions.thinkingLevel,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t{\n\t\t\t\t\t\tcompletion: async (model, context, requestOptions): Promise<AssistantMessage> => {\n\t\t\t\t\t\t\tconst requestSignal = requestOptions.signal ?? completeSignal;\n\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\tif (model.provider !== options.model.provider || model.id !== options.model.id) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction attempted to select a model outside the lane binding.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_compaction_provider_completion\");\n\t\t\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before compaction provider completion.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst requestedMaxTokens = requestOptions.maxTokens;\n\t\t\t\t\t\t\tconst configuredMaxTokens =\n\t\t\t\t\t\t\t\ttypeof requestedMaxTokens === \"number\" &&\n\t\t\t\t\t\t\t\tNumber.isSafeInteger(requestedMaxTokens) &&\n\t\t\t\t\t\t\t\trequestedMaxTokens > 0\n\t\t\t\t\t\t\t\t\t? requestedMaxTokens\n\t\t\t\t\t\t\t\t\t: options.laneCapability.laneMaxOutputTokens;\n\t\t\t\t\t\t\tconst maxTokens = Math.min(configuredMaxTokens, availableTokens ?? configuredMaxTokens);\n\t\t\t\t\t\t\tif (!Number.isSafeInteger(maxTokens) || maxTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction provider completion has no valid remaining token budget.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet preflightFailed = false;\n\t\t\t\t\t\t\tlet preflightFailure: unknown;\n\t\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\t\treserveProviderBudget(maxTokens, \"worker_compaction_provider_completion\", requestSignal),\n\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\tonFailure: (error) => {\n\t\t\t\t\t\t\t\t\tif (preflightFailed) return;\n\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcompletion = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\t\tsystemPrompt: context.systemPrompt ?? \"\",\n\t\t\t\t\t\t\t\t\t\tmessages: context.messages,\n\t\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\t\t\tmaxTokens,\n\t\t\t\t\t\t\t\t\t\trequestPreflight: () => providerTurn.requestPreflight(),\n\t\t\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\t\t\tcacheRetention: \"none\",\n\t\t\t\t\t\t\t\t\t\tlaneKind: \"worker-compaction\",\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tconst response: AssistantMessage = {\n\t\t\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\t\t\tcontent: completion.text ? [{ type: \"text\", text: completion.text }] : [],\n\t\t\t\t\t\t\t\t\tapi: options.model.api,\n\t\t\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\t\t\tmodel: options.model.id,\n\t\t\t\t\t\t\t\t\tusage: completion.usage,\n\t\t\t\t\t\t\t\t\tstopReason: completion.stopReason,\n\t\t\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\t\t\t...(completion.stopReason === \"error\"\n\t\t\t\t\t\t\t\t\t\t? { errorMessage: completion.text || \"Worker compaction provider request failed.\" }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taddUsage(compactionUsage, completion.usage);\n\t\t\t\t\t\t\t\tif (providerTurn.hasOutstandingAssistantReservation()) {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(completion.usage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountUnverifiedResultUsageDelta(completion.usage);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker compaction provider usage before verification.\");\n\t\t\t\t\t\t\t\tif (providerTurn.hasSuccessfulPreflight()) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\tif (!preflightFailed) {\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight(\"compaction\");\n\t\t\t\t\t\t\t\treturn response;\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t\tgetFailedCompactionUsage: () => failedCompactionUsage,\n\t\t};\n\t};\n\tconst ledger: WorkerAttemptExecutionLedger = {\n\t\tchangedFiles,\n\t\tgetUsage: currentUsage,\n\t};\n\n\treturn {\n\t\tledger,\n\t\tcheckpointUsage,\n\t\tasync run(): Promise<WorkerAttemptExecutionResult> {\n\t\t\tif (ran) throw new Error(\"A worker attempt executor may run only once.\");\n\t\t\tran = true;\n\t\t\toptions.conversation.beginAttemptUsage(options.durableHandle.attemptId);\n\t\t\tif (!options.hasPersistedUsageCheckpoint) {\n\t\t\t\tcheckpointUsage(\"Persisted deterministic cumulative usage baseline for the durable worker transcript.\");\n\t\t\t}\n\t\t\tconst rawOutcome = await runWorker({\n\t\t\t\trequest: options.request,\n\t\t\t\tmaxUsd: options.grant.budget.maxCostUsd,\n\t\t\t\tmaxWallClockMs: options.grant.budget.maxWallClockMs ?? 0,\n\t\t\t\tusageReportId: options.usageReportId,\n\t\t\t\tgetChangedFiles: () => [...changedFiles],\n\t\t\t\tsignal: options.signal,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tprocessCapable: options.processCapable,\n\t\t\t\tdelegationCapable: options.toolSurface.allowedTools.includes(\"delegate\"),\n\t\t\t\t...(options.verificationSubjectTaskId\n\t\t\t\t\t? { verificationSubjectTaskId: options.verificationSubjectTaskId }\n\t\t\t\t\t: {}),\n\t\t\t\t...(options.applyActions\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tapplyActions: (actions: readonly WorkerAction[]) => {\n\t\t\t\t\t\t\t\tconst report = options.applyActions!(actions, actionJournal);\n\t\t\t\t\t\t\t\tfor (const filePath of report.changedFiles) recordChangedFile(filePath);\n\t\t\t\t\t\t\t\treturn report;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tcomplete: async ({ systemPrompt, userPrompt, signal }) => {\n\t\t\t\t\tif (options.recoveredTerminal) {\n\t\t\t\t\t\tcheckpointUsage(\"Reused the persisted terminal worker assistant response after recovery.\");\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: options.recoveredTerminal.text,\n\t\t\t\t\t\t\tcostUsd: options.initialUsage.costUsd,\n\t\t\t\t\t\t\tstopReason: options.recoveredTerminal.stopReason,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst retentionPolicy = createRetentionPolicy(signal);\n\t\t\t\t\tconst persistedToolAssistantIds = new Set<string>();\n\t\t\t\t\tconst pendingToolAssistants = new Map<string, AssistantMessage>();\n\t\t\t\t\tlet activeProviderTurn: WorkerProviderTurnProtocol | undefined;\n\t\t\t\t\tconst closeActiveProviderTurn = (): void => {\n\t\t\t\t\t\tconst active = activeProviderTurn;\n\t\t\t\t\t\tactiveProviderTurn = undefined;\n\t\t\t\t\t\tactive?.close();\n\t\t\t\t\t};\n\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_provider_completion\");\n\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before provider completion.\");\n\t\t\t\t\t}\n\t\t\t\t\toptions.conversation.ensureAttemptUserPrompt(options.durableHandle.attemptId, userPrompt);\n\t\t\t\t\tlet history: Message[] = [];\n\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\tconst attemptProviderCompletion = async (): Promise<IsolatedCompletionResult> => {\n\t\t\t\t\t\t// Later attempts resume from the durably persisted transcript, not a stale snapshot.\n\t\t\t\t\t\tconst transcriptCommit = options.conversation.beginTranscriptCommit();\n\t\t\t\t\t\thistory = transcriptCommit.history;\n\t\t\t\t\t\tconst historyLength = history.length;\n\t\t\t\t\t\tconst transcriptCursor = transcriptCommit.cursor;\n\t\t\t\t\t\tconst durableCallbackMessages: Message[] = [];\n\t\t\t\t\t\tlet callbackFailed = false;\n\t\t\t\t\t\tlet callbackFailure: unknown;\n\t\t\t\t\t\tconst retainCallbackFailure = (error: unknown): void => {\n\t\t\t\t\t\t\tif (callbackFailed) return;\n\t\t\t\t\t\t\tcallbackFailed = true;\n\t\t\t\t\t\t\tcallbackFailure = error;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\treserveProviderBudget(\n\t\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\t\t\"worker_provider_completion\",\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tonFailure: retainCallbackFailure,\n\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tactiveProviderTurn = providerTurn;\n\t\t\t\t\t\tconst persistToolRequest = (message: AssistantMessage): void => {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst toolCallIds = message.content.flatMap((content) =>\n\t\t\t\t\t\t\t\tcontent.type === \"toolCall\" ? [content.id] : [],\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (toolCallIds.length === 0 || toolCallIds.every((id) => persistedToolAssistantIds.has(id)))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\tfor (const id of toolCallIds) {\n\t\t\t\t\t\t\t\tpersistedToolAssistantIds.add(id);\n\t\t\t\t\t\t\t\tpendingToolAssistants.delete(id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker assistant tool request and its cumulative provider usage.\");\n\t\t\t\t\t\t\tproviderTurn.consumeToolAssistantAndRelease();\n\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet committed = false;\n\t\t\t\t\t\tconst abortTranscriptCursor = (): void => {\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\toptions.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsignal.addEventListener(\"abort\", abortTranscriptCursor, { once: true });\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tlet result: IsolatedCompletionResult;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresult = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\tsystemPrompt: buildWorkerSystemPrompt({\n\t\t\t\t\t\t\t\t\t\tsoul: options.soul,\n\t\t\t\t\t\t\t\t\t\trolePrompt: systemPrompt,\n\t\t\t\t\t\t\t\t\t\tworkerResourceSystemPrompt: options.workerResourceSystemPrompt,\n\t\t\t\t\t\t\t\t\t\tagentDir: options.agentDir,\n\t\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\thistory,\n\t\t\t\t\t\t\t\t\tmessages: [],\n\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\t\tmaxTokens: Math.min(\n\t\t\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\t\t\tavailableTokens ?? Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\ttools: options.toolSurface.tools,\n\t\t\t\t\t\t\t\t\trequestPreflight: () => providerTurn.requestPreflight(),\n\t\t\t\t\t\t\t\t\tbeforeToolCall: async (context, toolSignal) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tpersistToolRequest(context.assistantMessage);\n\t\t\t\t\t\t\t\t\t\t\tconst decision = await options.toolSurface.beforeToolCall(context, toolSignal);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (!decision?.block) {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Authorized worker tool '${context.toolCall.name}' under its durable grant.`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn decision;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterToolCall: async ({ toolCall, args }) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t(toolCall.name === \"write\" || toolCall.name === \"edit\") &&\n\t\t\t\t\t\t\t\t\t\t\t\targs &&\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof args === \"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!Array.isArray(args)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst rawPath = (args as Record<string, unknown>).path;\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof rawPath === \"string\" && rawPath.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst absolutePath = path.isAbsolute(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? path.resolve(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: path.resolve(options.cwd, rawPath);\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet canonicalPath = absolutePath;\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcanonicalPath = safeRealpathSync(absolutePath);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The operation entered execution; retain its lexical target if canonicalization failed.\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trecordChangedFile(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath.relative(options.cwd, canonicalPath).split(path.sep).join(\"/\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonMessage: (message, origin) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && isToolRequest(message)) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Known calls are normalized before beforeToolCall and persist from that hook.\n\t\t\t\t\t\t\t\t\t\t\t\t// Retain the request only so immediate unknown/malformed results can close the\n\t\t\t\t\t\t\t\t\t\t\t\t// transcript without freezing pre-repair arguments into durable history.\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (content.type === \"toolCall\") pendingToolAssistants.set(content.id, message);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tmessage.role === \"toolResult\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!persistedToolAssistantIds.has(message.toolCallId)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst pending = pendingToolAssistants.get(message.toolCallId);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pending) persistToolRequest(pending);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && origin !== \"local\") {\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\t\t\t\t\toptions.agentControl.acknowledgeMailboxMessage(options.agentId, message);\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && origin !== \"local\") {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Persisted worker assistant response and its cumulative provider usage.\",\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"toolResult\")\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(`Persisted worker tool result '${message.toolCallId}'.`);\n\t\t\t\t\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetSteeringMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst includeFollowUp = firstMailboxPoll;\n\t\t\t\t\t\t\t\t\t\t\tfirstMailboxPoll = false;\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\tincludeFollowUp,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetFollowUpMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t...(retentionPolicy\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\ttransformContext: async (messages: AgentMessage[]) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst retained = await options.conversation.compactProviderContext(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionPolicy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.contextUsage.tokens > retentionPolicy.maxContextTokens &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!retentionWarningEmitted\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker ${options.laneId} has one retained turn larger than its context policy; provider overflow recovery may be required.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_verified\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_deterministic\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn sanitizeToolFailureContext(retained.context.messages, \"\").messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (signal.aborted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (error instanceof WorkerConversationOwnershipError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!retentionWarningEmitted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker context retention failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\tcacheRetention: \"short\",\n\t\t\t\t\t\t\t\t\tlaneKind: \"worker\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\tif (signal.aborted) throw error;\n\t\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tproviderTurn.assertEverySuccessfulPreflightConsumed();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tif (providerTurn.accountUnverifiedResultUsageDelta(result.usage)) {\n\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\"Persisted supplemental provider result usage before rejecting unverified completion evidence.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight();\n\t\t\t\t\t\t\tconst evidenced = callbackEvidencedCompletion(result, historyLength, durableCallbackMessages);\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst appended = options.conversation.commitTranscript(transcriptCursor, evidenced.suffix, {\n\t\t\t\t\t\t\t\tappendMissing: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (appended !== 0) {\n\t\t\t\t\t\t\t\tthrow new WorkerConversationOwnershipError(\n\t\t\t\t\t\t\t\t\t\"Worker callback transcript verification unexpectedly appended missing messages.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcommitted = true;\n\t\t\t\t\t\t\treturn evidenced.completion;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tsignal.removeEventListener(\"abort\", abortTranscriptCursor);\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (activeProviderTurn === providerTurn) activeProviderTurn = undefined;\n\t\t\t\t\t\t\tif (!committed) options.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcompletion = await runProviderCompletionWithBackoff({\n\t\t\t\t\t\t\tattempt: attemptProviderCompletion,\n\t\t\t\t\t\t\tonAttemptFailure: closeActiveProviderTurn,\n\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\tlaneId: options.laneId,\n\t\t\t\t\t\t\twarn: options.warn,\n\t\t\t\t\t\t\t...(signal ? { signal } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcloseActiveProviderTurn();\n\t\t\t\t\t}\n\t\t\t\t\tconst cumulativeUsage = checkpointUsage(\n\t\t\t\t\t\t\"Verified the callback-persisted worker conversation terminal suffix.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: completion.text,\n\t\t\t\t\t\tcostUsd: cumulativeUsage.costUsd,\n\t\t\t\t\t\tstopReason: String(completion.stopReason),\n\t\t\t\t\t\tchangedFiles: [...changedFiles],\n\t\t\t\t\t\tblockers: [...toolIssues],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst usage = checkpointUsage(\"Persisted final cumulative worker usage before terminal result.\");\n\t\t\treturn { rawOutcome, usage, changedFiles: [...changedFiles] };\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-conversation-store.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-conversation-store.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,qBAAqB,EAErB,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-conversation-store.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-conversation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { isDeepStrictEqual } from "node:util";
|
|
|
5
5
|
import { createDeterministicCompaction, estimateContextTokens, prepareCompaction, } from "@caupulican/pi-agent-core/compaction/compaction";
|
|
6
6
|
import { compactToolResultDetailsForRetention } from "@caupulican/pi-agent-core/message-retention";
|
|
7
7
|
import { convertToLlm } from "@caupulican/pi-agent-core/messages";
|
|
8
|
+
import { measureJsonStringUtf8Bytes } from "@caupulican/pi-agent-core/provider-request-estimator";
|
|
8
9
|
import { assertValidSessionId, MAX_SESSION_ENTRY_VISIT_COUNT, SessionManager, } from "@caupulican/pi-agent-core/session";
|
|
9
10
|
import { orchestrationSessionsDir, workerConversationSessionsDir } from "../agent-paths.js";
|
|
10
11
|
import { sameAgentResumeIdentity } from "../orchestration/agent-resume.js";
|
|
@@ -74,49 +75,6 @@ function coldWorkerControlPrefixContains(sessionManager, entryId, messageId) {
|
|
|
74
75
|
const rawPrefix = sessionManager.readEntryJsonPrefix(entryId, MAX_WORKER_CONTROL_ENTRY_PREFIX_BYTES);
|
|
75
76
|
return rawPrefix?.includes(`"role":"user","content":"[Worker control ${messageId}`) ?? false;
|
|
76
77
|
}
|
|
77
|
-
function boundedJsonStringBytes(value, limit) {
|
|
78
|
-
let bytes = 2;
|
|
79
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
80
|
-
const code = value.charCodeAt(index);
|
|
81
|
-
if (code === 0x22 ||
|
|
82
|
-
code === 0x5c ||
|
|
83
|
-
code === 0x08 ||
|
|
84
|
-
code === 0x09 ||
|
|
85
|
-
code === 0x0a ||
|
|
86
|
-
code === 0x0c ||
|
|
87
|
-
code === 0x0d) {
|
|
88
|
-
bytes += 2;
|
|
89
|
-
}
|
|
90
|
-
else if (code <= 0x1f) {
|
|
91
|
-
bytes += 6;
|
|
92
|
-
}
|
|
93
|
-
else if (code >= 0xd800 && code <= 0xdbff) {
|
|
94
|
-
const trailing = value.charCodeAt(index + 1);
|
|
95
|
-
if (trailing >= 0xdc00 && trailing <= 0xdfff) {
|
|
96
|
-
bytes += 4;
|
|
97
|
-
index += 1;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
bytes += 6;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else if (code >= 0xdc00 && code <= 0xdfff) {
|
|
104
|
-
bytes += 6;
|
|
105
|
-
}
|
|
106
|
-
else if (code <= 0x7f) {
|
|
107
|
-
bytes += 1;
|
|
108
|
-
}
|
|
109
|
-
else if (code <= 0x7ff) {
|
|
110
|
-
bytes += 2;
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
bytes += 3;
|
|
114
|
-
}
|
|
115
|
-
if (bytes > limit)
|
|
116
|
-
return limit + 1;
|
|
117
|
-
}
|
|
118
|
-
return bytes;
|
|
119
|
-
}
|
|
120
78
|
/** Conservative JSON byte measurement that stops before an oversized message is cloned. */
|
|
121
79
|
function boundedJsonBytes(value, limit) {
|
|
122
80
|
const pending = [value];
|
|
@@ -135,7 +93,7 @@ function boundedJsonBytes(value, limit) {
|
|
|
135
93
|
}
|
|
136
94
|
switch (typeof item) {
|
|
137
95
|
case "string":
|
|
138
|
-
if (!add(
|
|
96
|
+
if (!add(measureJsonStringUtf8Bytes(item, limit - bytes)))
|
|
139
97
|
return limit + 1;
|
|
140
98
|
continue;
|
|
141
99
|
case "number":
|
|
@@ -185,7 +143,7 @@ function boundedJsonBytes(value, limit) {
|
|
|
185
143
|
if (propertyCount > 0 && !add(1))
|
|
186
144
|
return limit + 1;
|
|
187
145
|
propertyCount += 1;
|
|
188
|
-
if (!add(
|
|
146
|
+
if (!add(measureJsonStringUtf8Bytes(key, limit - bytes) + 1))
|
|
189
147
|
return limit + 1;
|
|
190
148
|
pending.push(propertyValue);
|
|
191
149
|
}
|