@narumitw/pi-subagents 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +20 -7
  2. package/dist/chunks/auto-transport-SY2VHUFH.ts +109 -0
  3. package/dist/chunks/auto-transport-SY2VHUFH.ts.map +7 -0
  4. package/dist/chunks/capability-grant-CGEWOEKE.ts +19 -0
  5. package/dist/chunks/capability-grant-CGEWOEKE.ts.map +7 -0
  6. package/dist/chunks/chunk-434NII74.ts +282 -0
  7. package/dist/chunks/chunk-434NII74.ts.map +7 -0
  8. package/dist/chunks/chunk-47SK2QYC.ts +56 -0
  9. package/dist/chunks/chunk-47SK2QYC.ts.map +7 -0
  10. package/dist/chunks/chunk-6KJ34M6S.ts +159 -0
  11. package/dist/chunks/chunk-6KJ34M6S.ts.map +7 -0
  12. package/dist/chunks/chunk-7OBINKFM.ts +80 -0
  13. package/dist/chunks/chunk-7OBINKFM.ts.map +7 -0
  14. package/dist/chunks/chunk-7QPPBBXZ.ts +335 -0
  15. package/dist/chunks/chunk-7QPPBBXZ.ts.map +7 -0
  16. package/dist/chunks/chunk-AEUYS7JC.ts +73 -0
  17. package/dist/chunks/chunk-AEUYS7JC.ts.map +7 -0
  18. package/dist/chunks/chunk-BFK2Z4ZF.ts +189 -0
  19. package/dist/chunks/chunk-BFK2Z4ZF.ts.map +7 -0
  20. package/dist/chunks/chunk-BOAXY55Y.ts +153 -0
  21. package/dist/chunks/chunk-BOAXY55Y.ts.map +7 -0
  22. package/dist/chunks/chunk-C4L6P266.ts +22 -0
  23. package/dist/chunks/chunk-C4L6P266.ts.map +7 -0
  24. package/dist/chunks/chunk-DPPVEQAM.ts +29 -0
  25. package/dist/chunks/chunk-DPPVEQAM.ts.map +7 -0
  26. package/dist/chunks/chunk-DQMN4OYM.ts +913 -0
  27. package/dist/chunks/chunk-DQMN4OYM.ts.map +7 -0
  28. package/dist/chunks/chunk-DSOOH73Y.ts +238 -0
  29. package/dist/chunks/chunk-DSOOH73Y.ts.map +7 -0
  30. package/dist/chunks/chunk-EFBPISNT.ts +421 -0
  31. package/dist/chunks/chunk-EFBPISNT.ts.map +7 -0
  32. package/dist/chunks/chunk-EWWXFU7N.ts +150 -0
  33. package/dist/chunks/chunk-EWWXFU7N.ts.map +7 -0
  34. package/dist/chunks/chunk-F4L2UVSK.ts +380 -0
  35. package/dist/chunks/chunk-F4L2UVSK.ts.map +7 -0
  36. package/dist/chunks/chunk-F5YWVHQX.ts +1543 -0
  37. package/dist/chunks/chunk-F5YWVHQX.ts.map +7 -0
  38. package/dist/chunks/chunk-G3RSMSXJ.ts +63 -0
  39. package/dist/chunks/chunk-G3RSMSXJ.ts.map +7 -0
  40. package/dist/chunks/chunk-G6VZTCFH.ts +70 -0
  41. package/dist/chunks/chunk-G6VZTCFH.ts.map +7 -0
  42. package/dist/chunks/chunk-H3FP6DLR.ts +160 -0
  43. package/dist/chunks/chunk-H3FP6DLR.ts.map +7 -0
  44. package/dist/chunks/chunk-HA36LPCO.ts +130 -0
  45. package/dist/chunks/chunk-HA36LPCO.ts.map +7 -0
  46. package/dist/chunks/chunk-HKC4ES4B.ts +65 -0
  47. package/dist/chunks/chunk-HKC4ES4B.ts.map +7 -0
  48. package/dist/chunks/chunk-HOP5FXDT.ts +27 -0
  49. package/dist/chunks/chunk-HOP5FXDT.ts.map +7 -0
  50. package/dist/chunks/chunk-I2FAK44T.ts +324 -0
  51. package/dist/chunks/chunk-I2FAK44T.ts.map +7 -0
  52. package/dist/chunks/chunk-IGAMVWFN.ts +139 -0
  53. package/dist/chunks/chunk-IGAMVWFN.ts.map +7 -0
  54. package/dist/chunks/chunk-KMGKCEO4.ts +38 -0
  55. package/dist/chunks/chunk-KMGKCEO4.ts.map +7 -0
  56. package/dist/chunks/chunk-N7BLVXKK.ts +73 -0
  57. package/dist/chunks/chunk-N7BLVXKK.ts.map +7 -0
  58. package/dist/chunks/chunk-NIF42QMF.ts +297 -0
  59. package/dist/chunks/chunk-NIF42QMF.ts.map +7 -0
  60. package/dist/chunks/chunk-O4VO6JUJ.ts +52 -0
  61. package/dist/chunks/chunk-O4VO6JUJ.ts.map +7 -0
  62. package/dist/chunks/chunk-ONDTY4EL.ts +91 -0
  63. package/dist/chunks/chunk-ONDTY4EL.ts.map +7 -0
  64. package/dist/chunks/chunk-OVPHFGKO.ts +1769 -0
  65. package/dist/chunks/chunk-OVPHFGKO.ts.map +7 -0
  66. package/dist/chunks/chunk-P7OH4XMF.ts +60 -0
  67. package/dist/chunks/chunk-P7OH4XMF.ts.map +7 -0
  68. package/dist/chunks/chunk-PSK43Y6A.ts +339 -0
  69. package/dist/chunks/chunk-PSK43Y6A.ts.map +7 -0
  70. package/dist/chunks/chunk-QBORTI4W.ts +468 -0
  71. package/dist/chunks/chunk-QBORTI4W.ts.map +7 -0
  72. package/dist/chunks/chunk-QDVGH2X7.ts +171 -0
  73. package/dist/chunks/chunk-QDVGH2X7.ts.map +7 -0
  74. package/dist/chunks/chunk-RHRQMT7Q.ts +490 -0
  75. package/dist/chunks/chunk-RHRQMT7Q.ts.map +7 -0
  76. package/dist/chunks/chunk-RRR66UWR.ts +28 -0
  77. package/dist/chunks/chunk-RRR66UWR.ts.map +7 -0
  78. package/dist/chunks/chunk-RSUXZD6S.ts +275 -0
  79. package/dist/chunks/chunk-RSUXZD6S.ts.map +7 -0
  80. package/dist/chunks/chunk-RTCVYIZA.ts +221 -0
  81. package/dist/chunks/chunk-RTCVYIZA.ts.map +7 -0
  82. package/dist/chunks/chunk-S2IWVK3J.ts +44 -0
  83. package/dist/chunks/chunk-S2IWVK3J.ts.map +7 -0
  84. package/dist/chunks/chunk-SCZ33MYW.ts +52 -0
  85. package/dist/chunks/chunk-SCZ33MYW.ts.map +7 -0
  86. package/dist/chunks/chunk-SWGQLFSD.ts +60 -0
  87. package/dist/chunks/chunk-SWGQLFSD.ts.map +7 -0
  88. package/dist/chunks/chunk-UMBPMVJW.ts +22 -0
  89. package/dist/chunks/chunk-UMBPMVJW.ts.map +7 -0
  90. package/dist/chunks/chunk-UVFVHIOP.ts +735 -0
  91. package/dist/chunks/chunk-UVFVHIOP.ts.map +7 -0
  92. package/dist/chunks/completion-delivery-YPOWSSV3.ts +16 -0
  93. package/dist/chunks/completion-delivery-YPOWSSV3.ts.map +7 -0
  94. package/dist/chunks/config-status-J4GPWP46.ts +34 -0
  95. package/dist/chunks/config-status-J4GPWP46.ts.map +7 -0
  96. package/dist/chunks/config-ui-3IBMHTQB.ts +1146 -0
  97. package/dist/chunks/config-ui-3IBMHTQB.ts.map +7 -0
  98. package/dist/chunks/consult-NYXVDN5G.ts +518 -0
  99. package/dist/chunks/consult-NYXVDN5G.ts.map +7 -0
  100. package/dist/chunks/context-QDKLVQXE.ts +11 -0
  101. package/dist/chunks/context-QDKLVQXE.ts.map +7 -0
  102. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts +130 -0
  103. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts.map +7 -0
  104. package/dist/chunks/cwd-policy-NB6XZ5GF.ts +17 -0
  105. package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +7 -0
  106. package/dist/chunks/delegation-contract-WJPT4FVS.ts +24 -0
  107. package/dist/chunks/delegation-contract-WJPT4FVS.ts.map +7 -0
  108. package/dist/chunks/discovery-K25T3SH4.ts +12 -0
  109. package/dist/chunks/discovery-K25T3SH4.ts.map +7 -0
  110. package/dist/chunks/execution-DS2DEIQZ.ts +4034 -0
  111. package/dist/chunks/execution-DS2DEIQZ.ts.map +7 -0
  112. package/dist/chunks/in-process-transport-TEYAWSEC.ts +38 -0
  113. package/dist/chunks/in-process-transport-TEYAWSEC.ts.map +7 -0
  114. package/dist/chunks/inspect-UOQQ3KNL.ts +619 -0
  115. package/dist/chunks/inspect-UOQQ3KNL.ts.map +7 -0
  116. package/dist/chunks/peer-communication-KL36Z6CO.ts +294 -0
  117. package/dist/chunks/peer-communication-KL36Z6CO.ts.map +7 -0
  118. package/dist/chunks/persistence-VSGXAW4P.ts +344 -0
  119. package/dist/chunks/persistence-VSGXAW4P.ts.map +7 -0
  120. package/dist/chunks/registry-E6XPJB7L.ts +1324 -0
  121. package/dist/chunks/registry-E6XPJB7L.ts.map +7 -0
  122. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts +81 -0
  123. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts.map +7 -0
  124. package/dist/chunks/rpc-transport-Y6LA5BOP.ts +1154 -0
  125. package/dist/chunks/rpc-transport-Y6LA5BOP.ts.map +7 -0
  126. package/dist/chunks/runtime-policy-5YELCOVC.ts +15 -0
  127. package/dist/chunks/runtime-policy-5YELCOVC.ts.map +7 -0
  128. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +19 -0
  129. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +7 -0
  130. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts +13 -0
  131. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts.map +7 -0
  132. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +15 -0
  133. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +7 -0
  134. package/dist/chunks/subprocess-transport-C2XVR25R.ts +158 -0
  135. package/dist/chunks/subprocess-transport-C2XVR25R.ts.map +7 -0
  136. package/dist/chunks/workspace-WDKLN72J.ts +11 -0
  137. package/dist/chunks/workspace-WDKLN72J.ts.map +7 -0
  138. package/dist/index.ts +1057 -0
  139. package/dist/index.ts.map +7 -0
  140. package/package.json +9 -5
  141. package/src/index.ts +1 -1
  142. package/src/settings-reader.ts +208 -0
  143. package/src/settings.ts +22 -187
  144. package/src/stateful-registration.ts +1230 -0
  145. package/src/stateful-safety.ts +1 -1
  146. package/src/stateful.ts +2 -1234
  147. package/src/subagents-extension.ts +307 -0
  148. package/src/subagents.ts +1 -308
