@narumitw/pi-subagents 2.1.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/README.md +181 -1250
  2. package/dist/child-communication-bridge.ts +136 -0
  3. package/dist/child-communication-bridge.ts.map +7 -0
  4. package/dist/chunks/chunk-UKTWUQRM.js +667 -0
  5. package/dist/chunks/chunk-UKTWUQRM.js.map +7 -0
  6. package/dist/index.ts +1448 -1598
  7. package/dist/index.ts.map +4 -4
  8. package/docs/design-principles.md +31 -0
  9. package/docs/ipc-transport-idea.md +103 -0
  10. package/docs/tools.md +109 -0
  11. package/package.json +11 -19
  12. package/src/broker-credentials.ts +71 -0
  13. package/src/child-communication-bridge.ts +153 -0
  14. package/src/child-communication-tools.ts +147 -0
  15. package/src/completion-renderer.ts +60 -0
  16. package/src/index.ts +1 -1
  17. package/src/message-broker.ts +628 -0
  18. package/src/model-output.ts +42 -0
  19. package/src/process.ts +688 -0
  20. package/src/runtime.ts +538 -0
  21. package/src/subagents.ts +33 -34
  22. package/src/tools.ts +416 -0
  23. package/src/types.ts +85 -0
  24. package/src/widget.ts +130 -0
  25. package/dist/chunks/auto-transport-FUUKFDIG.ts +0 -109
  26. package/dist/chunks/auto-transport-FUUKFDIG.ts.map +0 -7
  27. package/dist/chunks/capability-grant-PR72SWWS.ts +0 -19
  28. package/dist/chunks/capability-grant-PR72SWWS.ts.map +0 -7
  29. package/dist/chunks/child-peer-bridge.ts +0 -108
  30. package/dist/chunks/child-peer-bridge.ts.map +0 -7
  31. package/dist/chunks/chunk-2LMJU25E.ts +0 -1641
  32. package/dist/chunks/chunk-2LMJU25E.ts.map +0 -7
  33. package/dist/chunks/chunk-47SK2QYC.ts +0 -56
  34. package/dist/chunks/chunk-47SK2QYC.ts.map +0 -7
  35. package/dist/chunks/chunk-4AQSF7AS.ts +0 -29
  36. package/dist/chunks/chunk-4AQSF7AS.ts.map +0 -7
  37. package/dist/chunks/chunk-5DGRMKNV.ts +0 -126
  38. package/dist/chunks/chunk-5DGRMKNV.ts.map +0 -7
  39. package/dist/chunks/chunk-6H6TBBED.ts +0 -108
  40. package/dist/chunks/chunk-6H6TBBED.ts.map +0 -7
  41. package/dist/chunks/chunk-6KJ34M6S.ts +0 -159
  42. package/dist/chunks/chunk-6KJ34M6S.ts.map +0 -7
  43. package/dist/chunks/chunk-6NSJVPXX.ts +0 -480
  44. package/dist/chunks/chunk-6NSJVPXX.ts.map +0 -7
  45. package/dist/chunks/chunk-7AAJEUSL.ts +0 -238
  46. package/dist/chunks/chunk-7AAJEUSL.ts.map +0 -7
  47. package/dist/chunks/chunk-BFK2Z4ZF.ts +0 -189
  48. package/dist/chunks/chunk-BFK2Z4ZF.ts.map +0 -7
  49. package/dist/chunks/chunk-BOAXY55Y.ts +0 -153
  50. package/dist/chunks/chunk-BOAXY55Y.ts.map +0 -7
  51. package/dist/chunks/chunk-D4CR7T73.ts +0 -353
  52. package/dist/chunks/chunk-D4CR7T73.ts.map +0 -7
  53. package/dist/chunks/chunk-FEVPWRMU.ts +0 -300
  54. package/dist/chunks/chunk-FEVPWRMU.ts.map +0 -7
  55. package/dist/chunks/chunk-G6VZTCFH.ts +0 -70
  56. package/dist/chunks/chunk-G6VZTCFH.ts.map +0 -7
  57. package/dist/chunks/chunk-H3FP6DLR.ts +0 -160
  58. package/dist/chunks/chunk-H3FP6DLR.ts.map +0 -7
  59. package/dist/chunks/chunk-HA36LPCO.ts +0 -130
  60. package/dist/chunks/chunk-HA36LPCO.ts.map +0 -7
  61. package/dist/chunks/chunk-HOP5FXDT.ts +0 -27
  62. package/dist/chunks/chunk-HOP5FXDT.ts.map +0 -7
  63. package/dist/chunks/chunk-IGAMVWFN.ts +0 -139
  64. package/dist/chunks/chunk-IGAMVWFN.ts.map +0 -7
  65. package/dist/chunks/chunk-ILEQ27AL.ts +0 -45
  66. package/dist/chunks/chunk-ILEQ27AL.ts.map +0 -7
  67. package/dist/chunks/chunk-ITVWPNU4.ts +0 -819
  68. package/dist/chunks/chunk-ITVWPNU4.ts.map +0 -7
  69. package/dist/chunks/chunk-IWC32VPY.ts +0 -172
  70. package/dist/chunks/chunk-IWC32VPY.ts.map +0 -7
  71. package/dist/chunks/chunk-JSZIP73U.ts +0 -362
  72. package/dist/chunks/chunk-JSZIP73U.ts.map +0 -7
  73. package/dist/chunks/chunk-JU6LUNLP.ts +0 -380
  74. package/dist/chunks/chunk-JU6LUNLP.ts.map +0 -7
  75. package/dist/chunks/chunk-KMGKCEO4.ts +0 -38
  76. package/dist/chunks/chunk-KMGKCEO4.ts.map +0 -7
  77. package/dist/chunks/chunk-LASD73CM.ts +0 -339
  78. package/dist/chunks/chunk-LASD73CM.ts.map +0 -7
  79. package/dist/chunks/chunk-LEOYDZI3.ts +0 -22
  80. package/dist/chunks/chunk-LEOYDZI3.ts.map +0 -7
  81. package/dist/chunks/chunk-LL4LP2T7.ts +0 -737
  82. package/dist/chunks/chunk-LL4LP2T7.ts.map +0 -7
  83. package/dist/chunks/chunk-N2T5IN4X.ts +0 -18
  84. package/dist/chunks/chunk-N2T5IN4X.ts.map +0 -7
  85. package/dist/chunks/chunk-N7BLVXKK.ts +0 -73
  86. package/dist/chunks/chunk-N7BLVXKK.ts.map +0 -7
  87. package/dist/chunks/chunk-NLT67IZS.ts +0 -322
  88. package/dist/chunks/chunk-NLT67IZS.ts.map +0 -7
  89. package/dist/chunks/chunk-NTRPLF46.ts +0 -63
  90. package/dist/chunks/chunk-NTRPLF46.ts.map +0 -7
  91. package/dist/chunks/chunk-ONDTY4EL.ts +0 -91
  92. package/dist/chunks/chunk-ONDTY4EL.ts.map +0 -7
  93. package/dist/chunks/chunk-OVPHFGKO.ts +0 -1769
  94. package/dist/chunks/chunk-OVPHFGKO.ts.map +0 -7
  95. package/dist/chunks/chunk-P7OH4XMF.ts +0 -60
  96. package/dist/chunks/chunk-P7OH4XMF.ts.map +0 -7
  97. package/dist/chunks/chunk-PBZMBTNJ.ts +0 -422
  98. package/dist/chunks/chunk-PBZMBTNJ.ts.map +0 -7
  99. package/dist/chunks/chunk-PGLSFLYW.ts +0 -52
  100. package/dist/chunks/chunk-PGLSFLYW.ts.map +0 -7
  101. package/dist/chunks/chunk-RRR66UWR.ts +0 -28
  102. package/dist/chunks/chunk-RRR66UWR.ts.map +0 -7
  103. package/dist/chunks/chunk-RSUXZD6S.ts +0 -275
  104. package/dist/chunks/chunk-RSUXZD6S.ts.map +0 -7
  105. package/dist/chunks/chunk-RTCVYIZA.ts +0 -221
  106. package/dist/chunks/chunk-RTCVYIZA.ts.map +0 -7
  107. package/dist/chunks/chunk-RY2AEGMZ.ts +0 -34
  108. package/dist/chunks/chunk-RY2AEGMZ.ts.map +0 -7
  109. package/dist/chunks/chunk-SWGQLFSD.ts +0 -60
  110. package/dist/chunks/chunk-SWGQLFSD.ts.map +0 -7
  111. package/dist/chunks/chunk-TM2R67J3.ts +0 -52
  112. package/dist/chunks/chunk-TM2R67J3.ts.map +0 -7
  113. package/dist/chunks/chunk-TMZRHIIK.ts +0 -497
  114. package/dist/chunks/chunk-TMZRHIIK.ts.map +0 -7
  115. package/dist/chunks/chunk-TZ34IQ3M.ts +0 -59
  116. package/dist/chunks/chunk-TZ34IQ3M.ts.map +0 -7
  117. package/dist/chunks/chunk-UMBPMVJW.ts +0 -22
  118. package/dist/chunks/chunk-UMBPMVJW.ts.map +0 -7
  119. package/dist/chunks/chunk-VDG7LTYE.ts +0 -80
  120. package/dist/chunks/chunk-VDG7LTYE.ts.map +0 -7
  121. package/dist/chunks/chunk-X4NMONPE.ts +0 -73
  122. package/dist/chunks/chunk-X4NMONPE.ts.map +0 -7
  123. package/dist/chunks/chunk-YPJEN6NU.ts +0 -65
  124. package/dist/chunks/chunk-YPJEN6NU.ts.map +0 -7
  125. package/dist/chunks/chunk-YU53SHA7.ts +0 -328
  126. package/dist/chunks/chunk-YU53SHA7.ts.map +0 -7
  127. package/dist/chunks/completion-delivery-RSJU6BXL.ts +0 -17
  128. package/dist/chunks/completion-delivery-RSJU6BXL.ts.map +0 -7
  129. package/dist/chunks/config-status-FKGDECZ3.ts +0 -35
  130. package/dist/chunks/config-status-FKGDECZ3.ts.map +0 -7
  131. package/dist/chunks/config-ui-ABHYNGQ7.ts +0 -1212
  132. package/dist/chunks/config-ui-ABHYNGQ7.ts.map +0 -7
  133. package/dist/chunks/consult-LJU3IQY5.ts +0 -519
  134. package/dist/chunks/consult-LJU3IQY5.ts.map +0 -7
  135. package/dist/chunks/context-QDKLVQXE.ts +0 -11
  136. package/dist/chunks/context-QDKLVQXE.ts.map +0 -7
  137. package/dist/chunks/create-stateful-transport-JWC2EFYL.ts +0 -130
  138. package/dist/chunks/create-stateful-transport-JWC2EFYL.ts.map +0 -7
  139. package/dist/chunks/cwd-policy-NB6XZ5GF.ts +0 -17
  140. package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +0 -7
  141. package/dist/chunks/delegation-contract-LA56I5DT.ts +0 -24
  142. package/dist/chunks/delegation-contract-LA56I5DT.ts.map +0 -7
  143. package/dist/chunks/discovery-MIFB2U4Y.ts +0 -12
  144. package/dist/chunks/discovery-MIFB2U4Y.ts.map +0 -7
  145. package/dist/chunks/execution-Q2JZLKJA.ts +0 -4037
  146. package/dist/chunks/execution-Q2JZLKJA.ts.map +0 -7
  147. package/dist/chunks/in-process-transport-HJ6TZXC3.ts +0 -39
  148. package/dist/chunks/in-process-transport-HJ6TZXC3.ts.map +0 -7
  149. package/dist/chunks/inspect-UH2TKH6E.ts +0 -634
  150. package/dist/chunks/inspect-UH2TKH6E.ts.map +0 -7
  151. package/dist/chunks/peer-communication-KL36Z6CO.ts +0 -294
  152. package/dist/chunks/peer-communication-KL36Z6CO.ts.map +0 -7
  153. package/dist/chunks/persistence-UY3PY6E5.ts +0 -348
  154. package/dist/chunks/persistence-UY3PY6E5.ts.map +0 -7
  155. package/dist/chunks/registry-BT54L6CY.ts +0 -1445
  156. package/dist/chunks/registry-BT54L6CY.ts.map +0 -7
  157. package/dist/chunks/retained-semantic-state-GM75FZGE.ts +0 -81
  158. package/dist/chunks/retained-semantic-state-GM75FZGE.ts.map +0 -7
  159. package/dist/chunks/rpc-transport-7R7DVCEB.ts +0 -1222
  160. package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +0 -7
  161. package/dist/chunks/runtime-policy-5YELCOVC.ts +0 -15
  162. package/dist/chunks/runtime-policy-5YELCOVC.ts.map +0 -7
  163. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +0 -19
  164. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +0 -7
  165. package/dist/chunks/spawn-idempotency-BNHOSMZW.ts +0 -13
  166. package/dist/chunks/spawn-idempotency-BNHOSMZW.ts.map +0 -7
  167. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +0 -15
  168. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +0 -7
  169. package/dist/chunks/subprocess-transport-VHZJRBTW.ts +0 -160
  170. package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +0 -7
  171. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +0 -164
  172. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +0 -7
  173. package/dist/chunks/workspace-WDKLN72J.ts +0 -11
  174. package/dist/chunks/workspace-WDKLN72J.ts.map +0 -7
  175. package/docs/async-runtime-protocol.md +0 -84
  176. package/docs/implementation-notes/pi-subagents-capability-matrix.md +0 -62
  177. package/docs/implementation-notes/pi-subagents-current-direction.md +0 -99
  178. package/docs/implementation-notes/pi-subagents-rpc-v1.md +0 -153
  179. package/docs/pi-subagents-diagrams.md +0 -183
  180. package/src/adaptive-scheduler.ts +0 -224
  181. package/src/admission-benchmark.ts +0 -95
  182. package/src/admission-policy.ts +0 -78
  183. package/src/agent-projection.ts +0 -53
  184. package/src/agents/built-ins.ts +0 -71
  185. package/src/agents/catalog.ts +0 -241
  186. package/src/agents/discovery.ts +0 -265
  187. package/src/agents/types.ts +0 -100
  188. package/src/agents.ts +0 -51
  189. package/src/async-subagent-benchmark.ts +0 -532
  190. package/src/auto-transport.ts +0 -121
  191. package/src/blocking-status.ts +0 -63
  192. package/src/cached-module-loader.ts +0 -18
  193. package/src/capabilities.ts +0 -145
  194. package/src/capability-grant.ts +0 -115
  195. package/src/capability-router.ts +0 -107
  196. package/src/child-peer-bridge.ts +0 -124
  197. package/src/child-peer-tools.ts +0 -132
  198. package/src/completion-delivery.ts +0 -409
  199. package/src/completion-render.ts +0 -190
  200. package/src/completion-requirement.ts +0 -479
  201. package/src/completion-routing.ts +0 -24
  202. package/src/config-registration.ts +0 -114
  203. package/src/config-status.ts +0 -217
  204. package/src/config-ui.ts +0 -983
  205. package/src/consult-policy.ts +0 -15
  206. package/src/consult-registration.ts +0 -125
  207. package/src/consult-render.ts +0 -194
  208. package/src/consult-resources.ts +0 -51
  209. package/src/consult-tool.ts +0 -95
  210. package/src/consult.ts +0 -566
  211. package/src/context.ts +0 -126
  212. package/src/create-stateful-transport.ts +0 -157
  213. package/src/cwd-policy.ts +0 -183
  214. package/src/delegation-contract.ts +0 -463
  215. package/src/execution/budget.ts +0 -56
  216. package/src/execution/runtime-policy.ts +0 -19
  217. package/src/execution-plan.ts +0 -322
  218. package/src/execution-ui.ts +0 -259
  219. package/src/execution.ts +0 -1679
  220. package/src/in-process-transport.ts +0 -941
  221. package/src/inspect-registration.ts +0 -64
  222. package/src/inspect-render.ts +0 -334
  223. package/src/inspect-tool.ts +0 -45
  224. package/src/inspect.ts +0 -769
  225. package/src/integration-controller.ts +0 -98
  226. package/src/limits.ts +0 -75
  227. package/src/orchestration-metrics.ts +0 -116
  228. package/src/outcome.ts +0 -61
  229. package/src/panel-child-group.ts +0 -35
  230. package/src/panel-contract.ts +0 -343
  231. package/src/panel-evidence.ts +0 -59
  232. package/src/panel-execution.ts +0 -769
  233. package/src/panel-failure.ts +0 -56
  234. package/src/panel-planning.ts +0 -175
  235. package/src/panel-presets.ts +0 -3
  236. package/src/panel-prompts.ts +0 -132
  237. package/src/panel-reconciliation.ts +0 -57
  238. package/src/panel-render.ts +0 -103
  239. package/src/parallel-limit-ui.ts +0 -113
  240. package/src/params.ts +0 -278
  241. package/src/peer-communication.ts +0 -352
  242. package/src/peer-transport.ts +0 -49
  243. package/src/persistence.ts +0 -522
  244. package/src/pi-args.ts +0 -43
  245. package/src/pi-invocation.ts +0 -168
  246. package/src/process-control.ts +0 -43
  247. package/src/prompt-resources.ts +0 -38
  248. package/src/prompt-source-safety.ts +0 -48
  249. package/src/protocol.ts +0 -76
  250. package/src/registry-types.ts +0 -204
  251. package/src/registry.ts +0 -1698
  252. package/src/render-common.ts +0 -252
  253. package/src/render.ts +0 -704
  254. package/src/result-contract.ts +0 -431
  255. package/src/retained-semantic-state.ts +0 -100
  256. package/src/rpc-timeout-finalization.ts +0 -207
  257. package/src/rpc-transport-metadata.ts +0 -65
  258. package/src/rpc-transport.ts +0 -1035
  259. package/src/rpc-turn-capture.ts +0 -217
  260. package/src/runner-outcome.ts +0 -31
  261. package/src/runner-result.ts +0 -55
  262. package/src/runner-types.ts +0 -102
  263. package/src/runner-usage.ts +0 -48
  264. package/src/runner.ts +0 -866
  265. package/src/safe-text.ts +0 -67
  266. package/src/semantic-snapshot.ts +0 -214
  267. package/src/session-guidance-contract.ts +0 -399
  268. package/src/settings/inspection.ts +0 -302
  269. package/src/settings/schema.ts +0 -195
  270. package/src/settings-reader.ts +0 -215
  271. package/src/settings.ts +0 -452
  272. package/src/spawn-idempotency.ts +0 -68
  273. package/src/stateful-agent-view.ts +0 -85
  274. package/src/stateful-config.ts +0 -13
  275. package/src/stateful-guidance.ts +0 -29
  276. package/src/stateful-lifecycle.ts +0 -74
  277. package/src/stateful-limit-ui.ts +0 -249
  278. package/src/stateful-limits.ts +0 -96
  279. package/src/stateful-prompt.ts +0 -49
  280. package/src/stateful-registration.ts +0 -1320
  281. package/src/stateful-render.ts +0 -318
  282. package/src/stateful-safety.ts +0 -47
  283. package/src/stateful-tool-params.ts +0 -215
  284. package/src/stateful.ts +0 -12
  285. package/src/subagent-details.ts +0 -43
  286. package/src/subagents-extension.ts +0 -355
  287. package/src/subprocess-transport.ts +0 -145
  288. package/src/supervision.ts +0 -104
  289. package/src/task-path.ts +0 -65
  290. package/src/timeout-checkpoint.ts +0 -305
  291. package/src/timeout-finalization.ts +0 -75
  292. package/src/tool-schema-compatibility.ts +0 -73
  293. package/src/transport-types.ts +0 -74
  294. package/src/transport-ui.ts +0 -135
  295. package/src/transport.ts +0 -43
  296. package/src/turn-budget.ts +0 -109
  297. package/src/usage-format.ts +0 -42
  298. package/src/usage-recording-config.ts +0 -13
  299. package/src/usage-recording-store.ts +0 -183
  300. package/src/usage-recording.ts +0 -478
  301. package/src/verification-harness.ts +0 -516
  302. package/src/verification-policy.ts +0 -67
  303. package/src/verification-receipt.ts +0 -275
  304. package/src/verified-execution-benchmark.ts +0 -86
  305. package/src/verified-execution-contract.ts +0 -191
  306. package/src/verified-execution-schema.ts +0 -32
  307. package/src/work-item-ledger.ts +0 -1404
  308. package/src/work-item-persistence.ts +0 -254
  309. package/src/workflow-completion-controller.ts +0 -397
  310. package/src/workflow-planning.ts +0 -172
  311. package/src/workflow-tree-identity.ts +0 -289
  312. package/src/workflow-ui.ts +0 -69
  313. package/src/workflow-verification.ts +0 -296
  314. package/src/workspace.ts +0 -174
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/rpc-transport.ts", "../../src/rpc-timeout-finalization.ts", "../../src/rpc-transport-metadata.ts", "../../src/rpc-turn-capture.ts"],
4
- "sourcesContent": ["import { type ChildProcess, spawn } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { RpcSessionState } from \"@earendil-works/pi-coding-agent\";\nimport { discoverAgents } from \"./agents/discovery.js\";\nimport type { AgentConfig, SubagentSettings } from \"./agents/types.js\";\nimport { formatPeerMessage } from \"./child-peer-tools.js\";\nimport {\n\tbuildCurrentTurnPrompt,\n\ttype ParentRuntimeSnapshot,\n\tvalidateInProcessTools,\n} from \"./in-process-transport.js\";\nimport {\n\tappendBounded,\n\tDEFAULT_MAX_OUTPUT_BYTES,\n\tDEFAULT_MAX_STDERR_BYTES,\n\ttruncateUtf8,\n} from \"./limits.js\";\nimport {\n\tCHILD_PEER_TOOL_NAMES,\n\tchildPeerBridgePath,\n\ttype PeerTransportRuntime,\n\tpeerBridgeEnvironment,\n} from \"./peer-transport.js\";\nimport { type PiInvocation, resolvePiInvocation } from \"./pi-invocation.js\";\nimport { terminateProcess } from \"./process-control.js\";\nimport { resolvePiPromptResources } from \"./prompt-resources.js\";\nimport { JsonLineDecoder } from \"./protocol.js\";\nimport type { AgentMailboxMessage, ManagedAgent, TurnOutcome } from \"./registry.js\";\nimport { finalizeTimedOutRpcTurn } from \"./rpc-timeout-finalization.js\";\nimport {\n\tboundedError,\n\tinterruptedRpcOutcome,\n\tmodelIdentity,\n\tnormalizeThinking,\n\trpcPolicy,\n} from \"./rpc-transport-metadata.js\";\nimport {\n\tcaptureRpcEvent,\n\tcommitRpcInFlightUsage,\n\tcreateRpcTurnCapture,\n\tobserveRpcBudgetEvent,\n\tsnapshotRpcUsage,\n} from \"./rpc-turn-capture.js\";\nimport { safeTerminalText } from \"./safe-text.js\";\nimport { readSubagentSettings } from \"./settings.js\";\nimport { buildStatefulTurnPrompt, resolveStatefulTurnTimeout } from \"./stateful-prompt.js\";\nimport {\n\tformatTimeoutCheckpoint,\n\tformatTurnTerminationMessage,\n\tTURN_TERMINATION_VERSION,\n\ttype TurnTerminationReport,\n} from \"./timeout-checkpoint.js\";\nimport type { SubagentTransport } from \"./transport.js\";\nimport {\n\tPI_SUBAGENTS_RPC_PROTOCOL,\n\ttype TransportProgressCallback,\n\ttype TransportTelemetry,\n} from \"./transport-types.js\";\nimport { TurnBudgetMonitor, type TurnBudgetStop } from \"./turn-budget.js\";\n\nconst COMMAND_TIMEOUT_MS = 30_000;\nconst STARTUP_TIMEOUT_MS = 30_000;\nconst ABORT_GRACE_MS = 5_000;\nconst BUILT_IN_TOOL_NAMES = new Set([\"read\", \"bash\", \"edit\", \"write\", \"grep\", \"find\", \"ls\"]);\n\ninterface RpcCommandInput {\n\ttype: string;\n\t[key: string]: unknown;\n}\n\ninterface RpcResponse {\n\tid?: string;\n\ttype: \"response\";\n\tcommand: string;\n\tsuccess: boolean;\n\tdata?: unknown;\n\terror?: string;\n}\n\ninterface PendingRequest {\n\tcommand: string;\n\tresolve(value: RpcResponse): void;\n\treject(error: Error): void;\n\ttimer: NodeJS.Timeout;\n}\n\nexport interface RpcProtocolClientOptions {\n\tcwd: string;\n\targs: string[];\n\tenv?: NodeJS.ProcessEnv;\n\tstartupTimeoutMs?: number;\n\tcommandTimeoutMs?: number;\n\tabortTimeoutMs?: number;\n\tterminationGraceMs?: number;\n\tinvocation?: PiInvocation;\n}\n\nexport interface RpcProtocolSnapshot {\n\tstate: RpcSessionState;\n\tstderr: string;\n\tmalformedLines: number;\n\toversizedLines: number;\n}\n\nexport class RpcProtocolClient {\n\tprivate process?: ChildProcess;\n\tprivate processClosed = false;\n\tprivate decoder?: JsonLineDecoder;\n\tprivate readonly pending = new Map<string, PendingRequest>();\n\tprivate readonly listeners = new Set<(event: unknown) => void>();\n\tprivate readonly closeListeners = new Set<(error: Error) => void>();\n\tprivate nextRequestId = 0;\n\tprivate stderr = \"\";\n\tprivate malformedLines = 0;\n\tprivate oversizedLines = 0;\n\tprivate closedError?: Error;\n\tprivate closePromise?: Promise<void>;\n\tprivate cleanupTermination?: () => void;\n\n\tconstructor(private readonly options: RpcProtocolClientOptions) {}\n\n\tasync start(signal?: AbortSignal): Promise<RpcProtocolSnapshot> {\n\t\tif (this.process) throw new Error(\"RPC subagent client already started\");\n\t\tif (signal?.aborted) throw abortError(\"RPC subagent start aborted\");\n\t\tconst invocation = this.options.invocation\n\t\t\t? {\n\t\t\t\t\tcommand: this.options.invocation.command,\n\t\t\t\t\targs: [...this.options.invocation.args, ...this.options.args],\n\t\t\t\t}\n\t\t\t: resolvePiInvocation(this.options.args);\n\t\tconst proc = spawn(invocation.command, invocation.args, {\n\t\t\tcwd: this.options.cwd,\n\t\t\tdetached: process.platform !== \"win32\",\n\t\t\tshell: false,\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t\tenv: { ...process.env, ...this.options.env },\n\t\t});\n\t\tthis.process = proc;\n\t\tthis.processClosed = false;\n\t\tthis.decoder = new JsonLineDecoder({\n\t\t\tonValue: (value) => this.handleValue(value),\n\t\t\tonMalformed: () => {\n\t\t\t\tthis.malformedLines++;\n\t\t\t\tthis.fail(new Error(\"RPC subagent emitted malformed JSONL\"));\n\t\t\t},\n\t\t\tonOversized: () => {\n\t\t\t\tthis.oversizedLines++;\n\t\t\t\tthis.fail(new Error(\"RPC subagent emitted an oversized JSONL record\"));\n\t\t\t},\n\t\t});\n\t\tproc.stdout?.on(\"data\", (chunk) => this.decoder?.push(chunk));\n\t\tproc.stdin?.on(\"error\", (error) => this.fail(errorMessage(\"RPC stdin failed\", error)));\n\t\tproc.stderr?.on(\"data\", (chunk) => {\n\t\t\tthis.stderr = appendBounded(\n\t\t\t\tthis.stderr,\n\t\t\t\tBuffer.isBuffer(chunk) ? chunk.toString(\"utf8\") : String(chunk),\n\t\t\t\tDEFAULT_MAX_STDERR_BYTES,\n\t\t\t).text;\n\t\t});\n\t\tproc.once(\"error\", (error) => this.fail(errorMessage(\"RPC process failed\", error)));\n\t\tproc.once(\"close\", (code, childSignal) => {\n\t\t\tthis.processClosed = true;\n\t\t\tthis.decoder?.finish();\n\t\t\tthis.fail(\n\t\t\t\tnew Error(\n\t\t\t\t\t`RPC subagent exited (code=${code ?? \"null\"}, signal=${childSignal ?? \"null\"})${this.stderr ? `: ${safeTerminalText(this.stderr)}` : \"\"}`,\n\t\t\t\t),\n\t\t\t);\n\t\t});\n\t\ttry {\n\t\t\tawait waitForSpawn(proc, signal, this.options.startupTimeoutMs ?? STARTUP_TIMEOUT_MS);\n\t\t\tif (signal?.aborted) throw abortError(\"RPC subagent start aborted\");\n\t\t\tconst state = await raceWithAbort(\n\t\t\t\tthis.requestData<RpcSessionState>(\n\t\t\t\t\t{ type: \"get_state\" },\n\t\t\t\t\tthis.options.startupTimeoutMs ?? STARTUP_TIMEOUT_MS,\n\t\t\t\t),\n\t\t\t\tsignal,\n\t\t\t\t\"RPC subagent readiness aborted\",\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tstate,\n\t\t\t\tstderr: this.stderr,\n\t\t\t\tmalformedLines: this.malformedLines,\n\t\t\t\toversizedLines: this.oversizedLines,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tawait this.stop();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tonEvent(listener: (event: unknown) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tonClose(listener: (error: Error) => void): () => void {\n\t\tthis.closeListeners.add(listener);\n\t\treturn () => this.closeListeners.delete(listener);\n\t}\n\n\tasync prompt(message: string, timeoutMs?: number): Promise<void> {\n\t\tawait this.request({ type: \"prompt\", message }, timeoutMs);\n\t}\n\n\tasync steer(message: string, timeoutMs?: number): Promise<void> {\n\t\tawait this.request({ type: \"steer\", message }, timeoutMs);\n\t}\n\n\tasync abort(): Promise<void> {\n\t\tawait this.request(\n\t\t\t{ type: \"abort\" },\n\t\t\tthis.options.abortTimeoutMs ?? Math.min(COMMAND_TIMEOUT_MS, ABORT_GRACE_MS),\n\t\t);\n\t}\n\n\tasync getState(): Promise<RpcSessionState> {\n\t\treturn this.requestData<RpcSessionState>({ type: \"get_state\" });\n\t}\n\n\tgetStderr(): string {\n\t\treturn this.stderr;\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tif (this.closePromise) return this.closePromise;\n\t\tconst proc = this.process;\n\t\tif (!proc) return;\n\t\tif (this.processClosed) {\n\t\t\tthis.cleanupTermination?.();\n\t\t\tthis.cleanupTermination = undefined;\n\t\t\tthis.process = undefined;\n\t\t\tthis.rejectPending(this.closedError ?? new Error(\"RPC subagent process already exited\"));\n\t\t\tthis.listeners.clear();\n\t\t\tthis.closeListeners.clear();\n\t\t\treturn;\n\t\t}\n\t\tthis.closePromise = new Promise<void>((resolve) => {\n\t\t\tlet settled = false;\n\t\t\tlet terminationDeadline: NodeJS.Timeout | undefined;\n\t\t\tconst finish = () => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tif (terminationDeadline) clearTimeout(terminationDeadline);\n\t\t\t\tproc.off(\"close\", finish);\n\t\t\t\tthis.cleanupTermination?.();\n\t\t\t\tthis.cleanupTermination = undefined;\n\t\t\t\tresolve();\n\t\t\t};\n\t\t\tproc.once(\"close\", finish);\n\t\t\ttry {\n\t\t\t\tproc.stdin?.end();\n\t\t\t} catch {\n\t\t\t\t// Termination below remains authoritative.\n\t\t\t}\n\t\t\tconst graceMs = this.options.terminationGraceMs ?? ABORT_GRACE_MS;\n\t\t\tthis.cleanupTermination?.();\n\t\t\tthis.cleanupTermination = terminateProcess(proc, graceMs);\n\t\t\tterminationDeadline = setTimeout(() => {\n\t\t\t\tproc.stdin?.destroy();\n\t\t\t\tproc.stdout?.destroy();\n\t\t\t\tproc.stderr?.destroy();\n\t\t\t\tfinish();\n\t\t\t}, graceMs + 1_000);\n\t\t});\n\t\tawait this.closePromise;\n\t\tthis.process = undefined;\n\t\tthis.rejectPending(new Error(\"RPC subagent client stopped\"));\n\t\tthis.listeners.clear();\n\t\tthis.closeListeners.clear();\n\t}\n\n\tprivate async requestData<T>(\n\t\tcommand: RpcCommandInput,\n\t\ttimeoutMs = this.options.commandTimeoutMs ?? COMMAND_TIMEOUT_MS,\n\t): Promise<T> {\n\t\tconst response = await this.request(command, timeoutMs);\n\t\treturn response.data as T;\n\t}\n\n\tprivate request(\n\t\tcommand: RpcCommandInput,\n\t\ttimeoutMs = this.options.commandTimeoutMs ?? COMMAND_TIMEOUT_MS,\n\t): Promise<RpcResponse> {\n\t\tconst proc = this.process;\n\t\tif (!proc?.stdin || proc.stdin.destroyed || !proc.stdin.writable) {\n\t\t\treturn Promise.reject(this.closedError ?? new Error(\"RPC subagent stdin is unavailable\"));\n\t\t}\n\t\tconst id = `psa_${++this.nextRequestId}`;\n\t\treturn new Promise<RpcResponse>((resolve, reject) => {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(rpcTimeoutError(`RPC ${command.type} response timed out after ${timeoutMs}ms`));\n\t\t\t}, timeoutMs);\n\t\t\ttimer.unref();\n\t\t\tthis.pending.set(id, { command: command.type, resolve, reject, timer });\n\t\t\ttry {\n\t\t\t\tproc.stdin?.write(`${JSON.stringify({ ...command, id })}\\n`, (error) => {\n\t\t\t\t\tif (!error) return;\n\t\t\t\t\tthis.fail(errorMessage(\"RPC stdin write failed\", error));\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t}).then((response) => {\n\t\t\tif (!response.success) throw new Error(response.error || `RPC ${command.type} failed`);\n\t\t\treturn response;\n\t\t});\n\t}\n\n\tprivate handleValue(value: unknown): void {\n\t\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return;\n\t\tconst event = value as Record<string, unknown>;\n\t\tif (event.type === \"response\" && typeof event.id === \"string\") {\n\t\t\tconst pending = this.pending.get(event.id);\n\t\t\tif (!pending) return;\n\t\t\tif (typeof event.command !== \"string\" || event.command !== pending.command) {\n\t\t\t\tthis.fail(\n\t\t\t\t\tnew Error(`RPC response command mismatch for ${event.id}: expected ${pending.command}`),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.pending.delete(event.id);\n\t\t\tclearTimeout(pending.timer);\n\t\t\tpending.resolve(event as unknown as RpcResponse);\n\t\t\treturn;\n\t\t}\n\t\tif (event.type === \"extension_ui_request\" && typeof event.id === \"string\") {\n\t\t\tthis.writeFireAndForget({\n\t\t\t\ttype: \"extension_ui_response\",\n\t\t\t\tid: event.id,\n\t\t\t\tcancelled: true,\n\t\t\t});\n\t\t}\n\t\tfor (const listener of this.listeners) listener(value);\n\t}\n\n\tprivate writeFireAndForget(value: Record<string, unknown>): void {\n\t\ttry {\n\t\t\tthis.process?.stdin?.write(`${JSON.stringify(value)}\\n`);\n\t\t} catch {\n\t\t\t// Process failure will be reported through close/error handling.\n\t\t}\n\t}\n\n\tprivate fail(error: Error): void {\n\t\tif (this.closedError) return;\n\t\tthis.closedError = error;\n\t\tthis.rejectPending(error);\n\t\tfor (const listener of this.closeListeners) listener(error);\n\t\tif (this.process && !this.closePromise) {\n\t\t\tthis.cleanupTermination = terminateProcess(\n\t\t\t\tthis.process,\n\t\t\t\tthis.options.terminationGraceMs ?? ABORT_GRACE_MS,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate rejectPending(error: Error): void {\n\t\tfor (const pending of this.pending.values()) {\n\t\t\tclearTimeout(pending.timer);\n\t\t\tpending.reject(error);\n\t\t}\n\t\tthis.pending.clear();\n\t}\n}\n\nexport interface RpcTransportOptions {\n\tgetSettings?: () => SubagentSettings | undefined;\n\tgetParentRuntime: () => ParentRuntimeSnapshot;\n\tcreateClient?: (options: RpcProtocolClientOptions) => RpcProtocolClient;\n\tresolvePromptResources?: typeof resolvePiPromptResources;\n\tdefaultTimeoutMs?: number;\n\tabortGraceMs?: number;\n\ttimeoutFinalizationMs?: number;\n\tpeerRuntime?: PeerTransportRuntime;\n}\n\ninterface RpcChildRecord {\n\tclient: RpcProtocolClient;\n\tstate: RpcSessionState;\n\tstarted: boolean;\n\ttemporaryPrompt?: { dir: string; filePath: string };\n}\n\nexport class RpcTransport implements SubagentTransport {\n\treadonly kind = \"rpc\" as const;\n\tprivate readonly children = new Map<string, RpcChildRecord>();\n\tprivate readonly createClient: (options: RpcProtocolClientOptions) => RpcProtocolClient;\n\n\tconstructor(private readonly options: RpcTransportOptions) {\n\t\tthis.createClient =\n\t\t\toptions.createClient ?? ((clientOptions) => new RpcProtocolClient(clientOptions));\n\t}\n\n\tasync runTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tsignal: AbortSignal,\n\t\tonProgress?: TransportProgressCallback,\n\t): Promise<TurnOutcome> {\n\t\tconst startedAt = Date.now();\n\t\tlet telemetry: TransportTelemetry = {\n\t\t\ttransport: \"rpc\",\n\t\t\tprotocol: PI_SUBAGENTS_RPC_PROTOCOL,\n\t\t\tphase: \"starting\",\n\t\t\tupdatedAt: startedAt,\n\t\t\ttiming: { startedAt, transportStartedAt: startedAt },\n\t\t};\n\t\tconst publish = (patch: Partial<TransportTelemetry>) => {\n\t\t\ttelemetry = {\n\t\t\t\t...telemetry,\n\t\t\t\t...patch,\n\t\t\t\ttiming: { ...telemetry.timing, ...patch.timing },\n\t\t\t\tusage: patch.usage ? { ...patch.usage } : telemetry.usage,\n\t\t\t\tupdatedAt: Date.now(),\n\t\t\t};\n\t\t\tonProgress?.({\n\t\t\t\t...telemetry,\n\t\t\t\ttiming: { ...telemetry.timing },\n\t\t\t\tusage: telemetry.usage ? { ...telemetry.usage } : undefined,\n\t\t\t});\n\t\t};\n\t\tpublish({});\n\t\tif (signal.aborted) return interruptedRpcOutcome(\"\", telemetry, \"starting\");\n\t\tconst settings = this.options.getSettings ? this.options.getSettings() : readSubagentSettings();\n\t\tconst agentConfig = discoverAgents(agent.cwd, agent.agentScope ?? \"user\", settings).agents.find(\n\t\t\t(candidate) => candidate.name === agent.agent,\n\t\t);\n\t\tif (!agentConfig) {\n\t\t\tpublish({ phase: \"failed\", failurePhase: \"starting\" });\n\t\t\treturn { output: \"\", exitCode: 1, error: `Unknown subagent: ${agent.agent}`, telemetry };\n\t\t}\n\t\tconst effectiveAgentConfig = {\n\t\t\t...agentConfig,\n\t\t\ttools: agent.executionPlan?.effectiveTools ?? agentConfig.tools,\n\t\t};\n\t\ttry {\n\t\t\tvalidateRpcTools(effectiveAgentConfig.tools);\n\t\t} catch (error) {\n\t\t\tpublish({ phase: \"failed\", failurePhase: \"starting\" });\n\t\t\treturn { output: \"\", exitCode: 1, error: boundedError(error), telemetry };\n\t\t}\n\t\tlet child: RpcChildRecord;\n\t\ttry {\n\t\t\tchild = await this.getOrCreate(agent, effectiveAgentConfig, signal);\n\t\t} catch (error) {\n\t\t\tpublish({ phase: signal.aborted ? \"interrupted\" : \"failed\", failurePhase: \"starting\" });\n\t\t\treturn {\n\t\t\t\toutput: \"\",\n\t\t\t\texitCode: signal.aborted ? 130 : 1,\n\t\t\t\taborted: signal.aborted,\n\t\t\t\terror: boundedError(error),\n\t\t\t\ttelemetry,\n\t\t\t};\n\t\t}\n\t\tconst stateModel = modelIdentity(child.state.model);\n\t\tpublish({\n\t\t\tphase: \"ready\",\n\t\t\tprovider: stateModel.provider,\n\t\t\tmodel: stateModel.model,\n\t\t\tthinkingLevel: normalizeThinking(child.state.thinkingLevel),\n\t\t\ttiming: { readyAt: Date.now() },\n\t\t});\n\t\tif (signal.aborted) {\n\t\t\tawait this.releaseById(agent.id).catch(() => undefined);\n\t\t\treturn interruptedRpcOutcome(\"\", telemetry, \"ready\");\n\t\t}\n\t\tconst timeoutMs =\n\t\t\tagent.currentTimeoutMs ??\n\t\t\tagent.timeoutMs ??\n\t\t\tagentConfig.timeoutMs ??\n\t\t\tthis.options.defaultTimeoutMs ??\n\t\t\tresolveStatefulTurnTimeout(agentConfig);\n\t\tconst capture = createRpcTurnCapture();\n\t\tlet resolveBudget!: (stop: TurnBudgetStop) => void;\n\t\tlet resolvePreAcceptanceIdle!: (stop: TurnBudgetStop) => void;\n\t\tconst budgetExceeded = new Promise<TurnBudgetStop>((resolve) => {\n\t\t\tresolveBudget = resolve;\n\t\t});\n\t\tconst preAcceptanceIdleExceeded = new Promise<TurnBudgetStop>((resolve) => {\n\t\t\tresolvePreAcceptanceIdle = resolve;\n\t\t});\n\t\tconst budgetMonitor = new TurnBudgetMonitor({\n\t\t\tidleTimeoutMs: agent.currentIdleTimeoutMs ?? agent.idleTimeoutMs,\n\t\t\tmaxTurns: agent.currentMaxTurns ?? agent.maxTurns,\n\t\t\tmaxToolCalls: agent.currentMaxToolCalls ?? agent.maxToolCalls,\n\t\t\tonExceeded(stop) {\n\t\t\t\tresolveBudget(stop);\n\t\t\t\tif (stop.reason === \"idle_timeout\") resolvePreAcceptanceIdle(stop);\n\t\t\t},\n\t\t});\n\t\tlet settledResolve!: () => void;\n\t\tlet settledReject!: (error: Error) => void;\n\t\tconst settled = new Promise<void>((resolve, reject) => {\n\t\t\tsettledResolve = resolve;\n\t\t\tsettledReject = reject;\n\t\t});\n\t\tvoid settled.catch(() => undefined);\n\t\tconst unsubscribeEvent = child.client.onEvent((event) => {\n\t\t\tconst usageChanged = captureRpcEvent(event, capture);\n\t\t\tobserveRpcBudgetEvent(event, budgetMonitor);\n\t\t\tif (!capture.firstActivityAt && isActivityEvent(event)) {\n\t\t\t\tcapture.firstActivityAt = Date.now();\n\t\t\t\tpublish({\n\t\t\t\t\tphase: \"running\",\n\t\t\t\t\ttiming: { firstActivityAt: capture.firstActivityAt },\n\t\t\t\t\t...(usageChanged ? { usage: snapshotRpcUsage(capture) } : {}),\n\t\t\t\t});\n\t\t\t} else if (usageChanged) {\n\t\t\t\tpublish({ usage: snapshotRpcUsage(capture) });\n\t\t\t}\n\t\t\tconst type = eventType(event);\n\t\t\tif (type === \"auto_retry_start\") publish({ phase: \"retrying\" });\n\t\t\tif (type === \"compaction_start\" || type === \"summarization_retry_attempt_start\") {\n\t\t\t\tpublish({ phase: \"compacting\" });\n\t\t\t}\n\t\t\tif (type === \"agent_settled\") settledResolve();\n\t\t});\n\t\tconst unsubscribeClose = child.client.onClose(settledReject);\n\t\tconst prompt = child.started\n\t\t\t? buildCurrentTurnPrompt(agent, task)\n\t\t\t: buildStatefulTurnPrompt(agent, task).text;\n\t\tlet accepted = false;\n\t\tlet preAcceptanceStop: TurnBudgetStop | undefined;\n\t\tconst deadline = Date.now() + timeoutMs;\n\t\ttry {\n\t\t\tawait Promise.race([\n\t\t\t\traceWithAbort(\n\t\t\t\t\tchild.client.prompt(prompt, remainingMs(deadline)),\n\t\t\t\t\tsignal,\n\t\t\t\t\t\"RPC subagent prompt acceptance aborted\",\n\t\t\t\t),\n\t\t\t\tpreAcceptanceIdleExceeded.then((stop) => {\n\t\t\t\t\tpreAcceptanceStop = stop;\n\t\t\t\t\tthrow new Error(formatTurnTerminationMessage(stop.reason, stop.limit, \"RPC subagent\"));\n\t\t\t\t}),\n\t\t\t]);\n\t\t\taccepted = true;\n\t\t\tchild.started = true;\n\t\t\tpublish({ phase: \"accepted\", timing: { promptAcceptedAt: Date.now() } });\n\t\t\tconst settlement = await Promise.race([\n\t\t\t\twaitForTurnSettlement(settled, signal, remainingMs(deadline)).then((kind) => ({\n\t\t\t\t\tkind,\n\t\t\t\t})),\n\t\t\t\tbudgetExceeded.then((stop) => ({ kind: \"limit\" as const, stop })),\n\t\t\t]);\n\t\t\tif (settlement.kind !== \"settled\") {\n\t\t\t\tconst [, stopped] = await Promise.all([\n\t\t\t\t\tchild.client.abort().catch(() => undefined),\n\t\t\t\t\tsettlesWithin(settled, this.options.abortGraceMs ?? ABORT_GRACE_MS),\n\t\t\t\t]);\n\t\t\t\tconst partial = truncateUtf8(capture.output || capture.partial, DEFAULT_MAX_OUTPUT_BYTES);\n\t\t\t\tconst stop =\n\t\t\t\t\tsettlement.kind === \"limit\"\n\t\t\t\t\t\t? settlement.stop\n\t\t\t\t\t\t: ({ reason: \"work_timeout\", limit: timeoutMs } as const);\n\t\t\t\tconst explicitAbort = settlement.kind === \"aborted\" || signal.aborted;\n\t\t\t\tconst termination: TurnTerminationReport | undefined = explicitAbort\n\t\t\t\t\t? undefined\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tversion: TURN_TERMINATION_VERSION,\n\t\t\t\t\t\t\treason: stop.reason,\n\t\t\t\t\t\t\tlimit: stop.limit,\n\t\t\t\t\t\t\tcheckpoint: capture.journal.checkpoint(task, partial.text),\n\t\t\t\t\t\t\tfinalization: {\n\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\tstatus: \"skipped\",\n\t\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\tif (explicitAbort || !stopped) {\n\t\t\t\t\tif (!stopped) await this.releaseById(agent.id);\n\t\t\t\t\tpublish({\n\t\t\t\t\t\tphase: explicitAbort ? \"interrupted\" : \"failed\",\n\t\t\t\t\t\tfailurePhase: \"running\",\n\t\t\t\t\t\ttiming: { settledAt: Date.now() },\n\t\t\t\t\t\tusage: snapshotRpcUsage(capture),\n\t\t\t\t\t});\n\t\t\t\t\tconst checkpointOutput = termination\n\t\t\t\t\t\t? formatTimeoutCheckpoint(termination.checkpoint)\n\t\t\t\t\t\t: partial.text;\n\t\t\t\t\treturn {\n\t\t\t\t\t\toutput: partial.text || checkpointOutput,\n\t\t\t\t\t\texitCode: explicitAbort ? 130 : 124,\n\t\t\t\t\t\taborted: explicitAbort,\n\t\t\t\t\t\ttruncated: partial.truncated || agent.contextTruncated,\n\t\t\t\t\t\terror: explicitAbort\n\t\t\t\t\t\t\t? \"RPC subagent was aborted\"\n\t\t\t\t\t\t\t: `${formatTurnTerminationMessage(stop.reason, stop.limit, \"RPC subagent\")}; abort did not settle`,\n\t\t\t\t\t\tpolicy: rpcPolicy(agentConfig, agent),\n\t\t\t\t\t\ttermination,\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tpublish({\n\t\t\t\t\tphase: \"finalizing\",\n\t\t\t\t\tfailurePhase: \"running\",\n\t\t\t\t\tusage: snapshotRpcUsage(capture),\n\t\t\t\t});\n\t\t\t\tconst finalizationStartedAt = Date.now();\n\t\t\t\tconst summary = await finalizeTimedOutRpcTurn({\n\t\t\t\t\tclient: child.client,\n\t\t\t\t\ttask,\n\t\t\t\t\tpartialOutput: partial.text,\n\t\t\t\t\tcheckpoint: termination?.checkpoint,\n\t\t\t\t\tterminationReason: stop.reason,\n\t\t\t\t\tresultFormat: agent.resultFormat,\n\t\t\t\t\tsignal,\n\t\t\t\t\tworkTimeoutMs: timeoutMs,\n\t\t\t\t\tfinalizationTimeoutMs: this.options.timeoutFinalizationMs,\n\t\t\t\t\tabortGraceMs: this.options.abortGraceMs ?? ABORT_GRACE_MS,\n\t\t\t\t\tresetCapture() {\n\t\t\t\t\t\tcommitRpcInFlightUsage(capture);\n\t\t\t\t\t\tcapture.output = \"\";\n\t\t\t\t\t\tcapture.partial = \"\";\n\t\t\t\t\t\tcapture.stopReason = undefined;\n\t\t\t\t\t\tcapture.error = undefined;\n\t\t\t\t\t},\n\t\t\t\t\tgetCapture: () => capture,\n\t\t\t\t\trelease: () => this.releaseById(agent.id),\n\t\t\t\t});\n\t\t\t\tif (termination) {\n\t\t\t\t\ttermination.finalization = {\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tstatus: summary.status,\n\t\t\t\t\t\tdurationMs: Date.now() - finalizationStartedAt,\n\t\t\t\t\t\terror: summary.error,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tpublish({\n\t\t\t\t\tphase: \"failed\",\n\t\t\t\t\tfailurePhase: \"running\",\n\t\t\t\t\ttiming: { settledAt: Date.now() },\n\t\t\t\t\tusage: snapshotRpcUsage(capture),\n\t\t\t\t});\n\t\t\t\tconst checkpointOutput = termination ? formatTimeoutCheckpoint(termination.checkpoint) : \"\";\n\t\t\t\treturn {\n\t\t\t\t\toutput: summary.error ? partial.text || checkpointOutput : summary.output,\n\t\t\t\t\texitCode: 124,\n\t\t\t\t\ttruncated: partial.truncated || summary.truncated || agent.contextTruncated,\n\t\t\t\t\terror: [\n\t\t\t\t\t\tformatTurnTerminationMessage(stop.reason, stop.limit, \"RPC subagent\"),\n\t\t\t\t\t\tsummary.error,\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(\"; \"),\n\t\t\t\t\tpolicy: rpcPolicy(agentConfig, agent),\n\t\t\t\t\ttermination,\n\t\t\t\t\ttelemetry,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst output = truncateUtf8(capture.output || capture.partial, DEFAULT_MAX_OUTPUT_BYTES);\n\t\t\tconst failed = capture.stopReason === \"error\" || !output.text.trim();\n\t\t\tpublish({\n\t\t\t\tphase: failed ? \"failed\" : \"settled\",\n\t\t\t\tfailurePhase: failed ? \"running\" : undefined,\n\t\t\t\ttiming: { settledAt: Date.now() },\n\t\t\t\tprovider: capture.provider ?? telemetry.provider,\n\t\t\t\tmodel: capture.model ?? telemetry.model,\n\t\t\t\tusage: snapshotRpcUsage(capture),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\toutput: output.text,\n\t\t\t\texitCode: failed ? 1 : 0,\n\t\t\t\ttruncated: output.truncated || agent.contextTruncated,\n\t\t\t\terror: failed ? capture.error || \"RPC subagent completed without final text\" : undefined,\n\t\t\t\tpolicy: rpcPolicy(agentConfig, agent),\n\t\t\t\ttelemetry,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tawait this.releaseById(agent.id).catch(() => undefined);\n\t\t\tconst timedOut = isTimeoutError(error);\n\t\t\tconst stop =\n\t\t\t\tpreAcceptanceStop ??\n\t\t\t\t(timedOut ? ({ reason: \"work_timeout\", limit: timeoutMs } as const) : undefined);\n\t\t\tconst partial = truncateUtf8(capture.output || capture.partial, DEFAULT_MAX_OUTPUT_BYTES);\n\t\t\tconst termination: TurnTerminationReport | undefined =\n\t\t\t\tstop && !signal.aborted\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tversion: TURN_TERMINATION_VERSION,\n\t\t\t\t\t\t\treason: stop.reason,\n\t\t\t\t\t\t\tlimit: stop.limit,\n\t\t\t\t\t\t\tcheckpoint: capture.journal.checkpoint(task, partial.text),\n\t\t\t\t\t\t\tfinalization: {\n\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\tstatus: \"skipped\",\n\t\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\tpublish({\n\t\t\t\tphase: signal.aborted ? \"interrupted\" : \"failed\",\n\t\t\t\tfailurePhase: accepted ? \"running\" : \"ready\",\n\t\t\t\ttiming: { settledAt: Date.now() },\n\t\t\t\tusage: snapshotRpcUsage(capture),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\toutput:\n\t\t\t\t\tpartial.text || (termination ? formatTimeoutCheckpoint(termination.checkpoint) : \"\"),\n\t\t\t\texitCode: signal.aborted ? 130 : stop ? 124 : 1,\n\t\t\t\taborted: signal.aborted,\n\t\t\t\terror: stop\n\t\t\t\t\t? formatTurnTerminationMessage(stop.reason, stop.limit, \"RPC subagent\")\n\t\t\t\t\t: boundedError(error),\n\t\t\t\tpolicy: rpcPolicy(agentConfig, agent),\n\t\t\t\ttermination,\n\t\t\t\ttelemetry,\n\t\t\t};\n\t\t} finally {\n\t\t\tbudgetMonitor.dispose();\n\t\t\tunsubscribeEvent();\n\t\t\tunsubscribeClose();\n\t\t}\n\t}\n\n\tasync deliverMessage(agent: ManagedAgent, message: AgentMailboxMessage): Promise<boolean> {\n\t\tconst child = this.children.get(agent.id);\n\t\tif (!child) return false;\n\t\tawait child.client.steer(formatPeerMessage(message));\n\t\treturn true;\n\t}\n\n\tasync release(agent: ManagedAgent): Promise<void> {\n\t\tawait this.releaseById(agent.id);\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\tconst results = await Promise.allSettled(\n\t\t\t[...this.children.keys()].map((agentId) => this.releaseById(agentId)),\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(failures, `Failed to release ${failures.length} RPC subagent(s)`);\n\t\t}\n\t}\n\n\tprivate async getOrCreate(\n\t\tagent: ManagedAgent,\n\t\tagentConfig: AgentConfig,\n\t\tsignal: AbortSignal,\n\t): Promise<RpcChildRecord> {\n\t\tconst existing = this.children.get(agent.id);\n\t\tif (existing) return existing;\n\t\tconst hasRolePrompt = agentConfig.systemPrompt.trim().length > 0;\n\t\tconst resources = hasRolePrompt\n\t\t\t? await (this.options.resolvePromptResources ?? resolvePiPromptResources)(\n\t\t\t\t\tagent.cwd,\n\t\t\t\t\tagent.target?.trust.projectTrusted ?? false,\n\t\t\t\t)\n\t\t\t: { appendSystemPromptPaths: [] };\n\t\tif (signal.aborted) throw abortError(\"RPC subagent start aborted\");\n\t\tconst temporaryPrompt = hasRolePrompt\n\t\t\t? await writeRolePrompt(agentConfig.name, agentConfig.systemPrompt)\n\t\t\t: undefined;\n\t\tif (signal.aborted) {\n\t\t\tcleanupRolePrompt(temporaryPrompt);\n\t\t\tthrow abortError(\"RPC subagent start aborted\");\n\t\t}\n\t\tlet client: RpcProtocolClient | undefined;\n\t\ttry {\n\t\t\tconst credentials = this.options.peerRuntime\n\t\t\t\t? await this.options.peerRuntime.issueCredentials(\n\t\t\t\t\t\tagent.id,\n\t\t\t\t\t\tagent.currentTurnGeneration ?? agent.turnGeneration ?? 1,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tif (signal.aborted) throw abortError(\"RPC subagent start aborted\");\n\t\t\tclient = this.createClient({\n\t\t\t\tcwd: agent.cwd,\n\t\t\t\tabortTimeoutMs: this.options.abortGraceMs ?? ABORT_GRACE_MS,\n\t\t\t\tterminationGraceMs: this.options.abortGraceMs ?? ABORT_GRACE_MS,\n\t\t\t\targs: buildRpcArgs(\n\t\t\t\t\tagent,\n\t\t\t\t\tagentConfig,\n\t\t\t\t\tthis.options.getParentRuntime(),\n\t\t\t\t\ttemporaryPrompt?.filePath,\n\t\t\t\t\tresources.appendSystemPromptPaths,\n\t\t\t\t\tcredentials !== undefined,\n\t\t\t\t),\n\t\t\t\tenv: {\n\t\t\t\t\tPI_SUBAGENT_DEPTH: String(\n\t\t\t\t\t\t(Number.parseInt(process.env.PI_SUBAGENT_DEPTH ?? \"0\", 10) || 0) + 1,\n\t\t\t\t\t),\n\t\t\t\t\tPI_SUBAGENT_RPC_PROTOCOL: PI_SUBAGENTS_RPC_PROTOCOL,\n\t\t\t\t\t...(credentials ? peerBridgeEnvironment(credentials) : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst snapshot = await client.start(signal);\n\t\t\tif (signal.aborted) throw abortError(\"RPC subagent start aborted\");\n\t\t\tconst record: RpcChildRecord = {\n\t\t\t\tclient,\n\t\t\t\tstate: snapshot.state,\n\t\t\t\tstarted: false,\n\t\t\t\ttemporaryPrompt,\n\t\t\t};\n\t\t\tthis.children.set(agent.id, record);\n\t\t\treturn record;\n\t\t} catch (error) {\n\t\t\tawait client?.stop().catch(() => undefined);\n\t\t\tthis.options.peerRuntime?.revoke(agent.id);\n\t\t\tcleanupRolePrompt(temporaryPrompt);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async releaseById(agentId: string): Promise<void> {\n\t\tconst child = this.children.get(agentId);\n\t\tif (!child) return;\n\t\tthis.children.delete(agentId);\n\t\tthis.options.peerRuntime?.revoke(agentId);\n\t\ttry {\n\t\t\tawait child.client.abort().catch(() => undefined);\n\t\t\tawait child.client.stop();\n\t\t} finally {\n\t\t\tcleanupRolePrompt(child.temporaryPrompt);\n\t\t}\n\t}\n}\n\nexport function validateRpcTools(tools: string[] | undefined): string[] | undefined {\n\tconst validated = validateInProcessTools(tools);\n\tif (validated?.some((tool) => !BUILT_IN_TOOL_NAMES.has(tool))) {\n\t\tthrow new Error(\"RPC subagents support only built-in Pi tools in pi-subagents:v1\");\n\t}\n\treturn validated;\n}\n\nexport function buildRpcArgs(\n\tagent: ManagedAgent,\n\tagentConfig: AgentConfig,\n\tparentRuntime: ParentRuntimeSnapshot,\n\trolePromptPath?: string,\n\tappendSystemPromptPaths: readonly string[] = [],\n\tpeerBridge = false,\n): string[] {\n\tconst args = [\"--mode\", \"rpc\", \"--no-session\", \"--no-extensions\"];\n\tif (peerBridge) args.push(\"-e\", childPeerBridgePath());\n\tconst model =\n\t\tagentConfig.model ??\n\t\t(parentRuntime.model ? `${parentRuntime.model.provider}/${parentRuntime.model.id}` : undefined);\n\tif (model) args.push(\"--model\", model);\n\tconst modelSelectsThinking = agentConfig.model\n\t\t? /:(?:off|minimal|low|medium|high|xhigh|max)$/u.test(agentConfig.model.trim())\n\t\t: false;\n\tconst thinking =\n\t\tagent.thinkingLevel ??\n\t\tagentConfig.thinkingLevel ??\n\t\t(modelSelectsThinking ? undefined : parentRuntime.thinkingLevel);\n\tif (thinking) args.push(\"--thinking\", thinking);\n\tif (agent.target?.trust.projectTrusted ?? false) args.push(\"--approve\");\n\telse args.push(\"--no-approve\");\n\tif (Array.isArray(agentConfig.tools)) {\n\t\tconst tools = [...agentConfig.tools, ...(peerBridge ? CHILD_PEER_TOOL_NAMES : [])];\n\t\tif (tools.length > 0) args.push(\"--tools\", [...new Set(tools)].join(\",\"));\n\t\telse args.push(\"--no-tools\");\n\t}\n\tfor (const promptPath of appendSystemPromptPaths) {\n\t\targs.push(\"--append-system-prompt\", promptPath);\n\t}\n\tif (rolePromptPath) args.push(\"--append-system-prompt\", rolePromptPath);\n\treturn args;\n}\n\nfunction eventType(value: unknown): string | undefined {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n\tconst type = (value as Record<string, unknown>).type;\n\treturn typeof type === \"string\" ? type : undefined;\n}\n\nfunction isActivityEvent(value: unknown): boolean {\n\treturn [\n\t\t\"message_start\",\n\t\t\"message_update\",\n\t\t\"message_end\",\n\t\t\"tool_execution_start\",\n\t\t\"tool_execution_update\",\n\t\t\"auto_retry_start\",\n\t\t\"compaction_start\",\n\t].includes(eventType(value) ?? \"\");\n}\n\nasync function writeRolePrompt(\n\tagentName: string,\n\tprompt: string,\n): Promise<{ dir: string; filePath: string }> {\n\tconst dir = await fs.promises.mkdtemp(path.join(os.tmpdir(), \"pi-subagent-rpc-\"));\n\tconst safeName = agentName.replace(/[^\\w.-]+/gu, \"_\");\n\tconst filePath = path.join(dir, `prompt-${safeName}.md`);\n\tawait fs.promises.writeFile(filePath, prompt, {\n\t\tencoding: \"utf8\",\n\t\tmode: 0o600,\n\t});\n\treturn { dir, filePath };\n}\n\nfunction cleanupRolePrompt(value: { dir: string; filePath: string } | undefined): void {\n\tif (!value) return;\n\ttry {\n\t\tfs.rmSync(value.dir, { recursive: true, force: true });\n\t} catch {\n\t\t// Best-effort cleanup is repeated when the owning runtime shuts down.\n\t}\n}\n\nfunction waitForSpawn(\n\tproc: ChildProcess,\n\tsignal: AbortSignal | undefined,\n\ttimeoutMs: number,\n): Promise<void> {\n\treturn new Promise<void>((resolve, reject) => {\n\t\tlet settled = false;\n\t\tconst finish = (error?: Error) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timer);\n\t\t\tproc.off(\"spawn\", onSpawn);\n\t\t\tproc.off(\"error\", onError);\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\tif (error) reject(error);\n\t\t\telse resolve();\n\t\t};\n\t\tconst onSpawn = () => finish();\n\t\tconst onError = (error: Error) => finish(error);\n\t\tconst onAbort = () => finish(abortError(\"RPC subagent start aborted\"));\n\t\tconst timer = setTimeout(\n\t\t\t() => finish(new Error(`RPC subagent start timed out after ${timeoutMs}ms`)),\n\t\t\ttimeoutMs,\n\t\t);\n\t\ttimer.unref();\n\t\tproc.once(\"spawn\", onSpawn);\n\t\tproc.once(\"error\", onError);\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal?.aborted) onAbort();\n\t});\n}\n\nasync function raceWithAbort<T>(\n\tpromise: Promise<T>,\n\tsignal: AbortSignal | undefined,\n\tmessage: string,\n): Promise<T> {\n\tif (!signal) return promise;\n\tif (signal.aborted) throw abortError(message);\n\tlet onAbort: (() => void) | undefined;\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tpromise,\n\t\t\tnew Promise<T>((_resolve, reject) => {\n\t\t\t\tonAbort = () => reject(abortError(message));\n\t\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tif (signal.aborted) onAbort();\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (onAbort) signal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\nfunction waitForTurnSettlement(\n\tsettled: Promise<void>,\n\tsignal: AbortSignal,\n\ttimeoutMs: number,\n): Promise<\"settled\" | \"aborted\" | \"timeout\"> {\n\tif (signal.aborted) return Promise.resolve(\"aborted\");\n\treturn new Promise((resolve, reject) => {\n\t\tlet finished = false;\n\t\tconst finish = (value: \"settled\" | \"aborted\" | \"timeout\", error?: unknown) => {\n\t\t\tif (finished) return;\n\t\t\tfinished = true;\n\t\t\tclearTimeout(timer);\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\tif (error) reject(error);\n\t\t\telse resolve(value);\n\t\t};\n\t\tconst onAbort = () => finish(\"aborted\");\n\t\tconst timer = setTimeout(() => finish(\"timeout\"), timeoutMs);\n\t\ttimer.unref();\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal.aborted) onAbort();\n\t\tsettled.then(\n\t\t\t() => finish(\"settled\"),\n\t\t\t(error) => finish(\"settled\", error),\n\t\t);\n\t});\n}\n\nasync function settlesWithin(settled: Promise<void>, timeoutMs: number): Promise<boolean> {\n\tlet timer: NodeJS.Timeout | undefined;\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tsettled.then(\n\t\t\t\t() => true,\n\t\t\t\t() => true,\n\t\t\t),\n\t\t\tnew Promise<boolean>((resolve) => {\n\t\t\t\ttimer = setTimeout(() => resolve(false), timeoutMs);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timer) clearTimeout(timer);\n\t}\n}\n\nfunction remainingMs(deadline: number): number {\n\treturn Math.max(1, deadline - Date.now());\n}\n\nfunction rpcTimeoutError(message: string): Error {\n\tconst error = new Error(message);\n\terror.name = \"RpcTimeoutError\";\n\treturn error;\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"RpcTimeoutError\";\n}\n\nfunction abortError(message: string): Error {\n\tconst error = new Error(message);\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nfunction errorMessage(prefix: string, error: Error): Error {\n\treturn new Error(`${prefix}: ${error.message}`);\n}\n", "import { DEFAULT_MAX_OUTPUT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport type { SubagentResultFormat } from \"./result-contract.js\";\nimport type { TimeoutCheckpoint, TurnTerminationReason } from \"./timeout-checkpoint.js\";\nimport {\n\tbuildTimeoutFinalizationPrompt,\n\tresolveTimeoutFinalizationMs,\n} from \"./timeout-finalization.js\";\n\ninterface RpcTimeoutFinalizationClient {\n\tprompt(message: string, timeoutMs?: number): Promise<void>;\n\tabort(): Promise<void>;\n\tonEvent(listener: (event: unknown) => void): () => void;\n\tonClose(listener: (error: Error) => void): () => void;\n}\n\ninterface RpcSummaryCapture {\n\toutput: string;\n\tpartial: string;\n\tstopReason?: string;\n\terror?: string;\n}\n\nexport interface RpcTimeoutFinalizationOptions {\n\tclient: RpcTimeoutFinalizationClient;\n\ttask: string;\n\tpartialOutput: string;\n\tcheckpoint?: TimeoutCheckpoint;\n\tterminationReason?: TurnTerminationReason;\n\tresultFormat?: SubagentResultFormat;\n\tsignal: AbortSignal;\n\tworkTimeoutMs: number;\n\tfinalizationTimeoutMs?: number;\n\tabortGraceMs: number;\n\tresetCapture(): void;\n\tgetCapture(): RpcSummaryCapture;\n\trelease(): Promise<void>;\n}\n\nexport interface RpcTimeoutFinalizationResult {\n\toutput: string;\n\ttruncated: boolean;\n\tstatus: \"completed\" | \"failed\" | \"timed_out\";\n\terror?: string;\n}\n\nexport async function finalizeTimedOutRpcTurn(\n\toptions: RpcTimeoutFinalizationOptions,\n): Promise<RpcTimeoutFinalizationResult> {\n\toptions.resetCapture();\n\tlet settleResolve!: () => void;\n\tlet settleReject!: (error: Error) => void;\n\tconst settled = new Promise<void>((resolve, reject) => {\n\t\tsettleResolve = resolve;\n\t\tsettleReject = reject;\n\t});\n\tvoid settled.catch(() => undefined);\n\tconst unsubscribeEvent = options.client.onEvent((event) => {\n\t\tif (eventType(event) === \"agent_settled\") settleResolve();\n\t});\n\tconst unsubscribeClose = options.client.onClose(settleReject);\n\tlet error: string | undefined;\n\ttry {\n\t\tconst finalizationMs = resolveTimeoutFinalizationMs(\n\t\t\toptions.workTimeoutMs,\n\t\t\toptions.finalizationTimeoutMs,\n\t\t);\n\t\tconst deadline = Date.now() + finalizationMs;\n\t\tawait raceWithAbort(\n\t\t\t() =>\n\t\t\t\toptions.client.prompt(\n\t\t\t\t\tbuildTimeoutFinalizationPrompt({\n\t\t\t\t\t\ttask: options.task,\n\t\t\t\t\t\tpartialOutput: options.partialOutput,\n\t\t\t\t\t\tcheckpoint: options.checkpoint,\n\t\t\t\t\t\tterminationReason: options.terminationReason,\n\t\t\t\t\t\tresultFormat: options.resultFormat,\n\t\t\t\t\t}),\n\t\t\t\t\tremainingMs(deadline),\n\t\t\t\t),\n\t\t\toptions.signal,\n\t\t\tremainingMs(deadline),\n\t\t);\n\t\tconst settlement = await waitForSettlement(settled, options.signal, remainingMs(deadline));\n\t\tif (settlement !== \"settled\") {\n\t\t\tconst [abortCompleted, stopped] = await Promise.all([\n\t\t\t\tsettlesWithin(options.client.abort(), options.abortGraceMs),\n\t\t\t\tsettlesWithin(settled, options.abortGraceMs),\n\t\t\t]);\n\t\t\tif (!stopped) await boundedRelease(options);\n\t\t\terror = [\n\t\t\t\t`timeout summary ${settlement}`,\n\t\t\t\tabortCompleted ? undefined : \"summary abort command did not settle\",\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(\"; \");\n\t\t}\n\t} catch (caught) {\n\t\terror = boundedError(caught);\n\t\tawait boundedRelease(options);\n\t} finally {\n\t\tunsubscribeEvent();\n\t\tunsubscribeClose();\n\t}\n\tconst capture = options.getCapture();\n\tconst output = truncateUtf8(capture.output || capture.partial, DEFAULT_MAX_OUTPUT_BYTES);\n\tif (!error && (capture.stopReason === \"error\" || !output.text.trim())) {\n\t\terror = capture.error || \"Timeout summary produced no final text\";\n\t}\n\treturn {\n\t\toutput: output.text,\n\t\ttruncated: output.truncated,\n\t\tstatus: error ? (/timed out|timeout/iu.test(error) ? \"timed_out\" : \"failed\") : \"completed\",\n\t\terror,\n\t};\n}\n\nfunction eventType(value: unknown): string | undefined {\n\treturn value &&\n\t\ttypeof value === \"object\" &&\n\t\ttypeof (value as { type?: unknown }).type === \"string\"\n\t\t? ((value as { type: string }).type ?? undefined)\n\t\t: undefined;\n}\n\nfunction remainingMs(deadline: number): number {\n\treturn Math.max(1, deadline - Date.now());\n}\n\nasync function raceWithAbort<T>(\n\tstart: () => Promise<T>,\n\tsignal: AbortSignal,\n\ttimeoutMs: number,\n): Promise<T> {\n\tif (signal.aborted) throw abortError();\n\tlet onAbort: (() => void) | undefined;\n\tlet timer: NodeJS.Timeout | undefined;\n\tconst aborted = new Promise<never>((_resolve, reject) => {\n\t\tonAbort = () => reject(abortError());\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal.aborted) onAbort();\n\t});\n\tconst timedOut = new Promise<never>((_resolve, reject) => {\n\t\ttimer = setTimeout(() => reject(new Error(\"RPC timeout summary prompt timed out\")), timeoutMs);\n\t});\n\ttry {\n\t\treturn await Promise.race([start(), aborted, timedOut]);\n\t} finally {\n\t\tif (timer) clearTimeout(timer);\n\t\tif (onAbort) signal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\nasync function waitForSettlement(\n\tsettled: Promise<void>,\n\tsignal: AbortSignal,\n\ttimeoutMs: number,\n): Promise<\"settled\" | \"aborted\" | \"timeout\"> {\n\tif (signal.aborted) return \"aborted\";\n\tlet timer: NodeJS.Timeout | undefined;\n\tlet onAbort: (() => void) | undefined;\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tsettled.then(() => \"settled\" as const),\n\t\t\tnew Promise<\"aborted\">((resolve) => {\n\t\t\t\tonAbort = () => resolve(\"aborted\");\n\t\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t}),\n\t\t\tnew Promise<\"timeout\">((resolve) => {\n\t\t\t\ttimer = setTimeout(() => resolve(\"timeout\"), timeoutMs);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timer) clearTimeout(timer);\n\t\tif (onAbort) signal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\nasync function boundedRelease(options: RpcTimeoutFinalizationOptions): Promise<boolean> {\n\treturn settlesWithin(options.release(), options.abortGraceMs + 1_000);\n}\n\nasync function settlesWithin(settled: Promise<void>, timeoutMs: number): Promise<boolean> {\n\tlet timer: NodeJS.Timeout | undefined;\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tsettled.then(\n\t\t\t\t() => true,\n\t\t\t\t() => true,\n\t\t\t),\n\t\t\tnew Promise<boolean>((resolve) => {\n\t\t\t\ttimer = setTimeout(() => resolve(false), timeoutMs);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timer) clearTimeout(timer);\n\t}\n}\n\nfunction abortError(): Error {\n\tconst error = new Error(\"RPC timeout summary aborted\");\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nfunction boundedError(error: unknown): string {\n\treturn truncateUtf8(error instanceof Error ? error.message : String(error), 16 * 1024).text;\n}\n", "import type { AgentConfig, SubagentThinkingLevel } from \"./agents/types.js\";\nimport { DEFAULT_MAX_OUTPUT_BYTES } from \"./limits.js\";\nimport type { ManagedAgent, TurnOutcome } from \"./registry.js\";\nimport { boundedPrivateText } from \"./safe-text.js\";\nimport type { TransportTelemetry } from \"./transport-types.js\";\n\nexport function modelIdentity(value: unknown): { provider?: string; model?: string } {\n\tif (!value || typeof value !== \"object\") return {};\n\tconst model = value as Record<string, unknown>;\n\treturn {\n\t\tprovider:\n\t\t\ttypeof model.provider === \"string\" ? boundedPrivateText(model.provider, 256) : undefined,\n\t\tmodel: typeof model.id === \"string\" ? boundedPrivateText(model.id, 256) : undefined,\n\t};\n}\n\nexport function normalizeThinking(value: unknown): SubagentThinkingLevel | undefined {\n\treturn typeof value === \"string\" &&\n\t\t[\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"].includes(value)\n\t\t? (value as SubagentThinkingLevel)\n\t\t: undefined;\n}\n\nexport function rpcPolicy(\n\tconfig: AgentConfig,\n\tagent: ManagedAgent,\n): NonNullable<TurnOutcome[\"policy\"]> {\n\treturn {\n\t\tinherited: [\"environment\", \"cwdResources\"],\n\t\toverridden: [\n\t\t\t\"cwd\",\n\t\t\t\"extensions\",\n\t\t\t...(config.model ? [\"model\"] : []),\n\t\t\t...(agent.thinkingLevel || config.thinkingLevel ? [\"thinkingLevel\"] : []),\n\t\t\t...(config.tools ? [\"tools\"] : []),\n\t\t],\n\t\tunsupported: [\"approvalPolicy\", \"sandboxProfile\", \"providerHeaders\", \"extensionState\"],\n\t};\n}\n\nexport function interruptedRpcOutcome(\n\toutput: string,\n\ttelemetry: TransportTelemetry,\n\tfailurePhase: TransportTelemetry[\"phase\"],\n): TurnOutcome {\n\treturn {\n\t\toutput,\n\t\texitCode: 130,\n\t\taborted: true,\n\t\terror: \"RPC subagent was aborted\",\n\t\ttelemetry: {\n\t\t\t...telemetry,\n\t\t\tphase: \"interrupted\",\n\t\t\tfailurePhase,\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t};\n}\n\nexport function boundedError(error: unknown): string {\n\treturn boundedPrivateText(\n\t\terror instanceof Error ? error.message : String(error),\n\t\tDEFAULT_MAX_OUTPUT_BYTES,\n\t);\n}\n", "import { DEFAULT_MAX_OUTPUT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport { boundedPrivateText } from \"./safe-text.js\";\nimport { journalMessages, TimeoutProgressJournal } from \"./timeout-checkpoint.js\";\nimport { emptyTransportUsage, type TransportUsage } from \"./transport-types.js\";\nimport type { TurnBudgetMonitor } from \"./turn-budget.js\";\n\nexport interface RpcTurnCapture {\n\toutput: string;\n\tpartial: string;\n\tstopReason?: string;\n\terror?: string;\n\tprovider?: string;\n\tmodel?: string;\n\tusage: TransportUsage;\n\tinFlightUsage?: TransportUsage;\n\tfirstActivityAt?: number;\n\tjournal: TimeoutProgressJournal;\n}\n\nexport function createRpcTurnCapture(): RpcTurnCapture {\n\treturn {\n\t\toutput: \"\",\n\t\tpartial: \"\",\n\t\tusage: emptyTransportUsage(),\n\t\tjournal: new TimeoutProgressJournal(),\n\t};\n}\n\nexport function captureRpcEvent(event: unknown, capture: RpcTurnCapture): boolean {\n\tif (!isRecord(event)) return false;\n\tconst previousUsage = snapshotRpcUsage(capture);\n\tif (event.type === \"tool_execution_start\") {\n\t\tcapture.journal.recordToolCall(\n\t\t\ttypeof event.toolCallId === \"string\" ? event.toolCallId : \"\",\n\t\t\ttypeof event.toolName === \"string\" ? event.toolName : \"tool\",\n\t\t\tisRecord(event.args) ? event.args : {},\n\t\t);\n\t}\n\tif (event.type === \"tool_execution_end\") {\n\t\tconst result = isRecord(event.result) ? event.result : {};\n\t\tcapture.journal.recordToolResult(\n\t\t\ttypeof event.toolCallId === \"string\" ? event.toolCallId : \"\",\n\t\t\ttypeof event.toolName === \"string\" ? event.toolName : \"tool\",\n\t\t\t{ content: result.content, isError: event.isError },\n\t\t);\n\t}\n\tif (event.type === \"message_start\" && isRecord(event.message)) {\n\t\tif (event.message.role === \"assistant\") commitRpcInFlightUsage(capture);\n\t}\n\tif (event.type === \"message_update\") {\n\t\tconst usage = normalizeUsage(event.usage);\n\t\tif (usage) capture.inFlightUsage = usage;\n\t\tconst delta = event.assistantMessageEvent;\n\t\tif (isRecord(delta) && delta.type === \"text_delta\" && typeof delta.delta === \"string\") {\n\t\t\tcapture.partial = truncateUtf8(\n\t\t\t\t`${capture.partial}${delta.delta}`,\n\t\t\t\tDEFAULT_MAX_OUTPUT_BYTES,\n\t\t\t).text;\n\t\t}\n\t}\n\tif (event.type === \"message_end\" && isRecord(event.message)) {\n\t\tconst candidate = event.message;\n\t\tif (candidate.role !== \"toolResult\") journalMessages(capture.journal, [candidate]);\n\t\tif (candidate.role === \"assistant\") captureAssistantEnd(candidate, capture);\n\t}\n\treturn !sameUsage(previousUsage, snapshotRpcUsage(capture));\n}\n\nexport function snapshotRpcUsage(capture: RpcTurnCapture): TransportUsage {\n\tconst usage = { ...capture.usage };\n\tif (capture.inFlightUsage) addUsage(usage, capture.inFlightUsage);\n\treturn usage;\n}\n\nexport function commitRpcInFlightUsage(capture: RpcTurnCapture): boolean {\n\tif (!capture.inFlightUsage) return false;\n\taddUsage(capture.usage, capture.inFlightUsage);\n\tcapture.inFlightUsage = undefined;\n\treturn true;\n}\n\nfunction captureAssistantEnd(candidate: Record<string, unknown>, capture: RpcTurnCapture): void {\n\tcapture.output = truncateUtf8(\n\t\tassistantText(candidate.content) || capture.partial,\n\t\tDEFAULT_MAX_OUTPUT_BYTES,\n\t).text;\n\tcapture.partial = capture.output;\n\tcapture.stopReason = typeof candidate.stopReason === \"string\" ? candidate.stopReason : undefined;\n\tcapture.error =\n\t\ttypeof candidate.errorMessage === \"string\"\n\t\t\t? boundedPrivateText(candidate.errorMessage, 4 * 1024)\n\t\t\t: undefined;\n\tcapture.provider =\n\t\ttypeof candidate.provider === \"string\"\n\t\t\t? boundedPrivateText(candidate.provider, 256)\n\t\t\t: undefined;\n\tconst responseModel =\n\t\ttypeof candidate.responseModel === \"string\"\n\t\t\t? candidate.responseModel\n\t\t\t: typeof candidate.model === \"string\"\n\t\t\t\t? candidate.model\n\t\t\t\t: undefined;\n\tcapture.model = responseModel ? boundedPrivateText(responseModel, 256) : undefined;\n\tconst finalUsage = normalizeUsage(candidate.usage);\n\tconst completedUsage = finalUsage ?? capture.inFlightUsage;\n\tif (completedUsage) addUsage(capture.usage, completedUsage);\n\tcapture.inFlightUsage = undefined;\n\tcapture.usage.turns = addUsageValue(capture.usage.turns, 1);\n}\n\nexport function observeRpcBudgetEvent(event: unknown, monitor: TurnBudgetMonitor): void {\n\tif (!isRecord(event)) return;\n\tif (event.type === \"tool_execution_end\") monitor.recordActivity();\n\tif (event.type !== \"message_end\" || !isRecord(event.message)) return;\n\tconst message = event.message;\n\tif (message.role === \"toolResult\") {\n\t\tmonitor.recordActivity();\n\t\treturn;\n\t}\n\tif (message.role !== \"assistant\") return;\n\tmonitor.recordToolCalls(assistantToolCallCount(message.content));\n\tmonitor.recordAssistantTurn(\n\t\ttypeof message.stopReason === \"string\" ? message.stopReason : undefined,\n\t);\n}\n\nfunction assistantToolCallCount(content: unknown): number {\n\tif (!Array.isArray(content)) return 0;\n\treturn content.filter((part) => isRecord(part) && part.type === \"toolCall\").length;\n}\n\nfunction normalizeUsage(value: unknown): TransportUsage | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst input = safeNonNegative(value.input);\n\tconst output = safeNonNegative(value.output);\n\tconst cacheRead = safeNonNegative(value.cacheRead);\n\tconst cacheWrite = safeNonNegative(value.cacheWrite);\n\tconst reportedTotal = safeNonNegative(value.totalTokens);\n\tconst cost = isRecord(value.cost) ? safeNonNegative(value.cost.total) : undefined;\n\tif (\n\t\tinput === undefined &&\n\t\toutput === undefined &&\n\t\tcacheRead === undefined &&\n\t\tcacheWrite === undefined &&\n\t\treportedTotal === undefined &&\n\t\tcost === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\tconst components = [input, output, cacheRead, cacheWrite].reduce<number>(\n\t\t(total, current) => addUsageValue(total, current ?? 0),\n\t\t0,\n\t);\n\treturn {\n\t\tinput: input ?? 0,\n\t\toutput: output ?? 0,\n\t\tcacheRead: cacheRead ?? 0,\n\t\tcacheWrite: cacheWrite ?? 0,\n\t\ttotalTokens: reportedTotal ?? components,\n\t\tcost: cost ?? 0,\n\t\tturns: 0,\n\t};\n}\n\nfunction addUsage(target: TransportUsage, value: TransportUsage): void {\n\tfor (const key of [\n\t\t\"input\",\n\t\t\"output\",\n\t\t\"cacheRead\",\n\t\t\"cacheWrite\",\n\t\t\"totalTokens\",\n\t\t\"cost\",\n\t\t\"turns\",\n\t] as const) {\n\t\ttarget[key] = addUsageValue(target[key], value[key]);\n\t}\n}\n\nfunction addUsageValue(current: number, addition: number): number {\n\treturn Math.min(Number.MAX_SAFE_INTEGER, current + addition);\n}\n\nfunction safeNonNegative(value: unknown): number | undefined {\n\treturn typeof value === \"number\" &&\n\t\tNumber.isFinite(value) &&\n\t\tvalue >= 0 &&\n\t\tvalue <= Number.MAX_SAFE_INTEGER\n\t\t? value\n\t\t: undefined;\n}\n\nfunction sameUsage(left: TransportUsage, right: TransportUsage): boolean {\n\treturn (\n\t\tleft.input === right.input &&\n\t\tleft.output === right.output &&\n\t\tleft.cacheRead === right.cacheRead &&\n\t\tleft.cacheWrite === right.cacheWrite &&\n\t\tleft.totalTokens === right.totalTokens &&\n\t\tleft.cost === right.cost &&\n\t\tleft.turns === right.turns\n\t);\n}\n\nfunction assistantText(value: unknown): string {\n\tif (typeof value === \"string\") return value;\n\tif (!Array.isArray(value)) return \"\";\n\treturn value\n\t\t.flatMap((part) => {\n\t\t\tif (!isRecord(part)) return [];\n\t\t\treturn part.type === \"text\" && typeof part.text === \"string\" ? [part.text] : [];\n\t\t})\n\t\t.join(\"\\n\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n"],
5
- "mappings": "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",
6
- "names": ["boundedError", "abortError", "raceWithAbort", "boundedError", "eventType", "remainingMs", "settlesWithin", "checkpointOutput"]
7
- }
@@ -1,15 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- FALLBACK_TIMEOUT_MS,
5
- assertSubagentDepthAllowed,
6
- parsePositiveInteger,
7
- resolveDefaultSubagentTimeoutMs
8
- } from "./chunk-RRR66UWR.ts";
9
- export {
10
- FALLBACK_TIMEOUT_MS,
11
- assertSubagentDepthAllowed,
12
- parsePositiveInteger,
13
- resolveDefaultSubagentTimeoutMs
14
- };
15
- //# sourceMappingURL=runtime-policy-5YELCOVC.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,19 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- SEMANTIC_SNAPSHOT_VERSION,
5
- captureRepositoryGeneration,
6
- captureSemanticResourceGeneration,
7
- captureSemanticSnapshot,
8
- evaluateSemanticCompatibility,
9
- isSemanticSnapshot
10
- } from "./chunk-BOAXY55Y.ts";
11
- export {
12
- SEMANTIC_SNAPSHOT_VERSION,
13
- captureRepositoryGeneration,
14
- captureSemanticResourceGeneration,
15
- captureSemanticSnapshot,
16
- evaluateSemanticCompatibility,
17
- isSemanticSnapshot
18
- };
19
- //# sourceMappingURL=semantic-snapshot-WPJ3UAFW.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,13 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH,
5
- assertSpawnIdempotencyKey,
6
- hashSpawnRequest
7
- } from "./chunk-ILEQ27AL.ts";
8
- export {
9
- MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH,
10
- assertSpawnIdempotencyKey,
11
- hashSpawnRequest
12
- };
13
- //# sourceMappingURL=spawn-idempotency-BNHOSMZW.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,15 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- assertCurrentSpawn,
5
- cleanupPersistedWorkspaces,
6
- disposeStatefulRuntime,
7
- waitForOwnedSpawn
8
- } from "./chunk-P7OH4XMF.ts";
9
- export {
10
- assertCurrentSpawn,
11
- cleanupPersistedWorkspaces,
12
- disposeStatefulRuntime,
13
- waitForOwnedSpawn
14
- };
15
- //# sourceMappingURL=stateful-lifecycle-JAR6K55H.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,160 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- runSingleAgent
5
- } from "./chunk-ITVWPNU4.ts";
6
- import "./chunk-47SK2QYC.ts";
7
- import "./chunk-YPJEN6NU.ts";
8
- import "./chunk-7AAJEUSL.ts";
9
- import "./chunk-6H6TBBED.ts";
10
- import "./chunk-IGAMVWFN.ts";
11
- import {
12
- buildStatefulTurnPrompt,
13
- resolveStatefulTurnTimeout
14
- } from "./chunk-PGLSFLYW.ts";
15
- import {
16
- CHILD_PEER_TOOL_NAMES,
17
- childPeerBridgePath,
18
- peerBridgeEnvironment
19
- } from "./chunk-RY2AEGMZ.ts";
20
- import {
21
- resolvePiPromptResources
22
- } from "./chunk-G6VZTCFH.ts";
23
- import "./chunk-NTRPLF46.ts";
24
- import {
25
- getResultFinalOutput
26
- } from "./chunk-X4NMONPE.ts";
27
- import "./chunk-RTCVYIZA.ts";
28
- import "./chunk-ONDTY4EL.ts";
29
- import "./chunk-5DGRMKNV.ts";
30
- import {
31
- discoverAgents
32
- } from "./chunk-LASD73CM.ts";
33
- import "./chunk-RSUXZD6S.ts";
34
- import {
35
- resolveSubagentThinkingLevel
36
- } from "./chunk-D4CR7T73.ts";
37
- import {
38
- readSubagentSettings
39
- } from "./chunk-TMZRHIIK.ts";
40
- import "./chunk-VDG7LTYE.ts";
41
- import "./chunk-4AQSF7AS.ts";
42
- import "./chunk-JSZIP73U.ts";
43
- import "./chunk-H3FP6DLR.ts";
44
- import "./chunk-RRR66UWR.ts";
45
-
46
- // src/subprocess-transport.ts
47
- function resolveStatefulSubprocessThinkingLevel(agents, record) {
48
- return resolveSubagentThinkingLevel(agents, record.agent, record.thinkingLevel);
49
- }
50
- var SubprocessTransport = class {
51
- constructor(options = {}) {
52
- this.options = options;
53
- }
54
- options;
55
- kind = "subprocess";
56
- async runTurn(record, task, signal, onProgress) {
57
- const startedAt = Date.now();
58
- const starting = {
59
- transport: "subprocess",
60
- phase: "starting",
61
- updatedAt: startedAt,
62
- timing: { startedAt, transportStartedAt: startedAt }
63
- };
64
- onProgress?.(starting);
65
- const settings = this.options.getSettings ? this.options.getSettings() : readSubagentSettings();
66
- const discovery = discoverAgents(record.cwd, record.agentScope ?? "user", settings);
67
- const agent = discovery.agents.find((candidate) => candidate.name === record.agent);
68
- const boundedTask = buildStatefulTurnPrompt(record, task);
69
- const projectTrust = record.target?.trust.projectTrusted ?? (record.agentScope === "project" || record.agentScope === "both");
70
- const promptResources = agent?.systemPrompt.trim() ? await resolvePiPromptResources(record.cwd, projectTrust) : void 0;
71
- const makeDetails = (results) => ({
72
- mode: "single",
73
- agentScope: record.agentScope ?? "user",
74
- projectAgentsDir: discovery.projectAgentsDir,
75
- results
76
- });
77
- const credentials = this.options.peerRuntime ? await this.options.peerRuntime.issueCredentials(
78
- record.id,
79
- record.currentTurnGeneration ?? record.turnGeneration ?? 1
80
- ) : void 0;
81
- let single;
82
- try {
83
- single = await runSingleAgent(
84
- record.cwd,
85
- discovery.agents,
86
- record.agent,
87
- boundedTask.text,
88
- void 0,
89
- void 0,
90
- signal,
91
- resolveStatefulSubprocessThinkingLevel(discovery.agents, record),
92
- record.currentTimeoutMs ?? record.timeoutMs ?? resolveStatefulTurnTimeout(agent),
93
- void 0,
94
- makeDetails,
95
- void 0,
96
- {
97
- projectTrust,
98
- ...record.executionPlan ? { tools: record.executionPlan.effectiveTools } : {},
99
- appendSystemPromptPaths: promptResources?.appendSystemPromptPaths,
100
- extensionPaths: credentials ? [childPeerBridgePath()] : void 0,
101
- additionalTools: credentials ? [...CHILD_PEER_TOOL_NAMES] : void 0,
102
- env: credentials ? peerBridgeEnvironment(credentials) : void 0,
103
- timeoutResultFormat: record.resultFormat,
104
- turnLimits: {
105
- idleTimeoutMs: record.currentIdleTimeoutMs ?? record.idleTimeoutMs,
106
- maxTurns: record.currentMaxTurns ?? record.maxTurns,
107
- maxToolCalls: record.currentMaxToolCalls ?? record.maxToolCalls
108
- },
109
- resultFormat: record.resultFormat,
110
- contract: record.contract,
111
- executionPlan: record.executionPlan,
112
- displayTask: task
113
- }
114
- );
115
- } finally {
116
- this.options.peerRuntime?.revoke(record.id);
117
- }
118
- const settledAt = Date.now();
119
- const telemetry = {
120
- ...starting,
121
- phase: single.aborted ? "interrupted" : single.exitCode === 0 ? "settled" : "failed",
122
- failurePhase: single.exitCode === 0 ? void 0 : "running",
123
- updatedAt: settledAt,
124
- timing: {
125
- ...starting.timing,
126
- promptAcceptedAt: single.processStarted ? startedAt : void 0,
127
- firstActivityAt: single.messages.length > 0 ? settledAt : void 0,
128
- settledAt
129
- },
130
- provider: single.actualProvider,
131
- model: single.actualModel ?? single.model,
132
- thinkingLevel: single.thinkingLevel,
133
- usage: {
134
- input: single.usage.input,
135
- output: single.usage.output,
136
- cacheRead: single.usage.cacheRead,
137
- cacheWrite: single.usage.cacheWrite,
138
- totalTokens: single.usage.totalTokens ?? 0,
139
- cost: single.usage.cost,
140
- turns: single.usage.turns
141
- }
142
- };
143
- onProgress?.(telemetry);
144
- return {
145
- output: getResultFinalOutput(single),
146
- exitCode: single.exitCode,
147
- aborted: single.aborted,
148
- truncated: single.truncated || boundedTask.truncated,
149
- error: single.errorMessage || single.stderr || void 0,
150
- policy: single.policy,
151
- termination: single.termination,
152
- telemetry
153
- };
154
- }
155
- };
156
- export {
157
- SubprocessTransport,
158
- resolveStatefulSubprocessThinkingLevel
159
- };
160
- //# sourceMappingURL=subprocess-transport-VHZJRBTW.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/subprocess-transport.ts"],
4
- "sourcesContent": ["import { discoverAgents } from \"./agents/discovery.js\";\nimport type { AgentConfig, SubagentSettings, SubagentThinkingLevel } from \"./agents/types.js\";\nimport {\n\tCHILD_PEER_TOOL_NAMES,\n\tchildPeerBridgePath,\n\ttype PeerTransportRuntime,\n\tpeerBridgeEnvironment,\n} from \"./peer-transport.js\";\nimport { resolvePiPromptResources } from \"./prompt-resources.js\";\nimport type { ManagedAgent, TurnOutcome } from \"./registry.js\";\nimport { getResultFinalOutput, runSingleAgent } from \"./runner.js\";\nimport { readSubagentSettings, resolveSubagentThinkingLevel } from \"./settings.js\";\nimport { buildStatefulTurnPrompt, resolveStatefulTurnTimeout } from \"./stateful-prompt.js\";\nimport type { SubagentDetails } from \"./subagent-details.js\";\nimport type { SubagentTransport } from \"./transport.js\";\nimport type { TransportProgressCallback, TransportTelemetry } from \"./transport-types.js\";\n\nexport function resolveStatefulSubprocessThinkingLevel(\n\tagents: readonly Pick<AgentConfig, \"name\" | \"thinkingLevel\">[],\n\trecord: Pick<ManagedAgent, \"agent\" | \"thinkingLevel\">,\n): SubagentThinkingLevel | undefined {\n\treturn resolveSubagentThinkingLevel(agents, record.agent, record.thinkingLevel);\n}\n\nexport interface SubprocessTransportOptions {\n\tgetSettings?: () => SubagentSettings | undefined;\n\tpeerRuntime?: PeerTransportRuntime;\n}\n\nexport class SubprocessTransport implements SubagentTransport {\n\treadonly kind = \"subprocess\" as const;\n\n\tconstructor(private readonly options: SubprocessTransportOptions = {}) {}\n\n\tasync runTurn(\n\t\trecord: ManagedAgent,\n\t\ttask: string,\n\t\tsignal: AbortSignal,\n\t\tonProgress?: TransportProgressCallback,\n\t): Promise<TurnOutcome> {\n\t\tconst startedAt = Date.now();\n\t\tconst starting: TransportTelemetry = {\n\t\t\ttransport: \"subprocess\",\n\t\t\tphase: \"starting\",\n\t\t\tupdatedAt: startedAt,\n\t\t\ttiming: { startedAt, transportStartedAt: startedAt },\n\t\t};\n\t\tonProgress?.(starting);\n\t\tconst settings = this.options.getSettings ? this.options.getSettings() : readSubagentSettings();\n\t\tconst discovery = discoverAgents(record.cwd, record.agentScope ?? \"user\", settings);\n\t\tconst agent = discovery.agents.find((candidate) => candidate.name === record.agent);\n\t\tconst boundedTask = buildStatefulTurnPrompt(record, task);\n\t\tconst projectTrust =\n\t\t\trecord.target?.trust.projectTrusted ??\n\t\t\t(record.agentScope === \"project\" || record.agentScope === \"both\");\n\t\tconst promptResources = agent?.systemPrompt.trim()\n\t\t\t? await resolvePiPromptResources(record.cwd, projectTrust)\n\t\t\t: undefined;\n\t\tconst makeDetails = (results: SubagentDetails[\"results\"]): SubagentDetails => ({\n\t\t\tmode: \"single\",\n\t\t\tagentScope: record.agentScope ?? \"user\",\n\t\t\tprojectAgentsDir: discovery.projectAgentsDir,\n\t\t\tresults,\n\t\t});\n\t\tconst credentials = this.options.peerRuntime\n\t\t\t? await this.options.peerRuntime.issueCredentials(\n\t\t\t\t\trecord.id,\n\t\t\t\t\trecord.currentTurnGeneration ?? record.turnGeneration ?? 1,\n\t\t\t\t)\n\t\t\t: undefined;\n\t\tlet single: Awaited<ReturnType<typeof runSingleAgent>>;\n\t\ttry {\n\t\t\tsingle = await runSingleAgent(\n\t\t\t\trecord.cwd,\n\t\t\t\tdiscovery.agents,\n\t\t\t\trecord.agent,\n\t\t\t\tboundedTask.text,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\tsignal,\n\t\t\t\tresolveStatefulSubprocessThinkingLevel(discovery.agents, record),\n\t\t\t\trecord.currentTimeoutMs ?? record.timeoutMs ?? resolveStatefulTurnTimeout(agent),\n\t\t\t\tundefined,\n\t\t\t\tmakeDetails,\n\t\t\t\tundefined,\n\t\t\t\t{\n\t\t\t\t\tprojectTrust,\n\t\t\t\t\t...(record.executionPlan ? { tools: record.executionPlan.effectiveTools } : {}),\n\t\t\t\t\tappendSystemPromptPaths: promptResources?.appendSystemPromptPaths,\n\t\t\t\t\textensionPaths: credentials ? [childPeerBridgePath()] : undefined,\n\t\t\t\t\tadditionalTools: credentials ? [...CHILD_PEER_TOOL_NAMES] : undefined,\n\t\t\t\t\tenv: credentials ? peerBridgeEnvironment(credentials) : undefined,\n\t\t\t\t\ttimeoutResultFormat: record.resultFormat,\n\t\t\t\t\tturnLimits: {\n\t\t\t\t\t\tidleTimeoutMs: record.currentIdleTimeoutMs ?? record.idleTimeoutMs,\n\t\t\t\t\t\tmaxTurns: record.currentMaxTurns ?? record.maxTurns,\n\t\t\t\t\t\tmaxToolCalls: record.currentMaxToolCalls ?? record.maxToolCalls,\n\t\t\t\t\t},\n\t\t\t\t\tresultFormat: record.resultFormat,\n\t\t\t\t\tcontract: record.contract,\n\t\t\t\t\texecutionPlan: record.executionPlan,\n\t\t\t\t\tdisplayTask: task,\n\t\t\t\t},\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.options.peerRuntime?.revoke(record.id);\n\t\t}\n\t\tconst settledAt = Date.now();\n\t\tconst telemetry: TransportTelemetry = {\n\t\t\t...starting,\n\t\t\tphase: single.aborted ? \"interrupted\" : single.exitCode === 0 ? \"settled\" : \"failed\",\n\t\t\tfailurePhase: single.exitCode === 0 ? undefined : \"running\",\n\t\t\tupdatedAt: settledAt,\n\t\t\ttiming: {\n\t\t\t\t...starting.timing,\n\t\t\t\tpromptAcceptedAt: single.processStarted ? startedAt : undefined,\n\t\t\t\tfirstActivityAt: single.messages.length > 0 ? settledAt : undefined,\n\t\t\t\tsettledAt,\n\t\t\t},\n\t\t\tprovider: single.actualProvider,\n\t\t\tmodel: single.actualModel ?? single.model,\n\t\t\tthinkingLevel: single.thinkingLevel,\n\t\t\tusage: {\n\t\t\t\tinput: single.usage.input,\n\t\t\t\toutput: single.usage.output,\n\t\t\t\tcacheRead: single.usage.cacheRead,\n\t\t\t\tcacheWrite: single.usage.cacheWrite,\n\t\t\t\ttotalTokens: single.usage.totalTokens ?? 0,\n\t\t\t\tcost: single.usage.cost,\n\t\t\t\tturns: single.usage.turns,\n\t\t\t},\n\t\t};\n\t\tonProgress?.(telemetry);\n\t\treturn {\n\t\t\toutput: getResultFinalOutput(single),\n\t\t\texitCode: single.exitCode,\n\t\t\taborted: single.aborted,\n\t\t\ttruncated: single.truncated || boundedTask.truncated,\n\t\t\terror: single.errorMessage || single.stderr || undefined,\n\t\t\tpolicy: single.policy,\n\t\t\ttermination: single.termination,\n\t\t\ttelemetry,\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }