pi-subagents 0.76.1 → 0.78.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 (391) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +1 -1
  3. package/agents/evidence-auditor.md +1 -0
  4. package/agents/oracle.md +9 -19
  5. package/agents/researcher.md +0 -3
  6. package/agents/reviewer.md +18 -61
  7. package/agents/scout.md +1 -4
  8. package/agents/worker.md +8 -25
  9. package/docs/agents.md +71 -4
  10. package/docs/configuration.md +75 -10
  11. package/docs/extension-api.md +38 -9
  12. package/docs/missions.md +24 -17
  13. package/docs/models.md +1 -1
  14. package/docs/observability.md +12 -5
  15. package/docs/tool-reference.md +103 -85
  16. package/docs/watchdog.md +8 -6
  17. package/docs/workflows.md +17 -8
  18. package/package.json +1 -1
  19. package/prompts/council.md +1 -1
  20. package/skills/pi-subagents/SKILL.md +2 -2
  21. package/skills/pi-subagents/references/constraints-and-recipes.md +1 -1
  22. package/skills/pi-subagents/references/execution-controls.md +16 -16
  23. package/skills/pi-subagents/references/management-authoring-rpc.md +16 -12
  24. package/skills/pi-subagents/references/multi-lane-orchestration.md +1 -1
  25. package/skills/pi-subagents/references/prompting-and-roles.md +3 -3
  26. package/src/agents/advertised-agent-prompt.d.ts +5 -1
  27. package/src/agents/advertised-agent-prompt.d.ts.map +1 -1
  28. package/src/agents/advertised-agent-prompt.js +8 -2
  29. package/src/agents/advertised-agent-prompt.js.map +1 -1
  30. package/src/agents/agent-management.d.ts.map +1 -1
  31. package/src/agents/agent-management.js +5 -0
  32. package/src/agents/agent-management.js.map +1 -1
  33. package/src/agents/agent-scope.d.ts +1 -0
  34. package/src/agents/agent-scope.d.ts.map +1 -1
  35. package/src/agents/agent-scope.js +3 -0
  36. package/src/agents/agent-scope.js.map +1 -1
  37. package/src/agents/agent-serializer.d.ts.map +1 -1
  38. package/src/agents/agent-serializer.js +3 -0
  39. package/src/agents/agent-serializer.js.map +1 -1
  40. package/src/agents/agents.d.ts +14 -2
  41. package/src/agents/agents.d.ts.map +1 -1
  42. package/src/agents/agents.js +94 -36
  43. package/src/agents/agents.js.map +1 -1
  44. package/src/api/external-runs.d.ts.map +1 -1
  45. package/src/api/external-runs.js +5 -4
  46. package/src/api/external-runs.js.map +1 -1
  47. package/src/api/preflight.d.ts +2 -0
  48. package/src/api/preflight.d.ts.map +1 -1
  49. package/src/api/preflight.js +7 -3
  50. package/src/api/preflight.js.map +1 -1
  51. package/src/extension/active-runs-prompt.d.ts +8 -0
  52. package/src/extension/active-runs-prompt.d.ts.map +1 -0
  53. package/src/extension/active-runs-prompt.js +30 -0
  54. package/src/extension/active-runs-prompt.js.map +1 -0
  55. package/src/extension/config.d.ts.map +1 -1
  56. package/src/extension/config.js +29 -2
  57. package/src/extension/config.js.map +1 -1
  58. package/src/extension/control-notices.d.ts +0 -2
  59. package/src/extension/control-notices.d.ts.map +1 -1
  60. package/src/extension/control-notices.js +1 -7
  61. package/src/extension/control-notices.js.map +1 -1
  62. package/src/extension/declaration-pinning.d.ts +19 -0
  63. package/src/extension/declaration-pinning.d.ts.map +1 -0
  64. package/src/extension/declaration-pinning.js +154 -0
  65. package/src/extension/declaration-pinning.js.map +1 -0
  66. package/src/extension/fanout-child.d.ts.map +1 -1
  67. package/src/extension/fanout-child.js +6 -8
  68. package/src/extension/fanout-child.js.map +1 -1
  69. package/src/extension/index.d.ts +1 -2
  70. package/src/extension/index.d.ts.map +1 -1
  71. package/src/extension/index.js +104 -121
  72. package/src/extension/index.js.map +1 -1
  73. package/src/extension/rpc.d.ts.map +1 -1
  74. package/src/extension/rpc.js +12 -6
  75. package/src/extension/rpc.js.map +1 -1
  76. package/src/extension/schemas.d.ts +137 -1
  77. package/src/extension/schemas.d.ts.map +1 -1
  78. package/src/extension/schemas.js +22 -22
  79. package/src/extension/schemas.js.map +1 -1
  80. package/src/extension/subagent-guide.d.ts +1 -0
  81. package/src/extension/subagent-guide.d.ts.map +1 -1
  82. package/src/extension/subagent-guide.js +80 -6
  83. package/src/extension/subagent-guide.js.map +1 -1
  84. package/src/extension/subagent-options.d.ts +8 -0
  85. package/src/extension/subagent-options.d.ts.map +1 -0
  86. package/src/extension/subagent-options.js +52 -0
  87. package/src/extension/subagent-options.js.map +1 -0
  88. package/src/extension/tool-activation.d.ts.map +1 -1
  89. package/src/extension/tool-activation.js +7 -4
  90. package/src/extension/tool-activation.js.map +1 -1
  91. package/src/extension/tool-description.d.ts +4 -7
  92. package/src/extension/tool-description.d.ts.map +1 -1
  93. package/src/extension/tool-description.js +45 -59
  94. package/src/extension/tool-description.js.map +1 -1
  95. package/src/inspectors/actions.d.ts +2 -0
  96. package/src/inspectors/actions.d.ts.map +1 -1
  97. package/src/inspectors/actions.js +41 -13
  98. package/src/inspectors/actions.js.map +1 -1
  99. package/src/inspectors/plugins.d.ts.map +1 -1
  100. package/src/inspectors/plugins.js +3 -2
  101. package/src/inspectors/plugins.js.map +1 -1
  102. package/src/inspectors/tmux/actions.d.ts +26 -0
  103. package/src/inspectors/tmux/actions.d.ts.map +1 -0
  104. package/src/inspectors/tmux/actions.js +182 -0
  105. package/src/inspectors/tmux/actions.js.map +1 -0
  106. package/src/inspectors/tmux/client.d.ts +28 -0
  107. package/src/inspectors/tmux/client.d.ts.map +1 -0
  108. package/src/inspectors/tmux/client.js +65 -0
  109. package/src/inspectors/tmux/client.js.map +1 -0
  110. package/src/inspectors/tmux/plugin.d.ts +8 -0
  111. package/src/inspectors/tmux/plugin.d.ts.map +1 -0
  112. package/src/inspectors/tmux/plugin.js +15 -0
  113. package/src/inspectors/tmux/plugin.js.map +1 -0
  114. package/src/integrations/program-status.d.ts +31 -0
  115. package/src/integrations/program-status.d.ts.map +1 -0
  116. package/src/integrations/program-status.js +189 -0
  117. package/src/integrations/program-status.js.map +1 -0
  118. package/src/intercom/native-supervisor-channel.d.ts +16 -1
  119. package/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  120. package/src/intercom/native-supervisor-channel.js +101 -8
  121. package/src/intercom/native-supervisor-channel.js.map +1 -1
  122. package/src/intercom/result-intercom.js +1 -1
  123. package/src/intercom/result-intercom.js.map +1 -1
  124. package/src/intercom/supervisor-ui.d.ts +2 -12
  125. package/src/intercom/supervisor-ui.d.ts.map +1 -1
  126. package/src/intercom/supervisor-ui.js +2 -154
  127. package/src/intercom/supervisor-ui.js.map +1 -1
  128. package/src/missions/store.d.ts.map +1 -1
  129. package/src/missions/store.js +27 -5
  130. package/src/missions/store.js.map +1 -1
  131. package/src/runs/background/active-async-capacity.d.ts +2 -1
  132. package/src/runs/background/active-async-capacity.d.ts.map +1 -1
  133. package/src/runs/background/active-async-capacity.js +10 -6
  134. package/src/runs/background/active-async-capacity.js.map +1 -1
  135. package/src/runs/background/async-execution.d.ts +9 -1
  136. package/src/runs/background/async-execution.d.ts.map +1 -1
  137. package/src/runs/background/async-execution.js +253 -144
  138. package/src/runs/background/async-execution.js.map +1 -1
  139. package/src/runs/background/async-job-tracker.d.ts +4 -1
  140. package/src/runs/background/async-job-tracker.d.ts.map +1 -1
  141. package/src/runs/background/async-job-tracker.js +3 -2
  142. package/src/runs/background/async-job-tracker.js.map +1 -1
  143. package/src/runs/background/async-resume.d.ts.map +1 -1
  144. package/src/runs/background/async-resume.js +9 -3
  145. package/src/runs/background/async-resume.js.map +1 -1
  146. package/src/runs/background/await-async-run.d.ts +8 -4
  147. package/src/runs/background/await-async-run.d.ts.map +1 -1
  148. package/src/runs/background/await-async-run.js +14 -8
  149. package/src/runs/background/await-async-run.js.map +1 -1
  150. package/src/runs/background/binary-bootstrap.d.ts.map +1 -1
  151. package/src/runs/background/binary-bootstrap.js +2 -1
  152. package/src/runs/background/binary-bootstrap.js.map +1 -1
  153. package/src/runs/background/chain-root-attachment.d.ts +2 -0
  154. package/src/runs/background/chain-root-attachment.d.ts.map +1 -1
  155. package/src/runs/background/chain-root-attachment.js +9 -6
  156. package/src/runs/background/chain-root-attachment.js.map +1 -1
  157. package/src/runs/background/control-channel.d.ts +1 -0
  158. package/src/runs/background/control-channel.d.ts.map +1 -1
  159. package/src/runs/background/control-channel.js +27 -3
  160. package/src/runs/background/control-channel.js.map +1 -1
  161. package/src/runs/background/fleet-view.js +5 -5
  162. package/src/runs/background/fleet-view.js.map +1 -1
  163. package/src/runs/background/notify.d.ts +6 -1
  164. package/src/runs/background/notify.d.ts.map +1 -1
  165. package/src/runs/background/notify.js +130 -14
  166. package/src/runs/background/notify.js.map +1 -1
  167. package/src/runs/background/result-files.d.ts +27 -0
  168. package/src/runs/background/result-files.d.ts.map +1 -1
  169. package/src/runs/background/result-files.js +100 -6
  170. package/src/runs/background/result-files.js.map +1 -1
  171. package/src/runs/background/result-watcher.d.ts.map +1 -1
  172. package/src/runs/background/result-watcher.js +60 -64
  173. package/src/runs/background/result-watcher.js.map +1 -1
  174. package/src/runs/background/resume-guidance.js +2 -2
  175. package/src/runs/background/resume-guidance.js.map +1 -1
  176. package/src/runs/background/run-child-session.d.ts.map +1 -1
  177. package/src/runs/background/run-child-session.js +9 -15
  178. package/src/runs/background/run-child-session.js.map +1 -1
  179. package/src/runs/background/run-id-resolver.d.ts.map +1 -1
  180. package/src/runs/background/run-id-resolver.js +9 -6
  181. package/src/runs/background/run-id-resolver.js.map +1 -1
  182. package/src/runs/background/run-status.d.ts.map +1 -1
  183. package/src/runs/background/run-status.js +19 -15
  184. package/src/runs/background/run-status.js.map +1 -1
  185. package/src/runs/background/runner-aliases.d.ts.map +1 -1
  186. package/src/runs/background/runner-aliases.js +11 -8
  187. package/src/runs/background/runner-aliases.js.map +1 -1
  188. package/src/runs/background/runner-child-launch.d.ts.map +1 -1
  189. package/src/runs/background/runner-child-launch.js +1 -0
  190. package/src/runs/background/runner-child-launch.js.map +1 -1
  191. package/src/runs/background/runner-http-dispatcher.d.ts +3 -0
  192. package/src/runs/background/runner-http-dispatcher.d.ts.map +1 -1
  193. package/src/runs/background/runner-http-dispatcher.js +2 -0
  194. package/src/runs/background/runner-http-dispatcher.js.map +1 -1
  195. package/src/runs/background/scheduled-runs.d.ts +9 -0
  196. package/src/runs/background/scheduled-runs.d.ts.map +1 -1
  197. package/src/runs/background/scheduled-runs.js +124 -36
  198. package/src/runs/background/scheduled-runs.js.map +1 -1
  199. package/src/runs/background/subagent-runner-bootstrap.d.ts.map +1 -1
  200. package/src/runs/background/subagent-runner-bootstrap.js +5 -1
  201. package/src/runs/background/subagent-runner-bootstrap.js.map +1 -1
  202. package/src/runs/background/subagent-runner.d.ts +3 -1
  203. package/src/runs/background/subagent-runner.d.ts.map +1 -1
  204. package/src/runs/background/subagent-runner.js +211 -283
  205. package/src/runs/background/subagent-runner.js.map +1 -1
  206. package/src/runs/background/subagent-wait.d.ts +2 -0
  207. package/src/runs/background/subagent-wait.d.ts.map +1 -1
  208. package/src/runs/background/subagent-wait.js +34 -20
  209. package/src/runs/background/subagent-wait.js.map +1 -1
  210. package/src/runs/background/terminal-run-index.d.ts +1 -0
  211. package/src/runs/background/terminal-run-index.d.ts.map +1 -1
  212. package/src/runs/background/terminal-run-index.js +47 -1
  213. package/src/runs/background/terminal-run-index.js.map +1 -1
  214. package/src/runs/background/wait-tool.d.ts.map +1 -1
  215. package/src/runs/background/wait-tool.js +36 -23
  216. package/src/runs/background/wait-tool.js.map +1 -1
  217. package/src/runs/background/workflow-terminal-proof.d.ts +1 -1
  218. package/src/runs/background/workflow-terminal-proof.d.ts.map +1 -1
  219. package/src/runs/background/workflow-terminal-proof.js +12 -3
  220. package/src/runs/background/workflow-terminal-proof.js.map +1 -1
  221. package/src/runs/foreground/async-stop-action.d.ts +7 -1
  222. package/src/runs/foreground/async-stop-action.d.ts.map +1 -1
  223. package/src/runs/foreground/async-stop-action.js +27 -23
  224. package/src/runs/foreground/async-stop-action.js.map +1 -1
  225. package/src/runs/foreground/execution.d.ts.map +1 -1
  226. package/src/runs/foreground/execution.js +91 -69
  227. package/src/runs/foreground/execution.js.map +1 -1
  228. package/src/runs/foreground/subagent-executor.d.ts +4 -1
  229. package/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  230. package/src/runs/foreground/subagent-executor.js +174 -79
  231. package/src/runs/foreground/subagent-executor.js.map +1 -1
  232. package/src/runs/shared/child-hooks.js +6 -5
  233. package/src/runs/shared/child-hooks.js.map +1 -1
  234. package/src/runs/shared/child-launch.d.ts +2 -0
  235. package/src/runs/shared/child-launch.d.ts.map +1 -1
  236. package/src/runs/shared/child-launch.js +1 -0
  237. package/src/runs/shared/child-launch.js.map +1 -1
  238. package/src/runs/shared/child-session.d.ts +4 -0
  239. package/src/runs/shared/child-session.d.ts.map +1 -1
  240. package/src/runs/shared/child-session.js +28 -23
  241. package/src/runs/shared/child-session.js.map +1 -1
  242. package/src/runs/shared/child-tool-plan.d.ts.map +1 -1
  243. package/src/runs/shared/child-tool-plan.js +11 -10
  244. package/src/runs/shared/child-tool-plan.js.map +1 -1
  245. package/src/runs/shared/dynamic-fanout.js +1 -1
  246. package/src/runs/shared/dynamic-fanout.js.map +1 -1
  247. package/src/runs/shared/effective-system-prompt.d.ts +4 -4
  248. package/src/runs/shared/effective-system-prompt.d.ts.map +1 -1
  249. package/src/runs/shared/effective-system-prompt.js +5 -4
  250. package/src/runs/shared/effective-system-prompt.js.map +1 -1
  251. package/src/runs/shared/external-cli-runner.d.ts.map +1 -1
  252. package/src/runs/shared/external-cli-runner.js +3 -2
  253. package/src/runs/shared/external-cli-runner.js.map +1 -1
  254. package/src/runs/shared/herdr-placed-run.d.ts +1 -0
  255. package/src/runs/shared/herdr-placed-run.d.ts.map +1 -1
  256. package/src/runs/shared/herdr-placed-run.js +10 -6
  257. package/src/runs/shared/herdr-placed-run.js.map +1 -1
  258. package/src/runs/shared/model-resolution-diagnostic.d.ts +17 -5
  259. package/src/runs/shared/model-resolution-diagnostic.d.ts.map +1 -1
  260. package/src/runs/shared/model-resolution-diagnostic.js +37 -10
  261. package/src/runs/shared/model-resolution-diagnostic.js.map +1 -1
  262. package/src/runs/shared/model-resolution.d.ts.map +1 -1
  263. package/src/runs/shared/model-resolution.js +29 -1
  264. package/src/runs/shared/model-resolution.js.map +1 -1
  265. package/src/runs/shared/nested-events.d.ts +2 -0
  266. package/src/runs/shared/nested-events.d.ts.map +1 -1
  267. package/src/runs/shared/nested-events.js +4 -0
  268. package/src/runs/shared/nested-events.js.map +1 -1
  269. package/src/runs/shared/orca-progress-tabs.js +1 -1
  270. package/src/runs/shared/orca-progress-tabs.js.map +1 -1
  271. package/src/runs/shared/parallel-handoff.js +2 -2
  272. package/src/runs/shared/parallel-handoff.js.map +1 -1
  273. package/src/runs/shared/parallel-utils.d.ts +2 -0
  274. package/src/runs/shared/parallel-utils.d.ts.map +1 -1
  275. package/src/runs/shared/parallel-utils.js.map +1 -1
  276. package/src/runs/shared/partial-output.d.ts +7 -0
  277. package/src/runs/shared/partial-output.d.ts.map +1 -1
  278. package/src/runs/shared/partial-output.js +7 -0
  279. package/src/runs/shared/partial-output.js.map +1 -1
  280. package/src/runs/shared/runner-launcher.d.ts +12 -0
  281. package/src/runs/shared/runner-launcher.d.ts.map +1 -0
  282. package/src/runs/shared/runner-launcher.js +25 -0
  283. package/src/runs/shared/runner-launcher.js.map +1 -0
  284. package/src/runs/shared/single-output.d.ts +31 -1
  285. package/src/runs/shared/single-output.d.ts.map +1 -1
  286. package/src/runs/shared/single-output.js +100 -21
  287. package/src/runs/shared/single-output.js.map +1 -1
  288. package/src/runs/shared/structured-output.d.ts +2 -0
  289. package/src/runs/shared/structured-output.d.ts.map +1 -1
  290. package/src/runs/shared/structured-output.js +26 -8
  291. package/src/runs/shared/structured-output.js.map +1 -1
  292. package/src/runs/shared/subagent-control.js +3 -3
  293. package/src/runs/shared/subagent-control.js.map +1 -1
  294. package/src/runs/shared/subagent-prompt-runtime.d.ts +37 -2
  295. package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  296. package/src/runs/shared/subagent-prompt-runtime.js +127 -20
  297. package/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  298. package/src/runs/shared/tool-budget.js +1 -1
  299. package/src/runs/shared/tool-budget.js.map +1 -1
  300. package/src/runs/shared/workflow-async-child-guidance.js +1 -1
  301. package/src/runs/shared/workflow-async-child-guidance.js.map +1 -1
  302. package/src/runs/shared/worktree-cleanup-plan.js +1 -1
  303. package/src/runs/shared/worktree-cleanup-plan.js.map +1 -1
  304. package/src/shared/atomic-json.d.ts +4 -3
  305. package/src/shared/atomic-json.d.ts.map +1 -1
  306. package/src/shared/atomic-json.js +3 -1
  307. package/src/shared/atomic-json.js.map +1 -1
  308. package/src/shared/child-transcript.js +1 -1
  309. package/src/shared/child-transcript.js.map +1 -1
  310. package/src/shared/edit-distance.d.ts +5 -0
  311. package/src/shared/edit-distance.d.ts.map +1 -0
  312. package/src/shared/edit-distance.js +33 -0
  313. package/src/shared/edit-distance.js.map +1 -0
  314. package/src/shared/extension-context.d.ts +5 -0
  315. package/src/shared/extension-context.d.ts.map +1 -1
  316. package/src/shared/extension-context.js +7 -0
  317. package/src/shared/extension-context.js.map +1 -1
  318. package/src/shared/formatters.d.ts.map +1 -1
  319. package/src/shared/formatters.js +1 -6
  320. package/src/shared/formatters.js.map +1 -1
  321. package/src/shared/model-info.d.ts +8 -0
  322. package/src/shared/model-info.d.ts.map +1 -1
  323. package/src/shared/model-info.js +22 -0
  324. package/src/shared/model-info.js.map +1 -1
  325. package/src/shared/parent-wake.d.ts +7 -1
  326. package/src/shared/parent-wake.d.ts.map +1 -1
  327. package/src/shared/parent-wake.js +36 -12
  328. package/src/shared/parent-wake.js.map +1 -1
  329. package/src/shared/pruned-fork.d.ts +1 -1
  330. package/src/shared/pruned-fork.d.ts.map +1 -1
  331. package/src/shared/pruned-fork.js +6 -0
  332. package/src/shared/pruned-fork.js.map +1 -1
  333. package/src/shared/runtime-module-path.d.ts +11 -0
  334. package/src/shared/runtime-module-path.d.ts.map +1 -0
  335. package/src/shared/runtime-module-path.js +17 -0
  336. package/src/shared/runtime-module-path.js.map +1 -0
  337. package/src/shared/types.d.ts +33 -10
  338. package/src/shared/types.d.ts.map +1 -1
  339. package/src/shared/types.js +7 -4
  340. package/src/shared/types.js.map +1 -1
  341. package/src/shared/utils.d.ts +2 -0
  342. package/src/shared/utils.d.ts.map +1 -1
  343. package/src/shared/utils.js +10 -7
  344. package/src/shared/utils.js.map +1 -1
  345. package/src/slash/slash-commands.d.ts.map +1 -1
  346. package/src/slash/slash-commands.js +21 -10
  347. package/src/slash/slash-commands.js.map +1 -1
  348. package/src/slash/subagents-admin.d.ts.map +1 -1
  349. package/src/slash/subagents-admin.js +3 -1
  350. package/src/slash/subagents-admin.js.map +1 -1
  351. package/src/tui/fleet-status.d.ts +5 -0
  352. package/src/tui/fleet-status.d.ts.map +1 -1
  353. package/src/tui/fleet-status.js +24 -3
  354. package/src/tui/fleet-status.js.map +1 -1
  355. package/src/tui/fleet-transcript.d.ts +2 -0
  356. package/src/tui/fleet-transcript.d.ts.map +1 -1
  357. package/src/tui/fleet-transcript.js +7 -2
  358. package/src/tui/fleet-transcript.js.map +1 -1
  359. package/src/tui/fleet.d.ts.map +1 -1
  360. package/src/tui/fleet.js +11 -6
  361. package/src/tui/fleet.js.map +1 -1
  362. package/src/tui/render.d.ts +2 -2
  363. package/src/tui/render.d.ts.map +1 -1
  364. package/src/tui/render.js +19 -17
  365. package/src/tui/render.js.map +1 -1
  366. package/src/tui/subagent-messages.d.ts +23 -0
  367. package/src/tui/subagent-messages.d.ts.map +1 -0
  368. package/src/tui/subagent-messages.js +270 -0
  369. package/src/tui/subagent-messages.js.map +1 -0
  370. package/src/watchdog/change-signature.d.ts.map +1 -1
  371. package/src/watchdog/change-signature.js +1 -3
  372. package/src/watchdog/change-signature.js.map +1 -1
  373. package/src/watchdog/register-main.d.ts.map +1 -1
  374. package/src/watchdog/register-main.js +1 -19
  375. package/src/watchdog/register-main.js.map +1 -1
  376. package/src/watchdog/render.d.ts +2 -10
  377. package/src/watchdog/render.d.ts.map +1 -1
  378. package/src/watchdog/render.js +1 -19
  379. package/src/watchdog/render.js.map +1 -1
  380. package/src/watchdog/tool-actions.js +2 -2
  381. package/src/watchdog/tool-actions.js.map +1 -1
  382. package/src/workflows/scripted-workflow.d.ts.map +1 -1
  383. package/src/workflows/scripted-workflow.js +33 -10
  384. package/src/workflows/scripted-workflow.js.map +1 -1
  385. package/src/workflows/workflow-resources.d.ts.map +1 -1
  386. package/src/workflows/workflow-resources.js +12 -0
  387. package/src/workflows/workflow-resources.js.map +1 -1
  388. package/src/runs/shared/run-history.d.ts +0 -67
  389. package/src/runs/shared/run-history.d.ts.map +0 -1
  390. package/src/runs/shared/run-history.js +0 -270
  391. package/src/runs/shared/run-history.js.map +0 -1