@@ -0,0 +1,7 @@
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 { 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\thistory: record.history.slice(-this.maxHistoryTurns).map((turn) => ({ ...turn })),\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\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\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\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);\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 & { timeoutMs?: number } = {},\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\"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\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);\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.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\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\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\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\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.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\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): 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\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};\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.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\tagent.outcome =\n\t\t\t\t\toutcome.outcome ??\n\t\t\t\t\t(outcome.aborted\n\t\t\t\t\t\t? classifyStructuredOutcome(\"interrupted\", \"transport-aborted\")\n\t\t\t\t\t\t: agent.structuredResult?.version === \"pi-subagents:result:v2\"\n\t\t\t\t\t\t\t? classifyStructuredOutcome(\n\t\t\t\t\t\t\t\t\tagent.structuredResult.status,\n\t\t\t\t\t\t\t\t\tagent.structuredResult.reasonCode,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: agent.resultFormat !== undefined &&\n\t\t\t\t\t\t\t\t\tagent.resultFormat !== \"text\" &&\n\t\t\t\t\t\t\t\t\tagent.structuredResult === undefined\n\t\t\t\t\t\t\t\t? classifyStructuredOutcome(\"contract-invalid\", \"malformed-structured-result\")\n\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\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}\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.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 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};\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\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 \"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};\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
+ }
@@ -0,0 +1,81 @@
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-DSOOH73Y.ts";
13
+ import "./chunk-DPPVEQAM.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-7WXSGRJU.ts.map
@@ -0,0 +1,7 @@
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
+ }