@caupulican/pi-adaptative 0.90.2 → 0.90.4
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 +35 -0
- package/dist/core/agent-session-contracts.d.ts +2 -0
- package/dist/core/agent-session-contracts.d.ts.map +1 -1
- package/dist/core/agent-session-contracts.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +10 -1
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +24 -2
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +9 -1
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +1 -3
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/compaction-controller.d.ts.map +1 -1
- package/dist/core/compaction-controller.js +0 -1
- package/dist/core/compaction-controller.js.map +1 -1
- package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -1
- package/dist/core/delegation/managed-lane-controller.js +5 -1
- package/dist/core/delegation/managed-lane-controller.js.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts +8 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.js +94 -36
- package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-agent-control.d.ts +1 -0
- package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +7 -2
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +26 -3
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +7 -4
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +110 -27
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.d.ts +9 -2
- package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.js +39 -3
- package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
- package/dist/core/delegation/worker-lane-projection.js +4 -0
- package/dist/core/delegation/worker-lane-projection.js.map +1 -1
- package/dist/core/delegation/worker-lease-heartbeat.d.ts +16 -0
- package/dist/core/delegation/worker-lease-heartbeat.d.ts.map +1 -0
- package/dist/core/delegation/worker-lease-heartbeat.js +37 -0
- package/dist/core/delegation/worker-lease-heartbeat.js.map +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
- package/dist/core/delegation/worker-lifecycle.js +6 -0
- package/dist/core/delegation/worker-lifecycle.js.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.js +2 -1
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-runner.js +2 -2
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +4 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.js +10 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +14 -0
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.js +121 -33
- package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.d.ts +5 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.js +28 -12
- package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
- package/dist/core/orchestration/capability-gateway.d.ts +2 -1
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
- package/dist/core/orchestration/capability-gateway.js +9 -2
- package/dist/core/orchestration/capability-gateway.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +16 -1
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +5 -0
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
- package/dist/core/orchestration/profile-registry.js +38 -1
- package/dist/core/orchestration/profile-registry.js.map +1 -1
- package/dist/core/orchestration/risk-budget.d.ts +10 -0
- package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
- package/dist/core/orchestration/risk-budget.js +14 -0
- package/dist/core/orchestration/risk-budget.js.map +1 -1
- package/dist/core/orchestration/task-runtime-reducer.d.ts +1 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime-reducer.js +34 -0
- package/dist/core/orchestration/task-runtime-reducer.js.map +1 -1
- package/dist/core/orchestration/task-runtime.d.ts +1 -0
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime.js +24 -1
- package/dist/core/orchestration/task-runtime.js.map +1 -1
- package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
- package/dist/core/provider-prompt-contracts.js +2 -1
- package/dist/core/provider-prompt-contracts.js.map +1 -1
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +8 -1
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash.d.ts +3 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +13 -2
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +1 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +19 -1
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +9 -1
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +198 -64
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +14 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-failure-recovery.d.ts +3 -0
- package/dist/core/tools/file-failure-recovery.d.ts.map +1 -1
- package/dist/core/tools/file-failure-recovery.js +11 -0
- package/dist/core/tools/file-failure-recovery.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +1 -1
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
- package/dist/core/tools/orchestration-panel.js +1 -0
- package/dist/core/tools/orchestration-panel.js.map +1 -1
- package/dist/core/tools/profile-writer.d.ts.map +1 -1
- package/dist/core/tools/profile-writer.js +2 -8
- package/dist/core/tools/profile-writer.js.map +1 -1
- package/dist/core/tools/search-command-guard.d.ts.map +1 -1
- package/dist/core/tools/search-command-guard.js +10 -3
- package/dist/core/tools/search-command-guard.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +10 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
- package/dist/modes/interactive/components/activity-lane.js +11 -2
- package/dist/modes/interactive/components/activity-lane.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/utils/shell.d.ts +2 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -1
- package/dist/utils/shell.js.map +1 -1
- package/docs/harness-architecture.md +6 -3
- package/docs/settings.md +8 -6
- package/docs/tool-repair.md +1 -1
- package/docs/worker-profiles.md +2 -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 { 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\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Authorized worker tool '${context.toolCall.name}' under its durable grant.`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn decision;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterToolCall: async ({ toolCall, args }) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t(toolCall.name === \"write\" || toolCall.name === \"edit\") &&\n\t\t\t\t\t\t\t\t\t\t\t\targs &&\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof args === \"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!Array.isArray(args)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst rawPath = (args as Record<string, unknown>).path;\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof rawPath === \"string\" && rawPath.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst absolutePath = path.isAbsolute(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? path.resolve(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: path.resolve(options.cwd, rawPath);\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet canonicalPath = absolutePath;\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcanonicalPath = safeRealpathSync(absolutePath);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The operation entered execution; retain its lexical target if canonicalization failed.\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trecordChangedFile(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath.relative(options.cwd, canonicalPath).split(path.sep).join(\"/\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonMessage: (message) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && isToolRequest(message)) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Known calls are normalized before beforeToolCall and persist from that hook.\n\t\t\t\t\t\t\t\t\t\t\t\t// Retain the request only so immediate unknown/malformed results can close the\n\t\t\t\t\t\t\t\t\t\t\t\t// transcript without freezing pre-repair arguments into durable history.\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (content.type === \"toolCall\") pendingToolAssistants.set(content.id, message);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tmessage.role === \"toolResult\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!persistedToolAssistantIds.has(message.toolCallId)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst pending = pendingToolAssistants.get(message.toolCallId);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pending) persistToolRequest(pending);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\t\t\t\t\toptions.agentControl.acknowledgeMailboxMessage(options.agentId, message);\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Persisted worker assistant response and its cumulative provider usage.\",\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"toolResult\")\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(`Persisted worker tool result '${message.toolCallId}'.`);\n\t\t\t\t\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetSteeringMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst includeFollowUp = firstMailboxPoll;\n\t\t\t\t\t\t\t\t\t\t\tfirstMailboxPoll = false;\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\tincludeFollowUp,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetFollowUpMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t...(retentionPolicy\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\ttransformContext: async (messages: AgentMessage[]) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst retained = await options.conversation.compactProviderContext(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionPolicy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.contextUsage.tokens > retentionPolicy.maxContextTokens &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!retentionWarningEmitted\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker ${options.laneId} has one retained turn larger than its context policy; provider overflow recovery may be required.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_verified\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_deterministic\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn sanitizeToolFailureContext(retained.context.messages, \"\").messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (signal.aborted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (error instanceof WorkerConversationOwnershipError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!retentionWarningEmitted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker context retention failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\tcacheRetention: \"short\",\n\t\t\t\t\t\t\t\t\tlaneKind: \"worker\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\tif (signal.aborted) throw error;\n\t\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tproviderTurn.assertEverySuccessfulPreflightConsumed();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tif (providerTurn.accountUnverifiedResultUsageDelta(result.usage)) {\n\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\"Persisted supplemental provider result usage before rejecting unverified completion evidence.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight();\n\t\t\t\t\t\t\tconst evidenced = callbackEvidencedCompletion(result, historyLength, durableCallbackMessages);\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst appended = options.conversation.commitTranscript(transcriptCursor, evidenced.suffix, {\n\t\t\t\t\t\t\t\tappendMissing: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (appended !== 0) {\n\t\t\t\t\t\t\t\tthrow new WorkerConversationOwnershipError(\n\t\t\t\t\t\t\t\t\t\"Worker callback transcript verification unexpectedly appended missing messages.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcommitted = true;\n\t\t\t\t\t\t\treturn evidenced.completion;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tsignal.removeEventListener(\"abort\", abortTranscriptCursor);\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (activeProviderTurn === providerTurn) activeProviderTurn = undefined;\n\t\t\t\t\t\t\tif (!committed) options.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcompletion = await runProviderCompletionWithBackoff({\n\t\t\t\t\t\t\tattempt: attemptProviderCompletion,\n\t\t\t\t\t\t\tonAttemptFailure: closeActiveProviderTurn,\n\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\tlaneId: options.laneId,\n\t\t\t\t\t\t\twarn: options.warn,\n\t\t\t\t\t\t\t...(signal ? { signal } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcloseActiveProviderTurn();\n\t\t\t\t\t}\n\t\t\t\t\tconst cumulativeUsage = checkpointUsage(\n\t\t\t\t\t\t\"Verified the callback-persisted worker conversation terminal suffix.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: completion.text,\n\t\t\t\t\t\tcostUsd: cumulativeUsage.costUsd,\n\t\t\t\t\t\tstopReason: String(completion.stopReason),\n\t\t\t\t\t\tchangedFiles: [...changedFiles],\n\t\t\t\t\t\tblockers: [...toolIssues],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst usage = checkpointUsage(\"Persisted final cumulative worker usage before terminal result.\");\n\t\t\treturn { rawOutcome, usage, changedFiles: [...changedFiles] };\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"worker-attempt-executor.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-attempt-executor.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { compact } from \"@caupulican/pi-agent-core/compaction/compaction\";\nimport {\n\tclassifyFailure,\n\tcomputeRetryDelayMs,\n\ttype RetryPolicy,\n\tsleepAbortable,\n} from \"@caupulican/pi-agent-core/reliability\";\nimport { sanitizeToolFailureContext } from \"@caupulican/pi-agent-core/tool-failure-memory\";\nimport type { AgentMessage, ThinkingLevel } from \"@caupulican/pi-agent-core/types\";\nimport { addUsage, createEmptyUsage } from \"@caupulican/pi-agent-core/usage\";\nimport type { Api, AssistantMessage, Message, Model, Usage } from \"@caupulican/pi-ai\";\nimport type { IsolatedCompletionOptions, IsolatedCompletionResult } from \"../agent-session-contracts.ts\";\nimport 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\tconst completion = await args.attempt();\n\t\t\tif (completion.stopReason !== \"error\") return completion;\n\t\t\tthrow new Error(\n\t\t\t\tcompletion.errorMessage?.trim() || \"Provider completion stopped with an error without diagnostic detail.\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\targs.onAttemptFailure();\n\t\t\tif (args.signal?.aborted) throw error;\n\t\t\tif (\n\t\t\t\terror instanceof WorkerCompletionProtocolError ||\n\t\t\t\terror instanceof WorkerConversationOwnershipError ||\n\t\t\t\terror instanceof CapabilityGatewayDeniedError ||\n\t\t\t\terror instanceof WorkerTreeBudgetExceededError\n\t\t\t) {\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\tresult.errorMessage !== finalMessage.errorMessage\n\t) {\n\t\tthrow new WorkerCompletionProtocolError(\n\t\t\t\"Worker completion result disagrees with its durable callback-evidenced terminal assistant.\",\n\t\t);\n\t}\n\treturn {\n\t\tsuffix,\n\t\tcompletion: {\n\t\t\ttext,\n\t\t\tusage,\n\t\t\tstopReason: finalMessage.stopReason,\n\t\t\t...(finalMessage.errorMessage ? { errorMessage: finalMessage.errorMessage } : {}),\n\t\t},\n\t};\n}\n\n/**\n * Constructs one execution exactly once. The caller registers {@link ledger} before calling\n * {@link run}, allowing synchronous disposal to observe mutations and cumulative usage while the\n * provider/tool loop is suspended.\n */\nexport function createWorkerAttemptExecutor(options: WorkerAttemptExecutorOptions): {\n\tledger: WorkerAttemptExecutionLedger;\n\tcheckpointUsage(summary: string): AttemptUsageSnapshot;\n\trun(): Promise<WorkerAttemptExecutionResult>;\n} {\n\tconst changedFiles = new Set(options.conversation.getChangedFiles(options.durableHandle.attemptId));\n\tconst toolIssues = new Set<string>();\n\tconst recordChangedFile = (filePath: string): void => {\n\t\tchangedFiles.add(filePath);\n\t\ttry {\n\t\t\toptions.conversation.recordChangedFile(options.durableHandle.attemptId, filePath);\n\t\t} catch (error) {\n\t\t\ttoolIssues.add(\"worker changed-file progress could not be persisted; parent review is required\");\n\t\t\toptions.warn(\n\t\t\t\t`Worker changed-file progress persistence failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t};\n\tconst actionJournal = options.request.envelope.capabilities.includes(\"filesystem.write\")\n\t\t? new WorkerActionJournal({\n\t\t\t\tagentDir: options.agentDir,\n\t\t\t\tparentSessionId: options.parentSessionId,\n\t\t\t\ttaskId: options.durableHandle.taskId,\n\t\t\t\tattemptId: options.durableHandle.attemptId,\n\t\t\t\tfencingToken: options.durableHandle.fencingToken,\n\t\t\t})\n\t\t: undefined;\n\tlet retentionWarningEmitted = false;\n\tlet firstMailboxPoll = true;\n\tlet ran = false;\n\n\tconst currentUsage = (): AttemptUsageSnapshot =>\n\t\tattemptUsageFromGatewayUsage(\n\t\t\toptions.toolSurface.gateway?.getUsage() ?? {\n\t\t\t\t...EMPTY_ATTEMPT_USAGE,\n\t\t\t\twallClockMs: options.initialUsage.activeWallClockMs,\n\t\t\t},\n\t\t);\n\tconst checkpointUsage = (summary: string): AttemptUsageSnapshot => {\n\t\tconst usage = currentUsage();\n\t\toptions.lifecycle.checkpoint(options.laneId, { summary, usage });\n\t\treturn usage;\n\t};\n\tconst remainingAttemptTokens = (): number | undefined => options.toolSurface.gateway?.remainingAttemptTokenBudget();\n\tconst reserveProviderBudget = async (\n\t\trequestedMaxTokens: number,\n\t\tsubject: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<ProviderBudgetReservation> => {\n\t\tif (options.toolSurface.gateway) {\n\t\t\treturn options.toolSurface.gateway.reserveProviderBudget(requestedMaxTokens, subject, signal);\n\t\t}\n\t\tif (signal?.aborted) throw signal.reason;\n\t\treturn { maxTokens: requestedMaxTokens, release: () => undefined };\n\t};\n\tconst createRetentionPolicy = (completeSignal: AbortSignal): WorkerConversationRetentionPolicy | undefined => {\n\t\tif (!options.retentionPolicy) return undefined;\n\t\tlet failedCompactionUsage: Usage | undefined;\n\t\treturn {\n\t\t\t...options.retentionPolicy,\n\t\t\tgenerateVerifiedCompaction: async (preparation: Parameters<typeof compact>[0]) => {\n\t\t\t\tconst compactionUsage = createEmptyUsage();\n\t\t\t\tfailedCompactionUsage = compactionUsage;\n\t\t\t\treturn compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\toptions.model,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tcompleteSignal,\n\t\t\t\t\toptions.thinkingLevel,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t{\n\t\t\t\t\t\tcompletion: async (model, context, requestOptions): Promise<AssistantMessage> => {\n\t\t\t\t\t\t\tconst requestSignal = requestOptions.signal ?? completeSignal;\n\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\tif (model.provider !== options.model.provider || model.id !== options.model.id) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction attempted to select a model outside the lane binding.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_compaction_provider_completion\");\n\t\t\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before compaction provider completion.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst requestedMaxTokens = requestOptions.maxTokens;\n\t\t\t\t\t\t\tconst configuredMaxTokens =\n\t\t\t\t\t\t\t\ttypeof requestedMaxTokens === \"number\" &&\n\t\t\t\t\t\t\t\tNumber.isSafeInteger(requestedMaxTokens) &&\n\t\t\t\t\t\t\t\trequestedMaxTokens > 0\n\t\t\t\t\t\t\t\t\t? requestedMaxTokens\n\t\t\t\t\t\t\t\t\t: options.laneCapability.laneMaxOutputTokens;\n\t\t\t\t\t\t\tconst maxTokens = Math.min(configuredMaxTokens, availableTokens ?? configuredMaxTokens);\n\t\t\t\t\t\t\tif (!Number.isSafeInteger(maxTokens) || maxTokens <= 0) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Worker compaction provider completion has no valid remaining token budget.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet preflightFailed = false;\n\t\t\t\t\t\t\tlet preflightFailure: unknown;\n\t\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\t\treserveProviderBudget(maxTokens, \"worker_compaction_provider_completion\", requestSignal),\n\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\tonFailure: (error) => {\n\t\t\t\t\t\t\t\t\tif (preflightFailed) return;\n\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcompletion = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\t\tsystemPrompt: context.systemPrompt ?? \"\",\n\t\t\t\t\t\t\t\t\t\tmessages: context.messages,\n\t\t\t\t\t\t\t\t\t\tmodel: options.model,\n\t\t\t\t\t\t\t\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t\t\t\t\t\t\t\t\tmaxTokens,\n\t\t\t\t\t\t\t\t\t\trequestPreflight: () => providerTurn.requestPreflight(),\n\t\t\t\t\t\t\t\t\t\tsignal: requestSignal,\n\t\t\t\t\t\t\t\t\t\tcacheRetention: \"none\",\n\t\t\t\t\t\t\t\t\t\tlaneKind: \"worker-compaction\",\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tconst response: AssistantMessage = {\n\t\t\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\t\t\tcontent: completion.text ? [{ type: \"text\", text: completion.text }] : [],\n\t\t\t\t\t\t\t\t\tapi: options.model.api,\n\t\t\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\t\t\tmodel: options.model.id,\n\t\t\t\t\t\t\t\t\tusage: completion.usage,\n\t\t\t\t\t\t\t\t\tstopReason: completion.stopReason,\n\t\t\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\t\t\t...(completion.stopReason === \"error\"\n\t\t\t\t\t\t\t\t\t\t? { errorMessage: completion.text || \"Worker compaction provider request failed.\" }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taddUsage(compactionUsage, completion.usage);\n\t\t\t\t\t\t\t\tif (providerTurn.hasOutstandingAssistantReservation()) {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(completion.usage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tproviderTurn.accountUnverifiedResultUsageDelta(completion.usage);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker compaction provider usage before verification.\");\n\t\t\t\t\t\t\t\tif (providerTurn.hasSuccessfulPreflight()) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\tif (!preflightFailed) {\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailed = true;\n\t\t\t\t\t\t\t\t\t\t\tpreflightFailure = error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\trequestSignal.throwIfAborted();\n\t\t\t\t\t\t\t\tif (preflightFailed) throw workerCompletionCallbackFailure(preflightFailure);\n\t\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight(\"compaction\");\n\t\t\t\t\t\t\t\treturn response;\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t\tgetFailedCompactionUsage: () => failedCompactionUsage,\n\t\t};\n\t};\n\tconst ledger: WorkerAttemptExecutionLedger = {\n\t\tchangedFiles,\n\t\tgetUsage: currentUsage,\n\t};\n\n\treturn {\n\t\tledger,\n\t\tcheckpointUsage,\n\t\tasync run(): Promise<WorkerAttemptExecutionResult> {\n\t\t\tif (ran) throw new Error(\"A worker attempt executor may run only once.\");\n\t\t\tran = true;\n\t\t\toptions.conversation.beginAttemptUsage(options.durableHandle.attemptId);\n\t\t\tif (!options.hasPersistedUsageCheckpoint) {\n\t\t\t\tcheckpointUsage(\"Persisted deterministic cumulative usage baseline for the durable worker transcript.\");\n\t\t\t}\n\t\t\tconst rawOutcome = await runWorker({\n\t\t\t\trequest: options.request,\n\t\t\t\tmaxUsd: options.grant.budget.maxCostUsd,\n\t\t\t\tmaxWallClockMs: options.grant.budget.maxWallClockMs ?? 0,\n\t\t\t\tusageReportId: options.usageReportId,\n\t\t\t\tgetChangedFiles: () => [...changedFiles],\n\t\t\t\tsignal: options.signal,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tprocessCapable: options.processCapable,\n\t\t\t\tdelegationCapable: options.toolSurface.allowedTools.includes(\"delegate\"),\n\t\t\t\t...(options.verificationSubjectTaskId\n\t\t\t\t\t? { verificationSubjectTaskId: options.verificationSubjectTaskId }\n\t\t\t\t\t: {}),\n\t\t\t\t...(options.applyActions\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tapplyActions: (actions: readonly WorkerAction[]) => {\n\t\t\t\t\t\t\t\tconst report = options.applyActions!(actions, actionJournal);\n\t\t\t\t\t\t\t\tfor (const filePath of report.changedFiles) recordChangedFile(filePath);\n\t\t\t\t\t\t\t\treturn report;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tcomplete: async ({ systemPrompt, userPrompt, signal }) => {\n\t\t\t\t\tif (options.recoveredTerminal) {\n\t\t\t\t\t\tcheckpointUsage(\"Reused the persisted terminal worker assistant response after recovery.\");\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: options.recoveredTerminal.text,\n\t\t\t\t\t\t\tcostUsd: options.initialUsage.costUsd,\n\t\t\t\t\t\t\tstopReason: options.recoveredTerminal.stopReason,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst retentionPolicy = createRetentionPolicy(signal);\n\t\t\t\t\tconst persistedToolAssistantIds = new Set<string>();\n\t\t\t\t\tconst pendingToolAssistants = new Map<string, AssistantMessage>();\n\t\t\t\t\tlet activeProviderTurn: WorkerProviderTurnProtocol | undefined;\n\t\t\t\t\tconst closeActiveProviderTurn = (): void => {\n\t\t\t\t\t\tconst active = activeProviderTurn;\n\t\t\t\t\t\tactiveProviderTurn = undefined;\n\t\t\t\t\t\tactive?.close();\n\t\t\t\t\t};\n\t\t\t\t\toptions.toolSurface.gateway?.assertBudgetAvailable(\"worker_provider_completion\");\n\t\t\t\t\tconst availableTokens = remainingAttemptTokens();\n\t\t\t\t\tif (availableTokens !== undefined && availableTokens <= 0) {\n\t\t\t\t\t\tthrow new Error(\"Worker token budget exhausted before provider completion.\");\n\t\t\t\t\t}\n\t\t\t\t\toptions.conversation.ensureAttemptUserPrompt(options.durableHandle.attemptId, userPrompt);\n\t\t\t\t\tlet history: Message[] = [];\n\t\t\t\t\tlet completion: IsolatedCompletionResult;\n\t\t\t\t\tconst attemptProviderCompletion = async (): Promise<IsolatedCompletionResult> => {\n\t\t\t\t\t\t// Later attempts resume from the durably persisted transcript, not a stale snapshot.\n\t\t\t\t\t\tconst transcriptCommit = options.conversation.beginTranscriptCommit();\n\t\t\t\t\t\thistory = transcriptCommit.history;\n\t\t\t\t\t\tconst historyLength = history.length;\n\t\t\t\t\t\tconst transcriptCursor = transcriptCommit.cursor;\n\t\t\t\t\t\tconst durableCallbackMessages: Message[] = [];\n\t\t\t\t\t\tlet callbackFailed = false;\n\t\t\t\t\t\tlet callbackFailure: unknown;\n\t\t\t\t\t\tconst retainCallbackFailure = (error: unknown): void => {\n\t\t\t\t\t\t\tif (callbackFailed) return;\n\t\t\t\t\t\t\tcallbackFailed = true;\n\t\t\t\t\t\t\tcallbackFailure = error;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst providerTurn = new WorkerProviderTurnProtocol({\n\t\t\t\t\t\t\tacquireReservation: () =>\n\t\t\t\t\t\t\t\treserveProviderBudget(\n\t\t\t\t\t\t\t\t\toptions.laneCapability.laneMaxOutputTokens,\n\t\t\t\t\t\t\t\t\t\"worker_provider_completion\",\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\tonFailure: retainCallbackFailure,\n\t\t\t\t\t\t\t...(options.toolSurface.gateway\n\t\t\t\t\t\t\t\t? { recordUsage: (delta) => options.toolSurface.gateway?.recordUsage(delta) }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tactiveProviderTurn = providerTurn;\n\t\t\t\t\t\tconst persistToolRequest = (message: AssistantMessage): void => {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst toolCallIds = message.content.flatMap((content) =>\n\t\t\t\t\t\t\t\tcontent.type === \"toolCall\" ? [content.id] : [],\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (toolCallIds.length === 0 || toolCallIds.every((id) => persistedToolAssistantIds.has(id)))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\tfor (const id of toolCallIds) {\n\t\t\t\t\t\t\t\tpersistedToolAssistantIds.add(id);\n\t\t\t\t\t\t\t\tpendingToolAssistants.delete(id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcheckpointUsage(\"Persisted worker assistant tool request and its cumulative provider usage.\");\n\t\t\t\t\t\t\tproviderTurn.consumeToolAssistantAndRelease();\n\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet committed = false;\n\t\t\t\t\t\tconst abortTranscriptCursor = (): void => {\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\toptions.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsignal.addEventListener(\"abort\", abortTranscriptCursor, { once: true });\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tlet result: IsolatedCompletionResult;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresult = await options.runIsolatedCompletion({\n\t\t\t\t\t\t\t\t\tsystemPrompt: 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\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Authorized worker tool '${context.toolCall.name}' under its durable grant.`,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn decision;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tafterToolCall: async ({ toolCall, args }) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t(toolCall.name === \"write\" || toolCall.name === \"edit\") &&\n\t\t\t\t\t\t\t\t\t\t\t\targs &&\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof args === \"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!Array.isArray(args)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst rawPath = (args as Record<string, unknown>).path;\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof rawPath === \"string\" && rawPath.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst absolutePath = path.isAbsolute(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? path.resolve(rawPath)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: path.resolve(options.cwd, rawPath);\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet canonicalPath = absolutePath;\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcanonicalPath = safeRealpathSync(absolutePath);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The operation entered execution; retain its lexical target if canonicalization failed.\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trecordChangedFile(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath.relative(options.cwd, canonicalPath).split(path.sep).join(\"/\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonMessage: (message) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\" && isToolRequest(message)) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Known calls are normalized before beforeToolCall and persist from that hook.\n\t\t\t\t\t\t\t\t\t\t\t\t// Retain the request only so immediate unknown/malformed results can close the\n\t\t\t\t\t\t\t\t\t\t\t\t// transcript without freezing pre-repair arguments into durable history.\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (content.type === \"toolCall\") pendingToolAssistants.set(content.id, message);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tmessage.role === \"toolResult\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!persistedToolAssistantIds.has(message.toolCallId)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst pending = pendingToolAssistants.get(message.toolCallId);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pending) persistToolRequest(pending);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.accountAssistantUsage(message.usage);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toptions.conversation.appendMessage(message);\n\t\t\t\t\t\t\t\t\t\t\toptions.agentControl.acknowledgeMailboxMessage(options.agentId, message);\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Persisted worker assistant response and its cumulative provider usage.\",\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tproviderTurn.consumeTerminalAssistantAndHold();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"toolResult\")\n\t\t\t\t\t\t\t\t\t\t\t\tcheckpointUsage(`Persisted worker tool result '${message.toolCallId}'.`);\n\t\t\t\t\t\t\t\t\t\t\tdurableCallbackMessages.push(message);\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetSteeringMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst includeFollowUp = firstMailboxPoll;\n\t\t\t\t\t\t\t\t\t\t\tfirstMailboxPoll = false;\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\tincludeFollowUp,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tgetFollowUpMessages: async (): Promise<AgentMessage[]> => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\tconst messages = options.agentControl.mailboxMessagesForConversation(\n\t\t\t\t\t\t\t\t\t\t\t\toptions.agentId,\n\t\t\t\t\t\t\t\t\t\t\t\toptions.conversation,\n\t\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t...(retentionPolicy\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\ttransformContext: async (messages: AgentMessage[]) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst retained = await options.conversation.compactProviderContext(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionPolicy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.contextUsage.tokens > retentionPolicy.maxContextTokens &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!retentionWarningEmitted\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker ${options.laneId} has one retained turn larger than its context policy; provider overflow recovery may be required.`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_verified\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretained.status !== \"compacted_deterministic\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn sanitizeToolFailureContext(retained.context.messages, \"\").messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (signal.aborted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (error instanceof WorkerConversationOwnershipError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!retentionWarningEmitted) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretentionWarningEmitted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.warn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Worker context retention failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn messages;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t\t\t\tcacheRetention: \"short\",\n\t\t\t\t\t\t\t\t\tlaneKind: \"worker\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\t\tif (signal.aborted) throw error;\n\t\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tproviderTurn.assertEverySuccessfulPreflightConsumed();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tretainCallbackFailure(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tif (providerTurn.accountUnverifiedResultUsageDelta(result.usage)) {\n\t\t\t\t\t\t\t\tcheckpointUsage(\n\t\t\t\t\t\t\t\t\t\"Persisted supplemental provider result usage before rejecting unverified completion evidence.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (callbackFailed) throw workerCompletionCallbackFailure(callbackFailure);\n\t\t\t\t\t\t\tproviderTurn.assertProviderOutputPreflight();\n\t\t\t\t\t\t\tconst evidenced = callbackEvidencedCompletion(result, historyLength, durableCallbackMessages);\n\t\t\t\t\t\t\tsignal.throwIfAborted();\n\t\t\t\t\t\t\tconst appended = options.conversation.commitTranscript(transcriptCursor, evidenced.suffix, {\n\t\t\t\t\t\t\t\tappendMissing: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (appended !== 0) {\n\t\t\t\t\t\t\t\tthrow new WorkerConversationOwnershipError(\n\t\t\t\t\t\t\t\t\t\"Worker callback transcript verification unexpectedly appended missing messages.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcommitted = true;\n\t\t\t\t\t\t\treturn evidenced.completion;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tsignal.removeEventListener(\"abort\", abortTranscriptCursor);\n\t\t\t\t\t\t\tproviderTurn.close();\n\t\t\t\t\t\t\tif (activeProviderTurn === providerTurn) activeProviderTurn = undefined;\n\t\t\t\t\t\t\tif (!committed) options.conversation.abortTranscriptCommit(transcriptCursor);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcompletion = await runProviderCompletionWithBackoff({\n\t\t\t\t\t\t\tattempt: attemptProviderCompletion,\n\t\t\t\t\t\t\tonAttemptFailure: closeActiveProviderTurn,\n\t\t\t\t\t\t\tprovider: options.model.provider,\n\t\t\t\t\t\t\tlaneId: options.laneId,\n\t\t\t\t\t\t\twarn: options.warn,\n\t\t\t\t\t\t\t...(signal ? { signal } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcloseActiveProviderTurn();\n\t\t\t\t\t}\n\t\t\t\t\tconst cumulativeUsage = checkpointUsage(\n\t\t\t\t\t\t\"Verified the callback-persisted worker conversation terminal suffix.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: completion.text,\n\t\t\t\t\t\tcostUsd: cumulativeUsage.costUsd,\n\t\t\t\t\t\tstopReason: String(completion.stopReason),\n\t\t\t\t\t\tchangedFiles: [...changedFiles],\n\t\t\t\t\t\tblockers: [...toolIssues],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst usage = checkpointUsage(\"Persisted final cumulative worker usage before terminal result.\");\n\t\t\treturn { rawOutcome, usage, changedFiles: [...changedFiles] };\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +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;
|
|
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;AAEvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AAyBpD,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,CAmGvG"}
|
|
@@ -5,6 +5,7 @@ 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
|
+
import { LEAN_WORKER_DELEGATION_LIMITS } from "./worker-fleet-limits.js";
|
|
8
9
|
/**
|
|
9
10
|
* Smallest token grant a worker can survive on. A worker's first response pays the full
|
|
10
11
|
* uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor
|
|
@@ -14,7 +15,17 @@ import { getToolCapabilityPolicy } from "../tool-capability-policy.js";
|
|
|
14
15
|
* makes small grants viable again).
|
|
15
16
|
*/
|
|
16
17
|
export const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5_000;
|
|
17
|
-
const DEFAULT_TOOL_NAMES = [
|
|
18
|
+
const DEFAULT_TOOL_NAMES = [
|
|
19
|
+
"read",
|
|
20
|
+
"grep",
|
|
21
|
+
"find",
|
|
22
|
+
"ls",
|
|
23
|
+
"write",
|
|
24
|
+
"edit",
|
|
25
|
+
"memory",
|
|
26
|
+
STABLE_SHELL_TOOL_NAME,
|
|
27
|
+
"delegate",
|
|
28
|
+
];
|
|
18
29
|
const AVAILABLE_TOOL_NAMES = new Set([...CLASSIFIED_LANE_TOOL_NAMES, "delegate"]);
|
|
19
30
|
const DEFAULT_CAPABILITIES = [
|
|
20
31
|
"filesystem.read",
|
|
@@ -63,14 +74,21 @@ export function resolveWorkerAuthority(input) {
|
|
|
63
74
|
const resolvedModel = resolvePinnedOrchestrationModel(binding, input.modelRegistry, input.isModelExhausted);
|
|
64
75
|
if (!resolvedModel)
|
|
65
76
|
return { ok: false, reason: "orchestration_model_unavailable" };
|
|
66
|
-
const
|
|
77
|
+
const configuredToolNames = mapToolNamesForPlatform(input.authority?.toolNames ?? input.base?.profile.toolNames ?? DEFAULT_TOOL_NAMES);
|
|
78
|
+
const inheritsDelegation = input.authority?.capabilities === undefined &&
|
|
79
|
+
(input.base === undefined ||
|
|
80
|
+
(input.base.profile.toolNames.includes("delegate") &&
|
|
81
|
+
input.base.profile.capabilityCeiling.includes("workflow.delegate")));
|
|
82
|
+
const requestedToolNames = inheritsDelegation && !configuredToolNames.includes("delegate")
|
|
83
|
+
? [...configuredToolNames, "delegate"]
|
|
84
|
+
: configuredToolNames;
|
|
67
85
|
const uniqueToolNames = [...new Set(requestedToolNames)];
|
|
68
86
|
const unavailableTools = uniqueToolNames.filter((toolName) => !AVAILABLE_TOOL_NAMES.has(toolName));
|
|
69
87
|
if (unavailableTools.length > 0) {
|
|
70
88
|
return { ok: false, reason: `orchestration_tool_unavailable:${unavailableTools.join(",")}` };
|
|
71
89
|
}
|
|
72
90
|
const capabilities = new Set(input.authority?.capabilities ?? input.base?.profile.capabilityCeiling ?? DEFAULT_CAPABILITIES);
|
|
73
|
-
if (uniqueToolNames.includes("delegate")) {
|
|
91
|
+
if (uniqueToolNames.includes("delegate") && inheritsDelegation) {
|
|
74
92
|
capabilities.add("workflow.delegate");
|
|
75
93
|
}
|
|
76
94
|
const toolNames = [];
|
|
@@ -91,6 +109,9 @@ export function resolveWorkerAuthority(input) {
|
|
|
91
109
|
if (floorFailure)
|
|
92
110
|
return { ok: false, reason: floorFailure };
|
|
93
111
|
const role = input.authority?.role ?? input.base?.profile.role ?? "orchestrator";
|
|
112
|
+
const delegationLimits = input.base
|
|
113
|
+
? input.base.profile.delegationLimits
|
|
114
|
+
: structuredClone(LEAN_WORKER_DELEGATION_LIMITS);
|
|
94
115
|
const now = new Date().toISOString();
|
|
95
116
|
const descriptor = {
|
|
96
117
|
role,
|
|
@@ -98,6 +119,7 @@ export function resolveWorkerAuthority(input) {
|
|
|
98
119
|
capabilities: [...capabilities],
|
|
99
120
|
toolNames,
|
|
100
121
|
budget,
|
|
122
|
+
delegationLimits: delegationLimits ?? null,
|
|
101
123
|
resourceProfileNames: input.base?.profile.resourceProfileNames ?? [],
|
|
102
124
|
};
|
|
103
125
|
const maxWallClockMs = budget.maxWallClockMs ?? 0;
|
|
@@ -113,6 +135,7 @@ export function resolveWorkerAuthority(input) {
|
|
|
113
135
|
resourceProfileNames: [...(input.base?.profile.resourceProfileNames ?? [])],
|
|
114
136
|
dispatchProfileIds: [],
|
|
115
137
|
...(input.base?.profile.executionPolicy ? { executionPolicy: input.base.profile.executionPolicy } : {}),
|
|
138
|
+
...(delegationLimits ? { delegationLimits: structuredClone(delegationLimits) } : {}),
|
|
116
139
|
budget,
|
|
117
140
|
maxConcurrent: Number.MAX_SAFE_INTEGER,
|
|
118
141
|
leaseTtlMs: Math.max(input.base?.profile.leaseTtlMs ?? 0, wallClockLeaseTtlMs, 90_000),
|
|
@@ -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\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\tif (uniqueToolNames.includes(\"delegate\")) {\n\t\tcapabilities.add(\"workflow.delegate\");\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"]}
|
|
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 { LEAN_WORKER_DELEGATION_LIMITS } from \"./worker-fleet-limits.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 = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"memory\",\n\tSTABLE_SHELL_TOOL_NAME,\n\t\"delegate\",\n] 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 configuredToolNames = mapToolNamesForPlatform(\n\t\tinput.authority?.toolNames ?? input.base?.profile.toolNames ?? DEFAULT_TOOL_NAMES,\n\t);\n\tconst inheritsDelegation =\n\t\tinput.authority?.capabilities === undefined &&\n\t\t(input.base === undefined ||\n\t\t\t(input.base.profile.toolNames.includes(\"delegate\") &&\n\t\t\t\tinput.base.profile.capabilityCeiling.includes(\"workflow.delegate\")));\n\tconst requestedToolNames =\n\t\tinheritsDelegation && !configuredToolNames.includes(\"delegate\")\n\t\t\t? [...configuredToolNames, \"delegate\"]\n\t\t\t: configuredToolNames;\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\tif (uniqueToolNames.includes(\"delegate\") && inheritsDelegation) {\n\t\tcapabilities.add(\"workflow.delegate\");\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 delegationLimits = input.base\n\t\t? input.base.profile.delegationLimits\n\t\t: structuredClone(LEAN_WORKER_DELEGATION_LIMITS);\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\tdelegationLimits: delegationLimits ?? null,\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\t...(delegationLimits ? { delegationLimits: structuredClone(delegationLimits) } : {}),\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"]}
|
|
@@ -68,6 +68,7 @@ export declare class WorkerDelegationController {
|
|
|
68
68
|
private readonly agentControl;
|
|
69
69
|
private readonly publishedTerminalAttemptIds;
|
|
70
70
|
private readonly yieldedCapacityAttemptIds;
|
|
71
|
+
private readonly yieldedWriteReservations;
|
|
71
72
|
private readonly conversations;
|
|
72
73
|
private readonly contextForks;
|
|
73
74
|
private readonly terminalHandoffs;
|
|
@@ -109,9 +110,10 @@ export declare class WorkerDelegationController {
|
|
|
109
110
|
private resolveWorkerShipment;
|
|
110
111
|
private resolveRequiredVerifier;
|
|
111
112
|
/**
|
|
112
|
-
* A descendant may select a different routing profile, but that preset cannot introduce context
|
|
113
|
-
* its ancestor never admitted. Pointer ids alone are insufficient authority:
|
|
114
|
-
* whose complete immutable metadata matches the ancestral contract,
|
|
113
|
+
* A descendant may select a different routing profile, but that preset cannot introduce context or
|
|
114
|
+
* recursive authority its ancestor never admitted. Pointer ids alone are insufficient authority:
|
|
115
|
+
* retain only pointers whose complete immutable metadata matches the ancestral contract, require
|
|
116
|
+
* exact soul text, and intersect durable delegation limits.
|
|
115
117
|
*/
|
|
116
118
|
private narrowWorkerShipmentContext;
|
|
117
119
|
private hasExactRecursiveCycle;
|
|
@@ -133,7 +135,8 @@ export declare class WorkerDelegationController {
|
|
|
133
135
|
*/
|
|
134
136
|
private cancelAndPublish;
|
|
135
137
|
private hasWorkerCapacity;
|
|
136
|
-
private
|
|
138
|
+
private waitTargetsBlockedByCaller;
|
|
139
|
+
private yieldWorkerForWait;
|
|
137
140
|
private workerDispatchAdmission;
|
|
138
141
|
private workerProjectionHeadroomSkipReason;
|
|
139
142
|
private workerQueueReservationSkipReason;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-delegation-controller.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-delegation-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EACX,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG/F,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE7G,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAIN,KAAK,oBAAoB,EAGzB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAE1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAuB,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAOnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAWxE,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-delegation-controller.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-delegation-controller.ts"],"names":[],"mappings":"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"}
|