@@ -24,7 +24,16 @@ export function readWorkflowChildProcessEvidence(workflowAsyncDir, steps) {
24
24
  }
25
25
  return { state: "observed", children };
26
26
  }
27
- /** Evidence for one roster entry; undefined for synchronous children, which run inside the workflow host and have no process of their own. */
27
+ /**
28
+ * The host records an async child's run id before launching it, so a launch that fails before any runner
29
+ * exists leaves a failed roster step whose run directory has no status and no runner artifacts.
30
+ */
31
+ function launchFailedBeforeRunner(step, childDir) {
32
+ if (step.status !== "failed" || !step.error)
33
+ return false;
34
+ return !childDir || !["process-terminal.json", "runner-startup.json"].some((file) => fs.existsSync(path.join(childDir, file)));
35
+ }
36
+ /** Evidence for one roster entry; undefined for synchronous children, which run inside the workflow host and have no process of their own, and for async children whose launch failed before a runner existed. */
28
37
  export function readWorkflowChildEvidence(workflowAsyncDir, step) {
29
38
  const label = step.workflowKey ?? step.agent;
30
39
  if (typeof step.async !== "boolean")
@@ -35,10 +44,10 @@ export function readWorkflowChildEvidence(workflowAsyncDir, step) {
35
44
  return { state: "unknown", reason: `async workflow child ${label} is missing run id` };
36
45
  const childDir = path.join(path.dirname(workflowAsyncDir), step.runId);
37
46
  if (!fs.existsSync(childDir))
38
- return { state: "unknown", reason: `async workflow child ${label} directory is missing` };
47
+ return launchFailedBeforeRunner(step) ? undefined : { state: "unknown", reason: `async workflow child ${label} directory is missing` };
39
48
  const childStatus = readStatus(childDir);
40
49
  if (!childStatus)
41
- return { state: "unknown", reason: `async workflow child ${label} status is missing or unreadable` };
50
+ return launchFailedBeforeRunner(step, childDir) ? undefined : { state: "unknown", reason: `async workflow child ${label} status is missing or unreadable` };
42
51
  if (!isTerminalAsyncState(childStatus.state))
43
52
  return { state: "pending", reason: `async workflow child ${label} is still ${childStatus.state}` };
44
53
  const recorded = childStatus.processTerminal;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-terminal-proof.js","sourceRoot":"","sources":["../../../../src/runs/background/workflow-terminal-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-terminal-proof.js","sourceRoot":"","sources":["../../../../src/runs/background/workflow-terminal-proof.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import type { AgentToolResult } from "@earendil-works/pi-agent-core";
2
- import { type Details, type SubagentState } from "../../shared/types.ts";
2
+ import { type AsyncStatus, type Details, type SubagentState } from "../../shared/types.ts";
3
+ import { deliverStopRequest } from "../background/control-channel.ts";
4
+ /** After ownership/state checks, deliver stop and seal paused whole runs only with native terminal proof. */
5
+ export declare function deliverAsyncRunStop(input: Parameters<typeof deliverStopRequest>[0] & {
6
+ status: AsyncStatus;
7
+ resultsDir?: string;
8
+ }): string | undefined;
3
9
  export declare function stopAsyncRun(state: SubagentState, runId: string | undefined, kill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean, location?: {
4
10
  asyncDir: string | null;
5
11
  resolvedId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"async-stop-action.d.ts","sourceRoot":"","sources":["../../../../src/runs/foreground/async-stop-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAA0B,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAsHjG,wBAAgB,YAAY,CAC3B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,EAC5D,QAAQ,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,OAAO,CAAC,EAAE,MAAM,GACd,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAgFjC"}
1
+ {"version":3,"file":"async-stop-action.d.ts","sourceRoot":"","sources":["../../../../src/runs/foreground/async-stop-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAQ,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kCAAkC,CAAC;AAkH3F,6GAA6G;AAC7G,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5F,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,YAAY,CAC3B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,EAC5D,QAAQ,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,OAAO,CAAC,EAAE,MAAM,GACd,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CA4EjC"}
@@ -7,7 +7,7 @@ import { deliverStopRequest, stopInboxClosedPath } from "../background/control-c
7
7
  import { readProcessTerminal } from "../background/process-terminal.js";
8
8
  import { resultFilePath, resultPayloadFileForSessionRun, resultPayloadPathForSessionRun, writeAsyncResultFile } from "../background/result-files.js";
9
9
  import { reconcileAsyncRun } from "../background/stale-run-reconciler.js";
10
- import { readStatus } from "../../shared/utils.js";
10
+ import { SUBAGENT_STOPPED_MESSAGE, readStatus } from "../../shared/utils.js";
11
11
  import { isStoppableAsyncStatusStep, resolveAsyncStatusChild, stopStoppableAsyncStatusChildren } from "../shared/child-identity.js";
12
12
  function getAsyncStopTarget(state, runId, location) {
13
13
  if (location?.asyncDir) {
@@ -21,8 +21,7 @@ function getAsyncStopTarget(state, runId, location) {
21
21
  const direct = state.asyncJobs.get(runId);
22
22
  return direct ? { asyncId: direct.asyncId, asyncDir: direct.asyncDir } : undefined;
23
23
  }
24
- const STOP_MESSAGE = "Subagent stopped by user.";
25
- function sealPausedRun(asyncDir, status) {
24
+ function sealPausedRun(asyncDir, status, resultsDir) {
26
25
  const runnerProcessInstanceId = status.processTerminal?.runnerProcessInstanceId;
27
26
  if (!runnerProcessInstanceId)
28
27
  return "runner process identity is missing";
@@ -33,8 +32,8 @@ function sealPausedRun(asyncDir, status) {
33
32
  if (!status.sessionId)
34
33
  return "session identity is missing";
35
34
  // The validated lookup skips unreadable or foreign files; those must be refused below, not replaced.
36
- const existingResultPath = resultPayloadPathForSessionRun(DIRS.results, status.sessionId, status.runId)
37
- ?? resultPayloadFileForSessionRun(DIRS.results, status.sessionId, status.runId);
35
+ const existingResultPath = resultPayloadPathForSessionRun(resultsDir, status.sessionId, status.runId)
36
+ ?? resultPayloadFileForSessionRun(resultsDir, status.sessionId, status.runId);
38
37
  let existingResult;
39
38
  if (!existingResultPath) {
40
39
  // Delivery deletes the paused result, and an interrupted parent may never have received one; seal from status.
@@ -76,7 +75,7 @@ function sealPausedRun(asyncDir, status) {
76
75
  return {
77
76
  ...rest,
78
77
  status: "stopped",
79
- error: STOP_MESSAGE,
78
+ error: SUBAGENT_STOPPED_MESSAGE,
80
79
  exitCode: 1,
81
80
  stopped: true,
82
81
  endedAt: now,
@@ -90,15 +89,15 @@ function sealPausedRun(asyncDir, status) {
90
89
  if ((stepState !== "pending" && stepState !== "running" && stepState !== "paused") || !entry || typeof entry !== "object" || Array.isArray(entry))
91
90
  return entry;
92
91
  const { interrupted: _interrupted, ...result } = entry;
93
- return { ...result, output: STOP_MESSAGE, error: STOP_MESSAGE, success: false, exitCode: 1, stopped: true };
92
+ return { ...result, output: SUBAGENT_STOPPED_MESSAGE, error: SUBAGENT_STOPPED_MESSAGE, success: false, exitCode: 1, stopped: true };
94
93
  })
95
94
  : existingResult.results;
96
95
  const stoppedResult = {
97
96
  ...existingResult,
98
97
  success: false,
99
98
  state: "stopped",
100
- summary: STOP_MESSAGE,
101
- error: STOP_MESSAGE,
99
+ summary: SUBAGENT_STOPPED_MESSAGE,
100
+ error: SUBAGENT_STOPPED_MESSAGE,
102
101
  stopped: true,
103
102
  exitCode: 1,
104
103
  timestamp: now,
@@ -108,16 +107,26 @@ function sealPausedRun(asyncDir, status) {
108
107
  ...status,
109
108
  state: "stopped",
110
109
  stopped: true,
111
- error: STOP_MESSAGE,
110
+ error: SUBAGENT_STOPPED_MESSAGE,
112
111
  endedAt: now,
113
112
  lastUpdate: now,
114
113
  steps,
115
114
  };
116
115
  delete stoppedStatus.activityState;
117
- writeAsyncResultFile(resultFilePath(DIRS.results, status.runId), stoppedResult);
116
+ writeAsyncResultFile(resultFilePath(resultsDir, status.runId), stoppedResult);
118
117
  writeAtomicJson(path.join(asyncDir, "status.json"), stoppedStatus);
119
118
  updateActiveRunIndex(asyncDir, "stopped", status.toolCallId, { retryCapacityErrors: true, terminalIndexBeforeRelease: true });
120
119
  }
120
+ /** After ownership/state checks, deliver stop and seal paused whole runs only with native terminal proof. */
121
+ export function deliverAsyncRunStop(input) {
122
+ const { status, resultsDir = DIRS.results, ...delivery } = input;
123
+ const pausedWholeRun = status.state === "paused" && delivery.childId === undefined && delivery.targetIndex === undefined;
124
+ // A paused run whose runner closed its inbox can only be sealed from exact exit proof below.
125
+ if (!(pausedWholeRun && fs.existsSync(stopInboxClosedPath(delivery.asyncDir))))
126
+ deliverStopRequest(delivery);
127
+ if (pausedWholeRun)
128
+ return sealPausedRun(delivery.asyncDir, status, resultsDir);
129
+ }
121
130
  export function stopAsyncRun(state, runId, kill, location, childId) {
122
131
  const target = getAsyncStopTarget(state, runId, location);
123
132
  // An async workflow runs in this process: it has no runner to read a stop request, so stop it through its controller.
@@ -171,18 +180,13 @@ export function stopAsyncRun(state, runId, kill, location, childId) {
171
180
  }
172
181
  }
173
182
  try {
174
- // A paused run whose runner closed its inbox can only be sealed from exact exit proof below.
175
- if (!(pausedWholeRun && fs.existsSync(stopInboxClosedPath(target.asyncDir))))
176
- deliverStopRequest({ asyncDir: target.asyncDir, pid: typeof status.pid === "number" ? status.pid : undefined, kill, source: "stop-action", targetIndex: child?.index, childId: child?.id ?? childId });
177
- if (pausedWholeRun) {
178
- const failure = sealPausedRun(target.asyncDir, status);
179
- if (failure) {
180
- return {
181
- content: [{ type: "text", text: `Stop request persisted for paused async run ${target.asyncId}, but terminal proof is not ready (${failure}). Retry stop after runner shutdown is observed.` }],
182
- isError: true,
183
- details: { mode: "management", results: [] },
184
- };
185
- }
183
+ const failure = deliverAsyncRunStop({ asyncDir: target.asyncDir, status, pid: typeof status.pid === "number" ? status.pid : undefined, kill, source: "stop-action", targetIndex: child?.index, childId: child?.id ?? childId });
184
+ if (failure) {
185
+ return {
186
+ content: [{ type: "text", text: `Stop request persisted for paused async run ${target.asyncId}, but terminal proof is not ready (${failure}). Retry stop after runner shutdown is observed.` }],
187
+ isError: true,
188
+ details: { mode: "management", results: [] },
189
+ };
186
190
  }
187
191
  const tracked = state.asyncJobs.get(target.asyncId);
188
192
  if (tracked) {
@@ -1 +1 @@
1
- {"version":3,"file":"async-stop-action.js","sourceRoot":"","sources":["../../../../src/runs/foreground/async-stop-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async-stop-action.js","sourceRoot":"","sources":["../../../../src/runs/foreground/async-stop-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAsD,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,gCAAgC,EAAiC,MAAM,6BAA6B,CAAC;AAEnK,SAAS,kBAAkB,CAC1B,KAAoB,EACpB,KAAyB,EACzB,QAA2D;IAE3D,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxB,OAAO;YACN,OAAO,EAAE,QAAQ,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC3B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,MAAmB,EAAE,UAAkB;IAC/E,MAAM,uBAAuB,GAAG,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAChF,IAAI,CAAC,uBAAuB;QAAE,OAAO,oCAAoC,CAAC;IAC1E,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC9F,IAAI,KAAK,EAAE,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,uBAAuB,KAAK,uBAAuB,EAAE,CAAC;QAC9H,OAAO,6BAA6B,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;IAC5H,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,6BAA6B,CAAC;IAC5D,qGAAqG;IACrG,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;WACjG,8BAA8B,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,cAAuC,CAAC;IAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,+GAA+G;QAC/G,cAAc,GAAG;YAChB,EAAE,EAAE,MAAM,CAAC,KAAK;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ;YACR,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;gBAClE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC,CAAC;SACH,CAAC;IACH,CAAC;SAAM,CAAC;QACP,IAAI,CAAC;YACJ,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/G,cAAc,GAAG,MAAiC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClG,CAAC;IACF,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;IACxG,IAAI,WAAW,KAAK,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACnF,OAAO,+CAA+C,CAAC;IACxD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpG,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACxD,OAAO;YACN,GAAG,IAAI;YACP,MAAM,EAAE,SAAkB;YAC1B,KAAK,EAAE,wBAAwB;YAC/B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrD,cAAc,EAAE,GAAG;SACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;QACpD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAChD,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChK,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,GAAG,KAAgC,CAAC;YAClF,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrI,CAAC,CAAC;QACF,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;IAC1B,MAAM,aAAa,GAAG;QACrB,GAAG,cAAc;QACjB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,wBAAwB;QACjC,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,GAAG;QACd,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;IACF,MAAM,aAAa,GAAgB;QAClC,GAAG,MAAM;QACT,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,GAAG;QACf,KAAK;KACL,CAAC;IACF,OAAO,aAAa,CAAC,aAAa,CAAC;IACnC,oBAAoB,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAC9E,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;IACnE,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/H,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,mBAAmB,CAClC,KAA8F;IAE9F,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC;IACzH,6FAA6F;IAC7F,IAAI,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7G,IAAI,cAAc;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,YAAY,CAC3B,KAAoB,EACpB,KAAyB,EACzB,IAA4D,EAC5D,QAA2D,EAC3D,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1D,sHAAsH;IACtH,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC;IAC/C,MAAM,kBAAkB,GAAG,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9H,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5I,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,wHAAwH;IACxH,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACjI,IAAI,kBAAkB,IAAI,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7D,IAAI,cAAc;YAAE,gCAAgC,CAAC,cAAc,EAAE,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxI,kBAAkB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,aAAa,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;IACnJ,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACnE,IAAI,KAAK,CAAC,gBAAgB,IAAI,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5E,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,MAAM,CAAC,OAAO,wCAAwC,EAAE,CAAC;YACvG,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;SAC5C,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,EAAE,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,CAAC;IAC3E,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7F,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iDAAiD,KAAK,IAAI,SAAS,IAAI,EAAE,CAAC;YAC1G,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;SAC5C,CAAC;IACH,CAAC;IACD,IAAI,KAA2C,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACpB,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;aAC5C,CAAC;QACH,CAAC;QACD,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,mBAAmB,MAAM,CAAC,KAAK,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,mDAAmD,EAAE,CAAC;gBAC/J,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;aAC5C,CAAC;QACH,CAAC;IACF,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QAChO,IAAI,OAAO,EAAE,CAAC;YACb,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,MAAM,CAAC,OAAO,sCAAsC,OAAO,kDAAkD,EAAE,CAAC;gBAC/L,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;aAC5C,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;YAClC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;QACD,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,EAAE,iBAAiB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,gCAAgC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtO,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;SAC5C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,EAAE,CAAC;YAC3F,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;SAC5C,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/runs/foreground/execution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAA0E,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWlI,OAAO,EAIN,KAAK,cAAc,EACnB,KAAK,YAAY,EAQjB,MAAM,uBAAuB,CAAC;AAqhE/B;;;GAGG;AACH,wBAAsB,OAAO,CAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,CAAC,CAwHvB"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/runs/foreground/execution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAA0E,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWlI,OAAO,EAIN,KAAK,cAAc,EACnB,KAAK,YAAY,EAQjB,MAAM,uBAAuB,CAAC;AAoiE/B;;;GAGG;AACH,wBAAsB,OAAO,CAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,CAAC,CAyHvB"}
@@ -21,15 +21,15 @@ import { resolvePermissionRules } from "../shared/permissions.js";
21
21
  import { applyThinkingSuffix, deriveForkPromptCacheKey } from "../shared/child-tool-plan.js";
22
22
  import { deriveChildSessionName } from "../../shared/child-session-name.js";
23
23
  import { assertAgentAllowedByCapabilityCeiling, intersectSubagentCapabilityCeilings, resolveCurrentSubagentCapabilityCeiling } from "../shared/capability-ceiling.js";
24
- import { resolveEffectiveThinking } from "../../shared/model-info.js";
24
+ import { qualifyModelWithProvider, resolveEffectiveThinking } from "../../shared/model-info.js";
25
25
  import { assertThinkingWithinCeiling, intersectThinkingCeilings } from "../../shared/thinking-ceiling.js";
26
26
  import { formatStructuredOutputRejectionError, MISSING_STRUCTURED_ACCEPTANCE_REPORT_ERROR, MISSING_STRUCTURED_OUTPUT_CALL_ERROR } from "../shared/structured-output.js";
27
27
  import { formatMidToolExitError, isOrdinaryToolForMidToolExit } from "../shared/process-signal.js";
28
28
  import { formatChildToolDiagnostic } from "../shared/tool-availability.js";
29
- import { formatChildModelResolutionDiagnostic, isChildModelResolutionFailure } from "../shared/model-resolution-diagnostic.js";
29
+ import { formatChildModelResolutionDiagnostic, formatInheritedProviderDiagnostic, isChildModelResolutionFailure } from "../shared/model-resolution-diagnostic.js";
30
30
  import { planAbortRecovery } from "../shared/abort-recovery.js";
31
31
  import { buildTimeoutRecoverySummary, collectTrackedMutationEvidence, snapshotTrackedMutations } from "../shared/mutation-evidence.js";
32
- import { captureSingleOutputSnapshot, extractChildWrittenOutput, finalizeSingleOutput, formatSavedOutputReference, hasSingleOutputChangedSinceSnapshot, resolveSingleOutput, validateFileOnlyOutputMode } from "../shared/single-output.js";
32
+ import { captureSingleOutputSnapshot, extractChildWrittenOutput, finalizeSingleOutput, formatSavedOutputReference, hasSingleOutputChangedSinceSnapshot, isSettlementFatalOutputError, resolveSingleOutput, validateFileOnlyOutputMode } from "../shared/single-output.js";
33
33
  import { formatSubagentModelVerificationError, isContextOverflow, resolveModelSelection, } from "../shared/model-resolution.js";
34
34
  import { createMutatingFailureState, didMutatingToolFail, isMutatingTool, nextLongRunningTrigger, recordMutatingFailure, resetMutatingFailureState, resolveCurrentPath, shouldEscalateMutatingFailures, summarizeRecentMutatingFailures, } from "../shared/long-running-guard.js";
35
35
  import { acceptanceFailureMessage, buildSkippedAcceptanceLedger, captureStagedIndexBaseline, evaluateAcceptance, formatAcceptancePrompt, resolveEffectiveAcceptance, stripAcceptanceReport, validateAcceptanceInput, typedVerifyOutput } from "../shared/acceptance.js";
@@ -75,6 +75,7 @@ function persistSingleResultMetadata(input) {
75
75
  const target = input.result;
76
76
  writeMetadata(input.metadataPath, {
77
77
  runId: input.runId,
78
+ parentSessionId: input.parentSessionId,
78
79
  agent: input.agent,
79
80
  task: PROMPT_REDACTED,
80
81
  exitCode: target.exitCode,
@@ -190,8 +191,7 @@ function snapshotResult(result, progress) {
190
191
  * foreground detach receipts and terminal consumers use snapshotResult directly.
191
192
  */
192
193
  function snapshotStreamResult(result, progress) {
193
- const snapshot = snapshotResult(result, progress);
194
- snapshot.messages = undefined;
194
+ const snapshot = snapshotResult({ ...result, messages: undefined }, progress);
195
195
  snapshot.toolCalls = boundStreamedToolCalls(result);
196
196
  return snapshot;
197
197
  }
@@ -297,6 +297,7 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
297
297
  nestedRoute: options.nestedRoute,
298
298
  runFanoutBudget: options.runFanoutBudget,
299
299
  parentSessionId: options.parentSessionId,
300
+ parentSessionFile: options.parentSessionFile,
300
301
  forkCacheKey: options.context === "fork" ? deriveForkPromptCacheKey(options.parentSessionId) : undefined,
301
302
  structuredOutput: options.structuredOutput,
302
303
  fast: options.fast ?? agent.fast,
@@ -466,6 +467,7 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
466
467
  let sessionSettled = false;
467
468
  let lifecycleFinished = false;
468
469
  let detached = false;
470
+ let hostStopReason;
469
471
  let intercomStarted = false;
470
472
  let assistantError;
471
473
  let removeAbortListener;
@@ -705,6 +707,9 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
705
707
  return events;
706
708
  };
707
709
  let activeLongRunningNotified = false;
710
+ // Pi's parallel tool execution emits every tool_execution_start before the first result message,
711
+ // so results are matched to their call by toolCallId; the last-started slot covers events without one.
712
+ const pendingToolResultsByCallId = new Map();
708
713
  let pendingToolResult;
709
714
  let activeToolSequence = 0;
710
715
  const activeToolCalls = new Map();
@@ -978,10 +983,12 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
978
983
  }
979
984
  progress.toolCount++;
980
985
  if (options.toolBudget) {
981
- result.toolBudget = toolBudgetState(options.toolBudget, progress.toolCount);
986
+ result.toolBudget = toolBudgetState(options.toolBudget, progress.toolCount, result.toolBudget?.blockedTool);
982
987
  }
983
988
  const mutates = isMutatingTool(evt.toolName, toolArgs, agent.mutationTools);
984
989
  pendingToolResult = { tool: evt.toolName ?? "tool", path: activeTool?.path, mutates, startedAt: now };
990
+ if (typeof evt.toolCallId === "string" && evt.toolCallId)
991
+ pendingToolResultsByCallId.set(evt.toolCallId, pendingToolResult);
985
992
  fireUpdate();
986
993
  }
987
994
  if (evt.type === "tool_execution_end") {
@@ -1030,9 +1037,10 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1030
1037
  }
1031
1038
  projectCompleteUsage();
1032
1039
  if (evt.message.model) {
1033
- progress.model = evt.message.model;
1040
+ const observedModel = qualifyModelWithProvider(evt.message.model, evt.message.provider, options.availableModels);
1041
+ progress.model = observedModel;
1034
1042
  if (!result.model)
1035
- result.model = evt.message.model;
1043
+ result.model = observedModel;
1036
1044
  if (expectedModelForVerification && !hasToolCall) {
1037
1045
  const modelVerificationError = formatSubagentModelVerificationError(expectedModelForVerification, evt.message.model, options.availableModels, options.modelResponseAliases, session?.virtualModelId);
1038
1046
  if (modelVerificationError && !result.error)
@@ -1059,59 +1067,48 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1059
1067
  applyChildLifecycle(projectChildLifecycle(evt, true, childLifecycleState));
1060
1068
  }
1061
1069
  }
1062
- updateActivityState(now);
1063
- fireUpdate();
1064
- }
1065
- if (evt.type === "tool_result_end" && evt.message) {
1066
- const toolResultCompletion = {
1067
- toolCallId: evt.message.toolCallId ?? evt.toolCallId,
1068
- toolName: evt.message.toolName ?? evt.toolName,
1069
- };
1070
- clearActiveToolTimeout(toolResultCompletion);
1071
- const endedTool = removeActiveToolCall(toolResultCompletion);
1072
- if (endedTool) {
1073
- progress.recentTools.push({
1074
- tool: endedTool.tool,
1075
- args: endedTool.args,
1076
- endMs: now,
1077
- });
1078
- refreshCurrentTool();
1079
- }
1080
- result.messages.push(evt.message);
1081
- const resultText = extractTextFromContent(evt.message.content);
1082
- // The result event's own tool name is authoritative; the single pending slot can
1083
- // describe a different, overlapping call and serves only as a fallback.
1084
- const blockedTool = (typeof toolResultCompletion.toolName === "string" && toolResultCompletion.toolName.length > 0
1085
- ? toolResultCompletion.toolName
1086
- : undefined) ?? pendingToolResult?.tool;
1087
- if (options.toolBudget && isToolBudgetBlockedMessage(options.toolBudget, resultText, blockedTool)) {
1088
- result.toolBudgetBlocked = true;
1089
- result.toolBudget = toolBudgetState(options.toolBudget, Math.max(progress.toolCount, options.toolBudget.hard + 1), blockedTool);
1090
- }
1091
- appendRecentOutput(progress, resultText.split("\n").slice(-10));
1092
- const toolSnapshot = pendingToolResult;
1093
- pendingToolResult = undefined;
1094
- if (toolSnapshot?.mutates && didMutatingToolFail(resultText)) {
1095
- recordMutatingFailure(mutatingFailures, {
1096
- tool: toolSnapshot.tool,
1097
- path: toolSnapshot.path,
1098
- error: resultText.split("\n").find((line) => line.trim())?.trim().slice(0, 180) ?? "mutating tool failed",
1099
- ts: now,
1100
- }, mutatingFailureWindowMs);
1101
- if (shouldEscalateMutatingFailures(mutatingFailures, controlConfig.failedToolAttemptsBeforeAttention)) {
1102
- emitNeedsAttention(now, {
1103
- message: `${agent.name} needs attention after repeated mutating tool failures`,
1104
- reason: "tool_failures",
1105
- currentTool: toolSnapshot.tool,
1106
- currentPath: toolSnapshot.path,
1107
- currentToolDurationMs: toolSnapshot.startedAt ? Math.max(0, now - toolSnapshot.startedAt) : undefined,
1108
- recentFailureSummary: summarizeRecentMutatingFailures(mutatingFailures),
1109
- });
1070
+ // Pi delivers every tool result, including a call blocked by a tool_call handler, as a
1071
+ // toolResult message after tool_execution_end; it emits no separate result event.
1072
+ if (evt.message.role === "toolResult") {
1073
+ const resultText = extractTextFromContent(evt.message.content);
1074
+ const resultCallId = evt.message.toolCallId;
1075
+ const keyedSnapshot = typeof resultCallId === "string" ? pendingToolResultsByCallId.get(resultCallId) : undefined;
1076
+ if (keyedSnapshot)
1077
+ pendingToolResultsByCallId.delete(resultCallId);
1078
+ const toolSnapshot = keyedSnapshot ?? pendingToolResult;
1079
+ if (!keyedSnapshot || pendingToolResult === keyedSnapshot)
1080
+ pendingToolResult = undefined;
1081
+ // The result message's own tool name is authoritative; the pending snapshot is only a fallback.
1082
+ const resultToolName = evt.message.toolName;
1083
+ const blockedTool = (typeof resultToolName === "string" && resultToolName.length > 0 ? resultToolName : undefined) ?? toolSnapshot?.tool;
1084
+ if (options.toolBudget && isToolBudgetBlockedMessage(options.toolBudget, resultText, blockedTool)) {
1085
+ result.toolBudgetBlocked = true;
1086
+ result.toolBudget = toolBudgetState(options.toolBudget, Math.max(progress.toolCount, options.toolBudget.hard + 1), blockedTool);
1087
+ }
1088
+ appendRecentOutput(progress, resultText.split("\n").slice(-10));
1089
+ if (toolSnapshot?.mutates && didMutatingToolFail(resultText)) {
1090
+ recordMutatingFailure(mutatingFailures, {
1091
+ tool: toolSnapshot.tool,
1092
+ path: toolSnapshot.path,
1093
+ error: resultText.split("\n").find((line) => line.trim())?.trim().slice(0, 180) ?? "mutating tool failed",
1094
+ ts: now,
1095
+ }, mutatingFailureWindowMs);
1096
+ if (shouldEscalateMutatingFailures(mutatingFailures, controlConfig.failedToolAttemptsBeforeAttention)) {
1097
+ emitNeedsAttention(now, {
1098
+ message: `${agent.name} needs attention after repeated mutating tool failures`,
1099
+ reason: "tool_failures",
1100
+ currentTool: toolSnapshot.tool,
1101
+ currentPath: toolSnapshot.path,
1102
+ currentToolDurationMs: toolSnapshot.startedAt ? Math.max(0, now - toolSnapshot.startedAt) : undefined,
1103
+ recentFailureSummary: summarizeRecentMutatingFailures(mutatingFailures),
1104
+ });
1105
+ }
1106
+ }
1107
+ else if (toolSnapshot?.mutates) {
1108
+ resetMutatingFailureState(mutatingFailures);
1110
1109
  }
1111
1110
  }
1112
- else if (toolSnapshot?.mutates) {
1113
- resetMutatingFailureState(mutatingFailures);
1114
- }
1111
+ updateActivityState(now);
1115
1112
  fireUpdate();
1116
1113
  }
1117
1114
  };
@@ -1244,10 +1241,11 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1244
1241
  if (!closeError && promptErrorMessage !== undefined) {
1245
1242
  closeError = promptErrorMessage;
1246
1243
  }
1247
- // A foreground child never loads the parent's ambient extensions, so a
1248
- // provider one registers resolves as "not found" before the child starts.
1249
- // Annotate only a creation/prompt failure that produced no turn; keep the
1250
- // core error and add the host rule and both remedies after it.
1244
+ // A foreground child never loads the parent's ambient extensions. A model
1245
+ // whose provider the parent registry does not serve resolves as "not found"
1246
+ // before the child starts; a provider it does serve is inherited without its
1247
+ // extension's session hooks and can fail the first request. Keep the
1248
+ // original error first and add the host rule and remedies after it.
1251
1249
  if (promptErrorMessage !== undefined
1252
1250
  && closeError === promptErrorMessage
1253
1251
  && isChildModelResolutionFailure(promptErrorMessage)
@@ -1256,11 +1254,20 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1256
1254
  && !launch.session.ambientExtensions) {
1257
1255
  closeError = `${promptErrorMessage}\n\n${formatChildModelResolutionDiagnostic({ agent: agent.name, model: launch.session.model, host: "parent", capabilityCeiling: launch.toolPlan.capabilityCeiling })}`;
1258
1256
  }
1257
+ else if (session?.inheritedProvider
1258
+ && closeError !== undefined
1259
+ && (closeError === promptErrorMessage || closeError === assistantError)
1260
+ && progress.toolCount === 0
1261
+ && (result.messages ?? []).every((message) => message.role !== "assistant" || message.stopReason === "error")) {
1262
+ closeError = `${closeError}\n\n${formatInheritedProviderDiagnostic({ agent: agent.name, model: launch.session.model, provider: session.inheritedProvider, capabilityCeiling: launch.toolPlan.capabilityCeiling })}`;
1263
+ }
1259
1264
  const forcedDrainAfterFinalSuccess = (forced || forcedTermination) && (cleanTerminalAssistantStopReceived || agentSettledReceived) && !closeError;
1260
1265
  const forcedDrainAfterEmptyTerminal = forcedDrainAfterFinalSuccess && hasEmptyTerminalAssistantResponse(result.messages ?? []);
1261
- if (!closeError && (abortedBySignal || session?.shutDown) && !result.interrupted && !result.timedOut) {
1262
- closeError = session?.shutDown ? "Subagent stopped because the parent session shut down." : STOPPED_BEFORE_COMPLETION_ERROR;
1266
+ if (!closeError && (abortedBySignal || session?.shutDown || hostStopReason) && !result.interrupted && !result.timedOut) {
1267
+ closeError = hostStopReason ?? (session?.shutDown ? "Subagent stopped because the parent session shut down." : STOPPED_BEFORE_COMPLETION_ERROR);
1263
1268
  }
1269
+ if (hostStopReason && !result.interrupted && !result.timedOut)
1270
+ result.stopped = true;
1264
1271
  // A workflow child ended by the workflow's abort signal was stopped, not failed.
1265
1272
  if (options.abortedAsStopped && abortedBySignal && !session?.shutDown && !result.interrupted && !result.timedOut)
1266
1273
  result.stopped = true;
@@ -1364,9 +1371,20 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1364
1371
  if (abortedBySignal || interruptedByControl || result.timedOut) {
1365
1372
  abortChild();
1366
1373
  }
1367
- options.onChildSession?.({ steer: (text) => created.steer(text), followUp: (text) => created.followUp(text) });
1374
+ options.onChildSession?.({
1375
+ steer: (text) => created.steer(text),
1376
+ followUp: (text) => created.followUp(text),
1377
+ stop: (reason) => {
1378
+ if (sessionSettled || lifecycleFinished)
1379
+ return;
1380
+ hostStopReason = reason;
1381
+ abortChild();
1382
+ },
1383
+ });
1368
1384
  messageBaseline = created.messages.length;
1369
- await created.prompt(`Task: ${task}`);
1385
+ // A runtime replacement can stop a child that detached while it was still being created.
1386
+ if (!hostStopReason)
1387
+ await created.prompt(`Task: ${task}`);
1370
1388
  settle(undefined);
1371
1389
  }
1372
1390
  catch (error) {
@@ -1517,9 +1535,11 @@ async function runSingleAttempt(runtimeCwd, agent, task, model, options, shared)
1517
1535
  fullOutput = stripAcceptanceReport(resolvedOutput.fullOutput);
1518
1536
  result.savedOutputPath = resolvedOutput.savedPath;
1519
1537
  result.outputSaveError = resolvedOutput.saveError;
1520
- if (resolvedOutput.fatalError) {
1538
+ if (isSettlementFatalOutputError(resolvedOutput, options.outputMode)) {
1521
1539
  result.exitCode = 1;
1522
1540
  result.error = result.error ? `${result.error}\n${resolvedOutput.saveError}` : resolvedOutput.saveError;
1541
+ progress.status = "failed";
1542
+ progress.error = result.error;
1523
1543
  }
1524
1544
  if (resolvedOutput.savedPath) {
1525
1545
  result.outputReference = formatSavedOutputReference(resolvedOutput.savedPath, fullOutput);
@@ -1697,7 +1717,7 @@ async function runSyncCompletionInner(runtimeCwd, agents, agentName, task, optio
1697
1717
  error: "Skills not found: pi-subagents",
1698
1718
  }, options.context));
1699
1719
  }
1700
- const systemPrompt = buildEffectiveSystemPrompt({ agent, resolvedSkills, cwd: skillCwd, ...(options.outputPath ? { outputPath: options.outputPath } : {}) });
1720
+ const systemPrompt = buildEffectiveSystemPrompt({ agent, resolvedSkills, cwd: skillCwd });
1701
1721
  const { model: selectedModel, requestedModel } = resolveModelSelection(options.modelOverride ?? agent.model, options.availableModels, agent.modelProvider ?? options.preferredModelProvider, {
1702
1722
  scope: options.modelScope,
1703
1723
  primaryModelFromParent: options.modelOverrideFromParent,
@@ -1760,6 +1780,7 @@ async function runSyncCompletionInner(runtimeCwd, agents, agentName, task, optio
1760
1780
  metadataPath: artifactPathsResult?.metadataPath,
1761
1781
  enabled: options.artifactConfig?.enabled !== false && options.artifactConfig?.includeMetadata !== false,
1762
1782
  runId: options.runId,
1783
+ parentSessionId: options.parentSessionId,
1763
1784
  agent: agentName,
1764
1785
  task,
1765
1786
  result: target,
@@ -2124,6 +2145,7 @@ export async function runSync(runtimeCwd, agents, agentName, task, options) {
2124
2145
  metadataPath: failedResult.artifactPaths?.metadataPath,
2125
2146
  enabled: options.artifactConfig?.enabled !== false && options.artifactConfig?.includeMetadata !== false,
2126
2147
  runId: options.runId,
2148
+ parentSessionId: options.parentSessionId,
2127
2149
  agent: failedResult.agent,
2128
2150
  task: failedResult.task,
2129
2151
  result: failedResult,