@narumitw/pi-subagents 2.0.6 → 2.1.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.
Files changed (178) hide show
  1. package/README.md +152 -50
  2. package/dist/chunks/{auto-transport-SY2VHUFH.ts → auto-transport-FUUKFDIG.ts} +6 -6
  3. package/dist/chunks/{capability-grant-CGEWOEKE.ts → capability-grant-PR72SWWS.ts} +4 -4
  4. package/dist/chunks/{chunk-DPPVEQAM.ts → chunk-4AQSF7AS.ts} +1 -1
  5. package/dist/chunks/chunk-4AQSF7AS.ts.map +7 -0
  6. package/dist/chunks/chunk-6H6TBBED.ts +108 -0
  7. package/dist/chunks/chunk-6H6TBBED.ts.map +7 -0
  8. package/dist/chunks/{chunk-DSOOH73Y.ts → chunk-7AAJEUSL.ts} +3 -3
  9. package/dist/chunks/{chunk-DSOOH73Y.ts.map → chunk-7AAJEUSL.ts.map} +2 -2
  10. package/dist/chunks/{chunk-7QPPBBXZ.ts → chunk-D4CR7T73.ts} +21 -3
  11. package/dist/chunks/chunk-D4CR7T73.ts.map +7 -0
  12. package/dist/chunks/{chunk-434NII74.ts → chunk-DIHBUR2E.ts} +54 -8
  13. package/dist/chunks/chunk-DIHBUR2E.ts.map +7 -0
  14. package/dist/chunks/{chunk-NIF42QMF.ts → chunk-FEVPWRMU.ts} +7 -4
  15. package/dist/chunks/chunk-FEVPWRMU.ts.map +7 -0
  16. package/dist/chunks/{chunk-YBUWBRF7.ts → chunk-FXI45N3J.ts} +5 -5
  17. package/dist/chunks/{chunk-S2IWVK3J.ts → chunk-ILEQ27AL.ts} +3 -2
  18. package/dist/chunks/chunk-ILEQ27AL.ts.map +7 -0
  19. package/dist/chunks/{chunk-DQMN4OYM.ts → chunk-ITVWPNU4.ts} +12 -106
  20. package/dist/chunks/chunk-ITVWPNU4.ts.map +7 -0
  21. package/dist/chunks/{chunk-QDVGH2X7.ts → chunk-IWC32VPY.ts} +2 -1
  22. package/dist/chunks/{chunk-QDVGH2X7.ts.map → chunk-IWC32VPY.ts.map} +2 -2
  23. package/dist/chunks/{chunk-I2FAK44T.ts → chunk-JSZIP73U.ts} +48 -10
  24. package/dist/chunks/chunk-JSZIP73U.ts.map +7 -0
  25. package/dist/chunks/{chunk-ZHTNCZIA.ts → chunk-JU6LUNLP.ts} +2 -2
  26. package/dist/chunks/{chunk-PSK43Y6A.ts → chunk-LASD73CM.ts} +2 -2
  27. package/dist/chunks/{chunk-C4L6P266.ts → chunk-LEOYDZI3.ts} +1 -1
  28. package/dist/chunks/{chunk-C4L6P266.ts.map → chunk-LEOYDZI3.ts.map} +2 -2
  29. package/dist/chunks/{chunk-H3BFJ7HJ.ts → chunk-LL4LP2T7.ts} +5 -5
  30. package/dist/chunks/chunk-N2T5IN4X.ts +18 -0
  31. package/dist/chunks/chunk-N2T5IN4X.ts.map +7 -0
  32. package/dist/chunks/{chunk-G3RSMSXJ.ts → chunk-NTRPLF46.ts} +1 -1
  33. package/dist/chunks/chunk-NTRPLF46.ts.map +7 -0
  34. package/dist/chunks/{chunk-CBP76ARQ.ts → chunk-PABJJYP6.ts} +174 -47
  35. package/dist/chunks/chunk-PABJJYP6.ts.map +7 -0
  36. package/dist/chunks/{chunk-EFBPISNT.ts → chunk-PBZMBTNJ.ts} +104 -103
  37. package/dist/chunks/chunk-PBZMBTNJ.ts.map +7 -0
  38. package/dist/chunks/{chunk-SCZ33MYW.ts → chunk-PGLSFLYW.ts} +2 -2
  39. package/dist/chunks/{chunk-O4VO6JUJ.ts → chunk-TM2R67J3.ts} +3 -3
  40. package/dist/chunks/{chunk-QBORTI4W.ts → chunk-TMZRHIIK.ts} +32 -3
  41. package/dist/chunks/chunk-TMZRHIIK.ts.map +7 -0
  42. package/dist/chunks/chunk-TZ34IQ3M.ts +59 -0
  43. package/dist/chunks/chunk-TZ34IQ3M.ts.map +7 -0
  44. package/dist/chunks/chunk-VBDGNNLM.ts +214 -0
  45. package/dist/chunks/chunk-VBDGNNLM.ts.map +7 -0
  46. package/dist/chunks/{chunk-7OBINKFM.ts → chunk-VDG7LTYE.ts} +11 -11
  47. package/dist/chunks/chunk-VDG7LTYE.ts.map +7 -0
  48. package/dist/chunks/{chunk-AEUYS7JC.ts → chunk-X4NMONPE.ts} +1 -1
  49. package/dist/chunks/chunk-X4NMONPE.ts.map +7 -0
  50. package/dist/chunks/{chunk-HKC4ES4B.ts → chunk-YPJEN6NU.ts} +2 -2
  51. package/dist/chunks/{completion-delivery-YPOWSSV3.ts → completion-delivery-JVLNQRWX.ts} +5 -4
  52. package/dist/chunks/{config-status-J4GPWP46.ts → config-status-FKGDECZ3.ts} +7 -6
  53. package/dist/chunks/{config-ui-2YUCUEBM.ts → config-ui-DDKERQHI.ts} +297 -231
  54. package/dist/chunks/config-ui-DDKERQHI.ts.map +7 -0
  55. package/dist/chunks/{consult-IV7UBNQQ.ts → consult-PQ6PRAKC.ts} +14 -13
  56. package/dist/chunks/consult-PQ6PRAKC.ts.map +7 -0
  57. package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts → create-stateful-transport-JWC2EFYL.ts} +6 -6
  58. package/dist/chunks/{delegation-contract-WJPT4FVS.ts → delegation-contract-LA56I5DT.ts} +2 -2
  59. package/dist/chunks/{discovery-K25T3SH4.ts → discovery-MIFB2U4Y.ts} +3 -3
  60. package/dist/chunks/{execution-LA7HN5YF.ts → execution-Q2JZLKJA.ts} +19 -16
  61. package/dist/chunks/execution-Q2JZLKJA.ts.map +7 -0
  62. package/dist/chunks/{in-process-transport-4RF3J6XK.ts → in-process-transport-HJ6TZXC3.ts} +9 -9
  63. package/dist/chunks/{inspect-XV2QALMR.ts → inspect-UH2TKH6E.ts} +25 -10
  64. package/dist/chunks/inspect-UH2TKH6E.ts.map +7 -0
  65. package/dist/chunks/{persistence-VSGXAW4P.ts → persistence-XHPJBZL7.ts} +11 -7
  66. package/dist/chunks/persistence-XHPJBZL7.ts.map +7 -0
  67. package/dist/chunks/{registry-E6XPJB7L.ts → registry-XDXPECWF.ts} +136 -15
  68. package/dist/chunks/registry-XDXPECWF.ts.map +7 -0
  69. package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts → retained-semantic-state-GM75FZGE.ts} +3 -3
  70. package/dist/chunks/{rpc-transport-NEHBHWX4.ts → rpc-transport-7R7DVCEB.ts} +12 -16
  71. package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +7 -0
  72. package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts → spawn-idempotency-BNHOSMZW.ts} +2 -2
  73. package/dist/chunks/{subprocess-transport-NSHOGDC4.ts → subprocess-transport-VHZJRBTW.ts} +15 -14
  74. package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +7 -0
  75. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +164 -0
  76. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +7 -0
  77. package/dist/index.ts +427 -30
  78. package/dist/index.ts.map +3 -3
  79. package/docs/async-runtime-protocol.md +69 -0
  80. package/docs/implementation-notes/pi-subagents-capability-matrix.md +62 -0
  81. package/docs/implementation-notes/pi-subagents-current-direction.md +99 -0
  82. package/docs/implementation-notes/pi-subagents-rpc-v1.md +153 -0
  83. package/docs/pi-subagents-diagrams.md +183 -0
  84. package/package.json +9 -8
  85. package/src/agents/types.ts +2 -0
  86. package/src/async-subagent-benchmark.ts +532 -0
  87. package/src/completion-delivery.ts +71 -4
  88. package/src/completion-render.ts +1 -0
  89. package/src/completion-requirement.ts +308 -0
  90. package/src/config-registration.ts +5 -5
  91. package/src/config-status.ts +66 -70
  92. package/src/config-ui.ts +244 -150
  93. package/src/consult-resources.ts +1 -1
  94. package/src/consult.ts +3 -8
  95. package/src/delegation-contract.ts +55 -9
  96. package/src/execution-plan.ts +1 -1
  97. package/src/execution-ui.ts +40 -29
  98. package/src/execution.ts +2 -3
  99. package/src/inspect.ts +24 -1
  100. package/src/orchestration-metrics.ts +1 -1
  101. package/src/panel-execution.ts +2 -3
  102. package/src/panel-failure.ts +1 -1
  103. package/src/panel-render.ts +1 -1
  104. package/src/parallel-limit-ui.ts +6 -5
  105. package/src/params.ts +2 -1
  106. package/src/persistence.ts +9 -0
  107. package/src/process-control.ts +43 -0
  108. package/src/registry-types.ts +5 -0
  109. package/src/registry.ts +162 -18
  110. package/src/render.ts +2 -1
  111. package/src/rpc-transport.ts +1 -1
  112. package/src/runner-outcome.ts +1 -1
  113. package/src/runner-result.ts +1 -1
  114. package/src/runner-types.ts +102 -0
  115. package/src/runner.ts +11 -192
  116. package/src/settings/inspection.ts +27 -0
  117. package/src/settings/schema.ts +9 -0
  118. package/src/settings-reader.ts +7 -0
  119. package/src/settings.ts +20 -0
  120. package/src/spawn-idempotency.ts +5 -0
  121. package/src/stateful-agent-view.ts +15 -19
  122. package/src/stateful-guidance.ts +14 -4
  123. package/src/stateful-limit-ui.ts +23 -20
  124. package/src/stateful-limits.ts +10 -10
  125. package/src/stateful-registration.ts +126 -9
  126. package/src/stateful-render.ts +27 -2
  127. package/src/subagent-details.ts +43 -0
  128. package/src/subagents-extension.ts +66 -8
  129. package/src/subagents.ts +2 -0
  130. package/src/subprocess-transport.ts +2 -1
  131. package/src/supervision.ts +2 -1
  132. package/src/timeout-finalization.ts +1 -1
  133. package/src/tool-schema-compatibility.ts +73 -0
  134. package/src/transport-types.ts +6 -0
  135. package/src/transport-ui.ts +18 -46
  136. package/src/usage-recording-config.ts +13 -0
  137. package/src/usage-recording-store.ts +183 -0
  138. package/src/usage-recording.ts +478 -0
  139. package/src/verification-harness.ts +1 -1
  140. package/src/workflow-ui.ts +17 -9
  141. package/dist/chunks/chunk-434NII74.ts.map +0 -7
  142. package/dist/chunks/chunk-7OBINKFM.ts.map +0 -7
  143. package/dist/chunks/chunk-7QPPBBXZ.ts.map +0 -7
  144. package/dist/chunks/chunk-AEUYS7JC.ts.map +0 -7
  145. package/dist/chunks/chunk-CBP76ARQ.ts.map +0 -7
  146. package/dist/chunks/chunk-DPPVEQAM.ts.map +0 -7
  147. package/dist/chunks/chunk-DQMN4OYM.ts.map +0 -7
  148. package/dist/chunks/chunk-EFBPISNT.ts.map +0 -7
  149. package/dist/chunks/chunk-G3RSMSXJ.ts.map +0 -7
  150. package/dist/chunks/chunk-I2FAK44T.ts.map +0 -7
  151. package/dist/chunks/chunk-NIF42QMF.ts.map +0 -7
  152. package/dist/chunks/chunk-QBORTI4W.ts.map +0 -7
  153. package/dist/chunks/chunk-S2IWVK3J.ts.map +0 -7
  154. package/dist/chunks/config-ui-2YUCUEBM.ts.map +0 -7
  155. package/dist/chunks/consult-IV7UBNQQ.ts.map +0 -7
  156. package/dist/chunks/execution-LA7HN5YF.ts.map +0 -7
  157. package/dist/chunks/inspect-XV2QALMR.ts.map +0 -7
  158. package/dist/chunks/persistence-VSGXAW4P.ts.map +0 -7
  159. package/dist/chunks/registry-E6XPJB7L.ts.map +0 -7
  160. package/dist/chunks/rpc-transport-NEHBHWX4.ts.map +0 -7
  161. package/dist/chunks/subprocess-transport-NSHOGDC4.ts.map +0 -7
  162. /package/dist/chunks/{auto-transport-SY2VHUFH.ts.map → auto-transport-FUUKFDIG.ts.map} +0 -0
  163. /package/dist/chunks/{capability-grant-CGEWOEKE.ts.map → capability-grant-PR72SWWS.ts.map} +0 -0
  164. /package/dist/chunks/{chunk-YBUWBRF7.ts.map → chunk-FXI45N3J.ts.map} +0 -0
  165. /package/dist/chunks/{chunk-ZHTNCZIA.ts.map → chunk-JU6LUNLP.ts.map} +0 -0
  166. /package/dist/chunks/{chunk-PSK43Y6A.ts.map → chunk-LASD73CM.ts.map} +0 -0
  167. /package/dist/chunks/{chunk-H3BFJ7HJ.ts.map → chunk-LL4LP2T7.ts.map} +0 -0
  168. /package/dist/chunks/{chunk-SCZ33MYW.ts.map → chunk-PGLSFLYW.ts.map} +0 -0
  169. /package/dist/chunks/{chunk-O4VO6JUJ.ts.map → chunk-TM2R67J3.ts.map} +0 -0
  170. /package/dist/chunks/{chunk-HKC4ES4B.ts.map → chunk-YPJEN6NU.ts.map} +0 -0
  171. /package/dist/chunks/{completion-delivery-YPOWSSV3.ts.map → completion-delivery-JVLNQRWX.ts.map} +0 -0
  172. /package/dist/chunks/{config-status-J4GPWP46.ts.map → config-status-FKGDECZ3.ts.map} +0 -0
  173. /package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts.map → create-stateful-transport-JWC2EFYL.ts.map} +0 -0
  174. /package/dist/chunks/{delegation-contract-WJPT4FVS.ts.map → delegation-contract-LA56I5DT.ts.map} +0 -0
  175. /package/dist/chunks/{discovery-K25T3SH4.ts.map → discovery-MIFB2U4Y.ts.map} +0 -0
  176. /package/dist/chunks/{in-process-transport-4RF3J6XK.ts.map → in-process-transport-HJ6TZXC3.ts.map} +0 -0
  177. /package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts.map → retained-semantic-state-GM75FZGE.ts.map} +0 -0
  178. /package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts.map → spawn-idempotency-BNHOSMZW.ts.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/inspect.ts"],
4
- "sourcesContent": ["import * as path from \"node:path\";\nimport { CONFIG_DIR_NAME, type ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { discoverAgents } from \"./agents/discovery.js\";\nimport type {\n\tAgentConfig,\n\tAgentScope,\n\tConsultationCwdPolicy,\n\tDelegationCwdPolicy,\n} from \"./agents/types.js\";\nimport { projectCapabilityManifest } from \"./capabilities.js\";\nimport { resolveConsultTools } from \"./consult-policy.js\";\nimport { buildContextSnapshot, type ContextMode } from \"./context.js\";\nimport { INSPECT_ACTIONS } from \"./inspect-tool.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES } from \"./limits.js\";\nimport { resolvePiInvocation } from \"./pi-invocation.js\";\nimport type { AgentRunInspectionDetail, AgentRunInspectionSummary } from \"./registry.js\";\nimport { boundedPrivateText, boundText, safeDisplayPath, safeTerminalLine } from \"./safe-text.js\";\nimport { resolveDelegationWorkflow } from \"./settings/inspection.js\";\nimport {\n\tinspectBlockingParallelLimitSettings,\n\tinspectCompletionDeliverySettings,\n\tinspectConsultResourceSettings,\n\tinspectCwdPolicySettings,\n\tinspectDelegationWorkflowSettings,\n\tinspectStatefulLimitSettings,\n\tinspectStatefulTransportSettings,\n\tinspectSubagentSettings,\n} from \"./settings.js\";\nimport type { StatefulSubagentRuntimeStatus } from \"./stateful.js\";\nimport type { WorkItemLedgerSnapshot } from \"./work-item-ledger.js\";\nimport { inspectSessionWorkflows } from \"./work-item-persistence.js\";\n\nconst MAX_DETAILS_LIST_BYTES = 40 * 1024;\n\nexport { registerSubagentInspect } from \"./inspect-registration.js\";\nexport { SubagentInspectParams } from \"./inspect-tool.js\";\n\nexport interface SubagentInspectRuntime {\n\tgetBlockingEnabled(): boolean;\n\tgetMaxParallelTasks(): number;\n\tgetConsultResourcePolicy(): \"project-context\" | \"none\" | \"all\";\n\tgetConsultationCwdPolicy(): ConsultationCwdPolicy;\n\tgetDelegationCwdPolicy(): DelegationCwdPolicy;\n\tgetRuntimeStatus(): StatefulSubagentRuntimeStatus;\n\tlistRunInspection(includeClosed?: boolean): AgentRunInspectionSummary[];\n\tgetRunInspection(agentId: string): AgentRunInspectionDetail | undefined;\n}\n\ninterface InspectToolResult {\n\tcontent: Array<{ type: \"text\"; text: string }>;\n\tdetails: Record<string, unknown>;\n}\n\ntype ValidatedInspectOperation =\n\t| { action: \"list_agents\"; agentScope: AgentScope; limit: number }\n\t| { action: \"get_agent\"; agent: string; agentScope: AgentScope }\n\t| { action: \"list_runs\"; includeClosed: boolean; limit: number }\n\t| { action: \"get_run\"; agentId: string }\n\t| { action: \"list_workflows\"; limit: number }\n\t| { action: \"get_workflow\"; workflowId: string }\n\t| { action: \"list_models\"; limit: number }\n\t| { action: \"preview_context\"; context: ContextMode; contextEntryIds?: string[] }\n\t| { action: \"status\" }\n\t| { action: \"diagnose\" };\n\nexport function validateInspectParams(params: unknown): ValidatedInspectOperation {\n\tconst values = parameterRecord(params);\n\tconst rawAction = values.action;\n\tif (\n\t\ttypeof rawAction !== \"string\" ||\n\t\t!INSPECT_ACTIONS.includes(rawAction as (typeof INSPECT_ACTIONS)[number])\n\t) {\n\t\tthrow new Error(`subagent_inspect action must be one of: ${INSPECT_ACTIONS.join(\", \")}`);\n\t}\n\tconst action = rawAction as (typeof INSPECT_ACTIONS)[number];\n\tconst allowed: Record<(typeof INSPECT_ACTIONS)[number], readonly string[]> = {\n\t\tlist_agents: [\"action\", \"agentScope\", \"limit\"],\n\t\tget_agent: [\"action\", \"agent\", \"agentScope\"],\n\t\tlist_runs: [\"action\", \"includeClosed\", \"limit\"],\n\t\tget_run: [\"action\", \"agentId\"],\n\t\tlist_workflows: [\"action\", \"limit\"],\n\t\tget_workflow: [\"action\", \"workflowId\"],\n\t\tlist_models: [\"action\", \"limit\"],\n\t\tpreview_context: [\"action\", \"context\", \"contextEntryIds\"],\n\t\tstatus: [\"action\"],\n\t\tdiagnose: [\"action\"],\n\t};\n\tconst unexpected = Object.keys(values).find(\n\t\t(key) => values[key] !== undefined && !allowed[action].includes(key),\n\t);\n\tif (unexpected)\n\t\tthrow new Error(`subagent_inspect action \"${action}\" does not accept ${unexpected}`);\n\n\tif (action === \"list_agents\" || action === \"get_agent\") {\n\t\tconst agentScope = optionalAgentScope(values.agentScope);\n\t\tif (action === \"get_agent\") {\n\t\t\treturn { action, agent: requiredString(values.agent, action, \"agent\"), agentScope };\n\t\t}\n\t\treturn { action, agentScope, limit: optionalLimit(values.limit, 32) };\n\t}\n\tif (action === \"list_runs\") {\n\t\tif (values.includeClosed !== undefined && typeof values.includeClosed !== \"boolean\") {\n\t\t\tthrow new Error('subagent_inspect action \"list_runs\" requires includeClosed to be boolean');\n\t\t}\n\t\treturn {\n\t\t\taction,\n\t\t\tincludeClosed: values.includeClosed === true,\n\t\t\tlimit: optionalLimit(values.limit, 50),\n\t\t};\n\t}\n\tif (action === \"get_run\") {\n\t\treturn { action, agentId: requiredString(values.agentId, action, \"agentId\") };\n\t}\n\tif (action === \"list_workflows\") {\n\t\treturn { action, limit: optionalLimit(values.limit, 50) };\n\t}\n\tif (action === \"get_workflow\") {\n\t\treturn { action, workflowId: requiredString(values.workflowId, action, \"workflowId\") };\n\t}\n\tif (action === \"list_models\") {\n\t\treturn { action, limit: optionalLimit(values.limit, 50) };\n\t}\n\tif (action === \"preview_context\") {\n\t\tconst context = optionalContextMode(values.context);\n\t\tconst contextEntryIds = optionalStringArray(values.contextEntryIds, \"contextEntryIds\");\n\t\treturn {\n\t\t\taction,\n\t\t\tcontext: values.context === undefined && contextEntryIds ? \"all\" : context,\n\t\t\t...(contextEntryIds ? { contextEntryIds } : {}),\n\t\t};\n\t}\n\treturn { action };\n}\n\nexport async function executeSubagentInspect(\n\tparams: unknown,\n\tctx: ExtensionContext,\n\truntime: SubagentInspectRuntime,\n): Promise<InspectToolResult> {\n\tconst operation = validateInspectParams(params);\n\tif (operation.action === \"list_agents\" || operation.action === \"get_agent\") {\n\t\tassertTrustedScope(operation.agentScope, ctx);\n\t\tconst settings = inspectSubagentSettings().settings;\n\t\tconst discovery = discoverAgents(ctx.cwd, operation.agentScope, settings);\n\t\tconst agents = [...discovery.agents].sort((left, right) =>\n\t\t\tleft.name === right.name\n\t\t\t\t? left.source.localeCompare(right.source)\n\t\t\t\t: left.name.localeCompare(right.name),\n\t\t);\n\t\tif (operation.action === \"list_agents\") {\n\t\t\tconst selected = boundedProjection(agents, operation.limit, (agent) =>\n\t\t\t\tprojectAgent(agent, ctx, false),\n\t\t\t);\n\t\t\treturn inspectResult({\n\t\t\t\taction: operation.action,\n\t\t\t\tagents: selected.items,\n\t\t\t\treturned: selected.items.length,\n\t\t\t\tomitted: selected.omitted + (discovery.omittedAgentDefinitions ?? 0),\n\t\t\t\tdiscoveryIncomplete: discovery.metadataDiscoveryIncomplete === true,\n\t\t\t});\n\t\t}\n\t\tconst agent = agents.find((candidate) => candidate.name === operation.agent);\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Unknown subagent definition: ${boundedPrivateText(operation.agent, 256)}`);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, agent: projectAgent(agent, ctx) });\n\t}\n\n\tif (operation.action === \"list_runs\") {\n\t\tconst runs = runtime.listRunInspection(operation.includeClosed);\n\t\tconst selected = boundedProjection(runs, operation.limit, projectRunSummary);\n\t\treturn inspectResult({\n\t\t\taction: operation.action,\n\t\t\truns: selected.items,\n\t\t\treturned: selected.items.length,\n\t\t\tomitted: selected.omitted,\n\t\t});\n\t}\n\tif (operation.action === \"get_run\") {\n\t\tconst run = runtime.getRunInspection(operation.agentId);\n\t\tif (!run) {\n\t\t\tthrow new Error(`Unknown retained run: ${boundedPrivateText(operation.agentId, 256)}`);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, run: projectRun(run, ctx) });\n\t}\n\tif (operation.action === \"list_workflows\" || operation.action === \"get_workflow\") {\n\t\tconst owner =\n\t\t\tctx.sessionManager.getSessionId?.() ??\n\t\t\tctx.sessionManager.getSessionFile?.() ??\n\t\t\t`ephemeral:${ctx.cwd}`;\n\t\tconst inspected = inspectSessionWorkflows(owner, {\n\t\t\tmaxStoredWorkflows: operation.action === \"list_workflows\" ? operation.limit : 64,\n\t\t});\n\t\tif (operation.action === \"list_workflows\") {\n\t\t\tconst selected = boundedProjection(\n\t\t\t\tinspected.workflows,\n\t\t\t\toperation.limit,\n\t\t\t\tprojectWorkflowSummary,\n\t\t\t);\n\t\t\treturn inspectResult({\n\t\t\t\taction: operation.action,\n\t\t\t\tworkflows: selected.items,\n\t\t\t\treturned: selected.items.length,\n\t\t\t\tomitted: inspected.omitted + selected.omitted,\n\t\t\t\tinvalid: inspected.invalid,\n\t\t\t});\n\t\t}\n\t\tconst workflow = inspected.workflows.find(\n\t\t\t(candidate) => candidate.workflowId === operation.workflowId,\n\t\t);\n\t\tif (!workflow) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown persisted workflow: ${boundedPrivateText(operation.workflowId, 256)}`,\n\t\t\t);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, workflow: projectWorkflow(workflow) });\n\t}\n\tif (operation.action === \"list_models\") {\n\t\treturn inspectResult({ action: operation.action, ...projectModels(ctx, operation.limit) });\n\t}\n\tif (operation.action === \"preview_context\") {\n\t\tconst snapshot = buildContextSnapshot(\n\t\t\tctx.sessionManager.getBranch(),\n\t\t\toperation.context,\n\t\t\tDEFAULT_MAX_CONTEXT_BYTES,\n\t\t\toperation.contextEntryIds,\n\t\t);\n\t\treturn inspectResult({\n\t\t\taction: operation.action,\n\t\t\tpreview: {\n\t\t\t\tmode: operation.context,\n\t\t\t\tturns: snapshot.turns,\n\t\t\t\tsourceCount: snapshot.sourceIds.length,\n\t\t\t\tbytes: Buffer.byteLength(snapshot.text, \"utf8\"),\n\t\t\t\ttruncated: snapshot.truncated,\n\t\t\t},\n\t\t});\n\t}\n\tif (operation.action === \"status\") {\n\t\treturn inspectResult({ action: operation.action, status: projectStatus(runtime) });\n\t}\n\n\tconst settings = inspectSubagentSettings();\n\tconst userDiscovery = discoverAgents(ctx.cwd, \"user\", settings.settings);\n\tconst modelCount = availableModelCount(ctx);\n\tconst runtimeStatus = runtime.getRuntimeStatus();\n\tconst rpcCapability = inspectRpcCapability();\n\tconst inProcessCapability = await inspectInProcessCapability();\n\tconst checks = [\n\t\t{\n\t\t\tname: \"settings\",\n\t\t\tstatus: settings.error ? \"fail\" : \"pass\",\n\t\t\tmessage: settings.error\n\t\t\t\t? boundedPrivateText(settings.error, 2 * 1024)\n\t\t\t\t: \"Settings are valid or absent.\",\n\t\t},\n\t\t{\n\t\t\tname: \"agent-discovery\",\n\t\t\tstatus:\n\t\t\t\tuserDiscovery.metadataDiscoveryIncomplete ||\n\t\t\t\t(userDiscovery.omittedAgentDefinitions ?? 0) > 0\n\t\t\t\t\t? \"warning\"\n\t\t\t\t\t: \"pass\",\n\t\t\tmessage: `${userDiscovery.agents.length} user-scope definitions available.`,\n\t\t},\n\t\t{\n\t\t\tname: \"models\",\n\t\t\tstatus: modelCount > 0 ? \"pass\" : \"fail\",\n\t\t\tmessage: `${modelCount} session-usable models available.`,\n\t\t},\n\t\t{\n\t\t\tname: \"runtime\",\n\t\t\tstatus: runtimeStatus.enabled && !runtimeStatus.initialized ? \"warning\" : \"pass\",\n\t\t\tmessage: runtimeStatus.initialized\n\t\t\t\t? \"Stateful runtime initialized.\"\n\t\t\t\t: \"Stateful runtime not initialized.\",\n\t\t},\n\t\t{\n\t\t\tname: \"in-process-sdk\",\n\t\t\tstatus: inProcessCapability.error ? \"fail\" : \"pass\",\n\t\t\tmessage: inProcessCapability.error\n\t\t\t\t? boundedPrivateText(inProcessCapability.error, 2 * 1024)\n\t\t\t\t: \"Required public Pi in-process session APIs are available.\",\n\t\t},\n\t\t{\n\t\t\tname: \"rpc-cli\",\n\t\t\tstatus: rpcCapability.error ? \"fail\" : \"pass\",\n\t\t\tmessage: rpcCapability.error\n\t\t\t\t? boundedPrivateText(rpcCapability.error, 2 * 1024)\n\t\t\t\t: \"The exact loaded Pi CLI is available for persistent RPC transport.\",\n\t\t},\n\t\t{\n\t\t\tname: \"consultation\",\n\t\t\tstatus: runtime.getBlockingEnabled() && modelCount > 0 ? \"pass\" : \"fail\",\n\t\t\tmessage: runtime.getBlockingEnabled()\n\t\t\t\t? modelCount > 0\n\t\t\t\t\t? \"Read-only consultation is supported.\"\n\t\t\t\t\t: \"Consultation has no available model.\"\n\t\t\t\t: \"Blocking delegation is disabled, so consultation is not registered.\",\n\t\t},\n\t] as const;\n\treturn inspectResult({\n\t\taction: operation.action,\n\t\tchecks,\n\t\tok: checks.every((check) => check.status !== \"fail\"),\n\t});\n}\n\nfunction projectAgent(\n\tagent: AgentConfig,\n\tctx: ExtensionContext,\n\tincludeTools = true,\n): Record<string, unknown> {\n\tconst tools = agent.tools === undefined ? undefined : projectToolNames(agent.tools);\n\treturn {\n\t\tname: boundedPrivateText(agent.name, 256),\n\t\tdescription: boundedPrivateText(agent.description, 256),\n\t\tsource: agent.source,\n\t\tscope: agent.source === \"project\" ? \"project\" : \"user\",\n\t\tpath:\n\t\t\tagent.source === \"project\"\n\t\t\t\t? safeTerminalLine(\n\t\t\t\t\t\tpath.posix.join(CONFIG_DIR_NAME, \"agents\", path.basename(agent.filePath)),\n\t\t\t\t\t)\n\t\t\t\t: safeDisplayPath(agent.filePath, ctx.cwd),\n\t\tmodel: agent.model ? boundedPrivateText(agent.model, 256) : undefined,\n\t\tthinkingLevel: agent.thinkingLevel,\n\t\tcapabilityManifest: projectCapabilityManifest(agent.capabilityManifest),\n\t\t...(includeTools\n\t\t\t? { tools, toolCount: agent.tools?.length }\n\t\t\t: { toolCount: agent.tools?.length }),\n\t\tconsultTools: resolveConsultTools(agent.tools),\n\t};\n}\n\nfunction projectRunSummary(run: AgentRunInspectionSummary): Record<string, unknown> {\n\treturn {\n\t\tid: boundedPrivateText(run.id, 256),\n\t\tagent: boundedPrivateText(run.agent, 256),\n\t\tstate: run.state,\n\t\tcreatedAt: run.createdAt,\n\t\tupdatedAt: run.updatedAt,\n\t\thistoryCount: run.historyCount,\n\t\tunreadMessages: run.unreadMessages,\n\t\tturnGeneration: run.turnGeneration,\n\t\tpendingCompletionCount: run.pendingCompletionCount,\n\t};\n}\n\nfunction projectRun(run: AgentRunInspectionDetail, ctx: ExtensionContext): Record<string, unknown> {\n\treturn {\n\t\t...projectRunSummary(run),\n\t\tcwd: safeDisplayPath(run.cwd, ctx.cwd),\n\t\tworkspaceMode: run.workspaceMode ?? \"shared\",\n\t\tthinkingLevel: run.thinkingLevel,\n\t\ttimeoutMs: run.timeoutMs,\n\t\tcurrentTimeoutMs: run.currentTimeoutMs,\n\t\tidleTimeoutMs: run.idleTimeoutMs,\n\t\tcurrentIdleTimeoutMs: run.currentIdleTimeoutMs,\n\t\tmaxTurns: run.maxTurns,\n\t\tcurrentMaxTurns: run.currentMaxTurns,\n\t\tmaxToolCalls: run.maxToolCalls,\n\t\tcurrentMaxToolCalls: run.currentMaxToolCalls,\n\t\tcontext: {\n\t\t\tturns: run.contextTurns ?? 0,\n\t\t\tsources: run.contextSources ?? 0,\n\t\t\tbytes: run.contextBytes ?? 0,\n\t\t\ttruncated: run.contextTruncated === true,\n\t\t},\n\t\tcontract: run.contract\n\t\t\t? {\n\t\t\t\t\tversion: run.contract.version,\n\t\t\t\t\tlevel: run.contract.level,\n\t\t\t\t\ttaskId: boundedPrivateText(run.contract.taskId, 256),\n\t\t\t\t\tenforcement: run.contract.enforcement,\n\t\t\t\t\tdependencies: run.contract.dependencies.length,\n\t\t\t\t\tacceptanceCriteria: run.contract.acceptanceCriteria.length,\n\t\t\t\t\trequiredEvidence: run.contract.requiredEvidence.length,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tresultFormat: run.resultFormat ?? \"text\",\n\t\tstructuredResult: run.structuredResult,\n\t\ttermination: run.termination,\n\t\toutcome: run.outcome,\n\t\tcapabilityGrant: run.capabilityGrant\n\t\t\t? {\n\t\t\t\t\tversion: run.capabilityGrant.version,\n\t\t\t\t\tid: run.capabilityGrant.id,\n\t\t\t\t\texecutionPlanId: run.capabilityGrant.executionPlanId,\n\t\t\t\t\ttaskGeneration: run.capabilityGrant.taskGeneration,\n\t\t\t\t\tissuedAt: run.capabilityGrant.issuedAt,\n\t\t\t\t\texpiresAt: run.capabilityGrant.expiresAt,\n\t\t\t\t\tstate: run.capabilityGrant.state,\n\t\t\t\t\trevokedAt: run.capabilityGrant.revokedAt,\n\t\t\t\t\trevocationReason: run.capabilityGrant.revocationReason,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\texecutionPlan: run.executionPlan\n\t\t\t? {\n\t\t\t\t\t...run.executionPlan,\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\t...run.executionPlan.target,\n\t\t\t\t\t\tcwd: safeDisplayPath(run.executionPlan.target.cwd, ctx.cwd),\n\t\t\t\t\t\ttrust: { ...run.executionPlan.target.trust, sourcePath: undefined },\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tsemanticSnapshot: run.semanticSnapshot\n\t\t\t? {\n\t\t\t\t\tversion: run.semanticSnapshot.version,\n\t\t\t\t\tdigest: run.semanticSnapshot.digest,\n\t\t\t\t\tcomponents: { ...run.semanticSnapshot.components },\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tsemanticCompatibility: run.semanticCompatibility,\n\t\ttelemetry: run.telemetry,\n\t\tcurrentRunId: run.currentRunId,\n\t\tcurrentTurnGeneration: run.currentTurnGeneration,\n\t\tcurrentTask: run.currentTask ? boundedPrivateText(run.currentTask, 2 * 1024) : undefined,\n\t\terror: run.error ? boundedPrivateText(run.error, 2 * 1024) : undefined,\n\t\ttarget: run.target\n\t\t\t? {\n\t\t\t\t\tcwd: safeDisplayPath(run.target.cwd, ctx.cwd),\n\t\t\t\t\tboundary: run.target.boundary,\n\t\t\t\t\ttrust: {\n\t\t\t\t\t\tkind: run.target.trust.kind,\n\t\t\t\t\t\tprojectTrusted: run.target.trust.projectTrusted,\n\t\t\t\t\t\tsourcePath: run.target.trust.sourcePath\n\t\t\t\t\t\t\t? safeDisplayPath(run.target.trust.sourcePath, ctx.cwd)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\twarning: run.target.trust.warning\n\t\t\t\t\t\t\t? boundedPrivateText(run.target.trust.warning, 512)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tpolicy: run.policy\n\t\t\t? {\n\t\t\t\t\tinherited: projectToolNames(run.policy.inherited),\n\t\t\t\t\toverridden: projectToolNames(run.policy.overridden),\n\t\t\t\t\tunsupported: projectToolNames(run.policy.unsupported),\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction projectWorkflowSummary(workflow: WorkItemLedgerSnapshot): Record<string, unknown> {\n\treturn {\n\t\tworkflowId: boundedPrivateText(workflow.workflowId, 256),\n\t\tgeneration: workflow.generation,\n\t\titemCount: workflow.items.length,\n\t\tstates: Object.fromEntries(\n\t\t\t[...new Set(workflow.items.map((item) => item.state))]\n\t\t\t\t.sort()\n\t\t\t\t.map((state) => [state, workflow.items.filter((item) => item.state === state).length]),\n\t\t),\n\t};\n}\n\nfunction projectWorkflow(workflow: WorkItemLedgerSnapshot): Record<string, unknown> {\n\tconst projected = boundedProjection(workflow.items, 64, (item) => ({\n\t\tid: boundedPrivateText(item.id, 256),\n\t\tstate: item.state,\n\t\tgeneration: item.generation,\n\t\ttaskGeneration: item.taskGeneration,\n\t\tdependencies: item.dependencies.map((value) => boundedPrivateText(value, 256)),\n\t\tassignedAgentId: item.assignedAgentId\n\t\t\t? boundedPrivateText(item.assignedAgentId, 256)\n\t\t\t: undefined,\n\t\tacceptedExecutionPlanId: item.acceptedExecutionPlanId,\n\t\tartifacts: item.artifacts.map((artifact) => ({\n\t\t\tid: boundedPrivateText(artifact.id, 256),\n\t\t\tkind: boundedPrivateText(artifact.kind, 256),\n\t\t\tversion: boundedPrivateText(artifact.version, 256),\n\t\t\tproducerTaskId: artifact.producerTaskId\n\t\t\t\t? boundedPrivateText(artifact.producerTaskId, 256)\n\t\t\t\t: undefined,\n\t\t\tgeneration: artifact.generation,\n\t\t\tverified: artifact.verified,\n\t\t})),\n\t\tverificationAccepted: item.verificationAccepted,\n\t\tacceptanceStateVersion: item.acceptanceStateVersion,\n\t\tacceptanceRequired: item.acceptanceRequired,\n\t\tacceptanceState: item.acceptanceState,\n\t\treworkCount: item.reworkCount,\n\t\tmaxReworkCycles: item.maxReworkCycles,\n\t\tacceptanceReceipt: item.acceptanceReceipt\n\t\t\t? {\n\t\t\t\t\tversion: item.acceptanceReceipt.version,\n\t\t\t\t\tdecision: item.acceptanceReceipt.decision,\n\t\t\t\t\ttargetTaskId: boundedPrivateText(item.acceptanceReceipt.targetTaskId, 256),\n\t\t\t\t\ttargetTaskGeneration: item.acceptanceReceipt.targetTaskGeneration,\n\t\t\t\t\ttargetExecutionPlanId: item.acceptanceReceipt.targetExecutionPlanId,\n\t\t\t\t\tverifierTaskId: boundedPrivateText(item.acceptanceReceipt.verifierTaskId, 256),\n\t\t\t\t\tverifierTaskGeneration: item.acceptanceReceipt.verifierTaskGeneration,\n\t\t\t\t\tverifierExecutionPlanId: item.acceptanceReceipt.verifierExecutionPlanId,\n\t\t\t\t\tverifierAgent: boundedPrivateText(item.acceptanceReceipt.verifierAgent, 256),\n\t\t\t\t\tbeforeTreeIdentity: item.acceptanceReceipt.beforeTreeIdentity,\n\t\t\t\t\tafterTreeIdentity: item.acceptanceReceipt.afterTreeIdentity,\n\t\t\t\t\tpatchDigest: item.acceptanceReceipt.patchDigest,\n\t\t\t\t\tchangedPathCount: item.acceptanceReceipt.changedPaths.length,\n\t\t\t\t\tcheckCount: item.acceptanceReceipt.checks.length,\n\t\t\t\t\trequiredEvidenceCount: item.acceptanceReceipt.requiredEvidenceIds.length,\n\t\t\t\t\tcreatedAt: item.acceptanceReceipt.createdAt,\n\t\t\t\t\tsourceTruncated: item.acceptanceReceipt.sourceTruncated,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tacceptanceReceiptHistoryCount: item.acceptanceReceiptHistory.length,\n\t\tstagedTreeIdentity: item.stagedTreeIdentity\n\t\t\t? {\n\t\t\t\t\tversion: item.stagedTreeIdentity.version,\n\t\t\t\t\tkind: item.stagedTreeIdentity.kind,\n\t\t\t\t\tdigest: item.stagedTreeIdentity.digest,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tverificationReceipt: item.verificationReceipt\n\t\t\t? {\n\t\t\t\t\tversion: item.verificationReceipt.version,\n\t\t\t\t\tdecision: item.verificationReceipt.decision,\n\t\t\t\t\ttargetTaskId: boundedPrivateText(item.verificationReceipt.targetTaskId, 256),\n\t\t\t\t\ttargetTaskGeneration: item.verificationReceipt.targetTaskGeneration,\n\t\t\t\t\ttargetExecutionPlanId: item.verificationReceipt.targetExecutionPlanId,\n\t\t\t\t\tverifierTaskId: boundedPrivateText(item.verificationReceipt.verifierTaskId, 256),\n\t\t\t\t\tverifierTaskGeneration: item.verificationReceipt.verifierTaskGeneration,\n\t\t\t\t\tverifierExecutionPlanId: item.verificationReceipt.verifierExecutionPlanId,\n\t\t\t\t\ttreeIdentity: item.verificationReceipt.treeIdentity,\n\t\t\t\t\tsummary: boundedPrivateText(item.verificationReceipt.summary, 8 * 1024),\n\t\t\t\t\tevidenceCount: item.verificationReceipt.evidence.length,\n\t\t\t\t\tlimitationCount: item.verificationReceipt.limitations.length,\n\t\t\t\t\tcreatedAt: item.verificationReceipt.createdAt,\n\t\t\t\t\ttruncated: item.verificationReceipt.truncated,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\toutcomeReason: item.outcomeReason\n\t\t\t? boundedPrivateText(item.outcomeReason, 2 * 1024)\n\t\t\t: undefined,\n\t}));\n\treturn {\n\t\t...projectWorkflowSummary(workflow),\n\t\titems: projected.items,\n\t\tomittedItems: projected.omitted,\n\t};\n}\n\nfunction projectModels(ctx: ExtensionContext, limit: number): Record<string, unknown> {\n\tconst scoped = ctx.scopedModels ?? [];\n\tconst candidates =\n\t\tscoped.length > 0\n\t\t\t? scoped\n\t\t\t: ctx.modelRegistry.getAvailable().map((model) => ({ model, thinkingLevel: undefined }));\n\tconst selected = boundedProjection(candidates, limit, ({ model, thinkingLevel }) => ({\n\t\tprovider: boundedPrivateText(model.provider, 256),\n\t\tid: boundedPrivateText(model.id, 256),\n\t\tname: boundedPrivateText(model.name, 256),\n\t\treasoning: model.reasoning,\n\t\tinput: [...model.input],\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tthinkingLevel,\n\t\tcurrent: ctx.model?.provider === model.provider && ctx.model?.id === model.id,\n\t}));\n\treturn {\n\t\tmodels: selected.items,\n\t\treturned: selected.items.length,\n\t\tomitted: selected.omitted,\n\t\tsource: scoped.length > 0 ? \"session scope\" : \"available snapshot\",\n\t};\n}\n\nfunction projectStatus(runtime: SubagentInspectRuntime): Record<string, unknown> {\n\tconst stateful = runtime.getRuntimeStatus();\n\tconst workflow = resolveDelegationWorkflow(runtime.getBlockingEnabled(), stateful.enabled);\n\tconst configured = inspectDelegationWorkflowSettings();\n\tconst resources = inspectConsultResourceSettings();\n\tconst cwdPolicy = inspectCwdPolicySettings();\n\tconst completion = inspectCompletionDeliverySettings();\n\tconst parallelLimit = inspectBlockingParallelLimitSettings();\n\tconst detachedLimits = inspectStatefulLimitSettings();\n\tconst transport = inspectStatefulTransportSettings();\n\tconst configuredDetachedLimits = detachedLimits.values\n\t\t? Object.fromEntries(\n\t\t\t\tObject.entries(detachedLimits.values).map(([field, snapshot]) => [field, snapshot.value]),\n\t\t\t)\n\t\t: undefined;\n\tconst configuredDetachedLimitSources = detachedLimits.values\n\t\t? Object.fromEntries(\n\t\t\t\tObject.entries(detachedLimits.values).map(([field, snapshot]) => [field, snapshot.source]),\n\t\t\t)\n\t\t: undefined;\n\treturn {\n\t\tworkflow,\n\t\tconfiguredWorkflow: configured.value,\n\t\tconfiguredWorkflowSource: configured.source,\n\t\tstateful,\n\t\tstatefulLimits: stateful.limits,\n\t\tconfiguredTransport: transport.value,\n\t\tconfiguredTransportSource: transport.source,\n\t\tconfiguredStatefulLimits: configuredDetachedLimits,\n\t\tconfiguredStatefulLimitSources: configuredDetachedLimitSources,\n\t\tconfiguredCompletionDelivery: completion.value,\n\t\tconfiguredCompletionDeliverySource: completion.source,\n\t\tmaxParallelTasks: runtime.getMaxParallelTasks(),\n\t\tconfiguredMaxParallelTasks: parallelLimit.value,\n\t\tconfiguredMaxParallelTasksSource: parallelLimit.source,\n\t\tconsultResources: runtime.getConsultResourcePolicy(),\n\t\tconsultationCwdPolicy: runtime.getConsultationCwdPolicy(),\n\t\tconfiguredConsultationCwdPolicy: cwdPolicy.consultation.value,\n\t\tconsultationCwdPolicySource: cwdPolicy.consultation.source,\n\t\tdelegationCwdPolicy: runtime.getDelegationCwdPolicy(),\n\t\tconfiguredDelegationCwdPolicy: cwdPolicy.delegation.value,\n\t\tdelegationCwdPolicySource: cwdPolicy.delegation.source,\n\t\tconfiguredConsultResources: resources.value,\n\t\tconsultResourcesSource: resources.source,\n\t\tsettingsPath: safeDisplayPath(resources.path, process.cwd()),\n\t\tsettingsError:\n\t\t\tconfigured.error ||\n\t\t\tresources.error ||\n\t\t\tcwdPolicy.error ||\n\t\t\tcompletion.error ||\n\t\t\tparallelLimit.error ||\n\t\t\tdetachedLimits.error ||\n\t\t\ttransport.error\n\t\t\t\t? boundedPrivateText(\n\t\t\t\t\t\tconfigured.error ??\n\t\t\t\t\t\t\tresources.error ??\n\t\t\t\t\t\t\tcwdPolicy.error ??\n\t\t\t\t\t\t\tcompletion.error ??\n\t\t\t\t\t\t\tparallelLimit.error ??\n\t\t\t\t\t\t\tdetachedLimits.error ??\n\t\t\t\t\t\t\ttransport.error ??\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t2 * 1024,\n\t\t\t\t\t)\n\t\t\t\t: undefined,\n\t};\n}\n\nasync function inspectInProcessCapability(): Promise<{ error?: string }> {\n\ttry {\n\t\tconst moduleSpecifier = \"@earendil-works/pi-coding-agent\";\n\t\tconst core = await import(moduleSpecifier);\n\t\tfor (const name of [\n\t\t\t\"createAgentSessionServices\",\n\t\t\t\"createAgentSessionFromServices\",\n\t\t\t\"resolveCliModel\",\n\t\t] as const) {\n\t\t\tif (typeof core[name] !== \"function\") return { error: `Pi core does not export ${name}()` };\n\t\t}\n\t\treturn {};\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nfunction inspectRpcCapability(): { error?: string } {\n\ttry {\n\t\tresolvePiInvocation([\"--mode\", \"rpc\", \"--no-session\"]);\n\t\treturn {};\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nfunction availableModelCount(ctx: ExtensionContext): number {\n\treturn (ctx.scopedModels?.length ?? 0) > 0\n\t\t? ctx.scopedModels.length\n\t\t: ctx.modelRegistry.getAvailable().length;\n}\n\nfunction projectToolNames(tools: readonly string[]): string[] {\n\treturn tools.slice(0, 100).map((tool) => boundedPrivateText(tool, 256));\n}\n\nfunction boundedProjection<T, TProjected>(\n\tvalues: readonly T[],\n\tlimit: number,\n\tproject: (value: T) => TProjected,\n): { items: TProjected[]; omitted: number } {\n\tconst items: TProjected[] = [];\n\tfor (const value of values.slice(0, limit)) {\n\t\tconst next = project(value);\n\t\tif (Buffer.byteLength(JSON.stringify([...items, next]), \"utf8\") > MAX_DETAILS_LIST_BYTES) break;\n\t\titems.push(next);\n\t}\n\treturn { items, omitted: Math.max(0, values.length - items.length) };\n}\n\nfunction inspectResult(details: Record<string, unknown>): InspectToolResult {\n\tconst rendered = boundText(JSON.stringify(details, null, 2));\n\treturn {\n\t\tcontent: [{ type: \"text\", text: rendered.text }],\n\t\tdetails: { ...details, ...(rendered.truncated ? { truncated: true } : {}) },\n\t};\n}\n\nfunction assertTrustedScope(scope: AgentScope, ctx: ExtensionContext): void {\n\tif ((scope === \"project\" || scope === \"both\") && !ctx.isProjectTrusted()) {\n\t\tthrow new Error(\"Project-local subagent definitions require a trusted project\");\n\t}\n}\n\nfunction parameterRecord(params: unknown): Record<string, unknown> {\n\tif (!params || typeof params !== \"object\" || Array.isArray(params)) {\n\t\tthrow new Error(\"subagent_inspect parameters must be an object\");\n\t}\n\treturn params as Record<string, unknown>;\n}\n\nfunction optionalAgentScope(value: unknown): AgentScope {\n\tif (value === undefined) return \"user\";\n\tif (value === \"user\" || value === \"project\" || value === \"both\") return value;\n\tthrow new Error(\"subagent_inspect agentScope must be user, project, or both\");\n}\n\nfunction requiredString(value: unknown, action: string, field: string): string {\n\tif (typeof value !== \"string\" || value.length === 0) {\n\t\tthrow new Error(`subagent_inspect action \"${action}\" requires ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalContextMode(value: unknown): ContextMode {\n\tif (value === undefined) return \"none\";\n\tif (value === \"none\" || value === \"all\" || value === \"summary\") return value;\n\tif (typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1) return value;\n\tthrow new Error(\"subagent_inspect context must be none, all, summary, or a positive integer\");\n}\n\nfunction optionalStringArray(value: unknown, field: string): string[] | undefined {\n\tif (value === undefined) return undefined;\n\tif (\n\t\t!Array.isArray(value) ||\n\t\t!value.every((item) => typeof item === \"string\" && item.length > 0)\n\t) {\n\t\tthrow new Error(`subagent_inspect ${field} must be an array of non-empty strings`);\n\t}\n\treturn [...value];\n}\n\nfunction optionalLimit(value: unknown, defaultValue: number): number {\n\tif (value === undefined) return defaultValue;\n\tif (!Number.isSafeInteger(value) || (value as number) < 1 || (value as number) > 100) {\n\t\tthrow new Error(\"subagent_inspect limit must be an integer between 1 and 100\");\n\t}\n\treturn value as number;\n}\n"],
5
- "mappings": "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",
6
- "names": ["settings", "agent"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/persistence.ts"],
4
- "sourcesContent": ["import { createHash } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { getAgentDir, withFileMutationQueue } from \"@earendil-works/pi-coding-agent\";\nimport { projectAgentRecords } from \"./agent-projection.js\";\nimport { isThinkingLevel } from \"./agents/types.js\";\nimport { isCapabilityGrant, revokeCapabilityGrant } from \"./capability-grant.js\";\nimport { redactPrivateText } from \"./context.js\";\nimport { normalizeDelegationContract } from \"./delegation-contract.js\";\nimport { copyExecutionPlan, isExecutionPlan } from \"./execution-plan.js\";\nimport { MAX_SUBAGENT_TIMEOUT_MS } from \"./limits.js\";\nimport type { ManagedAgent } from \"./registry.js\";\nimport { parseAnyStructuredSubagentResult, SUBAGENT_RESULT_FORMATS } from \"./result-contract.js\";\nimport { isSemanticSnapshot } from \"./semantic-snapshot.js\";\nimport { resolveStatefulLimits } from \"./stateful-limits.js\";\nimport { validateTaskName, validateTaskPath } from \"./task-path.js\";\nimport { copyTurnTerminationReport, type TurnTerminationReport } from \"./timeout-checkpoint.js\";\nimport { MAX_SUBAGENT_TOOL_CALLS, MAX_SUBAGENT_TURNS } from \"./turn-budget.js\";\n\nconst STATE_VERSION = 3;\nconst MAX_STORED_COMPLETIONS_PER_AGENT = 20;\nconst DEFAULT_STATEFUL_LIMITS = resolveStatefulLimits();\nconst MAX_STATE_BYTES = 5 * 1024 * 1024;\n\ninterface StoredState {\n\tversion: 3;\n\tupdatedAt: number;\n\tagents: ManagedAgent[];\n}\n\nexport interface PersistenceOptions {\n\tretentionDays?: number;\n\tmaxStoredAgents?: number;\n\tstateDir?: string;\n}\n\nexport class AgentPersistence {\n\treadonly filePath: string;\n\tprivate readonly retentionMs: number;\n\tprivate readonly maxStoredAgents: number;\n\n\tconstructor(owner: string, options: PersistenceOptions = {}) {\n\t\tconst retentionDays = options.retentionDays ?? 30;\n\t\tif (!Number.isFinite(retentionDays) || retentionDays <= 0) {\n\t\t\tthrow new Error(\"Subagent retentionDays must be a positive finite number\");\n\t\t}\n\t\tconst retentionMs = retentionDays * 24 * 60 * 60 * 1000;\n\t\tif (!Number.isFinite(retentionMs)) {\n\t\t\tthrow new Error(\"Subagent retentionDays is too large\");\n\t\t}\n\t\tconst maxStoredAgents = options.maxStoredAgents ?? DEFAULT_STATEFUL_LIMITS.maxStoredAgents;\n\t\tif (!Number.isSafeInteger(maxStoredAgents) || maxStoredAgents < 1) {\n\t\t\tthrow new Error(\"Subagent maxStoredAgents must be a positive safe integer\");\n\t\t}\n\t\tconst safeOwner = createHash(\"sha256\").update(owner).digest(\"hex\").slice(0, 24);\n\t\tconst stateDir = options.stateDir ?? path.join(getAgentDir(), \"pi-subagents-state\");\n\t\tthis.filePath = path.join(stateDir, `${safeOwner}.json`);\n\t\tthis.retentionMs = retentionMs;\n\t\tthis.maxStoredAgents = maxStoredAgents;\n\t}\n\n\tload(): ManagedAgent[] {\n\t\tif (!fs.existsSync(this.filePath)) return [];\n\t\ttry {\n\t\t\tconst stat = fs.statSync(this.filePath);\n\t\t\tif (stat.size > MAX_STATE_BYTES) throw new Error(\"state exceeds size limit\");\n\t\t\tconst parsed = JSON.parse(fs.readFileSync(this.filePath, \"utf8\")) as unknown;\n\t\t\tif (!isStoredState(parsed)) throw new Error(\"unsupported or malformed state\");\n\t\t\tconst cutoff = Date.now() - this.retentionMs;\n\t\t\treturn projectAgentRecords(\n\t\t\t\tparsed.agents.filter((agent) => agent.updatedAt >= cutoff && agent.state !== \"closed\"),\n\t\t\t\t{ maxAgents: this.maxStoredAgents },\n\t\t\t).map(sanitizeAgent);\n\t\t} catch {\n\t\t\tthis.quarantine();\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync save(agents: readonly ManagedAgent[]): Promise<void> {\n\t\tconst cutoff = Date.now() - this.retentionMs;\n\t\tconst eligible = agents.filter(\n\t\t\t(agent) => agent.state !== \"closed\" && agent.updatedAt >= cutoff,\n\t\t);\n\t\tconst records = projectAgentRecords(eligible, {\n\t\t\tmaxAgents: this.maxStoredAgents,\n\t\t}).map(sanitizeAgent);\n\t\tconst state: StoredState = { version: STATE_VERSION, updatedAt: Date.now(), agents: records };\n\t\tlet content = `${JSON.stringify(state, null, \"\\t\")}\\n`;\n\t\twhile (Buffer.byteLength(content, \"utf8\") > MAX_STATE_BYTES && state.agents.length > 0) {\n\t\t\tconst rootsWithPendingCompletions = new Set(\n\t\t\t\tstate.agents\n\t\t\t\t\t.filter((agent) => (agent.pendingCompletions?.length ?? 0) > 0)\n\t\t\t\t\t.map((agent) => agent.rootId),\n\t\t\t);\n\t\t\tconst droppableRoot = state.agents.find(\n\t\t\t\t(agent) => !rootsWithPendingCompletions.has(agent.rootId),\n\t\t\t)?.rootId;\n\t\t\tif (droppableRoot) {\n\t\t\t\tstate.agents = state.agents.filter((agent) => agent.rootId !== droppableRoot);\n\t\t\t} else if (!trimOldestHistory(state.agents) && !clearOldestContext(state.agents)) {\n\t\t\t\tthrow new Error(\"Subagent state exceeds its durable completion storage limit\");\n\t\t\t}\n\t\t\tcontent = `${JSON.stringify(state, null, \"\\t\")}\\n`;\n\t\t}\n\t\tawait fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n\t\tawait withFileMutationQueue(this.filePath, async () => {\n\t\t\tconst tempPath = `${this.filePath}.${process.pid}.${Date.now()}.tmp`;\n\t\t\tawait fs.promises.writeFile(tempPath, content, { encoding: \"utf8\", mode: 0o600 });\n\t\t\tawait fs.promises.rename(tempPath, this.filePath);\n\t\t});\n\t}\n\n\tasync delete(): Promise<void> {\n\t\tawait withFileMutationQueue(this.filePath, async () => {\n\t\t\tawait fs.promises.rm(this.filePath, { force: true });\n\t\t});\n\t}\n\n\tprivate quarantine(): void {\n\t\ttry {\n\t\t\tfs.renameSync(this.filePath, `${this.filePath}.invalid-${Date.now()}`);\n\t\t} catch {\n\t\t\t// A concurrent process may already have moved or removed it.\n\t\t}\n\t}\n}\n\nfunction trimOldestHistory(agents: ManagedAgent[]): boolean {\n\tconst candidate = agents\n\t\t.filter((agent) => agent.history.length > 0)\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\t(left.history[0]?.completedAt ?? Number.POSITIVE_INFINITY) -\n\t\t\t\t(right.history[0]?.completedAt ?? Number.POSITIVE_INFINITY),\n\t\t)[0];\n\tif (!candidate) return false;\n\tcandidate.history.shift();\n\treturn true;\n}\n\nfunction clearOldestContext(agents: ManagedAgent[]): boolean {\n\tconst candidate = agents.find((agent) => agent.context !== undefined);\n\tif (!candidate) return false;\n\tcandidate.context = undefined;\n\tcandidate.contextTruncated = true;\n\treturn true;\n}\n\nfunction sanitizeAgent(agent: ManagedAgent): ManagedAgent {\n\treturn {\n\t\t...agent,\n\t\trootId: agent.rootId ?? agent.id,\n\t\tdepth: agent.depth ?? 0,\n\t\tchildren: [...(agent.children ?? [])],\n\t\tmailbox: (agent.mailbox ?? []).map((message) => ({\n\t\t\t...message,\n\t\t\trecipientId: agent.id,\n\t\t\tcontent: redactPrivateText(message.content),\n\t\t})),\n\t\tstate: agent.state === \"running\" || agent.state === \"starting\" ? \"interrupted\" : agent.state,\n\t\tcurrentTask: undefined,\n\t\tcurrentRunId: undefined,\n\t\tcurrentTurnGeneration: undefined,\n\t\tturnGeneration: agent.turnGeneration ?? 0,\n\t\tpendingCompletions: (agent.pendingCompletions ?? [])\n\t\t\t.slice(-MAX_STORED_COMPLETIONS_PER_AGENT)\n\t\t\t.map((completion) => ({\n\t\t\t\t...completion,\n\t\t\t\ttask: redactPrivateText(completion.task),\n\t\t\t\toutput: redactPrivateText(completion.output),\n\t\t\t\terror: completion.error ? redactPrivateText(completion.error) : undefined,\n\t\t\t})),\n\t\tcurrentTimeoutMs: undefined,\n\t\tcurrentIdleTimeoutMs: undefined,\n\t\tcurrentMaxTurns: undefined,\n\t\tcurrentMaxToolCalls: undefined,\n\t\tcurrentMailboxMessageIds: undefined,\n\t\ttelemetry: undefined,\n\t\tcontract: normalizeDelegationContract(agent.contract),\n\t\tstructuredResult:\n\t\t\tagent.structuredResult && agent.resultFormat\n\t\t\t\t? parseAnyStructuredSubagentResult(\n\t\t\t\t\t\tJSON.stringify(agent.structuredResult),\n\t\t\t\t\t\tagent.resultFormat,\n\t\t\t\t\t)\n\t\t\t\t: undefined,\n\t\texecutionPlan: agent.executionPlan ? copyExecutionPlan(agent.executionPlan) : undefined,\n\t\tcapabilityGrant: agent.capabilityGrant\n\t\t\t? agent.capabilityGrant.state === \"active\"\n\t\t\t\t? revokeCapabilityGrant(agent.capabilityGrant, \"persistence-boundary\", Date.now())\n\t\t\t\t: structuredClone(agent.capabilityGrant)\n\t\t\t: undefined,\n\t\tsemanticSnapshot: agent.semanticSnapshot ? structuredClone(agent.semanticSnapshot) : undefined,\n\t\tsemanticCompatibility: agent.semanticCompatibility\n\t\t\t? structuredClone(agent.semanticCompatibility)\n\t\t\t: undefined,\n\t\ttermination: agent.termination ? sanitizeTermination(agent.termination) : undefined,\n\t\tcontext: agent.context ? redactPrivateText(agent.context) : undefined,\n\t\terror: agent.error ? redactPrivateText(agent.error) : undefined,\n\t\thistory: agent.history.map((turn) => ({\n\t\t\t...turn,\n\t\t\ttask: redactPrivateText(turn.task),\n\t\t\toutput: redactPrivateText(turn.output),\n\t\t\ttermination: turn.termination ? sanitizeTermination(turn.termination) : undefined,\n\t\t})),\n\t};\n}\n\nfunction sanitizeTermination(report: TurnTerminationReport): TurnTerminationReport {\n\tconst copy = copyTurnTerminationReport(report);\n\tcopy.checkpoint.task = redactPrivateText(copy.checkpoint.task);\n\tcopy.checkpoint.partialOutput = copy.checkpoint.partialOutput\n\t\t? redactPrivateText(copy.checkpoint.partialOutput)\n\t\t: undefined;\n\tcopy.checkpoint.assistantNotes = copy.checkpoint.assistantNotes.map(redactPrivateText);\n\tcopy.checkpoint.completedTools = copy.checkpoint.completedTools.map((item) => ({\n\t\t...item,\n\t\ttoolName: redactPrivateText(item.toolName),\n\t\toutput: redactPrivateText(item.output),\n\t}));\n\tcopy.checkpoint.changedFiles = copy.checkpoint.changedFiles.map(redactPrivateText);\n\tcopy.finalization.error = copy.finalization.error\n\t\t? redactPrivateText(copy.finalization.error)\n\t\t: undefined;\n\treturn copy;\n}\n\nfunction isStoredState(value: unknown): value is StoredState {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst state = value as { version?: unknown; agents?: unknown };\n\tif (\n\t\t(state.version !== 1 && state.version !== 2 && state.version !== STATE_VERSION) ||\n\t\t!Array.isArray(state.agents)\n\t) {\n\t\treturn false;\n\t}\n\treturn state.agents.every((agent) => {\n\t\tif (!agent || typeof agent !== \"object\") return false;\n\t\tconst record = agent as Partial<ManagedAgent>;\n\t\treturn (\n\t\t\ttypeof record.id === \"string\" &&\n\t\t\t(record.taskName === undefined || isValidTaskName(record.taskName)) &&\n\t\t\t(record.taskPath === undefined || isValidTaskPath(record.taskPath)) &&\n\t\t\ttypeof record.agent === \"string\" &&\n\t\t\ttypeof record.cwd === \"string\" &&\n\t\t\ttypeof record.createdAt === \"number\" &&\n\t\t\tNumber.isFinite(record.createdAt) &&\n\t\t\ttypeof record.updatedAt === \"number\" &&\n\t\t\tNumber.isFinite(record.updatedAt) &&\n\t\t\t(record.parentId === undefined || typeof record.parentId === \"string\") &&\n\t\t\t(record.thinkingLevel === undefined || isThinkingLevel(record.thinkingLevel)) &&\n\t\t\t(record.timeoutMs === undefined || isTurnTimeout(record.timeoutMs)) &&\n\t\t\t(record.idleTimeoutMs === undefined || isTurnTimeout(record.idleTimeoutMs)) &&\n\t\t\t(record.maxTurns === undefined || isPositiveBounded(record.maxTurns, MAX_SUBAGENT_TURNS)) &&\n\t\t\t(record.maxToolCalls === undefined ||\n\t\t\t\tisPositiveBounded(record.maxToolCalls, MAX_SUBAGENT_TOOL_CALLS)) &&\n\t\t\t(record.termination === undefined || isTerminationReport(record.termination)) &&\n\t\t\t(record.contextTurns === undefined || isNonNegativeInteger(record.contextTurns)) &&\n\t\t\t(record.contextBytes === undefined || isNonNegativeInteger(record.contextBytes)) &&\n\t\t\t(record.turnGeneration === undefined || isNonNegativeInteger(record.turnGeneration)) &&\n\t\t\t(record.pendingCompletions === undefined ||\n\t\t\t\tisCompletionOutbox(record.pendingCompletions, record.turnGeneration ?? 0)) &&\n\t\t\t(record.spawnIdempotencyKey === undefined ||\n\t\t\t\t(typeof record.spawnIdempotencyKey === \"string\" &&\n\t\t\t\t\trecord.spawnIdempotencyKey.length > 0 &&\n\t\t\t\t\trecord.spawnIdempotencyKey.length <= 256)) &&\n\t\t\t(record.spawnRequestHash === undefined || isSha256(record.spawnRequestHash)) &&\n\t\t\t(record.contract === undefined ||\n\t\t\t\tnormalizeDelegationContract(record.contract) !== undefined) &&\n\t\t\t(record.resultFormat === undefined ||\n\t\t\t\tSUBAGENT_RESULT_FORMATS.includes(record.resultFormat)) &&\n\t\t\t(record.structuredResult === undefined ||\n\t\t\t\t(record.resultFormat !== undefined &&\n\t\t\t\t\tparseAnyStructuredSubagentResult(\n\t\t\t\t\t\tJSON.stringify(record.structuredResult),\n\t\t\t\t\t\trecord.resultFormat,\n\t\t\t\t\t) !== undefined)) &&\n\t\t\t(record.executionPlan === undefined || isExecutionPlan(record.executionPlan)) &&\n\t\t\t(record.capabilityGrant === undefined || isCapabilityGrant(record.capabilityGrant)) &&\n\t\t\t(record.semanticSnapshot === undefined || isSemanticSnapshot(record.semanticSnapshot)) &&\n\t\t\t(record.semanticCompatibility === undefined ||\n\t\t\t\tisSemanticCompatibility(record.semanticCompatibility)) &&\n\t\t\t(record.workspaceMode === undefined || record.workspaceMode === \"worktree\") &&\n\t\t\t(record.target === undefined || isTargetPolicyAudit(record.target)) &&\n\t\t\t(record.children === undefined ||\n\t\t\t\t(Array.isArray(record.children) &&\n\t\t\t\t\trecord.children.every((id) => typeof id === \"string\"))) &&\n\t\t\tArray.isArray(record.history) &&\n\t\t\trecord.history.every(isAgentTurn) &&\n\t\t\t(record.mailbox === undefined ||\n\t\t\t\t(Array.isArray(record.mailbox) && record.mailbox.every(isMailboxMessage)))\n\t\t);\n\t});\n}\n\nfunction isValidTaskName(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\ttry {\n\t\treturn validateTaskName(value) === value;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isValidTaskPath(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\ttry {\n\t\treturn validateTaskPath(value) === value;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isSemanticCompatibility(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst compatibility = value as Record<string, unknown>;\n\treturn (\n\t\t[\"compatible\", \"warning\", \"needs-revalidation\", \"rejected\"].includes(\n\t\t\tString(compatibility.status),\n\t\t) &&\n\t\tArray.isArray(compatibility.changedComponents) &&\n\t\tcompatibility.changedComponents.every((item) => typeof item === \"string\")\n\t);\n}\n\nfunction isNonNegativeInteger(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isTurnTimeout(value: unknown): value is number {\n\treturn (\n\t\ttypeof value === \"number\" &&\n\t\tNumber.isSafeInteger(value) &&\n\t\tvalue >= 1 &&\n\t\tvalue <= MAX_SUBAGENT_TIMEOUT_MS\n\t);\n}\n\nfunction isPositiveBounded(value: unknown, maximum: number): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1 && value <= maximum;\n}\n\nfunction isTerminationReport(value: unknown): value is TurnTerminationReport {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst report = value as Record<string, unknown>;\n\tif (\n\t\treport.version !== \"pi-subagents:termination:v1\" ||\n\t\t![\n\t\t\t\"work_timeout\",\n\t\t\t\"idle_timeout\",\n\t\t\t\"turn_limit\",\n\t\t\t\"tool_call_limit\",\n\t\t\t\"orchestration_timeout\",\n\t\t].includes(String(report.reason)) ||\n\t\t!isPositiveBounded(report.limit, MAX_SUBAGENT_TIMEOUT_MS)\n\t) {\n\t\treturn false;\n\t}\n\tconst checkpoint = report.checkpoint;\n\tconst finalization = report.finalization;\n\tif (!checkpoint || typeof checkpoint !== \"object\" || Array.isArray(checkpoint)) return false;\n\tif (!finalization || typeof finalization !== \"object\" || Array.isArray(finalization))\n\t\treturn false;\n\tconst checkpointValue = checkpoint as Record<string, unknown>;\n\tconst finalizationValue = finalization as Record<string, unknown>;\n\treturn (\n\t\tcheckpointValue.version === \"pi-subagents:checkpoint:v1\" &&\n\t\ttypeof checkpointValue.task === \"string\" &&\n\t\t(checkpointValue.partialOutput === undefined ||\n\t\t\ttypeof checkpointValue.partialOutput === \"string\") &&\n\t\tArray.isArray(checkpointValue.assistantNotes) &&\n\t\tcheckpointValue.assistantNotes.every((item) => typeof item === \"string\") &&\n\t\tArray.isArray(checkpointValue.completedTools) &&\n\t\tcheckpointValue.completedTools.every(isCompletedToolEvidence) &&\n\t\tArray.isArray(checkpointValue.changedFiles) &&\n\t\tcheckpointValue.changedFiles.every((item) => typeof item === \"string\") &&\n\t\ttypeof checkpointValue.sideEffectsMayHaveOccurred === \"boolean\" &&\n\t\ttypeof checkpointValue.truncated === \"boolean\" &&\n\t\ttypeof finalizationValue.attempted === \"boolean\" &&\n\t\t[\"completed\", \"failed\", \"timed_out\", \"skipped\"].includes(String(finalizationValue.status)) &&\n\t\ttypeof finalizationValue.durationMs === \"number\" &&\n\t\tNumber.isFinite(finalizationValue.durationMs) &&\n\t\tfinalizationValue.durationMs >= 0 &&\n\t\t(finalizationValue.error === undefined || typeof finalizationValue.error === \"string\")\n\t);\n}\n\nfunction isCompletedToolEvidence(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst item = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof item.toolName === \"string\" &&\n\t\ttypeof item.output === \"string\" &&\n\t\ttypeof item.isError === \"boolean\"\n\t);\n}\n\nfunction isSha256(value: unknown): value is string {\n\treturn typeof value === \"string\" && /^[a-f0-9]{64}$/u.test(value);\n}\n\nfunction isTargetPolicyAudit(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst target = value as Record<string, unknown>;\n\tif (\n\t\ttypeof target.cwd !== \"string\" ||\n\t\t(target.boundary !== \"current-workspace\" && target.boundary !== \"external\") ||\n\t\t!target.trust ||\n\t\ttypeof target.trust !== \"object\"\n\t) {\n\t\treturn false;\n\t}\n\tconst trust = target.trust as Record<string, unknown>;\n\treturn (\n\t\t[\n\t\t\t\"session-trusted\",\n\t\t\t\"session-untrusted\",\n\t\t\t\"saved-trusted\",\n\t\t\t\"saved-denied\",\n\t\t\t\"unsaved\",\n\t\t\t\"trust-error\",\n\t\t].includes(String(trust.kind)) &&\n\t\ttypeof trust.projectTrusted === \"boolean\" &&\n\t\t(trust.sourcePath === undefined || typeof trust.sourcePath === \"string\") &&\n\t\t(trust.warning === undefined || typeof trust.warning === \"string\")\n\t);\n}\n\nfunction isCompletionOutbox(value: unknown, turnGeneration: number): boolean {\n\tif (!Array.isArray(value) || value.length > MAX_STORED_COMPLETIONS_PER_AGENT) return false;\n\tconst ids = new Set<string>();\n\tlet previousGeneration = 0;\n\tlet previousCreatedAt = Number.NEGATIVE_INFINITY;\n\tfor (const completion of value) {\n\t\tif (!isPersistedCompletion(completion, turnGeneration)) return false;\n\t\tif (ids.has(completion.completionId)) return false;\n\t\tif (completion.generation <= previousGeneration || completion.createdAt <= previousCreatedAt) {\n\t\t\treturn false;\n\t\t}\n\t\tids.add(completion.completionId);\n\t\tpreviousGeneration = completion.generation;\n\t\tpreviousCreatedAt = completion.createdAt;\n\t}\n\treturn true;\n}\n\nfunction isPersistedCompletion(\n\tvalue: unknown,\n\tturnGeneration: number,\n): value is import(\"./registry.js\").PersistedAgentCompletion {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst completion = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof completion.completionId === \"string\" &&\n\t\tcompletion.completionId.length > 0 &&\n\t\tcompletion.completionId.length <= 256 &&\n\t\t(completion.recipientId === undefined ||\n\t\t\t(typeof completion.recipientId === \"string\" && completion.recipientId.length > 0)) &&\n\t\t(completion.recipientPath === undefined || isValidTaskPath(completion.recipientPath)) &&\n\t\ttypeof completion.runId === \"string\" &&\n\t\tcompletion.runId.length > 0 &&\n\t\tcompletion.runId.length <= 256 &&\n\t\ttypeof completion.generation === \"number\" &&\n\t\tNumber.isSafeInteger(completion.generation) &&\n\t\tcompletion.generation >= 1 &&\n\t\tcompletion.generation <= turnGeneration &&\n\t\ttypeof completion.task === \"string\" &&\n\t\ttypeof completion.output === \"string\" &&\n\t\t(completion.error === undefined || typeof completion.error === \"string\") &&\n\t\ttypeof completion.createdAt === \"number\" &&\n\t\tNumber.isFinite(completion.createdAt)\n\t);\n}\n\nfunction isAgentTurn(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst turn = value as Record<string, unknown>;\n\treturn (\n\t\t(turn.runId === undefined ||\n\t\t\t(typeof turn.runId === \"string\" && turn.runId.length > 0 && turn.runId.length <= 256)) &&\n\t\t(turn.generation === undefined ||\n\t\t\t(typeof turn.generation === \"number\" &&\n\t\t\t\tNumber.isSafeInteger(turn.generation) &&\n\t\t\t\tturn.generation >= 1)) &&\n\t\ttypeof turn.task === \"string\" &&\n\t\ttypeof turn.output === \"string\" &&\n\t\ttypeof turn.startedAt === \"number\" &&\n\t\tNumber.isFinite(turn.startedAt) &&\n\t\ttypeof turn.completedAt === \"number\" &&\n\t\tNumber.isFinite(turn.completedAt) &&\n\t\ttypeof turn.exitCode === \"number\" &&\n\t\tNumber.isFinite(turn.exitCode) &&\n\t\t(turn.termination === undefined || isTerminationReport(turn.termination))\n\t);\n}\n\nfunction isMailboxMessage(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst message = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof message.id === \"string\" &&\n\t\ttypeof message.senderId === \"string\" &&\n\t\ttypeof message.recipientId === \"string\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\ttypeof message.createdAt === \"number\" &&\n\t\tNumber.isFinite(message.createdAt) &&\n\t\t(message.readAt === undefined ||\n\t\t\t(typeof message.readAt === \"number\" && Number.isFinite(message.readAt))) &&\n\t\t(message.deduplicationKey === undefined || typeof message.deduplicationKey === \"string\") &&\n\t\t(message.completionId === undefined || typeof message.completionId === \"string\")\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -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 { 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
- }