@narumitw/pi-subagents 2.1.4 → 3.0.0
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/README.md +187 -1228
- package/dist/child-communication-bridge.ts +136 -0
- package/dist/child-communication-bridge.ts.map +7 -0
- package/dist/chunks/chunk-UKTWUQRM.js +667 -0
- package/dist/chunks/chunk-UKTWUQRM.js.map +7 -0
- package/dist/index.ts +1448 -1614
- package/dist/index.ts.map +4 -4
- package/docs/design-principles.md +31 -0
- package/docs/ipc-transport-idea.md +103 -0
- package/docs/tools.md +109 -0
- package/package.json +11 -19
- package/src/broker-credentials.ts +71 -0
- package/src/child-communication-bridge.ts +153 -0
- package/src/child-communication-tools.ts +147 -0
- package/src/completion-renderer.ts +60 -0
- package/src/index.ts +1 -1
- package/src/message-broker.ts +628 -0
- package/src/model-output.ts +42 -0
- package/src/process.ts +688 -0
- package/src/runtime.ts +538 -0
- package/src/subagents.ts +33 -34
- package/src/tools.ts +416 -0
- package/src/types.ts +85 -0
- package/src/widget.ts +130 -0
- package/dist/chunks/auto-transport-FUUKFDIG.ts +0 -109
- package/dist/chunks/auto-transport-FUUKFDIG.ts.map +0 -7
- package/dist/chunks/capability-grant-PR72SWWS.ts +0 -19
- package/dist/chunks/capability-grant-PR72SWWS.ts.map +0 -7
- package/dist/chunks/child-peer-bridge.ts +0 -108
- package/dist/chunks/child-peer-bridge.ts.map +0 -7
- package/dist/chunks/chunk-2LMJU25E.ts +0 -1641
- package/dist/chunks/chunk-2LMJU25E.ts.map +0 -7
- package/dist/chunks/chunk-47SK2QYC.ts +0 -56
- package/dist/chunks/chunk-47SK2QYC.ts.map +0 -7
- package/dist/chunks/chunk-4AQSF7AS.ts +0 -29
- package/dist/chunks/chunk-4AQSF7AS.ts.map +0 -7
- package/dist/chunks/chunk-5DGRMKNV.ts +0 -126
- package/dist/chunks/chunk-5DGRMKNV.ts.map +0 -7
- package/dist/chunks/chunk-6H6TBBED.ts +0 -108
- package/dist/chunks/chunk-6H6TBBED.ts.map +0 -7
- package/dist/chunks/chunk-6KJ34M6S.ts +0 -159
- package/dist/chunks/chunk-6KJ34M6S.ts.map +0 -7
- package/dist/chunks/chunk-6NSJVPXX.ts +0 -480
- package/dist/chunks/chunk-6NSJVPXX.ts.map +0 -7
- package/dist/chunks/chunk-7AAJEUSL.ts +0 -238
- package/dist/chunks/chunk-7AAJEUSL.ts.map +0 -7
- package/dist/chunks/chunk-BFK2Z4ZF.ts +0 -189
- package/dist/chunks/chunk-BFK2Z4ZF.ts.map +0 -7
- package/dist/chunks/chunk-BOAXY55Y.ts +0 -153
- package/dist/chunks/chunk-BOAXY55Y.ts.map +0 -7
- package/dist/chunks/chunk-D4CR7T73.ts +0 -353
- package/dist/chunks/chunk-D4CR7T73.ts.map +0 -7
- package/dist/chunks/chunk-FEVPWRMU.ts +0 -300
- package/dist/chunks/chunk-FEVPWRMU.ts.map +0 -7
- package/dist/chunks/chunk-G6VZTCFH.ts +0 -70
- package/dist/chunks/chunk-G6VZTCFH.ts.map +0 -7
- package/dist/chunks/chunk-H3FP6DLR.ts +0 -160
- package/dist/chunks/chunk-H3FP6DLR.ts.map +0 -7
- package/dist/chunks/chunk-HA36LPCO.ts +0 -130
- package/dist/chunks/chunk-HA36LPCO.ts.map +0 -7
- package/dist/chunks/chunk-HOP5FXDT.ts +0 -27
- package/dist/chunks/chunk-HOP5FXDT.ts.map +0 -7
- package/dist/chunks/chunk-IGAMVWFN.ts +0 -139
- package/dist/chunks/chunk-IGAMVWFN.ts.map +0 -7
- package/dist/chunks/chunk-ILEQ27AL.ts +0 -45
- package/dist/chunks/chunk-ILEQ27AL.ts.map +0 -7
- package/dist/chunks/chunk-ITVWPNU4.ts +0 -819
- package/dist/chunks/chunk-ITVWPNU4.ts.map +0 -7
- package/dist/chunks/chunk-IWC32VPY.ts +0 -172
- package/dist/chunks/chunk-IWC32VPY.ts.map +0 -7
- package/dist/chunks/chunk-JSZIP73U.ts +0 -362
- package/dist/chunks/chunk-JSZIP73U.ts.map +0 -7
- package/dist/chunks/chunk-JU6LUNLP.ts +0 -380
- package/dist/chunks/chunk-JU6LUNLP.ts.map +0 -7
- package/dist/chunks/chunk-KMGKCEO4.ts +0 -38
- package/dist/chunks/chunk-KMGKCEO4.ts.map +0 -7
- package/dist/chunks/chunk-LASD73CM.ts +0 -339
- package/dist/chunks/chunk-LASD73CM.ts.map +0 -7
- package/dist/chunks/chunk-LEOYDZI3.ts +0 -22
- package/dist/chunks/chunk-LEOYDZI3.ts.map +0 -7
- package/dist/chunks/chunk-LL4LP2T7.ts +0 -737
- package/dist/chunks/chunk-LL4LP2T7.ts.map +0 -7
- package/dist/chunks/chunk-N2T5IN4X.ts +0 -18
- package/dist/chunks/chunk-N2T5IN4X.ts.map +0 -7
- package/dist/chunks/chunk-N7BLVXKK.ts +0 -73
- package/dist/chunks/chunk-N7BLVXKK.ts.map +0 -7
- package/dist/chunks/chunk-NLT67IZS.ts +0 -322
- package/dist/chunks/chunk-NLT67IZS.ts.map +0 -7
- package/dist/chunks/chunk-NTRPLF46.ts +0 -63
- package/dist/chunks/chunk-NTRPLF46.ts.map +0 -7
- package/dist/chunks/chunk-ONDTY4EL.ts +0 -91
- package/dist/chunks/chunk-ONDTY4EL.ts.map +0 -7
- package/dist/chunks/chunk-OVPHFGKO.ts +0 -1769
- package/dist/chunks/chunk-OVPHFGKO.ts.map +0 -7
- package/dist/chunks/chunk-P7OH4XMF.ts +0 -60
- package/dist/chunks/chunk-P7OH4XMF.ts.map +0 -7
- package/dist/chunks/chunk-PBZMBTNJ.ts +0 -422
- package/dist/chunks/chunk-PBZMBTNJ.ts.map +0 -7
- package/dist/chunks/chunk-PGLSFLYW.ts +0 -52
- package/dist/chunks/chunk-PGLSFLYW.ts.map +0 -7
- package/dist/chunks/chunk-RRR66UWR.ts +0 -28
- package/dist/chunks/chunk-RRR66UWR.ts.map +0 -7
- package/dist/chunks/chunk-RSUXZD6S.ts +0 -275
- package/dist/chunks/chunk-RSUXZD6S.ts.map +0 -7
- package/dist/chunks/chunk-RTCVYIZA.ts +0 -221
- package/dist/chunks/chunk-RTCVYIZA.ts.map +0 -7
- package/dist/chunks/chunk-RY2AEGMZ.ts +0 -34
- package/dist/chunks/chunk-RY2AEGMZ.ts.map +0 -7
- package/dist/chunks/chunk-SWGQLFSD.ts +0 -60
- package/dist/chunks/chunk-SWGQLFSD.ts.map +0 -7
- package/dist/chunks/chunk-TM2R67J3.ts +0 -52
- package/dist/chunks/chunk-TM2R67J3.ts.map +0 -7
- package/dist/chunks/chunk-TMZRHIIK.ts +0 -497
- package/dist/chunks/chunk-TMZRHIIK.ts.map +0 -7
- package/dist/chunks/chunk-TZ34IQ3M.ts +0 -59
- package/dist/chunks/chunk-TZ34IQ3M.ts.map +0 -7
- package/dist/chunks/chunk-UMBPMVJW.ts +0 -22
- package/dist/chunks/chunk-UMBPMVJW.ts.map +0 -7
- package/dist/chunks/chunk-VDG7LTYE.ts +0 -80
- package/dist/chunks/chunk-VDG7LTYE.ts.map +0 -7
- package/dist/chunks/chunk-X4NMONPE.ts +0 -73
- package/dist/chunks/chunk-X4NMONPE.ts.map +0 -7
- package/dist/chunks/chunk-YPJEN6NU.ts +0 -65
- package/dist/chunks/chunk-YPJEN6NU.ts.map +0 -7
- package/dist/chunks/chunk-YU53SHA7.ts +0 -328
- package/dist/chunks/chunk-YU53SHA7.ts.map +0 -7
- package/dist/chunks/completion-delivery-RSJU6BXL.ts +0 -17
- package/dist/chunks/completion-delivery-RSJU6BXL.ts.map +0 -7
- package/dist/chunks/config-status-FKGDECZ3.ts +0 -35
- package/dist/chunks/config-status-FKGDECZ3.ts.map +0 -7
- package/dist/chunks/config-ui-ABHYNGQ7.ts +0 -1212
- package/dist/chunks/config-ui-ABHYNGQ7.ts.map +0 -7
- package/dist/chunks/consult-LJU3IQY5.ts +0 -519
- package/dist/chunks/consult-LJU3IQY5.ts.map +0 -7
- package/dist/chunks/context-QDKLVQXE.ts +0 -11
- package/dist/chunks/context-QDKLVQXE.ts.map +0 -7
- package/dist/chunks/create-stateful-transport-JWC2EFYL.ts +0 -130
- package/dist/chunks/create-stateful-transport-JWC2EFYL.ts.map +0 -7
- package/dist/chunks/cwd-policy-NB6XZ5GF.ts +0 -17
- package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +0 -7
- package/dist/chunks/delegation-contract-LA56I5DT.ts +0 -24
- package/dist/chunks/delegation-contract-LA56I5DT.ts.map +0 -7
- package/dist/chunks/discovery-MIFB2U4Y.ts +0 -12
- package/dist/chunks/discovery-MIFB2U4Y.ts.map +0 -7
- package/dist/chunks/execution-Q2JZLKJA.ts +0 -4037
- package/dist/chunks/execution-Q2JZLKJA.ts.map +0 -7
- package/dist/chunks/in-process-transport-HJ6TZXC3.ts +0 -39
- package/dist/chunks/in-process-transport-HJ6TZXC3.ts.map +0 -7
- package/dist/chunks/inspect-UH2TKH6E.ts +0 -634
- package/dist/chunks/inspect-UH2TKH6E.ts.map +0 -7
- package/dist/chunks/peer-communication-KL36Z6CO.ts +0 -294
- package/dist/chunks/peer-communication-KL36Z6CO.ts.map +0 -7
- package/dist/chunks/persistence-UY3PY6E5.ts +0 -348
- package/dist/chunks/persistence-UY3PY6E5.ts.map +0 -7
- package/dist/chunks/registry-BT54L6CY.ts +0 -1445
- package/dist/chunks/registry-BT54L6CY.ts.map +0 -7
- package/dist/chunks/retained-semantic-state-GM75FZGE.ts +0 -81
- package/dist/chunks/retained-semantic-state-GM75FZGE.ts.map +0 -7
- package/dist/chunks/rpc-transport-7R7DVCEB.ts +0 -1222
- package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +0 -7
- package/dist/chunks/runtime-policy-5YELCOVC.ts +0 -15
- package/dist/chunks/runtime-policy-5YELCOVC.ts.map +0 -7
- package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +0 -19
- package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +0 -7
- package/dist/chunks/spawn-idempotency-BNHOSMZW.ts +0 -13
- package/dist/chunks/spawn-idempotency-BNHOSMZW.ts.map +0 -7
- package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +0 -15
- package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +0 -7
- package/dist/chunks/subprocess-transport-VHZJRBTW.ts +0 -160
- package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +0 -7
- package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +0 -164
- package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +0 -7
- package/dist/chunks/workspace-WDKLN72J.ts +0 -11
- package/dist/chunks/workspace-WDKLN72J.ts.map +0 -7
- package/docs/async-runtime-protocol.md +0 -84
- package/docs/implementation-notes/pi-subagents-capability-matrix.md +0 -62
- package/docs/implementation-notes/pi-subagents-current-direction.md +0 -99
- package/docs/implementation-notes/pi-subagents-rpc-v1.md +0 -139
- package/docs/pi-subagents-diagrams.md +0 -183
- package/src/adaptive-scheduler.ts +0 -224
- package/src/admission-policy.ts +0 -78
- package/src/agent-projection.ts +0 -53
- package/src/agents/built-ins.ts +0 -71
- package/src/agents/catalog.ts +0 -241
- package/src/agents/discovery.ts +0 -265
- package/src/agents/types.ts +0 -100
- package/src/agents.ts +0 -51
- package/src/auto-transport.ts +0 -121
- package/src/blocking-status.ts +0 -63
- package/src/cached-module-loader.ts +0 -18
- package/src/capabilities.ts +0 -145
- package/src/capability-grant.ts +0 -115
- package/src/capability-router.ts +0 -107
- package/src/child-peer-bridge.ts +0 -124
- package/src/child-peer-tools.ts +0 -132
- package/src/completion-delivery.ts +0 -409
- package/src/completion-render.ts +0 -190
- package/src/completion-requirement.ts +0 -479
- package/src/completion-routing.ts +0 -24
- package/src/config-registration.ts +0 -114
- package/src/config-status.ts +0 -217
- package/src/config-ui.ts +0 -983
- package/src/consult-policy.ts +0 -15
- package/src/consult-registration.ts +0 -125
- package/src/consult-render.ts +0 -194
- package/src/consult-resources.ts +0 -51
- package/src/consult-tool.ts +0 -95
- package/src/consult.ts +0 -566
- package/src/context.ts +0 -126
- package/src/create-stateful-transport.ts +0 -157
- package/src/cwd-policy.ts +0 -183
- package/src/delegation-contract.ts +0 -463
- package/src/execution/budget.ts +0 -56
- package/src/execution/runtime-policy.ts +0 -19
- package/src/execution-plan.ts +0 -322
- package/src/execution-ui.ts +0 -259
- package/src/execution.ts +0 -1679
- package/src/in-process-transport.ts +0 -941
- package/src/inspect-registration.ts +0 -64
- package/src/inspect-render.ts +0 -334
- package/src/inspect-tool.ts +0 -45
- package/src/inspect.ts +0 -769
- package/src/integration-controller.ts +0 -98
- package/src/limits.ts +0 -75
- package/src/orchestration-metrics.ts +0 -116
- package/src/outcome.ts +0 -61
- package/src/panel-child-group.ts +0 -35
- package/src/panel-contract.ts +0 -343
- package/src/panel-evidence.ts +0 -59
- package/src/panel-execution.ts +0 -769
- package/src/panel-failure.ts +0 -56
- package/src/panel-planning.ts +0 -175
- package/src/panel-presets.ts +0 -3
- package/src/panel-prompts.ts +0 -132
- package/src/panel-reconciliation.ts +0 -57
- package/src/panel-render.ts +0 -103
- package/src/parallel-limit-ui.ts +0 -113
- package/src/params.ts +0 -278
- package/src/peer-communication.ts +0 -352
- package/src/peer-transport.ts +0 -49
- package/src/persistence.ts +0 -522
- package/src/pi-args.ts +0 -43
- package/src/pi-invocation.ts +0 -168
- package/src/process-control.ts +0 -43
- package/src/prompt-resources.ts +0 -38
- package/src/prompt-source-safety.ts +0 -48
- package/src/protocol.ts +0 -76
- package/src/registry-types.ts +0 -204
- package/src/registry.ts +0 -1698
- package/src/render-common.ts +0 -252
- package/src/render.ts +0 -704
- package/src/result-contract.ts +0 -431
- package/src/retained-semantic-state.ts +0 -100
- package/src/rpc-timeout-finalization.ts +0 -207
- package/src/rpc-transport-metadata.ts +0 -65
- package/src/rpc-transport.ts +0 -1035
- package/src/rpc-turn-capture.ts +0 -217
- package/src/runner-outcome.ts +0 -31
- package/src/runner-result.ts +0 -55
- package/src/runner-types.ts +0 -102
- package/src/runner-usage.ts +0 -48
- package/src/runner.ts +0 -866
- package/src/safe-text.ts +0 -67
- package/src/semantic-snapshot.ts +0 -214
- package/src/session-guidance-contract.ts +0 -399
- package/src/settings/inspection.ts +0 -302
- package/src/settings/schema.ts +0 -195
- package/src/settings-reader.ts +0 -215
- package/src/settings.ts +0 -452
- package/src/spawn-idempotency.ts +0 -68
- package/src/stateful-agent-view.ts +0 -85
- package/src/stateful-config.ts +0 -13
- package/src/stateful-guidance.ts +0 -29
- package/src/stateful-lifecycle.ts +0 -74
- package/src/stateful-limit-ui.ts +0 -249
- package/src/stateful-limits.ts +0 -96
- package/src/stateful-prompt.ts +0 -49
- package/src/stateful-registration.ts +0 -1320
- package/src/stateful-render.ts +0 -318
- package/src/stateful-safety.ts +0 -47
- package/src/stateful-tool-params.ts +0 -215
- package/src/stateful.ts +0 -12
- package/src/subagent-details.ts +0 -43
- package/src/subagents-extension.ts +0 -372
- package/src/subprocess-transport.ts +0 -145
- package/src/supervision.ts +0 -104
- package/src/task-path.ts +0 -65
- package/src/timeout-checkpoint.ts +0 -305
- package/src/timeout-finalization.ts +0 -75
- package/src/tool-schema-compatibility.ts +0 -73
- package/src/transport-types.ts +0 -74
- package/src/transport-ui.ts +0 -135
- package/src/transport.ts +0 -43
- package/src/turn-budget.ts +0 -109
- package/src/usage-format.ts +0 -42
- package/src/usage-recording-config.ts +0 -13
- package/src/usage-recording-store.ts +0 -183
- package/src/usage-recording.ts +0 -478
- package/src/verification-harness.ts +0 -516
- package/src/verification-policy.ts +0 -67
- package/src/verification-receipt.ts +0 -275
- package/src/verified-execution-benchmark.ts +0 -86
- package/src/verified-execution-contract.ts +0 -191
- package/src/verified-execution-schema.ts +0 -32
- package/src/work-item-ledger.ts +0 -1404
- package/src/work-item-persistence.ts +0 -254
- package/src/workflow-completion-controller.ts +0 -397
- package/src/workflow-planning.ts +0 -172
- package/src/workflow-tree-identity.ts +0 -289
- package/src/workflow-ui.ts +0 -69
- package/src/workflow-verification.ts +0 -296
- package/src/workspace.ts +0 -174
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/registry.ts", "../../src/completion-routing.ts", "../../src/transport.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * AgentRegistry intentionally owns its full state machine in one module so queue, tree,\n * mailbox, generation, grant, transport, persistence, and completion transitions are atomic.\n */\nimport { randomUUID } from \"node:crypto\";\nimport { projectAgentRecords } from \"./agent-projection.js\";\nimport type { SubagentThinkingLevel } from \"./agents/types.js\";\nimport {\n\ttype CapabilityGrant,\n\tisCapabilityGrantActive,\n\trevokeCapabilityGrant,\n} from \"./capability-grant.js\";\nimport {\n\tbeginCompletionRequirement,\n\ttype CompletionRequirementMode,\n\tcancelPendingCompletionRequirements,\n\tcompletionRequirementKey,\n\tMAX_UNRESOLVED_REQUIRED_COMPLETIONS,\n\tmakeCompletionAvailable,\n\tmakeCompletionVisible,\n\tpendingRequiredCompletionCount,\n} from \"./completion-requirement.js\";\nimport { resolveCompletionRecipient } from \"./completion-routing.js\";\nimport type { TargetPolicyAudit } from \"./cwd-policy.js\";\nimport type { DelegationContract } from \"./delegation-contract.js\";\nimport {\n\tcopyExecutionPlan,\n\ttype ExecutionPlan,\n\trotateExecutionPlanGeneration,\n} from \"./execution-plan.js\";\nimport {\n\tDEFAULT_MAX_CONTEXT_BYTES,\n\tDEFAULT_MAX_OUTPUT_BYTES,\n\tMAX_SUBAGENT_TIMEOUT_MS,\n\tMAX_TOOL_MESSAGE_BYTES,\n\ttruncateUtf8,\n} from \"./limits.js\";\nimport { classifyStructuredOutcome } from \"./outcome.js\";\nimport type {\n\tAgentInspectionCounts,\n\tAgentLifecycleState,\n\tAgentMailboxMessage,\n\tAgentRegistryOptions,\n\tAgentRunInspectionDetail,\n\tAgentRunInspectionSummary,\n\tAgentTurnCompletion,\n\tManagedAgent,\n} from \"./registry-types.js\";\nimport {\n\ttype AnyStructuredSubagentResult,\n\tparseAnyStructuredSubagentResult,\n\ttype SubagentResultFormat,\n} from \"./result-contract.js\";\nimport { safeTerminalLine } from \"./safe-text.js\";\nimport type { SemanticCompatibility, SemanticSnapshot } from \"./semantic-snapshot.js\";\nimport { resolveStatefulLimits } from \"./stateful-limits.js\";\nimport {\n\tderiveTaskName,\n\tjoinTaskPath,\n\tROOT_TASK_PATH,\n\tresolveTaskPath,\n\tvalidateTaskName,\n\tvalidateTaskPath,\n} from \"./task-path.js\";\nimport { copyTurnTerminationReport } from \"./timeout-checkpoint.js\";\nimport { type AgentTurnRunner, normalizeTransport, type SubagentTransport } from \"./transport.js\";\nimport type { TransportTelemetry } from \"./transport-types.js\";\nimport { type TurnLimits, validateTurnLimits } from \"./turn-budget.js\";\n\nconst DEFAULT_STATEFUL_LIMITS = resolveStatefulLimits();\nconst MAX_PENDING_COMPLETIONS_PER_AGENT = 20;\nconst INITIAL_PERSISTENCE_RETRY_DELAY_MS = 25;\nconst MAX_PERSISTENCE_RETRY_DELAY_MS = 1_000;\n\nexport type * from \"./registry-types.js\";\n\nfunction positiveInteger(value: number, label: string): number {\n\tif (!Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(`${label} must be a positive safe integer`);\n\t}\n\treturn value;\n}\n\nfunction nonNegativeInteger(value: number, label: string): number {\n\tif (!Number.isSafeInteger(value) || value < 0) {\n\t\tthrow new Error(`${label} must be a non-negative safe integer`);\n\t}\n\treturn value;\n}\n\nfunction validateTurnTimeout(value: number): number {\n\tif (!Number.isSafeInteger(value) || value < 1 || value > MAX_SUBAGENT_TIMEOUT_MS) {\n\t\tthrow new Error(`Subagent timeoutMs must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}`);\n\t}\n\treturn value;\n}\n\nfunction clearCurrentTurn(agent: ManagedAgent): void {\n\tagent.currentTask = undefined;\n\tagent.currentRunId = undefined;\n\tagent.currentTurnGeneration = undefined;\n\tagent.currentTimeoutMs = undefined;\n\tagent.currentIdleTimeoutMs = undefined;\n\tagent.currentMaxTurns = undefined;\n\tagent.currentMaxToolCalls = undefined;\n\tagent.currentMailboxMessageIds = undefined;\n}\n\nfunction waitAbortError(): Error {\n\tconst error = new Error(\"Subagent wait was aborted\");\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nfunction waitForPersistenceRetry(milliseconds: number, signal: AbortSignal): Promise<void> {\n\tif (signal.aborted) return Promise.reject(signal.reason);\n\treturn new Promise((resolve, reject) => {\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timer);\n\t\t\treject(signal.reason);\n\t\t};\n\t\tconst timer = setTimeout(() => {\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\tresolve();\n\t\t}, milliseconds);\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\nexport class AgentRegistry {\n\tprivate readonly agents = new Map<string, ManagedAgent>();\n\tprivate readonly controllers = new Map<string, AbortController>();\n\tprivate readonly running = new Map<string, Promise<ManagedAgent>>();\n\tprivate readonly queue: Array<{\n\t\tagent: ManagedAgent;\n\t\ttask: string;\n\t\tresolve: (agent: ManagedAgent) => void;\n\t}> = [];\n\tprivate changeQueue: Promise<void> = Promise.resolve();\n\tprivate readonly shutdownController = new AbortController();\n\tprivate readonly maxAgents: number;\n\tprivate readonly maxActiveTurns: number;\n\tprivate readonly maxHistoryTurns: number;\n\tprivate readonly maxDepth: number;\n\tprivate readonly maxChildrenPerAgent: number;\n\tprivate readonly maxMailboxMessages: number;\n\tprivate readonly maxMailboxMessageBytes: number;\n\tprivate readonly maxTaskBytes: number;\n\tprivate readonly maxTurnOutputBytes: number;\n\tprivate readonly idleTtlMs: number;\n\tprivate readonly transport: SubagentTransport;\n\tprivate readonly now: () => number;\n\tprivate lastCompletionAt = 0;\n\n\tconstructor(\n\t\ttransport: SubagentTransport | AgentTurnRunner,\n\t\tprivate readonly options: AgentRegistryOptions = {},\n\t) {\n\t\tthis.transport = normalizeTransport(transport);\n\t\tthis.maxAgents = positiveInteger(\n\t\t\toptions.maxAgents ?? DEFAULT_STATEFUL_LIMITS.maxAgents,\n\t\t\t\"maxAgents\",\n\t\t);\n\t\tthis.maxActiveTurns = positiveInteger(\n\t\t\toptions.maxActiveTurns ?? DEFAULT_STATEFUL_LIMITS.maxActiveTurns,\n\t\t\t\"maxActiveTurns\",\n\t\t);\n\t\tthis.maxHistoryTurns = positiveInteger(options.maxHistoryTurns ?? 20, \"maxHistoryTurns\");\n\t\tthis.maxDepth = nonNegativeInteger(\n\t\t\toptions.maxDepth ?? DEFAULT_STATEFUL_LIMITS.maxDepth,\n\t\t\t\"maxDepth\",\n\t\t);\n\t\tthis.maxChildrenPerAgent = positiveInteger(\n\t\t\toptions.maxChildrenPerAgent ?? DEFAULT_STATEFUL_LIMITS.maxChildrenPerAgent,\n\t\t\t\"maxChildrenPerAgent\",\n\t\t);\n\t\tthis.maxMailboxMessages = positiveInteger(\n\t\t\toptions.maxMailboxMessages ?? 100,\n\t\t\t\"maxMailboxMessages\",\n\t\t);\n\t\tthis.maxMailboxMessageBytes = positiveInteger(\n\t\t\toptions.maxMailboxMessageBytes ?? 16 * 1024,\n\t\t\t\"maxMailboxMessageBytes\",\n\t\t);\n\t\tthis.maxTaskBytes = positiveInteger(\n\t\t\toptions.maxTaskBytes ?? DEFAULT_MAX_CONTEXT_BYTES,\n\t\t\t\"maxTaskBytes\",\n\t\t);\n\t\tthis.maxTurnOutputBytes = positiveInteger(\n\t\t\toptions.maxTurnOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES,\n\t\t\t\"maxTurnOutputBytes\",\n\t\t);\n\t\tthis.idleTtlMs = positiveInteger(options.idleTtlMs ?? 60 * 60 * 1000, \"idleTtlMs\");\n\t\tthis.now = options.now ?? Date.now;\n\t}\n\n\trestore(records: readonly ManagedAgent[]): void {\n\t\tconst candidates = new Map(\n\t\t\tprojectAgentRecords(\n\t\t\t\trecords.filter((record) => record.id && record.state !== \"closed\"),\n\t\t\t\t{ maxAgents: this.maxAgents, maxDepth: this.maxDepth },\n\t\t\t).map((record) => [record.id, record]),\n\t\t);\n\t\tconst restorable: Array<{ record: ManagedAgent; rootId: string; depth: number }> = [];\n\t\tfor (const record of candidates.values()) {\n\t\t\tif (record.parentId && !candidates.has(record.parentId)) continue;\n\t\t\tif (record.parentId === record.id) continue;\n\t\t\tconst seen = new Set([record.id]);\n\t\t\tlet parentId = record.parentId;\n\t\t\tlet rootId = record.id;\n\t\t\tlet cyclic = false;\n\t\t\twhile (parentId) {\n\t\t\t\tif (seen.has(parentId)) {\n\t\t\t\t\tcyclic = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tseen.add(parentId);\n\t\t\t\trootId = parentId;\n\t\t\t\tparentId = candidates.get(parentId)?.parentId;\n\t\t\t}\n\t\t\tconst depth = seen.size - 1;\n\t\t\tif (!cyclic && depth <= this.maxDepth) restorable.push({ record, rootId, depth });\n\t\t}\n\t\trestorable.sort(\n\t\t\t(left, right) =>\n\t\t\t\tleft.depth - right.depth ||\n\t\t\t\tleft.record.createdAt - right.record.createdAt ||\n\t\t\t\tleft.record.id.localeCompare(right.record.id),\n\t\t);\n\t\tconst reservedPaths = new Set(\n\t\t\t[...this.agents.values()].flatMap((agent) =>\n\t\t\t\tagent.state !== \"closed\" && agent.taskPath ? [agent.taskPath] : [],\n\t\t\t),\n\t\t);\n\t\tfor (const { record, rootId, depth } of restorable) {\n\t\t\tconst parentPath = record.parentId\n\t\t\t\t? this.agents.get(record.parentId)?.taskPath\n\t\t\t\t: ROOT_TASK_PATH;\n\t\t\tif (!parentPath) continue;\n\t\t\tconst identity = this.reserveRestoredIdentity(record, parentPath, reservedPaths);\n\t\t\tfor (const completion of record.pendingCompletions ?? []) {\n\t\t\t\tthis.lastCompletionAt = Math.max(this.lastCompletionAt, completion.createdAt);\n\t\t\t}\n\t\t\tthis.agents.set(record.id, {\n\t\t\t\t...record,\n\t\t\t\t...identity,\n\t\t\t\tstate:\n\t\t\t\t\trecord.state === \"running\" || record.state === \"starting\" ? \"interrupted\" : record.state,\n\t\t\t\trootId,\n\t\t\t\tdepth,\n\t\t\t\tcurrentTask: undefined,\n\t\t\t\tturnGeneration: record.turnGeneration ?? 0,\n\t\t\t\tcurrentRunId: undefined,\n\t\t\t\tcurrentTurnGeneration: undefined,\n\t\t\t\tpendingCompletions: (record.pendingCompletions ?? []).map((completion) => ({\n\t\t\t\t\t...completion,\n\t\t\t\t})),\n\t\t\t\tcurrentTimeoutMs: undefined,\n\t\t\t\tcurrentIdleTimeoutMs: undefined,\n\t\t\t\tcurrentMaxTurns: undefined,\n\t\t\t\tcurrentMaxToolCalls: undefined,\n\t\t\t\tcurrentMailboxMessageIds: undefined,\n\t\t\t\tchildren: [],\n\t\t\t\tcontextSourceIds: [...(record.contextSourceIds ?? [])],\n\t\t\t\tcapabilityGrant:\n\t\t\t\t\trecord.capabilityGrant?.state === \"active\"\n\t\t\t\t\t\t? revokeCapabilityGrant(record.capabilityGrant, \"restore-boundary\", this.now())\n\t\t\t\t\t\t: record.capabilityGrant,\n\t\t\t\tmailbox: (record.mailbox ?? [])\n\t\t\t\t\t.slice(-this.maxMailboxMessages)\n\t\t\t\t\t.map((message) => ({ ...message, recipientId: record.id })),\n\t\t\t\tcompletionRequirements: (record.completionRequirements ?? []).map((item) => ({\n\t\t\t\t\t...item,\n\t\t\t\t})),\n\t\t\t\thistory: record.history.slice(-this.maxHistoryTurns).map((turn) => ({ ...turn })),\n\t\t\t});\n\t\t\tconst restored = this.agents.get(record.id);\n\t\t\tif (restored && restored.state !== \"running\" && restored.state !== \"starting\") {\n\t\t\t\trestored.completionRequirements = cancelPendingCompletionRequirements(\n\t\t\t\t\trestored.completionRequirements,\n\t\t\t\t\trestored.state,\n\t\t\t\t\tthis.now(),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tfor (const agent of this.agents.values()) {\n\t\t\tif (agent.parentId) {\n\t\t\t\tconst parent = this.agents.get(agent.parentId);\n\t\t\t\tif (parent && !parent.children.includes(agent.id)) parent.children.push(agent.id);\n\t\t\t}\n\t\t\tfor (const completion of agent.pendingCompletions ?? []) {\n\t\t\t\tif (!completion.recipientId || !completion.recipientPath) {\n\t\t\t\t\tObject.assign(completion, this.completionRecipient(agent));\n\t\t\t\t}\n\t\t\t\tthis.enqueueCompletionMessage(\n\t\t\t\t\tagent,\n\t\t\t\t\tcompletion,\n\t\t\t\t\tcompletion.output || completion.error || \"(no output)\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync spawn(input: {\n\t\tagent: string;\n\t\ttaskName?: string;\n\t\ttask: string;\n\t\tcwd: string;\n\t\tagentScope?: \"user\" | \"project\" | \"both\";\n\t\tthinkingLevel?: SubagentThinkingLevel;\n\t\ttimeoutMs?: number;\n\t\tidleTimeoutMs?: number;\n\t\tmaxTurns?: number;\n\t\tmaxToolCalls?: number;\n\t\tcompletionRequirement?: CompletionRequirementMode;\n\t\tparentId?: string;\n\t\tcontext?: string;\n\t\tcontextSourceIds?: string[];\n\t\tcontextTruncated?: boolean;\n\t\tcontextTurns?: number;\n\t\tcontextBytes?: number;\n\t\tworkspaceMode?: \"worktree\";\n\t\tspawnIdempotencyKey?: string;\n\t\tspawnRequestHash?: string;\n\t\tcontract?: DelegationContract;\n\t\tresultFormat?: SubagentResultFormat;\n\t\texecutionPlan?: ExecutionPlan;\n\t\tcapabilityGrant?: CapabilityGrant;\n\t\tsemanticSnapshot?: SemanticSnapshot;\n\t\tsemanticCompatibility?: SemanticCompatibility;\n\t\ttarget?: TargetPolicyAudit;\n\t}): Promise<ManagedAgent> {\n\t\tif (!input.task.trim()) throw new Error(\"Subagent tasks cannot be empty\");\n\t\tif (input.timeoutMs !== undefined) validateTurnTimeout(input.timeoutMs);\n\t\tvalidateTurnLimits(input);\n\t\tconst existing = this.findBySpawnIdempotencyKey(\n\t\t\tinput.spawnIdempotencyKey,\n\t\t\tinput.spawnRequestHash,\n\t\t);\n\t\tif (existing) return existing;\n\t\tthis.assertRequiredCompletionCapacity(input.completionRequirement);\n\t\tconst task = truncateUtf8(input.task, this.maxTaskBytes).text;\n\t\tconst expired = this.evictExpired();\n\t\tlet expiryReleaseError: unknown;\n\t\ttry {\n\t\t\tawait this.releaseAgents(expired);\n\t\t} catch (error) {\n\t\t\texpiryReleaseError = error;\n\t\t}\n\t\tif (expired.length > 0) await this.changed();\n\t\tif (expiryReleaseError) throw expiryReleaseError;\n\t\tif (this.retainedCount() >= this.maxAgents) {\n\t\t\tthrow new Error(`Subagent capacity reached (${this.maxAgents})`);\n\t\t}\n\t\tconst parent = input.parentId ? this.require(input.parentId) : undefined;\n\t\tif (parent?.state === \"closed\") throw new Error(`Cannot spawn under closed agent ${parent.id}`);\n\t\tif (parent && parent.children.length >= this.maxChildrenPerAgent) {\n\t\t\tthrow new Error(`Agent ${parent.id} child capacity reached (${this.maxChildrenPerAgent})`);\n\t\t}\n\t\tconst depth = parent ? parent.depth + 1 : 0;\n\t\tif (depth > this.maxDepth) throw new Error(`Subagent depth limit reached (${this.maxDepth})`);\n\t\tconst now = this.now();\n\t\tconst id = `sa_${randomUUID()}`;\n\t\tconst taskName = input.taskName ? validateTaskName(input.taskName) : deriveTaskName(id);\n\t\tconst taskPath = joinTaskPath(parent?.taskPath ?? ROOT_TASK_PATH, taskName);\n\t\tif (this.findByTaskPath(taskPath)) {\n\t\t\tthrow new Error(`Canonical subagent task path is already retained: ${taskPath}`);\n\t\t}\n\t\tconst record: ManagedAgent = {\n\t\t\tid,\n\t\t\ttaskName,\n\t\t\ttaskPath,\n\t\t\tagent: input.agent,\n\t\t\tparentId: parent?.id,\n\t\t\trootId: parent?.rootId ?? id,\n\t\t\tdepth,\n\t\t\tchildren: [],\n\t\t\tstate: \"starting\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tcwd: input.cwd,\n\t\t\tagentScope: input.agentScope,\n\t\t\tthinkingLevel: input.thinkingLevel,\n\t\t\ttimeoutMs: input.timeoutMs,\n\t\t\tcurrentTimeoutMs: input.timeoutMs,\n\t\t\tidleTimeoutMs: input.idleTimeoutMs,\n\t\t\tcurrentIdleTimeoutMs: input.idleTimeoutMs,\n\t\t\tmaxTurns: input.maxTurns,\n\t\t\tcurrentMaxTurns: input.maxTurns,\n\t\t\tmaxToolCalls: input.maxToolCalls,\n\t\t\tcurrentMaxToolCalls: input.maxToolCalls,\n\t\t\tcurrentTask: task,\n\t\t\tturnGeneration: 0,\n\t\t\tpendingCompletions: [],\n\t\t\tcompletionRequirements: [],\n\t\t\thistory: [],\n\t\t\tmailbox: [],\n\t\t\tcontext: input.context,\n\t\t\tcontextSourceIds: input.contextSourceIds,\n\t\t\tcontextTruncated: input.contextTruncated,\n\t\t\tcontextTurns: input.contextTurns,\n\t\t\tcontextBytes: input.contextBytes,\n\t\t\tworkspaceMode: input.workspaceMode,\n\t\t\tspawnIdempotencyKey: input.spawnIdempotencyKey,\n\t\t\tspawnRequestHash: input.spawnRequestHash,\n\t\t\tcontract: input.contract,\n\t\t\tresultFormat: input.resultFormat,\n\t\t\texecutionPlan: input.executionPlan,\n\t\t\tcapabilityGrant: input.capabilityGrant,\n\t\t\tsemanticSnapshot: input.semanticSnapshot,\n\t\t\tsemanticCompatibility: input.semanticCompatibility,\n\t\t\ttarget: input.target,\n\t\t};\n\t\tthis.agents.set(record.id, record);\n\t\tif (parent) {\n\t\t\tparent.children.push(record.id);\n\t\t\tparent.updatedAt = now;\n\t\t}\n\t\tawait this.changed();\n\t\tthis.startTurn(record, task, input, input.completionRequirement);\n\t\treturn this.copy(record);\n\t}\n\n\tfindBySpawnIdempotencyKey(\n\t\tkey: string | undefined,\n\t\trequestHash: string | undefined,\n\t): ManagedAgent | undefined {\n\t\tif (!key) return undefined;\n\t\tconst existing = [...this.agents.values()].find(\n\t\t\t(agent) => agent.state !== \"closed\" && agent.spawnIdempotencyKey === key,\n\t\t);\n\t\tif (!existing) return undefined;\n\t\tif (!requestHash || existing.spawnRequestHash !== requestHash) {\n\t\t\tthrow new Error(\n\t\t\t\t\"The subagent_spawn idempotencyKey was already used with different parameters\",\n\t\t\t);\n\t\t}\n\t\treturn this.copy(existing);\n\t}\n\n\tasync followUp(\n\t\tid: string,\n\t\ttask: string,\n\t\toptions: TurnLimits & {\n\t\t\ttimeoutMs?: number;\n\t\t\tcompletionRequirement?: CompletionRequirementMode;\n\t\t} = {},\n\t): Promise<ManagedAgent> {\n\t\tif (!task.trim()) throw new Error(\"Subagent tasks cannot be empty\");\n\t\tif (options.timeoutMs !== undefined) validateTurnTimeout(options.timeoutMs);\n\t\tvalidateTurnLimits(options);\n\t\tconst boundedTask = truncateUtf8(task, this.maxTaskBytes).text;\n\t\tconst agent = this.require(id);\n\t\tif (\n\t\t\t![\n\t\t\t\t\"idle\",\n\t\t\t\t\"completed\",\n\t\t\t\t\"partial\",\n\t\t\t\t\"blocked\",\n\t\t\t\t\"needs-input\",\n\t\t\t\t\"abstained\",\n\t\t\t\t\"stale\",\n\t\t\t\t\"interrupted\",\n\t\t\t\t\"failed\",\n\t\t\t].includes(agent.state)\n\t\t) {\n\t\t\tthrow new Error(`Agent ${id} cannot accept follow-up while ${agent.state}`);\n\t\t}\n\t\tthis.assertRequiredCompletionCapacity(options.completionRequirement);\n\t\tconst unread = agent.mailbox.filter((message) => !message.readAt).slice(-20);\n\t\tagent.currentMailboxMessageIds = unread.map((message) => message.id);\n\t\tthis.startTurn(agent, boundedTask, options, options.completionRequirement);\n\t\treturn this.copy(agent);\n\t}\n\n\tasync updateSemanticState(\n\t\tid: string,\n\t\texecutionPlan: ExecutionPlan,\n\t\tcapabilityGrant: CapabilityGrant,\n\t\tsnapshot: SemanticSnapshot,\n\t\tcompatibility: SemanticCompatibility,\n\t): Promise<ManagedAgent> {\n\t\tconst agent = this.require(id);\n\t\tif (agent.state === \"running\" || agent.state === \"starting\" || agent.state === \"closed\") {\n\t\t\tthrow new Error(`Agent ${id} cannot update semantic state while ${agent.state}`);\n\t\t}\n\t\tagent.executionPlan = copyExecutionPlan(executionPlan);\n\t\tagent.capabilityGrant = structuredClone(capabilityGrant);\n\t\tagent.semanticSnapshot = structuredClone(snapshot);\n\t\tagent.semanticCompatibility = structuredClone(compatibility);\n\t\tagent.updatedAt = this.now();\n\t\tawait this.changed();\n\t\treturn this.copy(agent);\n\t}\n\n\tasync sendMessage(\n\t\trecipientId: string,\n\t\tcontent: string,\n\t\tsenderId = \"root\",\n\t\tdeduplicationKey?: string,\n\t): Promise<AgentMailboxMessage> {\n\t\tif (!content.trim()) throw new Error(\"Subagent mailbox messages cannot be empty\");\n\t\tif (deduplicationKey && deduplicationKey.length > 256) {\n\t\t\tthrow new Error(\"Subagent mailbox deduplication keys cannot exceed 256 characters\");\n\t\t}\n\t\tconst sender = senderId === \"root\" ? undefined : this.require(senderId);\n\t\tif (sender?.state === \"closed\")\n\t\t\tthrow new Error(`Closed agent ${sender.id} cannot send messages`);\n\t\tconst recipient = this.require(recipientId, sender?.id);\n\t\tif (recipient.state === \"closed\")\n\t\t\tthrow new Error(`Cannot message closed agent ${recipient.id}`);\n\t\tconst message = this.enqueueMessage(recipient, content, sender?.id ?? \"root\", deduplicationKey);\n\t\tawait this.changed();\n\t\treturn { ...message };\n\t}\n\n\tasync readMessages(\n\t\tid: string,\n\t\tacknowledge = true,\n\t\tlimit = this.maxMailboxMessages,\n\t): Promise<AgentMailboxMessage[]> {\n\t\tif (!Number.isSafeInteger(limit) || limit < 1) {\n\t\t\tthrow new Error(\"Subagent mailbox read limit must be a positive safe integer\");\n\t\t}\n\t\tconst agent = this.require(id);\n\t\tconst unread = agent.mailbox.filter((message) => !message.readAt).slice(0, limit);\n\t\tif (acknowledge && unread.length > 0) {\n\t\t\tconst readAt = this.now();\n\t\t\tfor (const message of unread) message.readAt = readAt;\n\t\t\tawait this.changed();\n\t\t}\n\t\treturn unread.map((message) => ({ ...message }));\n\t}\n\n\tasync acknowledgeVisibleMessages(\n\t\tid: string,\n\t\tmessageIds: readonly string[],\n\t\tcompletionIds: readonly string[] = [],\n\t\tvisibleAt = this.now(),\n\t): Promise<void> {\n\t\tconst agent = this.require(id);\n\t\tconst visibleMessageIds = new Set(messageIds);\n\t\tconst visibleCompletionIds = new Set(completionIds);\n\t\tconst changedMessages: AgentMailboxMessage[] = [];\n\t\tconst removedCompletions: Array<{\n\t\t\towner: ManagedAgent;\n\t\t\tcompletion: NonNullable<ManagedAgent[\"pendingCompletions\"]>[number];\n\t\t}> = [];\n\t\tfor (const message of agent.mailbox) {\n\t\t\tif (message.readAt === undefined && visibleMessageIds.has(message.id)) {\n\t\t\t\tmessage.readAt = visibleAt;\n\t\t\t\tchangedMessages.push(message);\n\t\t\t}\n\t\t\tif (message.completionId && visibleMessageIds.has(message.id)) {\n\t\t\t\tvisibleCompletionIds.add(message.completionId);\n\t\t\t}\n\t\t}\n\t\tfor (const owner of this.agents.values()) {\n\t\t\tfor (const completion of owner.pendingCompletions ?? []) {\n\t\t\t\tif (!visibleCompletionIds.has(completion.completionId)) continue;\n\t\t\t\tif (completion.recipientId !== agent.id && completion.recipientPath !== agent.taskPath) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tremovedCompletions.push({ owner, completion });\n\t\t\t}\n\t\t}\n\t\tif (changedMessages.length === 0 && removedCompletions.length === 0) return;\n\t\tfor (const { owner, completion } of removedCompletions) {\n\t\t\towner.pendingCompletions = (owner.pendingCompletions ?? []).filter(\n\t\t\t\t(candidate) => candidate.completionId !== completion.completionId,\n\t\t\t);\n\t\t}\n\t\tagent.updatedAt = Math.max(agent.updatedAt, visibleAt);\n\t\ttry {\n\t\t\tawait this.changed(true);\n\t\t} catch (error) {\n\t\t\tfor (const message of changedMessages) message.readAt = undefined;\n\t\t\tfor (const { owner, completion } of removedCompletions) {\n\t\t\t\towner.pendingCompletions = [...(owner.pendingCompletions ?? []), completion].sort(\n\t\t\t\t\t(left, right) => left.createdAt - right.createdAt || left.generation - right.generation,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync wait(\n\t\tid: string,\n\t\ttimeoutMs = 30_000,\n\t\tsignal?: AbortSignal,\n\t): Promise<{ timedOut: boolean; agent: ManagedAgent }> {\n\t\tif (!Number.isFinite(timeoutMs) || timeoutMs < 1) {\n\t\t\tthrow new Error(\"Subagent wait timeout must be a positive finite number\");\n\t\t}\n\t\tif (signal?.aborted) throw waitAbortError();\n\t\tconst agent = this.require(id);\n\t\tconst agentId = agent.id;\n\t\tconst running = this.running.get(agentId);\n\t\tif (!running) return { timedOut: false, agent: this.copy(agent) };\n\t\tlet timer: NodeJS.Timeout | undefined;\n\t\tlet onAbort: (() => void) | undefined;\n\t\tconst timeout = new Promise<\"timeout\">((resolve) => {\n\t\t\ttimer = setTimeout(() => resolve(\"timeout\"), Math.max(1, timeoutMs));\n\t\t});\n\t\tconst aborted = new Promise<\"aborted\">((resolve) => {\n\t\t\tonAbort = () => resolve(\"aborted\");\n\t\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t});\n\t\tconst result = await Promise.race([running, timeout, aborted]);\n\t\tif (timer) clearTimeout(timer);\n\t\tif (onAbort) signal?.removeEventListener(\"abort\", onAbort);\n\t\tif (result === \"aborted\") throw waitAbortError();\n\t\treturn result === \"timeout\"\n\t\t\t? { timedOut: true, agent: this.copy(this.require(agentId)) }\n\t\t\t: { timedOut: false, agent: this.copy(result) };\n\t}\n\n\tasync interruptTree(id: string): Promise<ManagedAgent[]> {\n\t\tconst results: ManagedAgent[] = [];\n\t\tfor (const target of this.descendants(id).reverse()) {\n\t\t\tconst agent = this.require(target);\n\t\t\tif (agent.state === \"running\" || agent.state === \"starting\") {\n\t\t\t\tresults.push(await this.interrupt(target));\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\n\tasync interrupt(id: string): Promise<ManagedAgent> {\n\t\tconst agent = this.require(id);\n\t\tconst agentId = agent.id;\n\t\tif (agent.state !== \"running\" && agent.state !== \"starting\")\n\t\t\tthrow new Error(`Agent ${id} is not running`);\n\t\tif (agent.capabilityGrant?.state === \"active\") {\n\t\t\tagent.capabilityGrant = revokeCapabilityGrant(\n\t\t\t\tagent.capabilityGrant,\n\t\t\t\t\"interrupted\",\n\t\t\t\tthis.now(),\n\t\t\t);\n\t\t}\n\t\tif (agent.executionPlan) {\n\t\t\tagent.executionPlan = rotateExecutionPlanGeneration(agent.executionPlan);\n\t\t}\n\t\tif (agent.state === \"starting\") {\n\t\t\tconst index = this.queue.findIndex((entry) => entry.agent.id === agentId);\n\t\t\tif (index >= 0) {\n\t\t\t\tconst [entry] = this.queue.splice(index, 1);\n\t\t\t\tconst recipient = this.completionRecipient(agent);\n\t\t\t\tconst persistedCompletion = {\n\t\t\t\t\tcompletionId: `completion:${agent.id}:${randomUUID()}`,\n\t\t\t\t\t...recipient,\n\t\t\t\t\trunId: agent.currentRunId ?? `run:${agent.id}:${randomUUID()}`,\n\t\t\t\t\tgeneration: agent.currentTurnGeneration ?? agent.turnGeneration ?? 1,\n\t\t\t\t\ttask: truncateUtf8(entry.task, 256).text,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\terror: \"Interrupted before execution\",\n\t\t\t\t\tcreatedAt: this.completionCreatedAt(),\n\t\t\t\t};\n\t\t\t\tagent.state = \"interrupted\";\n\t\t\t\tagent.completionRequirements = makeCompletionAvailable(agent.completionRequirements, {\n\t\t\t\t\trunId: persistedCompletion.runId,\n\t\t\t\t\tgeneration: persistedCompletion.generation,\n\t\t\t\t\tcompletionId: persistedCompletion.completionId,\n\t\t\t\t\tterminalState: agent.state,\n\t\t\t\t\tupdatedAt: persistedCompletion.createdAt,\n\t\t\t\t});\n\t\t\t\tagent.pendingCompletions = [...(agent.pendingCompletions ?? []), persistedCompletion];\n\t\t\t\tthis.enqueueCompletionMessage(agent, persistedCompletion, persistedCompletion.error);\n\t\t\t\tclearCurrentTurn(agent);\n\t\t\t\tagent.updatedAt = this.now();\n\t\t\t\tconst persisted = await this.persistTerminalState().then(\n\t\t\t\t\t() => true,\n\t\t\t\t\t() => false,\n\t\t\t\t);\n\t\t\t\tconst completion: AgentTurnCompletion = {\n\t\t\t\t\t...persistedCompletion,\n\t\t\t\t\tagent: this.copy(agent),\n\t\t\t\t};\n\t\t\t\tentry.resolve(agent);\n\t\t\t\tthis.running.delete(agentId);\n\t\t\t\tif (persisted) await this.notifyTurnComplete(completion);\n\t\t\t\treturn this.copy(agent);\n\t\t\t}\n\t\t}\n\t\tthis.controllers.get(agentId)?.abort();\n\t\tawait this.running.get(agentId);\n\t\treturn this.copy(this.require(agentId));\n\t}\n\n\tasync closeTree(id: string): Promise<ManagedAgent[]> {\n\t\tconst results: ManagedAgent[] = [];\n\t\tconst failures: unknown[] = [];\n\t\tfor (const target of this.descendants(id).reverse()) {\n\t\t\tconst agent = this.require(target);\n\t\t\tif (agent.state === \"closed\") continue;\n\t\t\ttry {\n\t\t\t\tresults.push(await this.close(target));\n\t\t\t} catch (error) {\n\t\t\t\tfailures.push(error);\n\t\t\t\tconst closed = this.get(target);\n\t\t\t\tif (closed?.state === \"closed\") results.push(closed);\n\t\t\t}\n\t\t}\n\t\tif (failures.length > 0) {\n\t\t\tthrow new AggregateError(failures, `Failed to release ${failures.length} subagent(s)`);\n\t\t}\n\t\treturn results;\n\t}\n\n\tasync close(id: string): Promise<ManagedAgent> {\n\t\tconst agent = this.require(id);\n\t\tconst agentId = agent.id;\n\t\tif (agent.state === \"closed\") throw new Error(`Agent ${id} is already closed`);\n\t\tif (agent.children.some((childId) => this.agents.get(childId)?.state !== \"closed\")) {\n\t\t\tthrow new Error(`Agent ${id} has active descendants; close the subtree instead`);\n\t\t}\n\t\tif (agent.state === \"starting\" || agent.state === \"running\") {\n\t\t\tif (agent.capabilityGrant?.state === \"active\") {\n\t\t\t\tagent.capabilityGrant = revokeCapabilityGrant(agent.capabilityGrant, \"closed\", this.now());\n\t\t\t}\n\t\t\tif (agent.executionPlan) {\n\t\t\t\tagent.executionPlan = rotateExecutionPlanGeneration(agent.executionPlan);\n\t\t\t}\n\t\t}\n\t\tif (agent.state === \"starting\") {\n\t\t\tconst index = this.queue.findIndex((entry) => entry.agent.id === agentId);\n\t\t\tif (index >= 0) {\n\t\t\t\tconst [entry] = this.queue.splice(index, 1);\n\t\t\t\tentry.resolve(agent);\n\t\t\t\tthis.running.delete(agentId);\n\t\t\t}\n\t\t}\n\t\tthis.controllers.get(agentId)?.abort();\n\t\tawait this.running.get(agentId)?.catch(() => undefined);\n\t\tagent.state = \"closed\";\n\t\tagent.updatedAt = this.now();\n\t\tagent.completionRequirements = cancelPendingCompletionRequirements(\n\t\t\tagent.completionRequirements,\n\t\t\tagent.state,\n\t\t\tagent.updatedAt,\n\t\t);\n\t\tif (agent.parentId) {\n\t\t\tconst parent = this.agents.get(agent.parentId);\n\t\t\tif (parent) parent.children = parent.children.filter((childId) => childId !== agentId);\n\t\t}\n\t\tclearCurrentTurn(agent);\n\t\tlet releaseError: unknown;\n\t\ttry {\n\t\t\tawait this.transport.release?.(this.copy(agent));\n\t\t} catch (error) {\n\t\t\treleaseError = error;\n\t\t}\n\t\tthis.pruneClosedAgents();\n\t\tawait this.changed();\n\t\tif (releaseError) throw releaseError;\n\t\treturn this.copy(agent);\n\t}\n\n\tasync closeAll(): Promise<void> {\n\t\tconst roots = [...this.agents.values()]\n\t\t\t.filter((agent) => agent.state !== \"closed\" && !agent.parentId)\n\t\t\t.map((agent) => agent.id);\n\t\tconst results = await Promise.allSettled(roots.map((id) => this.closeTree(id)));\n\t\tconst failures = results.flatMap((result) =>\n\t\t\tresult.status === \"rejected\" ? [result.reason] : [],\n\t\t);\n\t\tif (failures.length > 0) {\n\t\t\tthrow new AggregateError(failures, `Failed to close ${failures.length} subagent tree(s)`);\n\t\t}\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\tthis.shutdownController.abort(new Error(\"Subagent registry is shutting down\"));\n\t\tfor (const entry of this.queue.splice(0)) {\n\t\t\tif (entry.agent.capabilityGrant?.state === \"active\") {\n\t\t\t\tentry.agent.capabilityGrant = revokeCapabilityGrant(\n\t\t\t\t\tentry.agent.capabilityGrant,\n\t\t\t\t\t\"shutdown\",\n\t\t\t\t\tthis.now(),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (entry.agent.executionPlan) {\n\t\t\t\tentry.agent.executionPlan = rotateExecutionPlanGeneration(entry.agent.executionPlan);\n\t\t\t}\n\t\t\tentry.agent.state = \"interrupted\";\n\t\t\tclearCurrentTurn(entry.agent);\n\t\t\tentry.resolve(entry.agent);\n\t\t\tthis.running.delete(entry.agent.id);\n\t\t}\n\t\tfor (const id of this.controllers.keys()) {\n\t\t\tconst agent = this.agents.get(id);\n\t\t\tif (agent?.capabilityGrant?.state === \"active\") {\n\t\t\t\tagent.capabilityGrant = revokeCapabilityGrant(\n\t\t\t\t\tagent.capabilityGrant,\n\t\t\t\t\t\"shutdown\",\n\t\t\t\t\tthis.now(),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (agent?.executionPlan) {\n\t\t\t\tagent.executionPlan = rotateExecutionPlanGeneration(agent.executionPlan);\n\t\t\t}\n\t\t}\n\t\tfor (const controller of this.controllers.values()) controller.abort();\n\t\tawait Promise.all([...this.running.values()].map((turn) => turn.catch(() => undefined)));\n\t\tfor (const agent of this.agents.values()) {\n\t\t\tif (agent.state !== \"closed\") {\n\t\t\t\tif (agent.state === \"running\" || agent.state === \"starting\") {\n\t\t\t\t\tagent.state = \"interrupted\";\n\t\t\t\t}\n\t\t\t\tagent.completionRequirements = cancelPendingCompletionRequirements(\n\t\t\t\t\tagent.completionRequirements,\n\t\t\t\t\tagent.state,\n\t\t\t\t\tthis.now(),\n\t\t\t\t);\n\t\t\t\tclearCurrentTurn(agent);\n\t\t\t}\n\t\t}\n\t\tlet shutdownError: unknown;\n\t\ttry {\n\t\t\tawait this.transport.shutdown?.();\n\t\t} catch (error) {\n\t\t\tshutdownError = error;\n\t\t}\n\t\tawait this.changed(true);\n\t\tif (shutdownError) throw shutdownError;\n\t}\n\n\tinspectionCounts(): AgentInspectionCounts {\n\t\tlet activeAgents = 0;\n\t\tlet retainedAgents = 0;\n\t\tfor (const agent of this.agents.values()) {\n\t\t\tif (agent.state === \"starting\" || agent.state === \"running\") activeAgents++;\n\t\t\tif (agent.state !== \"closed\") retainedAgents++;\n\t\t}\n\t\treturn { activeAgents, retainedAgents };\n\t}\n\n\tlistInspection(includeClosed = false): AgentRunInspectionSummary[] {\n\t\treturn [...this.agents.values()]\n\t\t\t.filter((agent) => includeClosed || agent.state !== \"closed\")\n\t\t\t.sort((left, right) => left.createdAt - right.createdAt)\n\t\t\t.map((agent) => this.inspectSummary(agent));\n\t}\n\n\tgetInspection(id: string): AgentRunInspectionDetail | undefined {\n\t\tconst agent = this.findReference(id);\n\t\tif (!agent) return undefined;\n\t\treturn {\n\t\t\t...this.inspectSummary(agent),\n\t\t\tcwd: agent.cwd,\n\t\t\tthinkingLevel: agent.thinkingLevel,\n\t\t\ttimeoutMs: agent.timeoutMs,\n\t\t\tcurrentTimeoutMs: agent.currentTimeoutMs,\n\t\t\tidleTimeoutMs: agent.idleTimeoutMs,\n\t\t\tcurrentIdleTimeoutMs: agent.currentIdleTimeoutMs,\n\t\t\tmaxTurns: agent.maxTurns,\n\t\t\tcurrentMaxTurns: agent.currentMaxTurns,\n\t\t\tmaxToolCalls: agent.maxToolCalls,\n\t\t\tcurrentMaxToolCalls: agent.currentMaxToolCalls,\n\t\t\tcurrentTask: agent.currentTask,\n\t\t\tcurrentRunId: agent.currentRunId,\n\t\t\tcurrentTurnGeneration: agent.currentTurnGeneration,\n\t\t\tcompletionRequirements: (agent.completionRequirements ?? []).map((record) => ({\n\t\t\t\t...record,\n\t\t\t})),\n\t\t\terror: agent.error,\n\t\t\tworkspaceMode: agent.workspaceMode,\n\t\t\tcontextTurns: agent.contextTurns,\n\t\t\tcontextBytes: agent.contextBytes,\n\t\t\tcontextSources: agent.contextSourceIds?.length,\n\t\t\tcontextTruncated: agent.contextTruncated,\n\t\t\tcontract: agent.contract ? structuredClone(agent.contract) : undefined,\n\t\t\tresultFormat: agent.resultFormat,\n\t\t\ttarget: agent.target ? { ...agent.target, trust: { ...agent.target.trust } } : undefined,\n\t\t\tpolicy: agent.policy\n\t\t\t\t? {\n\t\t\t\t\t\tinherited: [...agent.policy.inherited],\n\t\t\t\t\t\toverridden: [...agent.policy.overridden],\n\t\t\t\t\t\tunsupported: [...agent.policy.unsupported],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t\tstructuredResult: agent.structuredResult\n\t\t\t\t? copyStructuredResult(agent.structuredResult)\n\t\t\t\t: undefined,\n\t\t\ttermination: agent.termination ? copyTurnTerminationReport(agent.termination) : undefined,\n\t\t\toutcome: agent.outcome ? structuredClone(agent.outcome) : undefined,\n\t\t\texecutionPlan: agent.executionPlan ? copyExecutionPlan(agent.executionPlan) : undefined,\n\t\t\tcapabilityGrant: agent.capabilityGrant ? structuredClone(agent.capabilityGrant) : undefined,\n\t\t\tsemanticSnapshot: agent.semanticSnapshot\n\t\t\t\t? structuredClone(agent.semanticSnapshot)\n\t\t\t\t: undefined,\n\t\t\tsemanticCompatibility: agent.semanticCompatibility\n\t\t\t\t? structuredClone(agent.semanticCompatibility)\n\t\t\t\t: undefined,\n\t\t\ttelemetry: agent.telemetry ? copyTelemetry(agent.telemetry) : undefined,\n\t\t};\n\t}\n\n\tlist(includeClosed = false, rootId?: string): ManagedAgent[] {\n\t\treturn [...this.agents.values()]\n\t\t\t.filter((agent) => !rootId || agent.rootId === rootId)\n\t\t\t.filter((agent) => includeClosed || agent.state !== \"closed\")\n\t\t\t.sort((a, b) => a.createdAt - b.createdAt)\n\t\t\t.map((agent) => this.copy(agent));\n\t}\n\n\tget(reference: string): ManagedAgent | undefined {\n\t\treturn this.resolveAgent(reference);\n\t}\n\n\tresolveAgent(reference: string, senderId = \"root\"): ManagedAgent | undefined {\n\t\tconst agent = this.findReference(reference, senderId);\n\t\treturn agent ? this.copy(agent) : undefined;\n\t}\n\n\treconcileCompletionRequirements(\n\t\tactiveRecords: ReadonlyMap<\n\t\t\tstring,\n\t\t\timport(\"./completion-requirement.js\").CompletionRequirementRecord\n\t\t>,\n\t\tobservedState: boolean,\n\t): void {\n\t\tif (!observedState) return;\n\t\tfor (const agent of this.agents.values()) {\n\t\t\tagent.completionRequirements = (agent.completionRequirements ?? []).flatMap((record) => {\n\t\t\t\tconst restored = activeRecords.get(completionRequirementKey(record));\n\t\t\t\tif (!restored) return [];\n\t\t\t\tif (\n\t\t\t\t\trestored.state === \"pending\" &&\n\t\t\t\t\tagent.state !== \"running\" &&\n\t\t\t\t\tagent.state !== \"starting\"\n\t\t\t\t) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...restored,\n\t\t\t\t\t\t\tstate: \"cancelled\" as const,\n\t\t\t\t\t\t\tterminalState: \"interrupted\" as const,\n\t\t\t\t\t\t\tupdatedAt: Math.max(restored.updatedAt, this.now()),\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn [{ ...restored }];\n\t\t\t});\n\t\t}\n\t}\n\n\tlistPendingCompletions(): AgentTurnCompletion[] {\n\t\treturn [...this.agents.values()]\n\t\t\t.flatMap((agent) =>\n\t\t\t\t(agent.pendingCompletions ?? []).map((completion) => ({\n\t\t\t\t\t...completion,\n\t\t\t\t\tagent: this.copy(agent),\n\t\t\t\t})),\n\t\t\t)\n\t\t\t.sort(\n\t\t\t\t(left, right) =>\n\t\t\t\t\tleft.createdAt - right.createdAt ||\n\t\t\t\t\tleft.generation - right.generation ||\n\t\t\t\t\tleft.completionId.localeCompare(right.completionId),\n\t\t\t);\n\t}\n\n\tasync markCompletionDelivered(completionId: string, deliveredAt: number): Promise<void> {\n\t\tconst agent = [...this.agents.values()].find((candidate) =>\n\t\t\tcandidate.pendingCompletions?.some((completion) => completion.completionId === completionId),\n\t\t);\n\t\tif (!agent) return;\n\t\tconst acknowledged = (agent.pendingCompletions ?? []).find(\n\t\t\t(completion) => completion.completionId === completionId,\n\t\t);\n\t\tif (!acknowledged) return;\n\t\tagent.completionRequirements = makeCompletionVisible(\n\t\t\tagent.completionRequirements,\n\t\t\tcompletionId,\n\t\t\tdeliveredAt,\n\t\t);\n\t\tagent.pendingCompletions = (agent.pendingCompletions ?? []).filter(\n\t\t\t(completion) => completion.completionId !== completionId,\n\t\t);\n\t\tif (agent.telemetry) {\n\t\t\tagent.telemetry = {\n\t\t\t\t...agent.telemetry,\n\t\t\t\tupdatedAt: deliveredAt,\n\t\t\t\ttiming: { ...agent.telemetry.timing, completionDeliveredAt: deliveredAt },\n\t\t\t};\n\t\t}\n\t\tagent.updatedAt = Math.max(agent.updatedAt, deliveredAt);\n\t\ttry {\n\t\t\tawait this.changed(true);\n\t\t} catch (error) {\n\t\t\tagent.completionRequirements = (agent.completionRequirements ?? []).map((record) =>\n\t\t\t\trecord.completionId === completionId && record.state === \"visible\"\n\t\t\t\t\t? { ...record, state: \"available\", updatedAt: acknowledged.createdAt }\n\t\t\t\t\t: record,\n\t\t\t);\n\t\t\tif (\n\t\t\t\t!agent.pendingCompletions?.some(\n\t\t\t\t\t(completion) => completion.completionId === acknowledged.completionId,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tagent.pendingCompletions = [...(agent.pendingCompletions ?? []), acknowledged].sort(\n\t\t\t\t\t(left, right) => left.createdAt - right.createdAt || left.generation - right.generation,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (agent.telemetry?.timing.completionDeliveredAt === deliveredAt) {\n\t\t\t\tconst { completionDeliveredAt: _discarded, ...timing } = agent.telemetry.timing;\n\t\t\t\tagent.telemetry = { ...agent.telemetry, timing };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync sweepExpired(): Promise<number> {\n\t\tconst removed = this.evictExpired();\n\t\tlet releaseError: unknown;\n\t\ttry {\n\t\t\tawait this.releaseAgents(removed);\n\t\t} catch (error) {\n\t\t\treleaseError = error;\n\t\t}\n\t\tif (removed.length > 0) await this.changed();\n\t\tif (releaseError) throw releaseError;\n\t\treturn removed.length;\n\t}\n\n\tprivate startTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tlimits: TurnLimits & { timeoutMs?: number } = {},\n\t\tcompletionRequirement: CompletionRequirementMode = \"background\",\n\t): void {\n\t\tif ((agent.pendingCompletions?.length ?? 0) >= MAX_PENDING_COMPLETIONS_PER_AGENT) {\n\t\t\tthrow new Error(\n\t\t\t\t`Agent ${agent.id} has ${MAX_PENDING_COMPLETIONS_PER_AGENT} undelivered completions; wait for delivery before another turn`,\n\t\t\t);\n\t\t}\n\t\tagent.turnGeneration = (agent.turnGeneration ?? 0) + 1;\n\t\tagent.currentTurnGeneration = agent.turnGeneration;\n\t\tagent.currentRunId = `run:${agent.id}:${randomUUID()}`;\n\t\tif (completionRequirement === \"required\") {\n\t\t\tagent.completionRequirements = beginCompletionRequirement(agent.completionRequirements, {\n\t\t\t\trunId: agent.currentRunId,\n\t\t\t\tgeneration: agent.currentTurnGeneration,\n\t\t\t\tcreatedAt: this.now(),\n\t\t\t});\n\t\t}\n\t\tagent.state = \"starting\";\n\t\tagent.error = undefined;\n\t\tagent.currentTask = task;\n\t\tagent.currentTimeoutMs = limits.timeoutMs ?? agent.timeoutMs;\n\t\tagent.currentIdleTimeoutMs = limits.idleTimeoutMs ?? agent.idleTimeoutMs;\n\t\tagent.currentMaxTurns = limits.maxTurns ?? agent.maxTurns;\n\t\tagent.currentMaxToolCalls = limits.maxToolCalls ?? agent.maxToolCalls;\n\t\tagent.structuredResult = undefined;\n\t\tagent.termination = undefined;\n\t\tagent.outcome = undefined;\n\t\tagent.updatedAt = this.now();\n\t\tagent.telemetry = {\n\t\t\tphase: \"queued\",\n\t\t\tqueuePosition: this.queue.length + 1,\n\t\t\tupdatedAt: agent.updatedAt,\n\t\t\ttiming: { queuedAt: agent.updatedAt },\n\t\t\tbudgetSource: {\n\t\t\t\ttimeout: agent.currentTimeoutMs === undefined ? \"runtime\" : \"explicit\",\n\t\t\t\tidleTimeout: agent.currentIdleTimeoutMs === undefined ? \"runtime\" : \"explicit\",\n\t\t\t\tturnLimit: agent.currentMaxTurns === undefined ? \"runtime\" : \"explicit\",\n\t\t\t\ttoolCallLimit: agent.currentMaxToolCalls === undefined ? \"runtime\" : \"explicit\",\n\t\t\t},\n\t\t};\n\t\tlet resolveQueued!: (agent: ManagedAgent) => void;\n\t\tconst completion = new Promise<ManagedAgent>((resolve) => {\n\t\t\tresolveQueued = resolve;\n\t\t});\n\t\tthis.running.set(agent.id, completion);\n\t\tthis.queue.push({ agent, task, resolve: resolveQueued });\n\t\tthis.updateQueuePositions();\n\t\tvoid this.changed();\n\t\tthis.pumpQueue();\n\t}\n\n\tprivate pumpQueue(): void {\n\t\twhile (this.controllers.size < this.maxActiveTurns && this.queue.length > 0) {\n\t\t\tconst next = this.queue.shift();\n\t\t\tif (!next) return;\n\t\t\tthis.runQueuedTurn(next.agent, next.task, next.resolve);\n\t\t\tthis.updateQueuePositions();\n\t\t}\n\t}\n\n\tprivate runQueuedTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tresolveQueued: (agent: ManagedAgent) => void,\n\t): void {\n\t\tif (\n\t\t\tagent.capabilityGrant &&\n\t\t\tagent.executionPlan &&\n\t\t\t!isCapabilityGrantActive(agent.capabilityGrant, agent.executionPlan, this.now())\n\t\t) {\n\t\t\tagent.state = \"failed\";\n\t\t\tagent.error = \"Capability grant expired or no longer matches the accepted plan\";\n\t\t\tagent.outcome = classifyStructuredOutcome(\"failed\", \"capability-grant-invalid\");\n\t\t\tconst recipient = this.completionRecipient(agent);\n\t\t\tconst persistedCompletion = {\n\t\t\t\tcompletionId: `completion:${agent.id}:${randomUUID()}`,\n\t\t\t\t...recipient,\n\t\t\t\trunId: agent.currentRunId ?? `run:${agent.id}:${randomUUID()}`,\n\t\t\t\tgeneration: agent.currentTurnGeneration ?? agent.turnGeneration ?? 1,\n\t\t\t\ttask: truncateUtf8(task, 256).text,\n\t\t\t\toutput: \"\",\n\t\t\t\terror: truncateUtf8(agent.error, 512).text,\n\t\t\t\tcreatedAt: this.completionCreatedAt(),\n\t\t\t};\n\t\t\tagent.completionRequirements = makeCompletionAvailable(agent.completionRequirements, {\n\t\t\t\trunId: persistedCompletion.runId,\n\t\t\t\tgeneration: persistedCompletion.generation,\n\t\t\t\tcompletionId: persistedCompletion.completionId,\n\t\t\t\tterminalState: agent.state,\n\t\t\t\tupdatedAt: persistedCompletion.createdAt,\n\t\t\t});\n\t\t\tagent.pendingCompletions = [...(agent.pendingCompletions ?? []), persistedCompletion];\n\t\t\tthis.enqueueCompletionMessage(agent, persistedCompletion, persistedCompletion.error ?? \"\");\n\t\t\tclearCurrentTurn(agent);\n\t\t\tagent.updatedAt = this.now();\n\t\t\tvoid this.persistTerminalState()\n\t\t\t\t.then(() =>\n\t\t\t\t\tthis.notifyTurnComplete({\n\t\t\t\t\t\t...persistedCompletion,\n\t\t\t\t\t\tagent: this.copy(agent),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.catch(() => undefined)\n\t\t\t\t.finally(() => {\n\t\t\t\t\tresolveQueued(agent);\n\t\t\t\t\tthis.running.delete(agent.id);\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst controller = new AbortController();\n\t\tthis.controllers.set(agent.id, controller);\n\t\tagent.state = \"running\";\n\t\tagent.updatedAt = this.now();\n\t\tconst startedAt = this.now();\n\t\tconst runId = agent.currentRunId ?? `run:${agent.id}:${randomUUID()}`;\n\t\tconst turnGeneration = agent.currentTurnGeneration ?? agent.turnGeneration ?? 1;\n\t\tconst completionKey = `completion:${agent.id}:${randomUUID()}`;\n\t\tconst acceptedPlanId = agent.executionPlan?.id;\n\t\tlet completionContent = \"\";\n\t\tlet completionOutput = \"\";\n\t\tlet completionError: string | undefined;\n\t\tconst visibleMailboxMessageIds = [...(agent.currentMailboxMessageIds ?? [])];\n\t\tvoid this.transport\n\t\t\t.runTurn(this.copy(agent), task, controller.signal, (progress) => {\n\t\t\t\tagent.telemetry = {\n\t\t\t\t\t...progress,\n\t\t\t\t\tqueuePosition: undefined,\n\t\t\t\t\ttiming: {\n\t\t\t\t\t\tqueuedAt: agent.telemetry?.timing.queuedAt,\n\t\t\t\t\t\t...progress.timing,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t})\n\t\t\t.then(async (outcome) => {\n\t\t\t\tif (visibleMailboxMessageIds.length > 0) {\n\t\t\t\t\tawait this.acknowledgeVisibleMessages(\n\t\t\t\t\t\tagent.id,\n\t\t\t\t\t\tvisibleMailboxMessageIds,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tthis.now(),\n\t\t\t\t\t).catch(() => undefined);\n\t\t\t\t}\n\t\t\t\tconst output = truncateUtf8(outcome.output, this.maxTurnOutputBytes).text;\n\t\t\t\tconst error = outcome.error\n\t\t\t\t\t? truncateUtf8(outcome.error, this.maxTurnOutputBytes).text\n\t\t\t\t\t: undefined;\n\t\t\t\tagent.history.push({\n\t\t\t\t\trunId,\n\t\t\t\t\tgeneration: turnGeneration,\n\t\t\t\t\ttask,\n\t\t\t\t\toutput,\n\t\t\t\t\tstartedAt,\n\t\t\t\t\tcompletedAt: this.now(),\n\t\t\t\t\texitCode: outcome.exitCode,\n\t\t\t\t\ttruncated: outcome.truncated,\n\t\t\t\t\ttermination: outcome.termination\n\t\t\t\t\t\t? copyTurnTerminationReport(outcome.termination)\n\t\t\t\t\t\t: undefined,\n\t\t\t\t});\n\t\t\t\tagent.history = agent.history.slice(-this.maxHistoryTurns);\n\t\t\t\tagent.structuredResult =\n\t\t\t\t\toutcome.structuredResult ?? parseAnyStructuredSubagentResult(output, agent.resultFormat);\n\t\t\t\tconst malformedStructuredResult =\n\t\t\t\t\tagent.resultFormat !== undefined &&\n\t\t\t\t\tagent.resultFormat !== \"text\" &&\n\t\t\t\t\tagent.structuredResult === undefined;\n\t\t\t\tconst finalizedPartial =\n\t\t\t\t\toutcome.termination?.finalization.status === \"completed\" && output.trim().length > 0;\n\t\t\t\tagent.outcome = outcome.aborted\n\t\t\t\t\t? classifyStructuredOutcome(\"interrupted\", \"transport-aborted\")\n\t\t\t\t\t: malformedStructuredResult\n\t\t\t\t\t\t? classifyStructuredOutcome(\"contract-invalid\", \"malformed-structured-result\")\n\t\t\t\t\t\t: finalizedPartial\n\t\t\t\t\t\t\t? classifyStructuredOutcome(\"partial\", outcome.termination?.reason)\n\t\t\t\t\t\t\t: (outcome.outcome ??\n\t\t\t\t\t\t\t\t(agent.structuredResult?.version === \"pi-subagents:result:v2\"\n\t\t\t\t\t\t\t\t\t? classifyStructuredOutcome(\n\t\t\t\t\t\t\t\t\t\t\tagent.structuredResult.status,\n\t\t\t\t\t\t\t\t\t\t\tagent.structuredResult.reasonCode,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: undefined));\n\t\t\t\tconst staleGeneration = Boolean(\n\t\t\t\t\tacceptedPlanId && agent.executionPlan?.id !== acceptedPlanId,\n\t\t\t\t);\n\t\t\t\tif (staleGeneration) {\n\t\t\t\t\tagent.outcome = classifyStructuredOutcome(\"stale\", \"cancelled-generation\");\n\t\t\t\t}\n\t\t\t\tagent.state = staleGeneration\n\t\t\t\t\t? \"stale\"\n\t\t\t\t\t: outcome.aborted\n\t\t\t\t\t\t? \"interrupted\"\n\t\t\t\t\t\t: outcome.exitCode !== 0 && agent.outcome?.status !== \"partial\"\n\t\t\t\t\t\t\t? \"failed\"\n\t\t\t\t\t\t\t: lifecycleStateForOutcome(agent.outcome?.status);\n\t\t\t\tagent.error = error;\n\t\t\t\tif (agent.capabilityGrant?.state === \"active\") {\n\t\t\t\t\tagent.capabilityGrant = revokeCapabilityGrant(\n\t\t\t\t\t\tagent.capabilityGrant,\n\t\t\t\t\t\t\"turn-settled\",\n\t\t\t\t\t\tthis.now(),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tagent.policy = outcome.policy;\n\t\t\t\tagent.telemetry = outcome.telemetry\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...outcome.telemetry,\n\t\t\t\t\t\t\ttiming: {\n\t\t\t\t\t\t\t\tqueuedAt: agent.telemetry?.timing.queuedAt,\n\t\t\t\t\t\t\t\t...outcome.telemetry.timing,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbudgetSource: outcome.telemetry.budgetSource ?? agent.telemetry?.budgetSource,\n\t\t\t\t\t\t}\n\t\t\t\t\t: agent.telemetry;\n\t\t\t\tagent.termination = outcome.termination\n\t\t\t\t\t? copyTurnTerminationReport(outcome.termination)\n\t\t\t\t\t: undefined;\n\t\t\t\tcompletionOutput = output;\n\t\t\t\tcompletionError = error;\n\t\t\t\tcompletionContent = output || error || `${agent.id} ${agent.state}`;\n\t\t\t\treturn agent;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst staleGeneration = Boolean(\n\t\t\t\t\tacceptedPlanId && agent.executionPlan?.id !== acceptedPlanId,\n\t\t\t\t);\n\t\t\t\tagent.state = staleGeneration\n\t\t\t\t\t? \"stale\"\n\t\t\t\t\t: controller.signal.aborted\n\t\t\t\t\t\t? \"interrupted\"\n\t\t\t\t\t\t: \"failed\";\n\t\t\t\tagent.outcome = classifyStructuredOutcome(\n\t\t\t\t\tstaleGeneration ? \"stale\" : controller.signal.aborted ? \"interrupted\" : \"failed\",\n\t\t\t\t\tstaleGeneration\n\t\t\t\t\t\t? \"cancelled-generation\"\n\t\t\t\t\t\t: controller.signal.aborted\n\t\t\t\t\t\t\t? \"transport-aborted\"\n\t\t\t\t\t\t\t: \"transport-error\",\n\t\t\t\t);\n\t\t\t\tif (agent.capabilityGrant?.state === \"active\") {\n\t\t\t\t\tagent.capabilityGrant = revokeCapabilityGrant(\n\t\t\t\t\t\tagent.capabilityGrant,\n\t\t\t\t\t\t\"turn-failed\",\n\t\t\t\t\t\tthis.now(),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tagent.error = truncateUtf8(\n\t\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t\t\tthis.maxTurnOutputBytes,\n\t\t\t\t).text;\n\t\t\t\tagent.history.push({\n\t\t\t\t\trunId,\n\t\t\t\t\tgeneration: turnGeneration,\n\t\t\t\t\ttask,\n\t\t\t\t\toutput: \"\",\n\t\t\t\t\tstartedAt,\n\t\t\t\t\tcompletedAt: this.now(),\n\t\t\t\t\texitCode: controller.signal.aborted ? 130 : 1,\n\t\t\t\t});\n\t\t\t\tagent.history = agent.history.slice(-this.maxHistoryTurns);\n\t\t\t\tagent.telemetry = {\n\t\t\t\t\t...(agent.telemetry ?? {\n\t\t\t\t\t\tphase: \"failed\",\n\t\t\t\t\t\tupdatedAt: this.now(),\n\t\t\t\t\t\ttiming: { queuedAt: startedAt },\n\t\t\t\t\t}),\n\t\t\t\t\tphase: controller.signal.aborted ? \"interrupted\" : \"failed\",\n\t\t\t\t\tfailurePhase: agent.telemetry?.phase ?? \"running\",\n\t\t\t\t\tupdatedAt: this.now(),\n\t\t\t\t};\n\t\t\t\tcompletionError = agent.error;\n\t\t\t\tcompletionContent = agent.error;\n\t\t\t\treturn agent;\n\t\t\t})\n\t\t\t.finally(async () => {\n\t\t\t\tconst recipient = this.completionRecipient(agent);\n\t\t\t\tconst persistedCompletion = {\n\t\t\t\t\tcompletionId: completionKey,\n\t\t\t\t\t...recipient,\n\t\t\t\t\trunId,\n\t\t\t\t\tgeneration: turnGeneration,\n\t\t\t\t\ttask: truncateUtf8(task, 256).text,\n\t\t\t\t\toutput: truncateUtf8(completionOutput, MAX_TOOL_MESSAGE_BYTES).text,\n\t\t\t\t\terror: completionError ? truncateUtf8(completionError, 512).text : undefined,\n\t\t\t\t\tcreatedAt: this.completionCreatedAt(),\n\t\t\t\t};\n\t\t\t\tagent.completionRequirements = makeCompletionAvailable(agent.completionRequirements, {\n\t\t\t\t\trunId,\n\t\t\t\t\tgeneration: turnGeneration,\n\t\t\t\t\tcompletionId: persistedCompletion.completionId,\n\t\t\t\t\tterminalState: agent.state,\n\t\t\t\t\tupdatedAt: persistedCompletion.createdAt,\n\t\t\t\t});\n\t\t\t\tagent.pendingCompletions = [...(agent.pendingCompletions ?? []), persistedCompletion];\n\t\t\t\tthis.enqueueCompletionMessage(agent, persistedCompletion, completionContent);\n\t\t\t\tclearCurrentTurn(agent);\n\t\t\t\tagent.updatedAt = this.now();\n\t\t\t\tconst persisted = await this.persistTerminalState().then(\n\t\t\t\t\t() => true,\n\t\t\t\t\t() => false,\n\t\t\t\t);\n\t\t\t\tthis.controllers.delete(agent.id);\n\t\t\t\tconst turnCompletion: AgentTurnCompletion = {\n\t\t\t\t\t...persistedCompletion,\n\t\t\t\t\tagent: this.copy(agent),\n\t\t\t\t};\n\t\t\t\tthis.running.delete(agent.id);\n\t\t\t\tresolveQueued(agent);\n\t\t\t\tthis.pumpQueue();\n\t\t\t\tif (persisted) await this.notifyTurnComplete(turnCompletion);\n\t\t\t});\n\t}\n\n\tprivate updateQueuePositions(): void {\n\t\tfor (const [index, entry] of this.queue.entries()) {\n\t\t\tif (!entry.agent.telemetry) continue;\n\t\t\tentry.agent.telemetry = {\n\t\t\t\t...entry.agent.telemetry,\n\t\t\t\tqueuePosition: index + 1,\n\t\t\t\tupdatedAt: this.now(),\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate completionRecipient(\n\t\tagent: ManagedAgent,\n\t): Pick<\n\t\tNonNullable<ManagedAgent[\"pendingCompletions\"]>[number],\n\t\t\"recipientId\" | \"recipientPath\"\n\t> {\n\t\treturn resolveCompletionRecipient(agent, (id) => this.agents.get(id));\n\t}\n\n\tprivate enqueueCompletionMessage(\n\t\tagent: ManagedAgent,\n\t\tcompletion: NonNullable<ManagedAgent[\"pendingCompletions\"]>[number],\n\t\tcontent: string,\n\t): void {\n\t\tif (!completion.recipientId || completion.recipientId === \"root\") return;\n\t\tconst recipient = this.agents.get(completion.recipientId);\n\t\tif (!recipient || recipient.state === \"closed\") return;\n\t\tthis.enqueueMessage(\n\t\t\trecipient,\n\t\t\tcontent || \"(no output)\",\n\t\t\tagent.id,\n\t\t\tcompletion.completionId,\n\t\t\tcompletion.completionId,\n\t\t);\n\t}\n\n\tprivate enqueueMessage(\n\t\trecipient: ManagedAgent,\n\t\tcontent: string,\n\t\tsenderId: string,\n\t\tdeduplicationKey?: string,\n\t\tcompletionId?: string,\n\t): AgentMailboxMessage {\n\t\tif (deduplicationKey) {\n\t\t\tconst existing = recipient.mailbox.find(\n\t\t\t\t(message) => message.deduplicationKey === deduplicationKey && message.senderId === senderId,\n\t\t\t);\n\t\t\tif (existing) return existing;\n\t\t}\n\t\tconst bounded = truncateUtf8(content, this.maxMailboxMessageBytes);\n\t\tconst message: AgentMailboxMessage = {\n\t\t\tid: `msg_${randomUUID()}`,\n\t\t\tsenderId,\n\t\t\trecipientId: recipient.id,\n\t\t\tcontent: bounded.text,\n\t\t\tcreatedAt: this.now(),\n\t\t\tdeduplicationKey,\n\t\t\tcompletionId,\n\t\t};\n\t\trecipient.mailbox.push(message);\n\t\trecipient.mailbox = recipient.mailbox.slice(-this.maxMailboxMessages);\n\t\trecipient.updatedAt = this.now();\n\t\treturn message;\n\t}\n\n\tprivate descendants(id: string): string[] {\n\t\tconst root = this.require(id);\n\t\tconst result: string[] = [];\n\t\tconst visit = (agent: ManagedAgent) => {\n\t\t\tresult.push(agent.id);\n\t\t\tfor (const childId of agent.children) {\n\t\t\t\tconst child = this.agents.get(childId);\n\t\t\t\tif (child) visit(child);\n\t\t\t}\n\t\t};\n\t\tvisit(root);\n\t\treturn result;\n\t}\n\n\tprivate require(reference: string, senderId = \"root\"): ManagedAgent {\n\t\tconst agent = this.findReference(reference, senderId);\n\t\tif (!agent) throw new Error(`Unknown subagent: ${safeTerminalLine(reference, 256)}`);\n\t\treturn agent;\n\t}\n\n\tprivate findReference(reference: string, senderId = \"root\"): ManagedAgent | undefined {\n\t\tconst direct = this.agents.get(reference);\n\t\tif (direct) return direct;\n\t\tconst sender =\n\t\t\tsenderId === \"root\"\n\t\t\t\t? undefined\n\t\t\t\t: (this.agents.get(senderId) ?? this.findByTaskPath(senderId));\n\t\tif (senderId !== \"root\" && !sender) return undefined;\n\t\tlet taskPath: string;\n\t\ttry {\n\t\t\ttaskPath = resolveTaskPath(sender?.taskPath ?? ROOT_TASK_PATH, reference);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.findByTaskPath(taskPath);\n\t}\n\n\tprivate findByTaskPath(taskPath: string): ManagedAgent | undefined {\n\t\treturn [...this.agents.values()].find(\n\t\t\t(agent) => agent.state !== \"closed\" && agent.taskPath === taskPath,\n\t\t);\n\t}\n\n\tprivate reserveRestoredIdentity(\n\t\trecord: ManagedAgent,\n\t\tparentPath: string,\n\t\treservedPaths: Set<string>,\n\t): Pick<ManagedAgent, \"taskName\" | \"taskPath\"> {\n\t\tlet taskName: string | undefined;\n\t\ttry {\n\t\t\ttaskName = record.taskName ? validateTaskName(record.taskName) : undefined;\n\t\t} catch {\n\t\t\ttaskName = undefined;\n\t\t}\n\t\tif (!taskName && record.taskPath) {\n\t\t\ttry {\n\t\t\t\tconst storedPath = validateTaskPath(record.taskPath);\n\t\t\t\tconst storedName = storedPath.slice(storedPath.lastIndexOf(\"/\") + 1);\n\t\t\t\ttaskName = validateTaskName(storedName);\n\t\t\t} catch {\n\t\t\t\ttaskName = undefined;\n\t\t\t}\n\t\t}\n\t\ttaskName ??= deriveTaskName(record.id);\n\t\tlet taskPath = joinTaskPath(parentPath, taskName);\n\t\tif (reservedPaths.has(taskPath)) {\n\t\t\ttaskName = deriveTaskName(record.id);\n\t\t\ttaskPath = joinTaskPath(parentPath, taskName);\n\t\t}\n\t\tif (reservedPaths.has(taskPath)) {\n\t\t\tthrow new Error(`Cannot restore duplicate canonical subagent task path: ${taskPath}`);\n\t\t}\n\t\treservedPaths.add(taskPath);\n\t\treturn { taskName, taskPath };\n\t}\n\n\tprivate assertRequiredCompletionCapacity(mode: CompletionRequirementMode | undefined): void {\n\t\tif (mode !== \"required\") return;\n\t\tconst unresolved = [...this.agents.values()].reduce(\n\t\t\t(sum, agent) => sum + pendingRequiredCompletionCount(agent),\n\t\t\t0,\n\t\t);\n\t\tif (unresolved >= MAX_UNRESOLVED_REQUIRED_COMPLETIONS) {\n\t\t\tthrow new Error(\n\t\t\t\t`Required subagent completion capacity reached (${MAX_UNRESOLVED_REQUIRED_COMPLETIONS}); wait for exact completion visibility or terminalize an existing requirement`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate retainedCount(): number {\n\t\treturn [...this.agents.values()].filter((agent) => agent.state !== \"closed\").length;\n\t}\n\n\tprivate completionCreatedAt(): number {\n\t\tthis.lastCompletionAt = Math.max(this.now(), this.lastCompletionAt + 1);\n\t\treturn this.lastCompletionAt;\n\t}\n\n\tprivate evictExpired(): ManagedAgent[] {\n\t\tconst cutoff = this.now() - this.idleTtlMs;\n\t\tconst protectedIds = new Set<string>();\n\t\tfor (const agent of this.agents.values()) {\n\t\t\tif (\n\t\t\t\tagent.state !== \"running\" &&\n\t\t\t\tagent.state !== \"starting\" &&\n\t\t\t\t(agent.pendingCompletions?.length ?? 0) === 0\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet current: ManagedAgent | undefined = agent;\n\t\t\twhile (current) {\n\t\t\t\tprotectedIds.add(current.id);\n\t\t\t\tcurrent = current.parentId ? this.agents.get(current.parentId) : undefined;\n\t\t\t}\n\t\t}\n\t\tconst removed: ManagedAgent[] = [];\n\t\tconst candidates = [...this.agents.values()].sort((left, right) => right.depth - left.depth);\n\t\tfor (const agent of candidates) {\n\t\t\tif (protectedIds.has(agent.id) || agent.updatedAt >= cutoff) continue;\n\t\t\tif (agent.children.some((childId) => this.agents.get(childId)?.state !== \"closed\")) continue;\n\t\t\tthis.agents.delete(agent.id);\n\t\t\tif (agent.parentId) {\n\t\t\t\tconst parent = this.agents.get(agent.parentId);\n\t\t\t\tif (parent) parent.children = parent.children.filter((childId) => childId !== agent.id);\n\t\t\t}\n\t\t\tremoved.push(this.copy(agent));\n\t\t}\n\t\treturn removed;\n\t}\n\n\tprivate async releaseAgents(agents: readonly ManagedAgent[]): Promise<void> {\n\t\tif (!this.transport.release || agents.length === 0) return;\n\t\tconst results = await Promise.allSettled(\n\t\t\tagents.map((agent) => this.transport.release?.(agent)),\n\t\t);\n\t\tconst failures = results.flatMap((result) =>\n\t\t\tresult.status === \"rejected\" ? [result.reason] : [],\n\t\t);\n\t\tif (failures.length > 0) {\n\t\t\tthrow new AggregateError(\n\t\t\t\tfailures,\n\t\t\t\t`Failed to release ${failures.length} subagent transport session(s)`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate pruneClosedAgents(): void {\n\t\tconst closed = [...this.agents.values()]\n\t\t\t.filter((agent) => agent.state === \"closed\")\n\t\t\t.sort((left, right) => right.updatedAt - left.updatedAt);\n\t\tfor (const agent of closed.slice(this.maxAgents)) this.agents.delete(agent.id);\n\t}\n\n\tprivate async persistTerminalState(): Promise<void> {\n\t\tlet failures = 0;\n\t\tfor (;;) {\n\t\t\ttry {\n\t\t\t\tawait this.changed(true);\n\t\t\t\treturn;\n\t\t\t} catch (error) {\n\t\t\t\tif (this.shutdownController.signal.aborted) throw error;\n\t\t\t\tfailures++;\n\t\t\t\tif (failures === 1) continue;\n\t\t\t\tconst delay = Math.min(\n\t\t\t\t\tINITIAL_PERSISTENCE_RETRY_DELAY_MS * 2 ** (failures - 2),\n\t\t\t\t\tMAX_PERSISTENCE_RETRY_DELAY_MS,\n\t\t\t\t);\n\t\t\t\tawait waitForPersistenceRetry(delay, this.shutdownController.signal);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async notifyTurnComplete(completion: AgentTurnCompletion): Promise<void> {\n\t\ttry {\n\t\t\tawait this.options.onTurnComplete?.(completion);\n\t\t} catch {\n\t\t\t// Completion notifications are best-effort and must not destabilize agent lifecycle.\n\t\t}\n\t}\n\n\tprivate changed(propagateError = false): Promise<void> {\n\t\tconst snapshot = this.list(true);\n\t\tconst next = this.changeQueue.then(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.options.onChange?.(snapshot);\n\t\t\t} catch (error) {\n\t\t\t\tif (propagateError) throw error;\n\t\t\t\t// Non-terminal persistence remains best-effort so lifecycle controls stay usable.\n\t\t\t}\n\t\t});\n\t\tthis.changeQueue = next.catch(() => undefined);\n\t\treturn next;\n\t}\n\n\tprivate inspectSummary(agent: ManagedAgent): AgentRunInspectionSummary {\n\t\tlet unreadMessages = 0;\n\t\tfor (const message of agent.mailbox) {\n\t\t\tif (message.readAt === undefined) unreadMessages++;\n\t\t}\n\t\treturn {\n\t\t\tid: agent.id,\n\t\t\ttaskName: agent.taskName,\n\t\t\ttaskPath: agent.taskPath,\n\t\t\tagent: agent.agent,\n\t\t\tstate: agent.state,\n\t\t\tcreatedAt: agent.createdAt,\n\t\t\tupdatedAt: agent.updatedAt,\n\t\t\thistoryCount: agent.history.length,\n\t\t\tunreadMessages,\n\t\t\tturnGeneration: agent.turnGeneration ?? 0,\n\t\t\tpendingCompletionCount: agent.pendingCompletions?.length ?? 0,\n\t\t\tpendingRequiredCompletionCount: pendingRequiredCompletionCount(agent),\n\t\t};\n\t}\n\n\tprivate copy(agent: ManagedAgent): ManagedAgent {\n\t\treturn {\n\t\t\t...agent,\n\t\t\tchildren: [...agent.children],\n\t\t\tcontextSourceIds: [...(agent.contextSourceIds ?? [])],\n\t\t\tcurrentMailboxMessageIds: agent.currentMailboxMessageIds\n\t\t\t\t? [...agent.currentMailboxMessageIds]\n\t\t\t\t: undefined,\n\t\t\tpendingCompletions: (agent.pendingCompletions ?? []).map((completion) => ({\n\t\t\t\t...completion,\n\t\t\t})),\n\t\t\tcompletionRequirements: (agent.completionRequirements ?? []).map((record) => ({\n\t\t\t\t...record,\n\t\t\t})),\n\t\t\thistory: agent.history.map((turn) => ({ ...turn })),\n\t\t\tmailbox: agent.mailbox.map((message) => ({ ...message })),\n\t\t\tcontract: agent.contract ? structuredClone(agent.contract) : undefined,\n\t\t\ttarget: agent.target ? { ...agent.target, trust: { ...agent.target.trust } } : undefined,\n\t\t\tpolicy: agent.policy\n\t\t\t\t? {\n\t\t\t\t\t\tinherited: [...agent.policy.inherited],\n\t\t\t\t\t\toverridden: [...agent.policy.overridden],\n\t\t\t\t\t\tunsupported: [...agent.policy.unsupported],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t\tstructuredResult: agent.structuredResult\n\t\t\t\t? copyStructuredResult(agent.structuredResult)\n\t\t\t\t: undefined,\n\t\t\ttermination: agent.termination ? copyTurnTerminationReport(agent.termination) : undefined,\n\t\t\toutcome: agent.outcome ? structuredClone(agent.outcome) : undefined,\n\t\t\texecutionPlan: agent.executionPlan ? copyExecutionPlan(agent.executionPlan) : undefined,\n\t\t\tcapabilityGrant: agent.capabilityGrant ? structuredClone(agent.capabilityGrant) : undefined,\n\t\t\tsemanticSnapshot: agent.semanticSnapshot\n\t\t\t\t? structuredClone(agent.semanticSnapshot)\n\t\t\t\t: undefined,\n\t\t\tsemanticCompatibility: agent.semanticCompatibility\n\t\t\t\t? structuredClone(agent.semanticCompatibility)\n\t\t\t\t: undefined,\n\t\t\ttelemetry: agent.telemetry ? copyTelemetry(agent.telemetry) : undefined,\n\t\t};\n\t}\n}\n\nfunction lifecycleStateForOutcome(\n\tstatus: import(\"./result-contract.js\").SubagentOutcomeStatus | undefined,\n): AgentLifecycleState {\n\tswitch (status) {\n\t\tcase \"partial\":\n\t\t\treturn \"partial\";\n\t\tcase \"blocked\":\n\t\tcase \"needs-input\":\n\t\tcase \"abstained\":\n\t\tcase \"stale\":\n\t\t\treturn status;\n\t\tcase \"failed\":\n\t\tcase \"contract-invalid\":\n\t\t\treturn \"failed\";\n\t\tcase \"interrupted\":\n\t\t\treturn \"interrupted\";\n\t\tdefault:\n\t\t\treturn \"completed\";\n\t}\n}\n\nfunction copyStructuredResult(value: AnyStructuredSubagentResult): AnyStructuredSubagentResult {\n\treturn structuredClone(value);\n}\n\nfunction copyTelemetry(value: TransportTelemetry): TransportTelemetry {\n\treturn {\n\t\t...value,\n\t\ttiming: { ...value.timing },\n\t\tusage: value.usage ? { ...value.usage } : undefined,\n\t\tbudgetSource: value.budgetSource ? { ...value.budgetSource } : undefined,\n\t};\n}\n", "import type { ManagedAgent, PersistedAgentCompletion } from \"./registry-types.js\";\nimport { ROOT_TASK_PATH } from \"./task-path.js\";\n\nexport type CompletionRecipient = Pick<PersistedAgentCompletion, \"recipientId\" | \"recipientPath\">;\n\nexport function resolveCompletionRecipient(\n\tagent: Pick<ManagedAgent, \"id\" | \"parentId\">,\n\tgetAgent: (\n\t\tid: string,\n\t) => Pick<ManagedAgent, \"id\" | \"parentId\" | \"state\" | \"taskPath\"> | undefined,\n): CompletionRecipient {\n\tconst visited = new Set([agent.id]);\n\tlet parentId = agent.parentId;\n\twhile (parentId && !visited.has(parentId)) {\n\t\tvisited.add(parentId);\n\t\tconst parent = getAgent(parentId);\n\t\tif (!parent) break;\n\t\tif (parent.state !== \"closed\") {\n\t\t\treturn { recipientId: parent.id, recipientPath: parent.taskPath ?? parent.id };\n\t\t}\n\t\tparentId = parent.parentId;\n\t}\n\treturn { recipientId: \"root\", recipientPath: ROOT_TASK_PATH };\n}\n", "import type { AgentMailboxMessage, ManagedAgent, TurnOutcome } from \"./registry.js\";\nimport type { TransportProgressCallback } from \"./transport-types.js\";\n\nexport interface SubagentTransport {\n\treadonly kind: \"subprocess\" | \"in-process\" | \"rpc\" | \"auto\" | \"fake\";\n\trunTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tsignal: AbortSignal,\n\t\tonProgress?: TransportProgressCallback,\n\t): Promise<TurnOutcome>;\n\tdeliverMessage?(agent: ManagedAgent, message: AgentMailboxMessage): Promise<boolean>;\n\trelease?(agent: ManagedAgent): Promise<void>;\n\tshutdown?(): Promise<void>;\n}\n\nexport type AgentTurnRunner = (\n\tagent: ManagedAgent,\n\ttask: string,\n\tsignal: AbortSignal,\n\tonProgress?: TransportProgressCallback,\n) => Promise<TurnOutcome>;\n\nexport class FunctionTransport implements SubagentTransport {\n\treadonly kind = \"fake\" as const;\n\n\tconstructor(private readonly runner: AgentTurnRunner) {}\n\n\trunTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tsignal: AbortSignal,\n\t\tonProgress?: TransportProgressCallback,\n\t): Promise<TurnOutcome> {\n\t\treturn this.runner(agent, task, signal, onProgress);\n\t}\n}\n\nexport function normalizeTransport(\n\ttransport: SubagentTransport | AgentTurnRunner,\n): SubagentTransport {\n\treturn typeof transport === \"function\" ? new FunctionTransport(transport) : transport;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["message"]
|
|
7
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
// @generated by scripts/build-runtime.mjs; do not edit.
|
|
2
|
-
// @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
|
|
3
|
-
import {
|
|
4
|
-
captureRepositoryGeneration,
|
|
5
|
-
captureSemanticResourceGeneration,
|
|
6
|
-
captureSemanticSnapshot
|
|
7
|
-
} from "./chunk-BOAXY55Y.ts";
|
|
8
|
-
import {
|
|
9
|
-
acknowledgeExecutionPlan,
|
|
10
|
-
createExecutionPlan,
|
|
11
|
-
resolveContractTools
|
|
12
|
-
} from "./chunk-7AAJEUSL.ts";
|
|
13
|
-
import "./chunk-4AQSF7AS.ts";
|
|
14
|
-
|
|
15
|
-
// src/retained-semantic-state.ts
|
|
16
|
-
import * as path from "node:path";
|
|
17
|
-
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
18
|
-
async function buildRetainedSemanticState(input) {
|
|
19
|
-
const executionPlan = createExecutionPlan({
|
|
20
|
-
contract: input.contract,
|
|
21
|
-
agent: input.agent,
|
|
22
|
-
effectiveTools: resolveContractTools(input.agent.tools, input.contract),
|
|
23
|
-
target: input.target,
|
|
24
|
-
workspaceMode: input.workspaceMode,
|
|
25
|
-
transport: input.transport,
|
|
26
|
-
resultFormat: input.resultFormat,
|
|
27
|
-
model: input.agent.model,
|
|
28
|
-
thinkingLevel: input.thinkingLevel ?? input.agent.thinkingLevel,
|
|
29
|
-
timeoutMs: input.timeoutMs ?? input.agent.timeoutMs,
|
|
30
|
-
taskGeneration: input.taskGeneration,
|
|
31
|
-
cancellationLineage: input.cancellationLineage
|
|
32
|
-
});
|
|
33
|
-
const acknowledgement = acknowledgeExecutionPlan(executionPlan);
|
|
34
|
-
if (acknowledgement.status === "rejected") {
|
|
35
|
-
throw new Error(`Execution plan rejected: ${JSON.stringify(acknowledgement)}`);
|
|
36
|
-
}
|
|
37
|
-
const agentDir = getAgentDir();
|
|
38
|
-
const [repository, resourceGeneration] = await Promise.all([
|
|
39
|
-
captureRepositoryGeneration(input.cwd),
|
|
40
|
-
captureSemanticResourceGeneration([
|
|
41
|
-
path.join(agentDir, "skills"),
|
|
42
|
-
path.join(agentDir, "prompts"),
|
|
43
|
-
path.join(agentDir, "SYSTEM.md"),
|
|
44
|
-
path.join(agentDir, "APPEND_SYSTEM.md"),
|
|
45
|
-
path.join(input.cwd, ".pi", "skills"),
|
|
46
|
-
path.join(input.cwd, ".pi", "prompts"),
|
|
47
|
-
path.join(input.cwd, "AGENTS.md"),
|
|
48
|
-
path.join(input.cwd, "CLAUDE.md"),
|
|
49
|
-
path.join(input.cwd, "SYSTEM.md"),
|
|
50
|
-
path.join(input.cwd, "APPEND_SYSTEM.md")
|
|
51
|
-
])
|
|
52
|
-
]);
|
|
53
|
-
return {
|
|
54
|
-
executionPlan,
|
|
55
|
-
semanticSnapshot: captureSemanticSnapshot({
|
|
56
|
-
agentName: input.agent.name,
|
|
57
|
-
agentManifest: {
|
|
58
|
-
manifest: input.agent.capabilityManifest,
|
|
59
|
-
delegationContract: input.contract,
|
|
60
|
-
resourceGeneration
|
|
61
|
-
},
|
|
62
|
-
rolePrompt: input.agent.systemPrompt,
|
|
63
|
-
tools: executionPlan.effectiveTools,
|
|
64
|
-
model: executionPlan.model,
|
|
65
|
-
thinkingLevel: executionPlan.thinkingLevel,
|
|
66
|
-
transport: input.transport,
|
|
67
|
-
trust: {
|
|
68
|
-
kind: input.target.trust.kind,
|
|
69
|
-
projectTrusted: input.target.trust.projectTrusted
|
|
70
|
-
},
|
|
71
|
-
repository,
|
|
72
|
-
artifacts: {},
|
|
73
|
-
workflowGeneration: 0,
|
|
74
|
-
schedulerPolicy: "retained-fifo-v1"
|
|
75
|
-
})
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export {
|
|
79
|
-
buildRetainedSemanticState
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=retained-semantic-state-GM75FZGE.ts.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/retained-semantic-state.ts"],
|
|
4
|
-
"sourcesContent": ["import * as path from \"node:path\";\nimport { getAgentDir } from \"@earendil-works/pi-coding-agent\";\nimport type { AgentConfig, SubagentThinkingLevel, SubagentTransportKind } from \"./agents/types.js\";\nimport type { TargetPolicyAudit } from \"./cwd-policy.js\";\nimport type { DelegationContract } from \"./delegation-contract.js\";\nimport {\n\tacknowledgeExecutionPlan,\n\tcreateExecutionPlan,\n\ttype ExecutionPlan,\n\tresolveContractTools,\n} from \"./execution-plan.js\";\nimport type { SubagentResultFormat } from \"./result-contract.js\";\nimport {\n\tcaptureRepositoryGeneration,\n\tcaptureSemanticResourceGeneration,\n\tcaptureSemanticSnapshot,\n\ttype SemanticSnapshot,\n} from \"./semantic-snapshot.js\";\n\nexport interface RetainedSemanticStateInput {\n\tagent: AgentConfig;\n\tcontract?: DelegationContract;\n\ttarget: TargetPolicyAudit;\n\tcwd: string;\n\tworkspaceMode: \"shared\" | \"worktree\";\n\ttransport: SubagentTransportKind;\n\tresultFormat: SubagentResultFormat;\n\tthinkingLevel?: SubagentThinkingLevel;\n\ttimeoutMs?: number;\n\ttaskGeneration?: number;\n\tcancellationLineage?: string[];\n}\n\nexport interface RetainedSemanticState {\n\texecutionPlan: ExecutionPlan;\n\tsemanticSnapshot: SemanticSnapshot;\n}\n\nexport async function buildRetainedSemanticState(\n\tinput: RetainedSemanticStateInput,\n): Promise<RetainedSemanticState> {\n\tconst executionPlan = createExecutionPlan({\n\t\tcontract: input.contract,\n\t\tagent: input.agent,\n\t\teffectiveTools: resolveContractTools(input.agent.tools, input.contract),\n\t\ttarget: input.target,\n\t\tworkspaceMode: input.workspaceMode,\n\t\ttransport: input.transport,\n\t\tresultFormat: input.resultFormat,\n\t\tmodel: input.agent.model,\n\t\tthinkingLevel: input.thinkingLevel ?? input.agent.thinkingLevel,\n\t\ttimeoutMs: input.timeoutMs ?? input.agent.timeoutMs,\n\t\ttaskGeneration: input.taskGeneration,\n\t\tcancellationLineage: input.cancellationLineage,\n\t});\n\tconst acknowledgement = acknowledgeExecutionPlan(executionPlan);\n\tif (acknowledgement.status === \"rejected\") {\n\t\tthrow new Error(`Execution plan rejected: ${JSON.stringify(acknowledgement)}`);\n\t}\n\tconst agentDir = getAgentDir();\n\tconst [repository, resourceGeneration] = await Promise.all([\n\t\tcaptureRepositoryGeneration(input.cwd),\n\t\tcaptureSemanticResourceGeneration([\n\t\t\tpath.join(agentDir, \"skills\"),\n\t\t\tpath.join(agentDir, \"prompts\"),\n\t\t\tpath.join(agentDir, \"SYSTEM.md\"),\n\t\t\tpath.join(agentDir, \"APPEND_SYSTEM.md\"),\n\t\t\tpath.join(input.cwd, \".pi\", \"skills\"),\n\t\t\tpath.join(input.cwd, \".pi\", \"prompts\"),\n\t\t\tpath.join(input.cwd, \"AGENTS.md\"),\n\t\t\tpath.join(input.cwd, \"CLAUDE.md\"),\n\t\t\tpath.join(input.cwd, \"SYSTEM.md\"),\n\t\t\tpath.join(input.cwd, \"APPEND_SYSTEM.md\"),\n\t\t]),\n\t]);\n\treturn {\n\t\texecutionPlan,\n\t\tsemanticSnapshot: captureSemanticSnapshot({\n\t\t\tagentName: input.agent.name,\n\t\t\tagentManifest: {\n\t\t\t\tmanifest: input.agent.capabilityManifest,\n\t\t\t\tdelegationContract: input.contract,\n\t\t\t\tresourceGeneration,\n\t\t\t},\n\t\t\trolePrompt: input.agent.systemPrompt,\n\t\t\ttools: executionPlan.effectiveTools,\n\t\t\tmodel: executionPlan.model,\n\t\t\tthinkingLevel: executionPlan.thinkingLevel,\n\t\t\ttransport: input.transport,\n\t\t\ttrust: {\n\t\t\t\tkind: input.target.trust.kind,\n\t\t\t\tprojectTrusted: input.target.trust.projectTrusted,\n\t\t\t},\n\t\t\trepository,\n\t\t\tartifacts: {},\n\t\t\tworkflowGeneration: 0,\n\t\t\tschedulerPolicy: \"retained-fifo-v1\",\n\t\t}),\n\t};\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA,YAAY,UAAU;AACtB,SAAS,mBAAmB;AAqC5B,eAAsB,2BACrB,OACiC;AACjC,QAAM,gBAAgB,oBAAoB;AAAA,IACzC,UAAU,MAAM;AAAA,IAChB,OAAO,MAAM;AAAA,IACb,gBAAgB,qBAAqB,MAAM,MAAM,OAAO,MAAM,QAAQ;AAAA,IACtE,QAAQ,MAAM;AAAA,IACd,eAAe,MAAM;AAAA,IACrB,WAAW,MAAM;AAAA,IACjB,cAAc,MAAM;AAAA,IACpB,OAAO,MAAM,MAAM;AAAA,IACnB,eAAe,MAAM,iBAAiB,MAAM,MAAM;AAAA,IAClD,WAAW,MAAM,aAAa,MAAM,MAAM;AAAA,IAC1C,gBAAgB,MAAM;AAAA,IACtB,qBAAqB,MAAM;AAAA,EAC5B,CAAC;AACD,QAAM,kBAAkB,yBAAyB,aAAa;AAC9D,MAAI,gBAAgB,WAAW,YAAY;AAC1C,UAAM,IAAI,MAAM,4BAA4B,KAAK,UAAU,eAAe,CAAC,EAAE;AAAA,EAC9E;AACA,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,YAAY,kBAAkB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC1D,4BAA4B,MAAM,GAAG;AAAA,IACrC,kCAAkC;AAAA,MAC5B,UAAK,UAAU,QAAQ;AAAA,MACvB,UAAK,UAAU,SAAS;AAAA,MACxB,UAAK,UAAU,WAAW;AAAA,MAC1B,UAAK,UAAU,kBAAkB;AAAA,MACjC,UAAK,MAAM,KAAK,OAAO,QAAQ;AAAA,MAC/B,UAAK,MAAM,KAAK,OAAO,SAAS;AAAA,MAChC,UAAK,MAAM,KAAK,WAAW;AAAA,MAC3B,UAAK,MAAM,KAAK,WAAW;AAAA,MAC3B,UAAK,MAAM,KAAK,WAAW;AAAA,MAC3B,UAAK,MAAM,KAAK,kBAAkB;AAAA,IACxC,CAAC;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACN;AAAA,IACA,kBAAkB,wBAAwB;AAAA,MACzC,WAAW,MAAM,MAAM;AAAA,MACvB,eAAe;AAAA,QACd,UAAU,MAAM,MAAM;AAAA,QACtB,oBAAoB,MAAM;AAAA,QAC1B;AAAA,MACD;AAAA,MACA,YAAY,MAAM,MAAM;AAAA,MACxB,OAAO,cAAc;AAAA,MACrB,OAAO,cAAc;AAAA,MACrB,eAAe,cAAc;AAAA,MAC7B,WAAW,MAAM;AAAA,MACjB,OAAO;AAAA,QACN,MAAM,MAAM,OAAO,MAAM;AAAA,QACzB,gBAAgB,MAAM,OAAO,MAAM;AAAA,MACpC;AAAA,MACA;AAAA,MACA,WAAW,CAAC;AAAA,MACZ,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,IAClB,CAAC;AAAA,EACF;AACD;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|