@caupulican/pi-adaptative 0.86.3 → 0.86.6
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 +44 -0
- package/dist/core/agent-paths.d.ts +13 -0
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +23 -0
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +7 -0
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +12 -4
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.d.ts +2 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +6 -3
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/subagent-prompt.js +1 -1
- package/dist/core/autonomy/subagent-prompt.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +25 -2
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +67 -0
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/delegation/replay-safe-mailbox-bounds.d.ts +4 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.d.ts.map +1 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.js +20 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.js.map +1 -0
- package/dist/core/delegation/sanitized-context-fork.d.ts +25 -0
- package/dist/core/delegation/sanitized-context-fork.d.ts.map +1 -0
- package/dist/core/delegation/sanitized-context-fork.js +299 -0
- package/dist/core/delegation/sanitized-context-fork.js.map +1 -0
- package/dist/core/delegation/session-root-mailbox.d.ts +75 -0
- package/dist/core/delegation/session-root-mailbox.d.ts.map +1 -0
- package/dist/core/delegation/session-root-mailbox.js +627 -0
- package/dist/core/delegation/session-root-mailbox.js.map +1 -0
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts +102 -9
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.js +1307 -125
- package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-agent-control.d.ts +183 -8
- package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control.js +778 -48
- package/dist/core/delegation/worker-agent-control.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts +9 -0
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +479 -214
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts +9 -0
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +21 -2
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-context-fork-store.d.ts +71 -0
- package/dist/core/delegation/worker-context-fork-store.d.ts.map +1 -0
- package/dist/core/delegation/worker-context-fork-store.js +437 -0
- package/dist/core/delegation/worker-context-fork-store.js.map +1 -0
- package/dist/core/delegation/worker-context-inheritance-policy.d.ts +18 -0
- package/dist/core/delegation/worker-context-inheritance-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-context-inheritance-policy.js +28 -0
- package/dist/core/delegation/worker-context-inheritance-policy.js.map +1 -0
- package/dist/core/delegation/worker-conversation-revision.d.ts +31 -0
- package/dist/core/delegation/worker-conversation-revision.d.ts.map +1 -0
- package/dist/core/delegation/worker-conversation-revision.js +203 -0
- package/dist/core/delegation/worker-conversation-revision.js.map +1 -0
- package/dist/core/delegation/worker-conversation-store.d.ts +130 -18
- package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -1
- package/dist/core/delegation/worker-conversation-store.js +1263 -79
- package/dist/core/delegation/worker-conversation-store.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +30 -2
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +675 -111
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-delegation-request.d.ts +2 -0
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-request.js.map +1 -1
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts +20 -1
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -1
- package/dist/core/delegation/worker-dispatch-scheduler.js +210 -37
- package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -1
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
- package/dist/core/delegation/worker-execution-policy.js +14 -2
- package/dist/core/delegation/worker-execution-policy.js.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.d.ts +38 -0
- package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -0
- package/dist/core/delegation/worker-fleet-limits.js +113 -0
- package/dist/core/delegation/worker-fleet-limits.js.map +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
- package/dist/core/delegation/worker-lane-projection.js +6 -2
- package/dist/core/delegation/worker-lane-projection.js.map +1 -1
- package/dist/core/delegation/worker-lifecycle.d.ts +20 -3
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
- package/dist/core/delegation/worker-lifecycle.js +42 -18
- package/dist/core/delegation/worker-lifecycle.js.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.d.ts +4 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.js +45 -4
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-provider-turn-protocol.d.ts +50 -0
- package/dist/core/delegation/worker-provider-turn-protocol.d.ts.map +1 -0
- package/dist/core/delegation/worker-provider-turn-protocol.js +185 -0
- package/dist/core/delegation/worker-provider-turn-protocol.js.map +1 -0
- package/dist/core/delegation/worker-recovery-coordinator.d.ts +45 -4
- package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-recovery-coordinator.js +223 -17
- package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-retry-policy.d.ts +36 -0
- package/dist/core/delegation/worker-retry-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-retry-policy.js +41 -0
- package/dist/core/delegation/worker-retry-policy.js.map +1 -0
- package/dist/core/delegation/worker-runner.d.ts +3 -1
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +4 -2
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-task-view.d.ts +43 -0
- package/dist/core/delegation/worker-task-view.d.ts.map +1 -0
- package/dist/core/delegation/worker-task-view.js +194 -0
- package/dist/core/delegation/worker-task-view.js.map +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts +55 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts.map +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js +179 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js.map +1 -0
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +2 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.js +12 -46
- package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -1
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-controller.js +15 -0
- package/dist/core/goals/goal-continuation-controller.js.map +1 -1
- package/dist/core/goals/goal-state.d.ts +6 -0
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +1 -0
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +1 -0
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +25 -3
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/keybindings.d.ts +10 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/orchestration/attempt-ordering.d.ts +9 -0
- package/dist/core/orchestration/attempt-ordering.d.ts.map +1 -0
- package/dist/core/orchestration/attempt-ordering.js +29 -0
- package/dist/core/orchestration/attempt-ordering.js.map +1 -0
- package/dist/core/orchestration/capability-gateway.d.ts +19 -0
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
- package/dist/core/orchestration/capability-gateway.js +19 -2
- package/dist/core/orchestration/capability-gateway.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +43 -3
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +24 -0
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/delegation-ledger.d.ts +8 -3
- package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
- package/dist/core/orchestration/delegation-ledger.js +148 -55
- package/dist/core/orchestration/delegation-ledger.js.map +1 -1
- package/dist/core/orchestration/event-store.d.ts +6 -3
- package/dist/core/orchestration/event-store.d.ts.map +1 -1
- package/dist/core/orchestration/event-store.js +228 -30
- package/dist/core/orchestration/event-store.js.map +1 -1
- package/dist/core/orchestration/task-runtime-codecs.d.ts +31 -0
- package/dist/core/orchestration/task-runtime-codecs.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-codecs.js +1471 -0
- package/dist/core/orchestration/task-runtime-codecs.js.map +1 -0
- package/dist/core/orchestration/task-runtime-projection.d.ts +30 -0
- package/dist/core/orchestration/task-runtime-projection.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-projection.js +340 -0
- package/dist/core/orchestration/task-runtime-projection.js.map +1 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts +38 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-reducer.js +1270 -0
- package/dist/core/orchestration/task-runtime-reducer.js.map +1 -0
- package/dist/core/orchestration/task-runtime-state.d.ts +142 -0
- package/dist/core/orchestration/task-runtime-state.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-state.js +14 -0
- package/dist/core/orchestration/task-runtime-state.js.map +1 -0
- package/dist/core/orchestration/task-runtime.d.ts +44 -98
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime.js +357 -1113
- package/dist/core/orchestration/task-runtime.js.map +1 -1
- package/dist/core/orchestration/worker-context-fork-reference.d.ts +20 -0
- package/dist/core/orchestration/worker-context-fork-reference.d.ts.map +1 -0
- package/dist/core/orchestration/worker-context-fork-reference.js +53 -0
- package/dist/core/orchestration/worker-context-fork-reference.js.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
- package/dist/core/orchestration/worker-execution-contract.js +4 -2
- package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
- package/dist/core/research/research-runner.d.ts +2 -0
- package/dist/core/research/research-runner.d.ts.map +1 -1
- package/dist/core/research/research-runner.js +1 -0
- package/dist/core/research/research-runner.js.map +1 -1
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +8 -0
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/secrets/credential-project.d.ts.map +1 -1
- package/dist/core/secrets/credential-project.js +24 -2
- package/dist/core/secrets/credential-project.js.map +1 -1
- package/dist/core/security/secret-text.d.ts +3 -0
- package/dist/core/security/secret-text.d.ts.map +1 -1
- package/dist/core/security/secret-text.js +15 -0
- package/dist/core/security/secret-text.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +160 -8
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +33 -15
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +763 -115
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/goal.d.ts +1 -0
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +9 -1
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +5 -0
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
- package/dist/modes/interactive/components/activity-lane.js +133 -49
- package/dist/modes/interactive/components/activity-lane.js.map +1 -1
- package/dist/modes/interactive/components/agents-overlay.d.ts +40 -0
- package/dist/modes/interactive/components/agents-overlay.d.ts.map +1 -0
- package/dist/modes/interactive/components/agents-overlay.js +153 -0
- package/dist/modes/interactive/components/agents-overlay.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +18 -13
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.js +6 -3
- package/dist/modes/interactive/interactive-event-controller.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +51 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/key-handlers.d.ts +1 -0
- package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/key-handlers.js +1 -0
- package/dist/modes/interactive/key-handlers.js.map +1 -1
- package/docs/harness-architecture.md +61 -17
- package/docs/settings.md +17 -9
- package/docs/worker-profiles.md +6 -2
- 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 { compact } from \"@caupulican/pi-agent-core/compaction/compaction\";\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 type { WorkerRequest } from \"../autonomy/contracts.ts\";\nimport type { LaneToolSurface } from \"../autonomy/lane-tool-surface.ts\";\nimport { safeRealpathSync } from \"../autonomy/path-scope.ts\";\nimport { composeSubagentSystemPrompt } from \"../autonomy/subagent-prompt.ts\";\nimport type { ModelCapabilityProfile } from \"../model-capability.ts\";\nimport { attemptUsageFromGatewayUsage, EMPTY_ATTEMPT_USAGE } from \"../orchestration/attempt-usage.ts\";\nimport 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 type { WorkerConversation, WorkerConversationRetentionPolicy } from \"./worker-conversation-store.ts\";\nimport type { WorkerExecutionPlan } from \"./worker-execution-policy.ts\";\nimport type { WorkerLifecycle } from \"./worker-lifecycle.ts\";\nimport { runWorker, type WorkerRunOutcome } from \"./worker-runner.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 * 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 recordAssistantUsage(surface: LaneToolSurface, message: Extract<Message, { role: \"assistant\" }>): void {\n\tsurface.gateway?.recordUsage({\n\t\tinputTokens: message.usage.input,\n\t\toutputTokens: message.usage.output,\n\t\tcacheReadTokens: message.usage.cacheRead,\n\t\tcacheWriteTokens: message.usage.cacheWrite,\n\t\ttotalTokens: message.usage.totalTokens,\n\t\tcostUsd: message.usage.cost.total,\n\t});\n}\n\nfunction isToolRequest(message: Message): boolean {\n\treturn message.role === \"assistant\" && message.content.some((content) => content.type === \"toolCall\");\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 providerContextCompacted = options.conversation.hasProviderCompaction();\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\tlet failedCompactionUsage: Usage | undefined;\n\tconst retentionPolicy = options.retentionPolicy && {\n\t\t...options.retentionPolicy,\n\t\tgenerateVerifiedCompaction: async (preparation: Parameters<typeof compact>[0]) => {\n\t\t\tconst compactionUsage = createEmptyUsage();\n\t\t\tfailedCompactionUsage = compactionUsage;\n\t\t\treturn compact(\n\t\t\t\tpreparation,\n\t\t\t\toptions.model,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\toptions.signal,\n\t\t\t\toptions.thinkingLevel,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\t{\n\t\t\t\t\tcompletion: async (model, context, requestOptions): Promise<AssistantMessage> => {\n\t\t\t\t\t\tif (model.provider !== options.model.provider || model.id !== options.model.id) {\n\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}\n\t\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_compaction_provider_completion\");\n\t\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before compaction provider completion.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst requestedMaxTokens = requestOptions.maxTokens;\n\t\t\t\t\t\tconst configuredMaxTokens =\n\t\t\t\t\t\t\ttypeof requestedMaxTokens === \"number\" &&\n\t\t\t\t\t\t\tNumber.isSafeInteger(requestedMaxTokens) &&\n\t\t\t\t\t\t\trequestedMaxTokens > 0\n\t\t\t\t\t\t\t\t? requestedMaxTokens\n\t\t\t\t\t\t\t\t: options.laneCapability.laneMaxOutputTokens;\n\t\t\t\t\t\tconst maxTokens = Math.min(configuredMaxTokens, availableTokens ?? configuredMaxTokens);\n\t\t\t\t\t\tif (!Number.isSafeInteger(maxTokens) || maxTokens <= 0) {\n\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}\n\t\t\t\t\t\tlet reservation: ProviderBudgetReservation | undefined;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst completion = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\tsystemPrompt: context.systemPrompt ?? \"\",\n\t\t\t\t\t\t\t\tmessages: context.messages,\n\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\tmaxTokens,\n\t\t\t\t\t\t\t\trequestPreflight: async () => {\n\t\t\t\t\t\t\t\t\treservation?.release();\n\t\t\t\t\t\t\t\t\treservation = await reserveProviderBudget(\n\t\t\t\t\t\t\t\t\t\tmaxTokens,\n\t\t\t\t\t\t\t\t\t\t\"worker_compaction_provider_completion\",\n\t\t\t\t\t\t\t\t\t\trequestOptions.signal ?? options.signal,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn { maxTokens: reservation.maxTokens };\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsignal: requestOptions.signal ?? options.signal,\n\t\t\t\t\t\t\t\tcacheRetention: \"none\",\n\t\t\t\t\t\t\t\tlaneKind: \"worker-compaction\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddUsage(compactionUsage, completion.usage);\n\t\t\t\t\t\t\tconst response: AssistantMessage = {\n\t\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\t\tcontent: completion.text ? [{ type: \"text\", text: completion.text }] : [],\n\t\t\t\t\t\t\t\tapi: options.model.api,\n\t\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\t\tmodel: options.model.id,\n\t\t\t\t\t\t\t\tusage: completion.usage,\n\t\t\t\t\t\t\t\tstopReason: completion.stopReason,\n\t\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\t\t...(completion.stopReason === \"error\"\n\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: {}),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\trecordAssistantUsage(options.toolSurface, response);\n\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker compaction provider usage before verification.\");\n\t\t\t\t\t\t\treturn response;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\treservation?.release();\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},\n\t\tgetFailedCompactionUsage: () => failedCompactionUsage,\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\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 persistedToolAssistantIds = new Set<string>();\n\t\t\t\t\tconst pendingToolAssistants = new Map<string, AssistantMessage>();\n\t\t\t\t\tlet providerReservation: ProviderBudgetReservation | undefined;\n\t\t\t\t\tconst releaseProviderReservation = (): void => {\n\t\t\t\t\t\tproviderReservation?.release();\n\t\t\t\t\t\tproviderReservation = undefined;\n\t\t\t\t\t};\n\t\t\t\t\tconst persistToolRequest = (message: AssistantMessage): void => {\n\t\t\t\t\t\tconst toolCallIds = message.content.flatMap((content) =>\n\t\t\t\t\t\t\tcontent.type === \"toolCall\" ? [content.id] : [],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (toolCallIds.length === 0 || toolCallIds.every((id) => persistedToolAssistantIds.has(id))) return;\n\t\t\t\t\t\trecordAssistantUsage(options.toolSurface, message);\n\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\tfor (const id of toolCallIds) {\n\t\t\t\t\t\t\tpersistedToolAssistantIds.add(id);\n\t\t\t\t\t\t\tpendingToolAssistants.delete(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcheckpointUsage(\"Persisted worker assistant tool request and its cumulative provider usage.\");\n\t\t\t\t\t\treleaseProviderReservation();\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\tlet history = options.conversation.getProviderMessages();\n\t\t\t\t\tif (history.length === 0) {\n\t\t\t\t\t\toptions.conversation.appendMessage({\n\t\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: userPrompt }],\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\thistory = options.conversation.getProviderMessages();\n\t\t\t\t\t}\n\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcompletion = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\tsystemPrompt: composeSubagentSystemPrompt({\n\t\t\t\t\t\t\t\tsoul: options.soul,\n\t\t\t\t\t\t\t\trolePrompt: [systemPrompt, options.workerResourceSystemPrompt].filter(Boolean).join(\"\\n\\n\"),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\thistory,\n\t\t\t\t\t\t\tmessages: [],\n\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\tmaxTokens: Math.min(\n\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\tavailableTokens ?? Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\ttools: options.toolSurface.tools,\n\t\t\t\t\t\t\trequestPreflight: async () => {\n\t\t\t\t\t\t\t\treleaseProviderReservation();\n\t\t\t\t\t\t\t\tproviderReservation = await reserveProviderBudget(\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\t\treturn { maxTokens: providerReservation.maxTokens };\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbeforeToolCall: async (context, toolSignal) => {\n\t\t\t\t\t\t\t\tpersistToolRequest(context.assistantMessage);\n\t\t\t\t\t\t\t\tconst decision = await options.toolSurface.beforeToolCall(context, toolSignal);\n\t\t\t\t\t\t\t\tif (decision?.block) {\n\t\t\t\t\t\t\t\t\ttoolIssues.add(\n\t\t\t\t\t\t\t\t\t\t`${context.toolCall.name} blocked: ${decision.reason ?? \"capability denied\"}`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\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);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn decision;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tafterToolCall: async ({ toolCall, args, isError }) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t(toolCall.name === \"write\" || toolCall.name === \"edit\") &&\n\t\t\t\t\t\t\t\t\targs &&\n\t\t\t\t\t\t\t\t\ttypeof args === \"object\" &&\n\t\t\t\t\t\t\t\t\t!Array.isArray(args)\n\t\t\t\t\t\t\t\t) {\n\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\tif (typeof rawPath === \"string\" && rawPath.length > 0) {\n\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? path.resolve(rawPath)\n\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\tlet canonicalPath = absolutePath;\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tcanonicalPath = safeRealpathSync(absolutePath);\n\t\t\t\t\t\t\t\t\t\t} catch {\n\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}\n\t\t\t\t\t\t\t\t\t\trecordChangedFile(path.relative(options.cwd, canonicalPath).split(path.sep).join(\"/\"));\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\tif (isError) toolIssues.add(`${toolCall.name} failed during isolated execution`);\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMessage: (message) => {\n\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && isToolRequest(message)) {\n\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// Retain the request only so immediate unknown/malformed results can close the\n\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\tfor (const content of message.content) {\n\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}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (message.role === \"toolResult\" && !persistedToolAssistantIds.has(message.toolCallId)) {\n\t\t\t\t\t\t\t\t\tconst pending = pendingToolAssistants.get(message.toolCallId);\n\t\t\t\t\t\t\t\t\tif (pending) persistToolRequest(pending);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (message.role === \"assistant\") recordAssistantUsage(options.toolSurface, message);\n\t\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\t\toptions.agentControl.acknowledgeMailboxMessage(options.agentId, message);\n\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker assistant response and its cumulative provider usage.\");\n\t\t\t\t\t\t\t\t\treleaseProviderReservation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (message.role === \"toolResult\")\n\t\t\t\t\t\t\t\t\tcheckpointUsage(`Persisted worker tool result '${message.toolCallId}'.`);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSteeringMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\tconst includeFollowUp = firstMailboxPoll;\n\t\t\t\t\t\t\t\tfirstMailboxPoll = false;\n\t\t\t\t\t\t\t\treturn options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\tincludeFollowUp,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetFollowUpMessages: async (): Promise<AgentMessage[]> =>\n\t\t\t\t\t\t\t\toptions.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(retentionPolicy\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransformContext: async (messages: AgentMessage[]) => {\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\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\tretentionPolicy,\n\t\t\t\t\t\t\t\t\t\t\t\t\toptions.signal,\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\tif (\n\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\tretained.status === \"compacted_deterministic\"\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\t\tproviderContextCompacted = true;\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\tif (\n\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!retentionWarningEmitted\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\t\tretentionWarningEmitted = true;\n\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`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);\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\tif (\n\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\tretained.status !== \"compacted_deterministic\"\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\t\treturn messages;\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 sanitizeToolFailureContext(retained.context.messages, \"\").messages;\n\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\tif (!retentionWarningEmitted) {\n\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\toptions.warn(\n\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);\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 messages;\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\t}\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tcacheRetention: \"short\",\n\t\t\t\t\t\t\tlaneKind: \"worker\",\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\treleaseProviderReservation();\n\t\t\t\t\t}\n\t\t\t\t\tif (!providerContextCompacted) {\n\t\t\t\t\t\toptions.conversation.commitTranscript(\n\t\t\t\t\t\t\tcompletion.messages ?? options.conversation.getProviderMessages(),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t`Persisted worker conversation through ${options.conversation.getProviderContext().messages.length} messages.`,\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: completion.usage.cost.total,\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 type { WorkerRequest } from \"../autonomy/contracts.ts\";\nimport type { LaneToolSurface } from \"../autonomy/lane-tool-surface.ts\";\nimport { safeRealpathSync } from \"../autonomy/path-scope.ts\";\nimport { composeSubagentSystemPrompt } from \"../autonomy/subagent-prompt.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 { 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\treturn await args.attempt();\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) {\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) throw error;\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) {\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},\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: composeSubagentSystemPrompt({\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, options.workerResourceSystemPrompt]\n\t\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t\t.join(\"\\n\\n\"),\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\ttoolIssues.add(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${context.toolCall.name} blocked: ${decision.reason ?? \"capability denied\"}`,\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} else {\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, isError }) => {\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\tif (isError) toolIssues.add(`${toolCall.name} failed during isolated execution`);\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"]}
|
|
@@ -2,6 +2,15 @@ import type { Api, Model } from "@caupulican/pi-ai";
|
|
|
2
2
|
import type { ModelRegistry } from "../model-registry.ts";
|
|
3
3
|
import type { WorkerDelegationAuthorityRequest } from "./worker-delegation-request.ts";
|
|
4
4
|
import type { ResolvedWorkerProfile } from "./worker-profile-resolver.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Smallest token grant a worker can survive on. A worker's first response pays the full
|
|
7
|
+
* uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor
|
|
8
|
+
* starve mid-flight with every tool call denied `token_budget_exhausted` — reject them at
|
|
9
|
+
* admission with an explicit reason instead (field session 019fd4dc: 8-9k grants died in
|
|
10
|
+
* 2-3 responses under face-value cache-read counting; the floor plus discounted counting
|
|
11
|
+
* makes small grants viable again).
|
|
12
|
+
*/
|
|
13
|
+
export declare const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5000;
|
|
5
14
|
export interface WorkerAuthorityResolutionInput {
|
|
6
15
|
authority?: WorkerDelegationAuthorityRequest;
|
|
7
16
|
base?: ResolvedWorkerProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-authority-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-authority-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AAepD,MAAM,WAAW,8BAA8B;IAC9C,SAAS,CAAC,EAAE,gCAAgC,CAAC;IAC7C,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED,MAAM,MAAM,yBAAyB,GAClC;IACA,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;IAChC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAmCjC,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,8BAA8B,GAAG,yBAAyB,CAkFvG"}
|
|
@@ -5,6 +5,15 @@ import { ORCHESTRATION_SCHEMA_VERSION, } from "../orchestration/contracts.js";
|
|
|
5
5
|
import { CLASSIFIED_LANE_TOOL_NAMES } from "../orchestration/lane-tool-manifests.js";
|
|
6
6
|
import { resolvePinnedOrchestrationModel } from "../orchestration/model-binding.js";
|
|
7
7
|
import { getToolCapabilityPolicy } from "../tool-capability-policy.js";
|
|
8
|
+
/**
|
|
9
|
+
* Smallest token grant a worker can survive on. A worker's first response pays the full
|
|
10
|
+
* uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor
|
|
11
|
+
* starve mid-flight with every tool call denied `token_budget_exhausted` — reject them at
|
|
12
|
+
* admission with an explicit reason instead (field session 019fd4dc: 8-9k grants died in
|
|
13
|
+
* 2-3 responses under face-value cache-read counting; the floor plus discounted counting
|
|
14
|
+
* makes small grants viable again).
|
|
15
|
+
*/
|
|
16
|
+
export const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5_000;
|
|
8
17
|
const DEFAULT_TOOL_NAMES = ["read", "grep", "find", "ls", "write", "edit", "memory", STABLE_SHELL_TOOL_NAME];
|
|
9
18
|
const AVAILABLE_TOOL_NAMES = new Set([...CLASSIFIED_LANE_TOOL_NAMES, "delegate"]);
|
|
10
19
|
const DEFAULT_CAPABILITIES = [
|
|
@@ -37,10 +46,17 @@ function selectModelBinding(authority, base, foregroundModel, modelRegistry) {
|
|
|
37
46
|
function adaptiveProfileId(value) {
|
|
38
47
|
return `adaptive-${createHash("sha256").update(JSON.stringify(value)).digest("hex").slice(0, 32)}`;
|
|
39
48
|
}
|
|
49
|
+
function tokenBudgetFloorFailure(maxTokens) {
|
|
50
|
+
return maxTokens !== undefined && maxTokens < MIN_VIABLE_WORKER_TOKEN_BUDGET
|
|
51
|
+
? `token_budget_below_floor:requested=${maxTokens},min=${MIN_VIABLE_WORKER_TOKEN_BUDGET}`
|
|
52
|
+
: undefined;
|
|
53
|
+
}
|
|
40
54
|
/** Materialize free-form model choices as one immutable profile-shaped execution snapshot. */
|
|
41
55
|
export function resolveWorkerAuthority(input) {
|
|
42
|
-
if (!input.authority && input.base)
|
|
43
|
-
|
|
56
|
+
if (!input.authority && input.base) {
|
|
57
|
+
const floorFailure = tokenBudgetFloorFailure(input.base.profile.budget.maxTokens);
|
|
58
|
+
return floorFailure ? { ok: false, reason: floorFailure } : { ok: true, shipment: input.base };
|
|
59
|
+
}
|
|
44
60
|
const binding = selectModelBinding(input.authority, input.base, input.foregroundModel, input.modelRegistry);
|
|
45
61
|
if (!binding)
|
|
46
62
|
return { ok: false, reason: "orchestration_model_required" };
|
|
@@ -68,6 +84,9 @@ export function resolveWorkerAuthority(input) {
|
|
|
68
84
|
}
|
|
69
85
|
}
|
|
70
86
|
const budget = structuredClone(input.authority?.budget ?? input.base?.profile.budget ?? {});
|
|
87
|
+
const floorFailure = tokenBudgetFloorFailure(budget.maxTokens);
|
|
88
|
+
if (floorFailure)
|
|
89
|
+
return { ok: false, reason: floorFailure };
|
|
71
90
|
const role = input.authority?.role ?? input.base?.profile.role ?? "orchestrator";
|
|
72
91
|
const now = new Date().toISOString();
|
|
73
92
|
const descriptor = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-authority-resolver.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Api, Model } from \"@caupulican/pi-ai\";\nimport { resolveModelThinkingLevel } from \"@caupulican/pi-ai/models\";\nimport { mapToolNamesForPlatform, STABLE_SHELL_TOOL_NAME } from \"../default-tool-surface.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport {\n\ttype HarnessCapability,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationModelBinding,\n\ttype OrchestrationProfile,\n} from \"../orchestration/contracts.ts\";\nimport { CLASSIFIED_LANE_TOOL_NAMES } from \"../orchestration/lane-tool-manifests.ts\";\nimport { resolvePinnedOrchestrationModel } from \"../orchestration/model-binding.ts\";\nimport { getToolCapabilityPolicy } from \"../tool-capability-policy.ts\";\nimport type { WorkerDelegationAuthorityRequest } from \"./worker-delegation-request.ts\";\nimport type { ResolvedWorkerProfile } from \"./worker-profile-resolver.ts\";\n\nconst DEFAULT_TOOL_NAMES = [\"read\", \"grep\", \"find\", \"ls\", \"write\", \"edit\", \"memory\", STABLE_SHELL_TOOL_NAME] as const;\nconst AVAILABLE_TOOL_NAMES: ReadonlySet<string> = new Set([...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\"]);\nconst DEFAULT_CAPABILITIES: readonly HarnessCapability[] = [\n\t\"filesystem.read\",\n\t\"filesystem.write\",\n\t\"worktree.read\",\n\t\"worktree.mutate\",\n\t\"process.exec\",\n\t\"network.http\",\n\t\"service.mcp\",\n\t\"memory.query\",\n];\n\nexport interface WorkerAuthorityResolutionInput {\n\tauthority?: WorkerDelegationAuthorityRequest;\n\tbase?: ResolvedWorkerProfile;\n\tforegroundModel?: Model<Api>;\n\tmodelRegistry: ModelRegistry;\n\tisModelExhausted(model: Model<Api>): boolean;\n}\n\nexport type WorkerAuthorityResolution =\n\t| {\n\t\t\tok: true;\n\t\t\tshipment: ResolvedWorkerProfile;\n\t\t\trequestedReadPaths?: readonly string[];\n\t\t\trequestedWritePaths?: readonly string[];\n\t }\n\t| { ok: false; reason: string };\n\nfunction selectModelBinding(\n\tauthority: WorkerDelegationAuthorityRequest | undefined,\n\tbase: ResolvedWorkerProfile | undefined,\n\tforegroundModel: Model<Api> | undefined,\n\tmodelRegistry: ModelRegistry,\n): OrchestrationModelBinding | undefined {\n\tconst provider = authority?.model?.provider ?? base?.modelBinding.provider ?? foregroundModel?.provider;\n\tconst modelId = authority?.model?.modelId ?? base?.modelBinding.modelId ?? foregroundModel?.id;\n\tif (!provider || !modelId) return undefined;\n\tconst sameAsBase = provider === base?.modelBinding.provider && modelId === base.modelBinding.modelId;\n\tconst selectedModel = modelRegistry.find(provider, modelId);\n\tconst thinkingLevel =\n\t\tauthority?.thinkingLevel ??\n\t\t(sameAsBase\n\t\t\t? base.modelBinding.thinkingLevel\n\t\t\t: foregroundModel && provider === foregroundModel.provider && modelId === foregroundModel.id\n\t\t\t\t? resolveModelThinkingLevel(foregroundModel, undefined)\n\t\t\t\t: selectedModel\n\t\t\t\t\t? resolveModelThinkingLevel(selectedModel, undefined)\n\t\t\t\t\t: \"off\");\n\treturn { provider, modelId, thinkingLevel };\n}\n\nfunction adaptiveProfileId(value: object): string {\n\treturn `adaptive-${createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\").slice(0, 32)}`;\n}\n\n/** Materialize free-form model choices as one immutable profile-shaped execution snapshot. */\nexport function resolveWorkerAuthority(input: WorkerAuthorityResolutionInput): WorkerAuthorityResolution {\n\tif (!input.authority && input.base) return { ok: true, shipment: input.base };\n\tconst binding = selectModelBinding(input.authority, input.base, input.foregroundModel, input.modelRegistry);\n\tif (!binding) return { ok: false, reason: \"orchestration_model_required\" };\n\tconst resolvedModel = resolvePinnedOrchestrationModel(binding, input.modelRegistry, input.isModelExhausted);\n\tif (!resolvedModel) return { ok: false, reason: \"orchestration_model_unavailable\" };\n\n\tconst requestedToolNames = mapToolNamesForPlatform(\n\t\tinput.authority?.toolNames ?? input.base?.profile.toolNames ?? DEFAULT_TOOL_NAMES,\n\t);\n\tconst uniqueToolNames = [...new Set(requestedToolNames)];\n\tconst unavailableTools = uniqueToolNames.filter((toolName) => !AVAILABLE_TOOL_NAMES.has(toolName));\n\tif (unavailableTools.length > 0) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${unavailableTools.join(\",\")}` };\n\t}\n\tconst capabilities = new Set<HarnessCapability>(\n\t\tinput.authority?.capabilities ?? input.base?.profile.capabilityCeiling ?? DEFAULT_CAPABILITIES,\n\t);\n\tconst toolNames: string[] = [];\n\tfor (const toolName of uniqueToolNames) {\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tif (!policy) return { ok: false, reason: `orchestration_tool_unclassified:${toolName}` };\n\t\tif (policy.capabilityCandidates.some((capability) => capabilities.has(capability))) {\n\t\t\ttoolNames.push(toolName);\n\t\t\tcontinue;\n\t\t}\n\t\tif (input.authority?.toolNames !== undefined) {\n\t\t\treturn { ok: false, reason: `orchestration_tool_capability_missing:${toolName}` };\n\t\t}\n\t}\n\tconst budget = structuredClone(input.authority?.budget ?? input.base?.profile.budget ?? {});\n\tconst role = input.authority?.role ?? input.base?.profile.role ?? \"orchestrator\";\n\tconst now = new Date().toISOString();\n\tconst descriptor = {\n\t\trole,\n\t\tbinding: resolvedModel.binding,\n\t\tcapabilities: [...capabilities],\n\t\ttoolNames,\n\t\tbudget,\n\t\tresourceProfileNames: input.base?.profile.resourceProfileNames ?? [],\n\t};\n\tconst maxWallClockMs = budget.maxWallClockMs ?? 0;\n\tconst wallClockLeaseTtlMs =\n\t\tmaxWallClockMs > Number.MAX_SAFE_INTEGER - 30_000 ? Number.MAX_SAFE_INTEGER : maxWallClockMs + 30_000;\n\tconst profile: OrchestrationProfile = {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tprofileId: adaptiveProfileId(descriptor),\n\t\tdescription: \"Admission-time adaptive agent authority\",\n\t\trole,\n\t\tmodelPolicy: { mode: \"fixed\", candidates: [resolvedModel.binding] },\n\t\tcapabilityCeiling: [...capabilities],\n\t\ttoolNames,\n\t\tresourceProfileNames: [...(input.base?.profile.resourceProfileNames ?? [])],\n\t\tdispatchProfileIds: [],\n\t\t...(input.base?.profile.executionPolicy ? { executionPolicy: input.base.profile.executionPolicy } : {}),\n\t\tbudget,\n\t\tmaxConcurrent: Number.MAX_SAFE_INTEGER,\n\t\tleaseTtlMs: Math.max(input.base?.profile.leaseTtlMs ?? 0, wallClockLeaseTtlMs, 90_000),\n\t\trequireIndependentVerification: input.base?.profile.requireIndependentVerification ?? false,\n\t\t...(input.base?.profile.verificationProfileId\n\t\t\t? { verificationProfileId: input.base.profile.verificationProfileId }\n\t\t\t: {}),\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t};\n\treturn {\n\t\tok: true,\n\t\tshipment: {\n\t\t\tmodel: resolvedModel.model,\n\t\t\tmodelBinding: resolvedModel.binding,\n\t\t\tprofile,\n\t\t\tresourcePointers: structuredClone(input.base?.resourcePointers ?? []),\n\t\t\t...(input.base?.soul ? { soul: input.base.soul } : {}),\n\t\t},\n\t\t...(input.authority?.readPaths ? { requestedReadPaths: [...input.authority.readPaths] } : {}),\n\t\t...(input.authority?.writePaths ? { requestedWritePaths: [...input.authority.writePaths] } : {}),\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"worker-authority-resolver.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Api, Model } from \"@caupulican/pi-ai\";\nimport { resolveModelThinkingLevel } from \"@caupulican/pi-ai/models\";\nimport { mapToolNamesForPlatform, STABLE_SHELL_TOOL_NAME } from \"../default-tool-surface.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport {\n\ttype HarnessCapability,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationModelBinding,\n\ttype OrchestrationProfile,\n} from \"../orchestration/contracts.ts\";\nimport { CLASSIFIED_LANE_TOOL_NAMES } from \"../orchestration/lane-tool-manifests.ts\";\nimport { resolvePinnedOrchestrationModel } from \"../orchestration/model-binding.ts\";\nimport { getToolCapabilityPolicy } from \"../tool-capability-policy.ts\";\nimport type { WorkerDelegationAuthorityRequest } from \"./worker-delegation-request.ts\";\nimport type { ResolvedWorkerProfile } from \"./worker-profile-resolver.ts\";\n\n/**\n * Smallest token grant a worker can survive on. A worker's first response pays the full\n * uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor\n * starve mid-flight with every tool call denied `token_budget_exhausted` — reject them at\n * admission with an explicit reason instead (field session 019fd4dc: 8-9k grants died in\n * 2-3 responses under face-value cache-read counting; the floor plus discounted counting\n * makes small grants viable again).\n */\nexport const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5_000;\n\nconst DEFAULT_TOOL_NAMES = [\"read\", \"grep\", \"find\", \"ls\", \"write\", \"edit\", \"memory\", STABLE_SHELL_TOOL_NAME] as const;\nconst AVAILABLE_TOOL_NAMES: ReadonlySet<string> = new Set([...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\"]);\nconst DEFAULT_CAPABILITIES: readonly HarnessCapability[] = [\n\t\"filesystem.read\",\n\t\"filesystem.write\",\n\t\"worktree.read\",\n\t\"worktree.mutate\",\n\t\"process.exec\",\n\t\"network.http\",\n\t\"service.mcp\",\n\t\"memory.query\",\n];\n\nexport interface WorkerAuthorityResolutionInput {\n\tauthority?: WorkerDelegationAuthorityRequest;\n\tbase?: ResolvedWorkerProfile;\n\tforegroundModel?: Model<Api>;\n\tmodelRegistry: ModelRegistry;\n\tisModelExhausted(model: Model<Api>): boolean;\n}\n\nexport type WorkerAuthorityResolution =\n\t| {\n\t\t\tok: true;\n\t\t\tshipment: ResolvedWorkerProfile;\n\t\t\trequestedReadPaths?: readonly string[];\n\t\t\trequestedWritePaths?: readonly string[];\n\t }\n\t| { ok: false; reason: string };\n\nfunction selectModelBinding(\n\tauthority: WorkerDelegationAuthorityRequest | undefined,\n\tbase: ResolvedWorkerProfile | undefined,\n\tforegroundModel: Model<Api> | undefined,\n\tmodelRegistry: ModelRegistry,\n): OrchestrationModelBinding | undefined {\n\tconst provider = authority?.model?.provider ?? base?.modelBinding.provider ?? foregroundModel?.provider;\n\tconst modelId = authority?.model?.modelId ?? base?.modelBinding.modelId ?? foregroundModel?.id;\n\tif (!provider || !modelId) return undefined;\n\tconst sameAsBase = provider === base?.modelBinding.provider && modelId === base.modelBinding.modelId;\n\tconst selectedModel = modelRegistry.find(provider, modelId);\n\tconst thinkingLevel =\n\t\tauthority?.thinkingLevel ??\n\t\t(sameAsBase\n\t\t\t? base.modelBinding.thinkingLevel\n\t\t\t: foregroundModel && provider === foregroundModel.provider && modelId === foregroundModel.id\n\t\t\t\t? resolveModelThinkingLevel(foregroundModel, undefined)\n\t\t\t\t: selectedModel\n\t\t\t\t\t? resolveModelThinkingLevel(selectedModel, undefined)\n\t\t\t\t\t: \"off\");\n\treturn { provider, modelId, thinkingLevel };\n}\n\nfunction adaptiveProfileId(value: object): string {\n\treturn `adaptive-${createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\").slice(0, 32)}`;\n}\n\nfunction tokenBudgetFloorFailure(maxTokens: number | undefined): string | undefined {\n\treturn maxTokens !== undefined && maxTokens < MIN_VIABLE_WORKER_TOKEN_BUDGET\n\t\t? `token_budget_below_floor:requested=${maxTokens},min=${MIN_VIABLE_WORKER_TOKEN_BUDGET}`\n\t\t: undefined;\n}\n\n/** Materialize free-form model choices as one immutable profile-shaped execution snapshot. */\nexport function resolveWorkerAuthority(input: WorkerAuthorityResolutionInput): WorkerAuthorityResolution {\n\tif (!input.authority && input.base) {\n\t\tconst floorFailure = tokenBudgetFloorFailure(input.base.profile.budget.maxTokens);\n\t\treturn floorFailure ? { ok: false, reason: floorFailure } : { ok: true, shipment: input.base };\n\t}\n\tconst binding = selectModelBinding(input.authority, input.base, input.foregroundModel, input.modelRegistry);\n\tif (!binding) return { ok: false, reason: \"orchestration_model_required\" };\n\tconst resolvedModel = resolvePinnedOrchestrationModel(binding, input.modelRegistry, input.isModelExhausted);\n\tif (!resolvedModel) return { ok: false, reason: \"orchestration_model_unavailable\" };\n\n\tconst requestedToolNames = mapToolNamesForPlatform(\n\t\tinput.authority?.toolNames ?? input.base?.profile.toolNames ?? DEFAULT_TOOL_NAMES,\n\t);\n\tconst uniqueToolNames = [...new Set(requestedToolNames)];\n\tconst unavailableTools = uniqueToolNames.filter((toolName) => !AVAILABLE_TOOL_NAMES.has(toolName));\n\tif (unavailableTools.length > 0) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${unavailableTools.join(\",\")}` };\n\t}\n\tconst capabilities = new Set<HarnessCapability>(\n\t\tinput.authority?.capabilities ?? input.base?.profile.capabilityCeiling ?? DEFAULT_CAPABILITIES,\n\t);\n\tconst toolNames: string[] = [];\n\tfor (const toolName of uniqueToolNames) {\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tif (!policy) return { ok: false, reason: `orchestration_tool_unclassified:${toolName}` };\n\t\tif (policy.capabilityCandidates.some((capability) => capabilities.has(capability))) {\n\t\t\ttoolNames.push(toolName);\n\t\t\tcontinue;\n\t\t}\n\t\tif (input.authority?.toolNames !== undefined) {\n\t\t\treturn { ok: false, reason: `orchestration_tool_capability_missing:${toolName}` };\n\t\t}\n\t}\n\tconst budget = structuredClone(input.authority?.budget ?? input.base?.profile.budget ?? {});\n\tconst floorFailure = tokenBudgetFloorFailure(budget.maxTokens);\n\tif (floorFailure) return { ok: false, reason: floorFailure };\n\tconst role = input.authority?.role ?? input.base?.profile.role ?? \"orchestrator\";\n\tconst now = new Date().toISOString();\n\tconst descriptor = {\n\t\trole,\n\t\tbinding: resolvedModel.binding,\n\t\tcapabilities: [...capabilities],\n\t\ttoolNames,\n\t\tbudget,\n\t\tresourceProfileNames: input.base?.profile.resourceProfileNames ?? [],\n\t};\n\tconst maxWallClockMs = budget.maxWallClockMs ?? 0;\n\tconst wallClockLeaseTtlMs =\n\t\tmaxWallClockMs > Number.MAX_SAFE_INTEGER - 30_000 ? Number.MAX_SAFE_INTEGER : maxWallClockMs + 30_000;\n\tconst profile: OrchestrationProfile = {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tprofileId: adaptiveProfileId(descriptor),\n\t\tdescription: \"Admission-time adaptive agent authority\",\n\t\trole,\n\t\tmodelPolicy: { mode: \"fixed\", candidates: [resolvedModel.binding] },\n\t\tcapabilityCeiling: [...capabilities],\n\t\ttoolNames,\n\t\tresourceProfileNames: [...(input.base?.profile.resourceProfileNames ?? [])],\n\t\tdispatchProfileIds: [],\n\t\t...(input.base?.profile.executionPolicy ? { executionPolicy: input.base.profile.executionPolicy } : {}),\n\t\tbudget,\n\t\tmaxConcurrent: Number.MAX_SAFE_INTEGER,\n\t\tleaseTtlMs: Math.max(input.base?.profile.leaseTtlMs ?? 0, wallClockLeaseTtlMs, 90_000),\n\t\trequireIndependentVerification: input.base?.profile.requireIndependentVerification ?? false,\n\t\t...(input.base?.profile.verificationProfileId\n\t\t\t? { verificationProfileId: input.base.profile.verificationProfileId }\n\t\t\t: {}),\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t};\n\treturn {\n\t\tok: true,\n\t\tshipment: {\n\t\t\tmodel: resolvedModel.model,\n\t\t\tmodelBinding: resolvedModel.binding,\n\t\t\tprofile,\n\t\t\tresourcePointers: structuredClone(input.base?.resourcePointers ?? []),\n\t\t\t...(input.base?.soul ? { soul: input.base.soul } : {}),\n\t\t},\n\t\t...(input.authority?.readPaths ? { requestedReadPaths: [...input.authority.readPaths] } : {}),\n\t\t...(input.authority?.writePaths ? { requestedWritePaths: [...input.authority.writePaths] } : {}),\n\t};\n}\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type WorkerContextForkReference } from "../orchestration/worker-context-fork-reference.ts";
|
|
2
|
+
import type { SanitizedContextForkMessage } from "./sanitized-context-fork.ts";
|
|
3
|
+
export declare const MAX_RETAINED_WORKER_CONTEXT_FORK_SNAPSHOTS: number;
|
|
4
|
+
export type WorkerContextForkStoreErrorCode = "capacity_reached" | "identity_conflict" | "identity_claimed" | "snapshot_corrupt" | "snapshot_missing";
|
|
5
|
+
/** Stable failure classification for controller admission and recovery wiring. */
|
|
6
|
+
export declare class WorkerContextForkStoreError extends Error {
|
|
7
|
+
readonly code: WorkerContextForkStoreErrorCode;
|
|
8
|
+
constructor(code: WorkerContextForkStoreErrorCode, message: string, cause?: unknown);
|
|
9
|
+
}
|
|
10
|
+
export interface WorkerContextForkSnapshot extends WorkerContextForkReference {
|
|
11
|
+
parentSessionId: string;
|
|
12
|
+
logicalAgentId: string;
|
|
13
|
+
messages: SanitizedContextForkMessage[];
|
|
14
|
+
}
|
|
15
|
+
export interface CaptureWorkerContextForkRequest {
|
|
16
|
+
/**
|
|
17
|
+
* Newly admitted persistent specialist. Follow-up tasks reuse its durable conversation and must
|
|
18
|
+
* reopen, never replace, this one birth snapshot.
|
|
19
|
+
*/
|
|
20
|
+
logicalAgentId: string;
|
|
21
|
+
messages: readonly SanitizedContextForkMessage[];
|
|
22
|
+
}
|
|
23
|
+
export interface OpenWorkerContextForkRequest {
|
|
24
|
+
logicalAgentId: string;
|
|
25
|
+
reference: WorkerContextForkReference;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Cross-process transaction input for the capture-before-dispatch boundary. The durable-reference
|
|
29
|
+
* reader is invoked while the capture lock is held, so reclamation never relies on a stale snapshot
|
|
30
|
+
* gathered before lock acquisition. `prepare` must synchronously persist or adopt the dispatch.
|
|
31
|
+
*/
|
|
32
|
+
export interface CaptureAndPrepareWorkerContextForkRequest<T> extends CaptureWorkerContextForkRequest {
|
|
33
|
+
readDurableReferences: () => readonly WorkerContextForkReference[];
|
|
34
|
+
/** Rechecked under the capture lock so a fresh start never adopts another caller's dispatch. */
|
|
35
|
+
isLogicalIdentityClaimed?: () => boolean;
|
|
36
|
+
prepare: (reference: WorkerContextForkReference) => T;
|
|
37
|
+
}
|
|
38
|
+
export interface CaptureAndPrepareWorkerContextForkResult<T> {
|
|
39
|
+
reference: WorkerContextForkReference;
|
|
40
|
+
value: T;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Immutable, per-session store for the exact sanitized message snapshot inherited by a new logical
|
|
44
|
+
* worker. Capture is synchronous so the caller can commit the snapshot before admitting dispatch.
|
|
45
|
+
* Identity is deliberately `(parentSessionId, logicalAgentId)`: persistent-agent follow-up tasks
|
|
46
|
+
* continue the existing transcript and cannot install a second birth context.
|
|
47
|
+
*/
|
|
48
|
+
export declare class WorkerContextForkStore {
|
|
49
|
+
private readonly agentDir;
|
|
50
|
+
private readonly parentSessionId;
|
|
51
|
+
private readonly directory;
|
|
52
|
+
private readonly lockFile;
|
|
53
|
+
constructor(options: {
|
|
54
|
+
agentDir: string;
|
|
55
|
+
parentSessionId: string;
|
|
56
|
+
});
|
|
57
|
+
capture(request: CaptureWorkerContextForkRequest): WorkerContextForkReference;
|
|
58
|
+
/**
|
|
59
|
+
* Hold the capture lock across orphan classification, capture, and synchronous durable prepare.
|
|
60
|
+
* A callback failure removes only a file created by this invocation, and only after a refreshed
|
|
61
|
+
* lifecycle reference read still proves the logical identity unbound. A process crash can leave
|
|
62
|
+
* an orphan, which the next transaction may reclaim under the same proof and lock.
|
|
63
|
+
*/
|
|
64
|
+
captureAndPrepare<T>(request: CaptureAndPrepareWorkerContextForkRequest<T>): CaptureAndPrepareWorkerContextForkResult<T>;
|
|
65
|
+
open(request: OpenWorkerContextForkRequest): WorkerContextForkSnapshot;
|
|
66
|
+
private prepareCapture;
|
|
67
|
+
private captureLocked;
|
|
68
|
+
private rollbackCreatedSnapshot;
|
|
69
|
+
private readSnapshot;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=worker-context-fork-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-context-fork-store.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-context-fork-store.ts"],"names":[],"mappings":"AAUA,OAAO,EAON,KAAK,0BAA0B,EAC/B,MAAM,mDAAmD,CAAC;AAI3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAQ/E,eAAO,MAAM,0CAA0C,QAAkD,CAAC;AAE1G,MAAM,MAAM,+BAA+B,GACxC,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,CAAC;AAEtB,kFAAkF;AAClF,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAE/C,YAAY,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAIlF;CACD;AAED,MAAM,WAAW,yBAA0B,SAAQ,0BAA0B;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,2BAA2B,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,+BAA+B;IAC/C;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,4BAA4B;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,0BAA0B,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,yCAAyC,CAAC,CAAC,CAAE,SAAQ,+BAA+B;IACpG,qBAAqB,EAAE,MAAM,SAAS,0BAA0B,EAAE,CAAC;IACnE,gGAAgG;IAChG,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC;IACzC,OAAO,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,wCAAwC,CAAC,CAAC;IAC1D,SAAS,EAAE,0BAA0B,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC;CACT;AA2VD;;;;;GAKG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,YAAY,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,EASjE;IAED,OAAO,CAAC,OAAO,EAAE,+BAA+B,GAAG,0BAA0B,CAG5E;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,EAClB,OAAO,EAAE,yCAAyC,CAAC,CAAC,CAAC,GACnD,wCAAwC,CAAC,CAAC,CAAC,CAmB7C;IAED,IAAI,CAAC,OAAO,EAAE,4BAA4B,GAAG,yBAAyB,CA6BrE;IAED,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,aAAa;IAmFrB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,YAAY;CAwBpB"}
|