pi-subagents 0.69.0 → 0.70.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 (1448) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/agents/reviewer.md +3 -2
  3. package/docs/agents.md +6 -2
  4. package/docs/configuration.md +1 -1
  5. package/docs/extension-api.md +1 -1
  6. package/docs/models.md +3 -1
  7. package/docs/observability.md +6 -0
  8. package/docs/watchdog.md +2 -0
  9. package/docs/workflows.md +6 -2
  10. package/index.d.ts +3 -0
  11. package/index.d.ts.map +1 -0
  12. package/index.js +10 -0
  13. package/index.js.map +1 -0
  14. package/package.json +89 -73
  15. package/runner-peer-loader.mjs +4 -7
  16. package/runner-peer-preload.mjs +5 -7
  17. package/skills/pi-subagents/references/prompting-and-roles.md +2 -2
  18. package/src/agents/advertised-agent-prompt.d.ts +8 -0
  19. package/src/agents/advertised-agent-prompt.d.ts.map +1 -0
  20. package/src/agents/advertised-agent-prompt.js +77 -0
  21. package/src/agents/advertised-agent-prompt.js.map +1 -0
  22. package/src/agents/agent-management.d.ts +27 -0
  23. package/src/agents/agent-management.d.ts.map +1 -0
  24. package/src/agents/agent-management.js +1528 -0
  25. package/src/agents/agent-management.js.map +1 -0
  26. package/src/agents/agent-memory.d.ts +49 -0
  27. package/src/agents/agent-memory.d.ts.map +1 -0
  28. package/src/agents/agent-memory.js +349 -0
  29. package/src/agents/agent-memory.js.map +1 -0
  30. package/src/agents/agent-refinements.d.ts +100 -0
  31. package/src/agents/agent-refinements.d.ts.map +1 -0
  32. package/src/agents/agent-refinements.js +569 -0
  33. package/src/agents/agent-refinements.js.map +1 -0
  34. package/src/agents/agent-scope.d.ts +3 -0
  35. package/src/agents/agent-scope.d.ts.map +1 -0
  36. package/src/agents/agent-scope.js +6 -0
  37. package/src/agents/agent-scope.js.map +1 -0
  38. package/src/agents/agent-selection.d.ts +3 -0
  39. package/src/agents/agent-selection.d.ts.map +1 -0
  40. package/src/agents/agent-selection.js +23 -0
  41. package/src/agents/agent-selection.js.map +1 -0
  42. package/src/agents/agent-serializer.d.ts +8 -0
  43. package/src/agents/agent-serializer.d.ts.map +1 -0
  44. package/src/agents/agent-serializer.js +200 -0
  45. package/src/agents/agent-serializer.js.map +1 -0
  46. package/src/agents/agents.d.ts +313 -0
  47. package/src/agents/agents.d.ts.map +1 -0
  48. package/src/agents/agents.js +2622 -0
  49. package/src/agents/agents.js.map +1 -0
  50. package/src/agents/builtin-names.d.ts +2 -0
  51. package/src/agents/builtin-names.d.ts.map +1 -0
  52. package/src/agents/builtin-names.js +17 -0
  53. package/src/agents/builtin-names.js.map +1 -0
  54. package/src/agents/chain-serializer.d.ts +7 -0
  55. package/src/agents/chain-serializer.d.ts.map +1 -0
  56. package/src/agents/chain-serializer.js +319 -0
  57. package/src/agents/chain-serializer.js.map +1 -0
  58. package/src/agents/frontmatter.d.ts +16 -0
  59. package/src/agents/frontmatter.d.ts.map +1 -0
  60. package/src/agents/frontmatter.js +142 -0
  61. package/src/agents/frontmatter.js.map +1 -0
  62. package/src/agents/identity.d.ts +8 -0
  63. package/src/agents/identity.d.ts.map +1 -0
  64. package/src/agents/identity.js +30 -0
  65. package/src/agents/identity.js.map +1 -0
  66. package/src/agents/proactive-skills.d.ts +35 -0
  67. package/src/agents/proactive-skills.d.ts.map +1 -0
  68. package/src/agents/proactive-skills.js +154 -0
  69. package/src/agents/proactive-skills.js.map +1 -0
  70. package/src/agents/runtime-agent-events.d.ts +27 -0
  71. package/src/agents/runtime-agent-events.d.ts.map +1 -0
  72. package/src/agents/runtime-agent-events.js +53 -0
  73. package/src/agents/runtime-agent-events.js.map +1 -0
  74. package/src/agents/runtime-agent-registry.d.ts +59 -0
  75. package/src/agents/runtime-agent-registry.d.ts.map +1 -0
  76. package/src/agents/runtime-agent-registry.js +390 -0
  77. package/src/agents/runtime-agent-registry.js.map +1 -0
  78. package/src/agents/skills.d.ts +33 -0
  79. package/src/agents/skills.d.ts.map +1 -0
  80. package/src/agents/skills.js +685 -0
  81. package/src/agents/skills.js.map +1 -0
  82. package/src/api/agents.d.ts +5 -0
  83. package/src/api/agents.d.ts.map +1 -0
  84. package/src/api/agents.js +3 -0
  85. package/src/api/agents.js.map +1 -0
  86. package/src/api/background-work.d.ts +39 -0
  87. package/src/api/background-work.d.ts.map +1 -0
  88. package/src/api/background-work.js +165 -0
  89. package/src/api/background-work.js.map +1 -0
  90. package/src/api/capability-ceiling.d.ts +2 -0
  91. package/src/api/capability-ceiling.d.ts.map +1 -0
  92. package/src/api/capability-ceiling.js +2 -0
  93. package/src/api/capability-ceiling.js.map +1 -0
  94. package/src/api/child-tool-plan.d.ts +2 -0
  95. package/src/api/child-tool-plan.d.ts.map +1 -0
  96. package/src/api/child-tool-plan.js +2 -0
  97. package/src/api/child-tool-plan.js.map +1 -0
  98. package/src/api/control-channel.d.ts +2 -0
  99. package/src/api/control-channel.d.ts.map +1 -0
  100. package/src/api/control-channel.js +2 -0
  101. package/src/api/control-channel.js.map +1 -0
  102. package/src/api/delegation.d.ts +99 -0
  103. package/src/api/delegation.d.ts.map +1 -0
  104. package/src/api/delegation.js +9 -0
  105. package/src/api/delegation.js.map +1 -0
  106. package/src/api/external-job-provider.d.ts +58 -0
  107. package/src/api/external-job-provider.d.ts.map +1 -0
  108. package/src/api/external-job-provider.js +140 -0
  109. package/src/api/external-job-provider.js.map +1 -0
  110. package/src/api/external-runs.d.ts +48 -0
  111. package/src/api/external-runs.d.ts.map +1 -0
  112. package/src/api/external-runs.js +245 -0
  113. package/src/api/external-runs.js.map +1 -0
  114. package/src/api/intercom-bridge.d.ts +2 -0
  115. package/src/api/intercom-bridge.d.ts.map +1 -0
  116. package/src/api/intercom-bridge.js +2 -0
  117. package/src/api/intercom-bridge.js.map +1 -0
  118. package/src/api/preflight.d.ts +173 -0
  119. package/src/api/preflight.d.ts.map +1 -0
  120. package/src/api/preflight.js +362 -0
  121. package/src/api/preflight.js.map +1 -0
  122. package/src/api/project-panes.d.ts +8 -0
  123. package/src/api/project-panes.d.ts.map +1 -0
  124. package/src/api/project-panes.js +8 -0
  125. package/src/api/project-panes.js.map +1 -0
  126. package/src/api/required-child-extensions.d.ts +2 -0
  127. package/src/api/required-child-extensions.d.ts.map +1 -0
  128. package/src/api/required-child-extensions.js +2 -0
  129. package/src/api/required-child-extensions.js.map +1 -0
  130. package/src/api/shared-types.d.ts +2 -0
  131. package/src/api/shared-types.d.ts.map +1 -0
  132. package/src/api/shared-types.js +2 -0
  133. package/src/api/shared-types.js.map +1 -0
  134. package/src/api/workflow-resources.d.ts +3 -0
  135. package/src/api/workflow-resources.d.ts.map +1 -0
  136. package/src/api/workflow-resources.js +2 -0
  137. package/src/api/workflow-resources.js.map +1 -0
  138. package/src/extension/config.d.ts +8 -0
  139. package/src/extension/config.d.ts.map +1 -0
  140. package/src/extension/config.js +245 -0
  141. package/src/extension/config.js.map +1 -0
  142. package/src/extension/control-notices.d.ts +19 -0
  143. package/src/extension/control-notices.d.ts.map +1 -0
  144. package/src/extension/control-notices.js +34 -0
  145. package/src/extension/control-notices.js.map +1 -0
  146. package/src/extension/doctor.d.ts +33 -0
  147. package/src/extension/doctor.d.ts.map +1 -0
  148. package/src/extension/doctor.js +231 -0
  149. package/src/extension/doctor.js.map +1 -0
  150. package/src/extension/fanout-child.d.ts +7 -0
  151. package/src/extension/fanout-child.d.ts.map +1 -0
  152. package/src/extension/fanout-child.js +261 -0
  153. package/src/extension/fanout-child.js.map +1 -0
  154. package/src/extension/herdr-pi-bridge.d.ts +17 -0
  155. package/src/extension/herdr-pi-bridge.d.ts.map +1 -0
  156. package/src/extension/herdr-pi-bridge.js +243 -0
  157. package/src/extension/herdr-pi-bridge.js.map +1 -0
  158. package/src/extension/index.d.ts +20 -0
  159. package/src/extension/index.d.ts.map +1 -0
  160. package/src/extension/index.js +1108 -0
  161. package/src/extension/index.js.map +1 -0
  162. package/src/extension/public-execution.d.ts +62 -0
  163. package/src/extension/public-execution.d.ts.map +1 -0
  164. package/src/extension/public-execution.js +174 -0
  165. package/src/extension/public-execution.js.map +1 -0
  166. package/src/extension/rpc.d.ts +83 -0
  167. package/src/extension/rpc.d.ts.map +1 -0
  168. package/src/extension/rpc.js +687 -0
  169. package/src/extension/rpc.js.map +1 -0
  170. package/src/extension/schemas.d.ts +252 -0
  171. package/src/extension/schemas.d.ts.map +1 -0
  172. package/src/extension/schemas.js +396 -0
  173. package/src/extension/schemas.js.map +1 -0
  174. package/src/extension/steering-notices.d.ts +15 -0
  175. package/src/extension/steering-notices.d.ts.map +1 -0
  176. package/src/extension/steering-notices.js +23 -0
  177. package/src/extension/steering-notices.js.map +1 -0
  178. package/src/extension/subagent-guide.d.ts +4 -0
  179. package/src/extension/subagent-guide.d.ts.map +1 -0
  180. package/src/extension/subagent-guide.js +35 -0
  181. package/src/extension/subagent-guide.js.map +1 -0
  182. package/src/extension/tool-description.d.ts +20 -0
  183. package/src/extension/tool-description.d.ts.map +1 -0
  184. package/src/extension/tool-description.js +160 -0
  185. package/src/extension/tool-description.js.map +1 -0
  186. package/src/extension/tool-result.d.ts +10 -0
  187. package/src/extension/tool-result.d.ts.map +1 -0
  188. package/src/extension/tool-result.js +17 -0
  189. package/src/extension/tool-result.js.map +1 -0
  190. package/src/inspectors/actions.d.ts +23 -0
  191. package/src/inspectors/actions.d.ts.map +1 -0
  192. package/src/inspectors/actions.js +155 -0
  193. package/src/inspectors/actions.js.map +1 -0
  194. package/src/inspectors/ghostty/actions.d.ts +12 -0
  195. package/src/inspectors/ghostty/actions.d.ts.map +1 -0
  196. package/src/inspectors/ghostty/actions.js +63 -0
  197. package/src/inspectors/ghostty/actions.js.map +1 -0
  198. package/src/inspectors/ghostty/plugin.d.ts +8 -0
  199. package/src/inspectors/ghostty/plugin.d.ts.map +1 -0
  200. package/src/inspectors/ghostty/plugin.js +24 -0
  201. package/src/inspectors/ghostty/plugin.js.map +1 -0
  202. package/src/inspectors/herdr/actions.d.ts +26 -0
  203. package/src/inspectors/herdr/actions.d.ts.map +1 -0
  204. package/src/inspectors/herdr/actions.js +134 -0
  205. package/src/inspectors/herdr/actions.js.map +1 -0
  206. package/src/inspectors/herdr/client.d.ts +42 -0
  207. package/src/inspectors/herdr/client.d.ts.map +1 -0
  208. package/src/inspectors/herdr/client.js +130 -0
  209. package/src/inspectors/herdr/client.js.map +1 -0
  210. package/src/inspectors/herdr/focus.d.ts +25 -0
  211. package/src/inspectors/herdr/focus.d.ts.map +1 -0
  212. package/src/inspectors/herdr/focus.js +50 -0
  213. package/src/inspectors/herdr/focus.js.map +1 -0
  214. package/src/inspectors/herdr/plugin.d.ts +7 -0
  215. package/src/inspectors/herdr/plugin.d.ts.map +1 -0
  216. package/src/inspectors/herdr/plugin.js +15 -0
  217. package/src/inspectors/herdr/plugin.js.map +1 -0
  218. package/src/inspectors/herdr/project-panes.d.ts +137 -0
  219. package/src/inspectors/herdr/project-panes.d.ts.map +1 -0
  220. package/src/inspectors/herdr/project-panes.js +608 -0
  221. package/src/inspectors/herdr/project-panes.js.map +1 -0
  222. package/src/inspectors/inspector-runner.d.ts +24 -0
  223. package/src/inspectors/inspector-runner.d.ts.map +1 -0
  224. package/src/inspectors/inspector-runner.js +162 -0
  225. package/src/inspectors/inspector-runner.js.map +1 -0
  226. package/src/inspectors/plugins.d.ts +4 -0
  227. package/src/inspectors/plugins.d.ts.map +1 -0
  228. package/src/inspectors/plugins.js +7 -0
  229. package/src/inspectors/plugins.js.map +1 -0
  230. package/src/inspectors/session-roots-codec.d.ts +16 -0
  231. package/src/inspectors/session-roots-codec.d.ts.map +1 -0
  232. package/src/inspectors/session-roots-codec.js +33 -0
  233. package/src/inspectors/session-roots-codec.js.map +1 -0
  234. package/src/inspectors/shell-command.d.ts +2 -0
  235. package/src/inspectors/shell-command.d.ts.map +1 -0
  236. package/src/inspectors/shell-command.js +17 -0
  237. package/src/inspectors/shell-command.js.map +1 -0
  238. package/src/inspectors/types.d.ts +49 -0
  239. package/src/inspectors/types.d.ts.map +1 -0
  240. package/src/inspectors/types.js +2 -0
  241. package/src/inspectors/types.js.map +1 -0
  242. package/src/integrations/herdr-status.d.ts +46 -0
  243. package/src/integrations/herdr-status.d.ts.map +1 -0
  244. package/src/integrations/herdr-status.js +371 -0
  245. package/src/integrations/herdr-status.js.map +1 -0
  246. package/src/integrations/pi-web-session-liveness.d.ts +20 -0
  247. package/src/integrations/pi-web-session-liveness.d.ts.map +1 -0
  248. package/src/integrations/pi-web-session-liveness.js +54 -0
  249. package/src/integrations/pi-web-session-liveness.js.map +1 -0
  250. package/src/intercom/intercom-bridge.d.ts +59 -0
  251. package/src/intercom/intercom-bridge.d.ts.map +1 -0
  252. package/src/intercom/intercom-bridge.js +192 -0
  253. package/src/intercom/intercom-bridge.js.map +1 -0
  254. package/src/intercom/native-supervisor-channel.d.ts +64 -0
  255. package/src/intercom/native-supervisor-channel.d.ts.map +1 -0
  256. package/src/intercom/native-supervisor-channel.js +894 -0
  257. package/src/intercom/native-supervisor-channel.js.map +1 -0
  258. package/src/intercom/result-intercom.d.ts +36 -0
  259. package/src/intercom/result-intercom.d.ts.map +1 -0
  260. package/src/intercom/result-intercom.js +372 -0
  261. package/src/intercom/result-intercom.js.map +1 -0
  262. package/src/intercom/supervisor-ui.d.ts +40 -0
  263. package/src/intercom/supervisor-ui.d.ts.map +1 -0
  264. package/src/intercom/supervisor-ui.js +202 -0
  265. package/src/intercom/supervisor-ui.js.map +1 -0
  266. package/src/missions/actions.d.ts +55 -0
  267. package/src/missions/actions.d.ts.map +1 -0
  268. package/src/missions/actions.js +396 -0
  269. package/src/missions/actions.js.map +1 -0
  270. package/src/missions/goal-driver.d.ts +16 -0
  271. package/src/missions/goal-driver.d.ts.map +1 -0
  272. package/src/missions/goal-driver.js +157 -0
  273. package/src/missions/goal-driver.js.map +1 -0
  274. package/src/missions/lifecycle.d.ts +40 -0
  275. package/src/missions/lifecycle.d.ts.map +1 -0
  276. package/src/missions/lifecycle.js +352 -0
  277. package/src/missions/lifecycle.js.map +1 -0
  278. package/src/missions/store.d.ts +22 -0
  279. package/src/missions/store.d.ts.map +1 -0
  280. package/src/missions/store.js +573 -0
  281. package/src/missions/store.js.map +1 -0
  282. package/src/missions/types.d.ts +168 -0
  283. package/src/missions/types.d.ts.map +1 -0
  284. package/src/missions/types.js +10 -0
  285. package/src/missions/types.js.map +1 -0
  286. package/src/missions/workflow-state.d.ts +15 -0
  287. package/src/missions/workflow-state.d.ts.map +1 -0
  288. package/src/missions/workflow-state.js +274 -0
  289. package/src/missions/workflow-state.js.map +1 -0
  290. package/src/policy/authority.d.ts +10 -0
  291. package/src/policy/authority.d.ts.map +1 -0
  292. package/src/policy/authority.js +42 -0
  293. package/src/policy/authority.js.map +1 -0
  294. package/src/profiles/profiles.d.ts +135 -0
  295. package/src/profiles/profiles.d.ts.map +1 -0
  296. package/src/profiles/profiles.js +520 -0
  297. package/src/profiles/profiles.js.map +1 -0
  298. package/src/runs/background/active-async-capacity.d.ts +100 -0
  299. package/src/runs/background/active-async-capacity.d.ts.map +1 -0
  300. package/src/runs/background/active-async-capacity.js +492 -0
  301. package/src/runs/background/active-async-capacity.js.map +1 -0
  302. package/src/runs/background/active-run-index.d.ts +13 -0
  303. package/src/runs/background/active-run-index.d.ts.map +1 -0
  304. package/src/runs/background/active-run-index.js +158 -0
  305. package/src/runs/background/active-run-index.js.map +1 -0
  306. package/src/runs/background/async-execution.d.ts +274 -0
  307. package/src/runs/background/async-execution.d.ts.map +1 -0
  308. package/src/runs/background/async-execution.js +1989 -0
  309. package/src/runs/background/async-execution.js.map +1 -0
  310. package/src/runs/background/async-job-tracker.d.ts +28 -0
  311. package/src/runs/background/async-job-tracker.d.ts.map +1 -0
  312. package/src/runs/background/async-job-tracker.js +876 -0
  313. package/src/runs/background/async-job-tracker.js.map +1 -0
  314. package/src/runs/background/async-resume.d.ts +59 -0
  315. package/src/runs/background/async-resume.d.ts.map +1 -0
  316. package/src/runs/background/async-resume.js +670 -0
  317. package/src/runs/background/async-resume.js.map +1 -0
  318. package/src/runs/background/async-retention.d.ts +45 -0
  319. package/src/runs/background/async-retention.d.ts.map +1 -0
  320. package/src/runs/background/async-retention.js +884 -0
  321. package/src/runs/background/async-retention.js.map +1 -0
  322. package/src/runs/background/async-status-snapshot.d.ts +10 -0
  323. package/src/runs/background/async-status-snapshot.d.ts.map +1 -0
  324. package/src/runs/background/async-status-snapshot.js +25 -0
  325. package/src/runs/background/async-status-snapshot.js.map +1 -0
  326. package/src/runs/background/async-status.d.ts +169 -0
  327. package/src/runs/background/async-status.d.ts.map +1 -0
  328. package/src/runs/background/async-status.js +673 -0
  329. package/src/runs/background/async-status.js.map +1 -0
  330. package/src/runs/background/auto-drain.d.ts +17 -0
  331. package/src/runs/background/auto-drain.d.ts.map +1 -0
  332. package/src/runs/background/auto-drain.js +73 -0
  333. package/src/runs/background/auto-drain.js.map +1 -0
  334. package/src/runs/background/binary-bootstrap.d.ts +9 -0
  335. package/src/runs/background/binary-bootstrap.d.ts.map +1 -0
  336. package/src/runs/background/binary-bootstrap.js +41 -0
  337. package/src/runs/background/binary-bootstrap.js.map +1 -0
  338. package/src/runs/background/chain-append.d.ts +35 -0
  339. package/src/runs/background/chain-append.d.ts.map +1 -0
  340. package/src/runs/background/chain-append.js +300 -0
  341. package/src/runs/background/chain-append.js.map +1 -0
  342. package/src/runs/background/chain-root-attachment.d.ts +49 -0
  343. package/src/runs/background/chain-root-attachment.d.ts.map +1 -0
  344. package/src/runs/background/chain-root-attachment.js +184 -0
  345. package/src/runs/background/chain-root-attachment.js.map +1 -0
  346. package/src/runs/background/completion-batcher.d.ts +52 -0
  347. package/src/runs/background/completion-batcher.d.ts.map +1 -0
  348. package/src/runs/background/completion-batcher.js +120 -0
  349. package/src/runs/background/completion-batcher.js.map +1 -0
  350. package/src/runs/background/completion-dedupe.d.ts +14 -0
  351. package/src/runs/background/completion-dedupe.d.ts.map +1 -0
  352. package/src/runs/background/completion-dedupe.js +49 -0
  353. package/src/runs/background/completion-dedupe.js.map +1 -0
  354. package/src/runs/background/completion-replay.d.ts +48 -0
  355. package/src/runs/background/completion-replay.d.ts.map +1 -0
  356. package/src/runs/background/completion-replay.js +267 -0
  357. package/src/runs/background/completion-replay.js.map +1 -0
  358. package/src/runs/background/control-channel.d.ts +156 -0
  359. package/src/runs/background/control-channel.d.ts.map +1 -0
  360. package/src/runs/background/control-channel.js +521 -0
  361. package/src/runs/background/control-channel.js.map +1 -0
  362. package/src/runs/background/fleet-view.d.ts +64 -0
  363. package/src/runs/background/fleet-view.d.ts.map +1 -0
  364. package/src/runs/background/fleet-view.js +648 -0
  365. package/src/runs/background/fleet-view.js.map +1 -0
  366. package/src/runs/background/index-segment.d.ts +16 -0
  367. package/src/runs/background/index-segment.d.ts.map +1 -0
  368. package/src/runs/background/index-segment.js +59 -0
  369. package/src/runs/background/index-segment.js.map +1 -0
  370. package/src/runs/background/inspect-rpc.d.ts +60 -0
  371. package/src/runs/background/inspect-rpc.d.ts.map +1 -0
  372. package/src/runs/background/inspect-rpc.js +406 -0
  373. package/src/runs/background/inspect-rpc.js.map +1 -0
  374. package/src/runs/background/notify.d.ts +162 -0
  375. package/src/runs/background/notify.d.ts.map +1 -0
  376. package/src/runs/background/notify.js +665 -0
  377. package/src/runs/background/notify.js.map +1 -0
  378. package/src/runs/background/owned-process-tree.d.ts +11 -0
  379. package/src/runs/background/owned-process-tree.d.ts.map +1 -0
  380. package/src/runs/background/owned-process-tree.js +117 -0
  381. package/src/runs/background/owned-process-tree.js.map +1 -0
  382. package/src/runs/background/parallel-groups.d.ts +4 -0
  383. package/src/runs/background/parallel-groups.d.ts.map +1 -0
  384. package/src/runs/background/parallel-groups.js +47 -0
  385. package/src/runs/background/parallel-groups.js.map +1 -0
  386. package/src/runs/background/process-terminal.d.ts +34 -0
  387. package/src/runs/background/process-terminal.d.ts.map +1 -0
  388. package/src/runs/background/process-terminal.js +305 -0
  389. package/src/runs/background/process-terminal.js.map +1 -0
  390. package/src/runs/background/result-delivery-ownership.d.ts +11 -0
  391. package/src/runs/background/result-delivery-ownership.d.ts.map +1 -0
  392. package/src/runs/background/result-delivery-ownership.js +37 -0
  393. package/src/runs/background/result-delivery-ownership.js.map +1 -0
  394. package/src/runs/background/result-files.d.ts +33 -0
  395. package/src/runs/background/result-files.d.ts.map +1 -0
  396. package/src/runs/background/result-files.js +528 -0
  397. package/src/runs/background/result-files.js.map +1 -0
  398. package/src/runs/background/result-watcher.d.ts +87 -0
  399. package/src/runs/background/result-watcher.d.ts.map +1 -0
  400. package/src/runs/background/result-watcher.js +764 -0
  401. package/src/runs/background/result-watcher.js.map +1 -0
  402. package/src/runs/background/resume-guidance.d.ts +5 -0
  403. package/src/runs/background/resume-guidance.d.ts.map +1 -0
  404. package/src/runs/background/resume-guidance.js +57 -0
  405. package/src/runs/background/resume-guidance.js.map +1 -0
  406. package/src/runs/background/retained-children.d.ts +25 -0
  407. package/src/runs/background/retained-children.d.ts.map +1 -0
  408. package/src/runs/background/retained-children.js +128 -0
  409. package/src/runs/background/retained-children.js.map +1 -0
  410. package/src/runs/background/retained-nested-route-tracker.d.ts +13 -0
  411. package/src/runs/background/retained-nested-route-tracker.d.ts.map +1 -0
  412. package/src/runs/background/retained-nested-route-tracker.js +91 -0
  413. package/src/runs/background/retained-nested-route-tracker.js.map +1 -0
  414. package/src/runs/background/run-child-session.d.ts +123 -0
  415. package/src/runs/background/run-child-session.d.ts.map +1 -0
  416. package/src/runs/background/run-child-session.js +602 -0
  417. package/src/runs/background/run-child-session.js.map +1 -0
  418. package/src/runs/background/run-id-query.d.ts +4 -0
  419. package/src/runs/background/run-id-query.d.ts.map +1 -0
  420. package/src/runs/background/run-id-query.js +7 -0
  421. package/src/runs/background/run-id-query.js.map +1 -0
  422. package/src/runs/background/run-id-resolver.d.ts +23 -0
  423. package/src/runs/background/run-id-resolver.d.ts.map +1 -0
  424. package/src/runs/background/run-id-resolver.js +170 -0
  425. package/src/runs/background/run-id-resolver.js.map +1 -0
  426. package/src/runs/background/run-status.d.ts +26 -0
  427. package/src/runs/background/run-status.d.ts.map +1 -0
  428. package/src/runs/background/run-status.js +826 -0
  429. package/src/runs/background/run-status.js.map +1 -0
  430. package/src/runs/background/runner-aliases.d.ts +17 -0
  431. package/src/runs/background/runner-aliases.d.ts.map +1 -0
  432. package/src/runs/background/runner-aliases.js +141 -0
  433. package/src/runs/background/runner-aliases.js.map +1 -0
  434. package/src/runs/background/runner-child-launch.d.ts +24 -0
  435. package/src/runs/background/runner-child-launch.d.ts.map +1 -0
  436. package/src/runs/background/runner-child-launch.js +68 -0
  437. package/src/runs/background/runner-child-launch.js.map +1 -0
  438. package/src/runs/background/runner-child-sessions.d.ts +7 -0
  439. package/src/runs/background/runner-child-sessions.d.ts.map +1 -0
  440. package/src/runs/background/runner-child-sessions.js +35 -0
  441. package/src/runs/background/runner-child-sessions.js.map +1 -0
  442. package/src/runs/background/runner-http-dispatcher.d.ts +43 -0
  443. package/src/runs/background/runner-http-dispatcher.d.ts.map +1 -0
  444. package/src/runs/background/runner-http-dispatcher.js +114 -0
  445. package/src/runs/background/runner-http-dispatcher.js.map +1 -0
  446. package/src/runs/background/scheduled-runs.d.ts +116 -0
  447. package/src/runs/background/scheduled-runs.d.ts.map +1 -0
  448. package/src/runs/background/scheduled-runs.js +1024 -0
  449. package/src/runs/background/scheduled-runs.js.map +1 -0
  450. package/src/runs/background/stale-run-reconciler.d.ts +37 -0
  451. package/src/runs/background/stale-run-reconciler.d.ts.map +1 -0
  452. package/src/runs/background/stale-run-reconciler.js +393 -0
  453. package/src/runs/background/stale-run-reconciler.js.map +1 -0
  454. package/src/runs/background/steering.d.ts +52 -0
  455. package/src/runs/background/steering.d.ts.map +1 -0
  456. package/src/runs/background/steering.js +247 -0
  457. package/src/runs/background/steering.js.map +1 -0
  458. package/src/runs/background/subagent-runner.d.ts +201 -0
  459. package/src/runs/background/subagent-runner.d.ts.map +1 -0
  460. package/src/runs/background/subagent-runner.js +5134 -0
  461. package/src/runs/background/subagent-runner.js.map +1 -0
  462. package/src/runs/background/subagent-wait.d.ts +122 -0
  463. package/src/runs/background/subagent-wait.d.ts.map +1 -0
  464. package/src/runs/background/subagent-wait.js +735 -0
  465. package/src/runs/background/subagent-wait.js.map +1 -0
  466. package/src/runs/background/terminal-run-index.d.ts +8 -0
  467. package/src/runs/background/terminal-run-index.d.ts.map +1 -0
  468. package/src/runs/background/terminal-run-index.js +123 -0
  469. package/src/runs/background/terminal-run-index.js.map +1 -0
  470. package/src/runs/background/top-level-async.d.ts +8 -0
  471. package/src/runs/background/top-level-async.d.ts.map +1 -0
  472. package/src/runs/background/top-level-async.js +6 -0
  473. package/src/runs/background/top-level-async.js.map +1 -0
  474. package/src/runs/background/wait-completions.d.ts +29 -0
  475. package/src/runs/background/wait-completions.d.ts.map +1 -0
  476. package/src/runs/background/wait-completions.js +264 -0
  477. package/src/runs/background/wait-completions.js.map +1 -0
  478. package/src/runs/background/wait-config.d.ts +9 -0
  479. package/src/runs/background/wait-config.d.ts.map +1 -0
  480. package/src/runs/background/wait-config.js +47 -0
  481. package/src/runs/background/wait-config.js.map +1 -0
  482. package/src/runs/background/wait-subscriptions.d.ts +27 -0
  483. package/src/runs/background/wait-subscriptions.d.ts.map +1 -0
  484. package/src/runs/background/wait-subscriptions.js +337 -0
  485. package/src/runs/background/wait-subscriptions.js.map +1 -0
  486. package/src/runs/background/wait-tool.d.ts +7 -0
  487. package/src/runs/background/wait-tool.d.ts.map +1 -0
  488. package/src/runs/background/wait-tool.js +36 -0
  489. package/src/runs/background/wait-tool.js.map +1 -0
  490. package/src/runs/foreground/async-dismiss-action.d.ts +7 -0
  491. package/src/runs/foreground/async-dismiss-action.d.ts.map +1 -0
  492. package/src/runs/foreground/async-dismiss-action.js +82 -0
  493. package/src/runs/foreground/async-dismiss-action.js.map +1 -0
  494. package/src/runs/foreground/async-steering-action.d.ts +32 -0
  495. package/src/runs/foreground/async-steering-action.d.ts.map +1 -0
  496. package/src/runs/foreground/async-steering-action.js +270 -0
  497. package/src/runs/foreground/async-steering-action.js.map +1 -0
  498. package/src/runs/foreground/async-stop-action.d.ts +7 -0
  499. package/src/runs/foreground/async-stop-action.d.ts.map +1 -0
  500. package/src/runs/foreground/async-stop-action.js +171 -0
  501. package/src/runs/foreground/async-stop-action.js.map +1 -0
  502. package/src/runs/foreground/execution.d.ts +11 -0
  503. package/src/runs/foreground/execution.d.ts.map +1 -0
  504. package/src/runs/foreground/execution.js +2186 -0
  505. package/src/runs/foreground/execution.js.map +1 -0
  506. package/src/runs/foreground/foreground-control.d.ts +25 -0
  507. package/src/runs/foreground/foreground-control.d.ts.map +1 -0
  508. package/src/runs/foreground/foreground-control.js +139 -0
  509. package/src/runs/foreground/foreground-control.js.map +1 -0
  510. package/src/runs/foreground/foreground-history.d.ts +12 -0
  511. package/src/runs/foreground/foreground-history.d.ts.map +1 -0
  512. package/src/runs/foreground/foreground-history.js +165 -0
  513. package/src/runs/foreground/foreground-history.js.map +1 -0
  514. package/src/runs/foreground/prompt-audit.d.ts +33 -0
  515. package/src/runs/foreground/prompt-audit.d.ts.map +1 -0
  516. package/src/runs/foreground/prompt-audit.js +143 -0
  517. package/src/runs/foreground/prompt-audit.js.map +1 -0
  518. package/src/runs/foreground/subagent-executor.d.ts +296 -0
  519. package/src/runs/foreground/subagent-executor.d.ts.map +1 -0
  520. package/src/runs/foreground/subagent-executor.js +7047 -0
  521. package/src/runs/foreground/subagent-executor.js.map +1 -0
  522. package/src/runs/foreground/workflow-detach-reconcile.d.ts +16 -0
  523. package/src/runs/foreground/workflow-detach-reconcile.d.ts.map +1 -0
  524. package/src/runs/foreground/workflow-detach-reconcile.js +284 -0
  525. package/src/runs/foreground/workflow-detach-reconcile.js.map +1 -0
  526. package/src/runs/foreground/workflow-foreground-steering.d.ts +44 -0
  527. package/src/runs/foreground/workflow-foreground-steering.d.ts.map +1 -0
  528. package/src/runs/foreground/workflow-foreground-steering.js +149 -0
  529. package/src/runs/foreground/workflow-foreground-steering.js.map +1 -0
  530. package/src/runs/shared/abort-recovery.d.ts +27 -0
  531. package/src/runs/shared/abort-recovery.d.ts.map +1 -0
  532. package/src/runs/shared/abort-recovery.js +109 -0
  533. package/src/runs/shared/abort-recovery.js.map +1 -0
  534. package/src/runs/shared/acceptance.d.ts +145 -0
  535. package/src/runs/shared/acceptance.d.ts.map +1 -0
  536. package/src/runs/shared/acceptance.js +1650 -0
  537. package/src/runs/shared/acceptance.js.map +1 -0
  538. package/src/runs/shared/agent-contract.d.ts +6 -0
  539. package/src/runs/shared/agent-contract.d.ts.map +1 -0
  540. package/src/runs/shared/agent-contract.js +36 -0
  541. package/src/runs/shared/agent-contract.js.map +1 -0
  542. package/src/runs/shared/async-status-projection.d.ts +94 -0
  543. package/src/runs/shared/async-status-projection.d.ts.map +1 -0
  544. package/src/runs/shared/async-status-projection.js +542 -0
  545. package/src/runs/shared/async-status-projection.js.map +1 -0
  546. package/src/runs/shared/background-process-options.d.ts +5 -0
  547. package/src/runs/shared/background-process-options.d.ts.map +1 -0
  548. package/src/runs/shared/background-process-options.js +7 -0
  549. package/src/runs/shared/background-process-options.js.map +1 -0
  550. package/src/runs/shared/capability-ceiling.d.ts +58 -0
  551. package/src/runs/shared/capability-ceiling.d.ts.map +1 -0
  552. package/src/runs/shared/capability-ceiling.js +179 -0
  553. package/src/runs/shared/capability-ceiling.js.map +1 -0
  554. package/src/runs/shared/chain-outputs.d.ts +19 -0
  555. package/src/runs/shared/chain-outputs.d.ts.map +1 -0
  556. package/src/runs/shared/chain-outputs.js +105 -0
  557. package/src/runs/shared/chain-outputs.js.map +1 -0
  558. package/src/runs/shared/child-hooks.d.ts +34 -0
  559. package/src/runs/shared/child-hooks.d.ts.map +1 -0
  560. package/src/runs/shared/child-hooks.js +188 -0
  561. package/src/runs/shared/child-hooks.js.map +1 -0
  562. package/src/runs/shared/child-identity.d.ts +24 -0
  563. package/src/runs/shared/child-identity.d.ts.map +1 -0
  564. package/src/runs/shared/child-identity.js +41 -0
  565. package/src/runs/shared/child-identity.js.map +1 -0
  566. package/src/runs/shared/child-launch-plan.d.ts +71 -0
  567. package/src/runs/shared/child-launch-plan.d.ts.map +1 -0
  568. package/src/runs/shared/child-launch-plan.js +89 -0
  569. package/src/runs/shared/child-launch-plan.js.map +1 -0
  570. package/src/runs/shared/child-launch.d.ts +114 -0
  571. package/src/runs/shared/child-launch.d.ts.map +1 -0
  572. package/src/runs/shared/child-launch.js +231 -0
  573. package/src/runs/shared/child-launch.js.map +1 -0
  574. package/src/runs/shared/child-lifecycle.d.ts +14 -0
  575. package/src/runs/shared/child-lifecycle.d.ts.map +1 -0
  576. package/src/runs/shared/child-lifecycle.js +23 -0
  577. package/src/runs/shared/child-lifecycle.js.map +1 -0
  578. package/src/runs/shared/child-runtime-config.d.ts +102 -0
  579. package/src/runs/shared/child-runtime-config.d.ts.map +1 -0
  580. package/src/runs/shared/child-runtime-config.js +39 -0
  581. package/src/runs/shared/child-runtime-config.js.map +1 -0
  582. package/src/runs/shared/child-session.d.ts +155 -0
  583. package/src/runs/shared/child-session.d.ts.map +1 -0
  584. package/src/runs/shared/child-session.js +347 -0
  585. package/src/runs/shared/child-session.js.map +1 -0
  586. package/src/runs/shared/child-tool-plan.d.ts +73 -0
  587. package/src/runs/shared/child-tool-plan.d.ts.map +1 -0
  588. package/src/runs/shared/child-tool-plan.js +380 -0
  589. package/src/runs/shared/child-tool-plan.js.map +1 -0
  590. package/src/runs/shared/claude-code-adapter.d.ts +25 -0
  591. package/src/runs/shared/claude-code-adapter.d.ts.map +1 -0
  592. package/src/runs/shared/claude-code-adapter.js +120 -0
  593. package/src/runs/shared/claude-code-adapter.js.map +1 -0
  594. package/src/runs/shared/codex-exec-adapter.d.ts +26 -0
  595. package/src/runs/shared/codex-exec-adapter.d.ts.map +1 -0
  596. package/src/runs/shared/codex-exec-adapter.js +128 -0
  597. package/src/runs/shared/codex-exec-adapter.js.map +1 -0
  598. package/src/runs/shared/completion-evidence.d.ts +31 -0
  599. package/src/runs/shared/completion-evidence.d.ts.map +1 -0
  600. package/src/runs/shared/completion-evidence.js +54 -0
  601. package/src/runs/shared/completion-evidence.js.map +1 -0
  602. package/src/runs/shared/completion-guard.d.ts +35 -0
  603. package/src/runs/shared/completion-guard.d.ts.map +1 -0
  604. package/src/runs/shared/completion-guard.js +214 -0
  605. package/src/runs/shared/completion-guard.js.map +1 -0
  606. package/src/runs/shared/context-mode.d.ts +13 -0
  607. package/src/runs/shared/context-mode.d.ts.map +1 -0
  608. package/src/runs/shared/context-mode.js +39 -0
  609. package/src/runs/shared/context-mode.js.map +1 -0
  610. package/src/runs/shared/cursor-agent-adapter.d.ts +27 -0
  611. package/src/runs/shared/cursor-agent-adapter.d.ts.map +1 -0
  612. package/src/runs/shared/cursor-agent-adapter.js +100 -0
  613. package/src/runs/shared/cursor-agent-adapter.js.map +1 -0
  614. package/src/runs/shared/dynamic-fanout.d.ts +50 -0
  615. package/src/runs/shared/dynamic-fanout.d.ts.map +1 -0
  616. package/src/runs/shared/dynamic-fanout.js +274 -0
  617. package/src/runs/shared/dynamic-fanout.js.map +1 -0
  618. package/src/runs/shared/effective-system-prompt.d.ts +18 -0
  619. package/src/runs/shared/effective-system-prompt.d.ts.map +1 -0
  620. package/src/runs/shared/effective-system-prompt.js +23 -0
  621. package/src/runs/shared/effective-system-prompt.js.map +1 -0
  622. package/src/runs/shared/extension-bindings.d.ts +17 -0
  623. package/src/runs/shared/extension-bindings.d.ts.map +1 -0
  624. package/src/runs/shared/extension-bindings.js +83 -0
  625. package/src/runs/shared/extension-bindings.js.map +1 -0
  626. package/src/runs/shared/external-cli-contract.d.ts +30 -0
  627. package/src/runs/shared/external-cli-contract.d.ts.map +1 -0
  628. package/src/runs/shared/external-cli-contract.js +146 -0
  629. package/src/runs/shared/external-cli-contract.js.map +1 -0
  630. package/src/runs/shared/external-cli-preflight.d.ts +32 -0
  631. package/src/runs/shared/external-cli-preflight.d.ts.map +1 -0
  632. package/src/runs/shared/external-cli-preflight.js +116 -0
  633. package/src/runs/shared/external-cli-preflight.js.map +1 -0
  634. package/src/runs/shared/external-cli-runner.d.ts +66 -0
  635. package/src/runs/shared/external-cli-runner.d.ts.map +1 -0
  636. package/src/runs/shared/external-cli-runner.js +421 -0
  637. package/src/runs/shared/external-cli-runner.js.map +1 -0
  638. package/src/runs/shared/external-job-bridge.d.ts +18 -0
  639. package/src/runs/shared/external-job-bridge.d.ts.map +1 -0
  640. package/src/runs/shared/external-job-bridge.js +424 -0
  641. package/src/runs/shared/external-job-bridge.js.map +1 -0
  642. package/src/runs/shared/external-job-runner.d.ts +45 -0
  643. package/src/runs/shared/external-job-runner.d.ts.map +1 -0
  644. package/src/runs/shared/external-job-runner.js +353 -0
  645. package/src/runs/shared/external-job-runner.js.map +1 -0
  646. package/src/runs/shared/fast-mode-extension.d.ts +4 -0
  647. package/src/runs/shared/fast-mode-extension.d.ts.map +1 -0
  648. package/src/runs/shared/fast-mode-extension.js +9 -0
  649. package/src/runs/shared/fast-mode-extension.js.map +1 -0
  650. package/src/runs/shared/herdr-connection.d.ts +71 -0
  651. package/src/runs/shared/herdr-connection.d.ts.map +1 -0
  652. package/src/runs/shared/herdr-connection.js +258 -0
  653. package/src/runs/shared/herdr-connection.js.map +1 -0
  654. package/src/runs/shared/herdr-external-adapters.d.ts +148 -0
  655. package/src/runs/shared/herdr-external-adapters.d.ts.map +1 -0
  656. package/src/runs/shared/herdr-external-adapters.js +405 -0
  657. package/src/runs/shared/herdr-external-adapters.js.map +1 -0
  658. package/src/runs/shared/herdr-machine.d.ts +48 -0
  659. package/src/runs/shared/herdr-machine.d.ts.map +1 -0
  660. package/src/runs/shared/herdr-machine.js +247 -0
  661. package/src/runs/shared/herdr-machine.js.map +1 -0
  662. package/src/runs/shared/herdr-pi-protocol.d.ts +22 -0
  663. package/src/runs/shared/herdr-pi-protocol.d.ts.map +1 -0
  664. package/src/runs/shared/herdr-pi-protocol.js +58 -0
  665. package/src/runs/shared/herdr-pi-protocol.js.map +1 -0
  666. package/src/runs/shared/herdr-placed-run.d.ts +267 -0
  667. package/src/runs/shared/herdr-placed-run.d.ts.map +1 -0
  668. package/src/runs/shared/herdr-placed-run.js +716 -0
  669. package/src/runs/shared/herdr-placed-run.js.map +1 -0
  670. package/src/runs/shared/host-step-status.d.ts +34 -0
  671. package/src/runs/shared/host-step-status.d.ts.map +1 -0
  672. package/src/runs/shared/host-step-status.js +245 -0
  673. package/src/runs/shared/host-step-status.js.map +1 -0
  674. package/src/runs/shared/lane-metadata.d.ts +24 -0
  675. package/src/runs/shared/lane-metadata.d.ts.map +1 -0
  676. package/src/runs/shared/lane-metadata.js +127 -0
  677. package/src/runs/shared/lane-metadata.js.map +1 -0
  678. package/src/runs/shared/launch-cwd.d.ts +2 -0
  679. package/src/runs/shared/launch-cwd.d.ts.map +1 -0
  680. package/src/runs/shared/launch-cwd.js +17 -0
  681. package/src/runs/shared/launch-cwd.js.map +1 -0
  682. package/src/runs/shared/llm-intent-arbiter.d.ts +48 -0
  683. package/src/runs/shared/llm-intent-arbiter.d.ts.map +1 -0
  684. package/src/runs/shared/llm-intent-arbiter.js +235 -0
  685. package/src/runs/shared/llm-intent-arbiter.js.map +1 -0
  686. package/src/runs/shared/long-running-guard.d.ts +33 -0
  687. package/src/runs/shared/long-running-guard.d.ts.map +1 -0
  688. package/src/runs/shared/long-running-guard.js +199 -0
  689. package/src/runs/shared/long-running-guard.js.map +1 -0
  690. package/src/runs/shared/mcp-config-sources.d.ts +30 -0
  691. package/src/runs/shared/mcp-config-sources.d.ts.map +1 -0
  692. package/src/runs/shared/mcp-config-sources.js +419 -0
  693. package/src/runs/shared/mcp-config-sources.js.map +1 -0
  694. package/src/runs/shared/mcp-direct-tool-allowlist.d.ts +59 -0
  695. package/src/runs/shared/mcp-direct-tool-allowlist.d.ts.map +1 -0
  696. package/src/runs/shared/mcp-direct-tool-allowlist.js +400 -0
  697. package/src/runs/shared/mcp-direct-tool-allowlist.js.map +1 -0
  698. package/src/runs/shared/mcp-direct-tool-grant.d.ts +41 -0
  699. package/src/runs/shared/mcp-direct-tool-grant.d.ts.map +1 -0
  700. package/src/runs/shared/mcp-direct-tool-grant.js +146 -0
  701. package/src/runs/shared/mcp-direct-tool-grant.js.map +1 -0
  702. package/src/runs/shared/model-resolution-diagnostic.d.ts +22 -0
  703. package/src/runs/shared/model-resolution-diagnostic.d.ts.map +1 -0
  704. package/src/runs/shared/model-resolution-diagnostic.js +65 -0
  705. package/src/runs/shared/model-resolution-diagnostic.js.map +1 -0
  706. package/src/runs/shared/model-resolution.d.ts +92 -0
  707. package/src/runs/shared/model-resolution.d.ts.map +1 -0
  708. package/src/runs/shared/model-resolution.js +343 -0
  709. package/src/runs/shared/model-resolution.js.map +1 -0
  710. package/src/runs/shared/model-scope.d.ts +68 -0
  711. package/src/runs/shared/model-scope.d.ts.map +1 -0
  712. package/src/runs/shared/model-scope.js +156 -0
  713. package/src/runs/shared/model-scope.js.map +1 -0
  714. package/src/runs/shared/mutation-evidence.d.ts +19 -0
  715. package/src/runs/shared/mutation-evidence.d.ts.map +1 -0
  716. package/src/runs/shared/mutation-evidence.js +199 -0
  717. package/src/runs/shared/mutation-evidence.js.map +1 -0
  718. package/src/runs/shared/nested-events.d.ts +134 -0
  719. package/src/runs/shared/nested-events.d.ts.map +1 -0
  720. package/src/runs/shared/nested-events.js +1056 -0
  721. package/src/runs/shared/nested-events.js.map +1 -0
  722. package/src/runs/shared/nested-path.d.ts +9 -0
  723. package/src/runs/shared/nested-path.d.ts.map +1 -0
  724. package/src/runs/shared/nested-path.js +35 -0
  725. package/src/runs/shared/nested-path.js.map +1 -0
  726. package/src/runs/shared/nested-render.d.ts +21 -0
  727. package/src/runs/shared/nested-render.d.ts.map +1 -0
  728. package/src/runs/shared/nested-render.js +116 -0
  729. package/src/runs/shared/nested-render.js.map +1 -0
  730. package/src/runs/shared/orca-progress-tabs.d.ts +33 -0
  731. package/src/runs/shared/orca-progress-tabs.d.ts.map +1 -0
  732. package/src/runs/shared/orca-progress-tabs.js +527 -0
  733. package/src/runs/shared/orca-progress-tabs.js.map +1 -0
  734. package/src/runs/shared/parallel-handoff.d.ts +73 -0
  735. package/src/runs/shared/parallel-handoff.d.ts.map +1 -0
  736. package/src/runs/shared/parallel-handoff.js +733 -0
  737. package/src/runs/shared/parallel-handoff.js.map +1 -0
  738. package/src/runs/shared/parallel-utils.d.ts +165 -0
  739. package/src/runs/shared/parallel-utils.d.ts.map +1 -0
  740. package/src/runs/shared/parallel-utils.js +126 -0
  741. package/src/runs/shared/parallel-utils.js.map +1 -0
  742. package/src/runs/shared/permissions.d.ts +13 -0
  743. package/src/runs/shared/permissions.d.ts.map +1 -0
  744. package/src/runs/shared/permissions.js +93 -0
  745. package/src/runs/shared/permissions.js.map +1 -0
  746. package/src/runs/shared/pi-spawn.d.ts +28 -0
  747. package/src/runs/shared/pi-spawn.d.ts.map +1 -0
  748. package/src/runs/shared/pi-spawn.js +156 -0
  749. package/src/runs/shared/pi-spawn.js.map +1 -0
  750. package/src/runs/shared/process-signal.d.ts +16 -0
  751. package/src/runs/shared/process-signal.d.ts.map +1 -0
  752. package/src/runs/shared/process-signal.js +22 -0
  753. package/src/runs/shared/process-signal.js.map +1 -0
  754. package/src/runs/shared/readonly-drain-observation.d.ts +26 -0
  755. package/src/runs/shared/readonly-drain-observation.d.ts.map +1 -0
  756. package/src/runs/shared/readonly-drain-observation.js +51 -0
  757. package/src/runs/shared/readonly-drain-observation.js.map +1 -0
  758. package/src/runs/shared/run-fanout-budget.d.ts +15 -0
  759. package/src/runs/shared/run-fanout-budget.d.ts.map +1 -0
  760. package/src/runs/shared/run-fanout-budget.js +259 -0
  761. package/src/runs/shared/run-fanout-budget.js.map +1 -0
  762. package/src/runs/shared/run-history.d.ts +20 -0
  763. package/src/runs/shared/run-history.d.ts.map +1 -0
  764. package/src/runs/shared/run-history.js +200 -0
  765. package/src/runs/shared/run-history.js.map +1 -0
  766. package/src/runs/shared/runtime-acknowledged-extensions.d.ts +8 -0
  767. package/src/runs/shared/runtime-acknowledged-extensions.d.ts.map +1 -0
  768. package/src/runs/shared/runtime-acknowledged-extensions.js +45 -0
  769. package/src/runs/shared/runtime-acknowledged-extensions.js.map +1 -0
  770. package/src/runs/shared/session-lease.d.ts +70 -0
  771. package/src/runs/shared/session-lease.d.ts.map +1 -0
  772. package/src/runs/shared/session-lease.js +251 -0
  773. package/src/runs/shared/session-lease.js.map +1 -0
  774. package/src/runs/shared/single-output.d.ts +61 -0
  775. package/src/runs/shared/single-output.d.ts.map +1 -0
  776. package/src/runs/shared/single-output.js +263 -0
  777. package/src/runs/shared/single-output.js.map +1 -0
  778. package/src/runs/shared/spawn-budget.d.ts +21 -0
  779. package/src/runs/shared/spawn-budget.d.ts.map +1 -0
  780. package/src/runs/shared/spawn-budget.js +94 -0
  781. package/src/runs/shared/spawn-budget.js.map +1 -0
  782. package/src/runs/shared/structured-output.d.ts +57 -0
  783. package/src/runs/shared/structured-output.d.ts.map +1 -0
  784. package/src/runs/shared/structured-output.js +391 -0
  785. package/src/runs/shared/structured-output.js.map +1 -0
  786. package/src/runs/shared/subagent-control.d.ts +50 -0
  787. package/src/runs/shared/subagent-control.d.ts.map +1 -0
  788. package/src/runs/shared/subagent-control.js +247 -0
  789. package/src/runs/shared/subagent-control.js.map +1 -0
  790. package/src/runs/shared/subagent-prompt-runtime.d.ts +28 -0
  791. package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -0
  792. package/src/runs/shared/subagent-prompt-runtime.js +548 -0
  793. package/src/runs/shared/subagent-prompt-runtime.js.map +1 -0
  794. package/src/runs/shared/task-intent.d.ts +38 -0
  795. package/src/runs/shared/task-intent.d.ts.map +1 -0
  796. package/src/runs/shared/task-intent.js +213 -0
  797. package/src/runs/shared/task-intent.js.map +1 -0
  798. package/src/runs/shared/tool-availability.d.ts +17 -0
  799. package/src/runs/shared/tool-availability.d.ts.map +1 -0
  800. package/src/runs/shared/tool-availability.js +30 -0
  801. package/src/runs/shared/tool-availability.js.map +1 -0
  802. package/src/runs/shared/tool-budget.d.ts +22 -0
  803. package/src/runs/shared/tool-budget.d.ts.map +1 -0
  804. package/src/runs/shared/tool-budget.js +79 -0
  805. package/src/runs/shared/tool-budget.js.map +1 -0
  806. package/src/runs/shared/tool-timeout.d.ts +32 -0
  807. package/src/runs/shared/tool-timeout.d.ts.map +1 -0
  808. package/src/runs/shared/tool-timeout.js +74 -0
  809. package/src/runs/shared/tool-timeout.js.map +1 -0
  810. package/src/runs/shared/usage-budget.d.ts +8 -0
  811. package/src/runs/shared/usage-budget.d.ts.map +1 -0
  812. package/src/runs/shared/usage-budget.js +75 -0
  813. package/src/runs/shared/usage-budget.js.map +1 -0
  814. package/src/runs/shared/usage-reconciliation.d.ts +9 -0
  815. package/src/runs/shared/usage-reconciliation.d.ts.map +1 -0
  816. package/src/runs/shared/usage-reconciliation.js +72 -0
  817. package/src/runs/shared/usage-reconciliation.js.map +1 -0
  818. package/src/runs/shared/workflow-async-child-guidance.d.ts +4 -0
  819. package/src/runs/shared/workflow-async-child-guidance.d.ts.map +1 -0
  820. package/src/runs/shared/workflow-async-child-guidance.js +18 -0
  821. package/src/runs/shared/workflow-async-child-guidance.js.map +1 -0
  822. package/src/runs/shared/workflow-graph.d.ts +32 -0
  823. package/src/runs/shared/workflow-graph.d.ts.map +1 -0
  824. package/src/runs/shared/workflow-graph.js +222 -0
  825. package/src/runs/shared/workflow-graph.js.map +1 -0
  826. package/src/runs/shared/worktree-cleanup-plan.d.ts +78 -0
  827. package/src/runs/shared/worktree-cleanup-plan.d.ts.map +1 -0
  828. package/src/runs/shared/worktree-cleanup-plan.js +782 -0
  829. package/src/runs/shared/worktree-cleanup-plan.js.map +1 -0
  830. package/src/runs/shared/worktree-setup-command.d.ts +39 -0
  831. package/src/runs/shared/worktree-setup-command.d.ts.map +1 -0
  832. package/src/runs/shared/worktree-setup-command.js +201 -0
  833. package/src/runs/shared/worktree-setup-command.js.map +1 -0
  834. package/src/runs/shared/worktree.d.ts +179 -0
  835. package/src/runs/shared/worktree.d.ts.map +1 -0
  836. package/src/runs/shared/worktree.js +1333 -0
  837. package/src/runs/shared/worktree.js.map +1 -0
  838. package/src/shared/accessible-dir.d.ts +12 -0
  839. package/src/shared/accessible-dir.d.ts.map +1 -0
  840. package/src/shared/accessible-dir.js +37 -0
  841. package/src/shared/accessible-dir.js.map +1 -0
  842. package/src/shared/agent-stream-options.d.ts +6 -0
  843. package/src/shared/agent-stream-options.d.ts.map +1 -0
  844. package/src/shared/agent-stream-options.js +4 -0
  845. package/src/shared/agent-stream-options.js.map +1 -0
  846. package/src/shared/artifacts.d.ts +23 -0
  847. package/src/shared/artifacts.d.ts.map +1 -0
  848. package/src/shared/artifacts.js +273 -0
  849. package/src/shared/artifacts.js.map +1 -0
  850. package/src/shared/atomic-json.d.ts +19 -0
  851. package/src/shared/atomic-json.d.ts.map +1 -0
  852. package/src/shared/atomic-json.js +60 -0
  853. package/src/shared/atomic-json.js.map +1 -0
  854. package/src/shared/capacity-resilient-json.d.ts +27 -0
  855. package/src/shared/capacity-resilient-json.d.ts.map +1 -0
  856. package/src/shared/capacity-resilient-json.js +87 -0
  857. package/src/shared/capacity-resilient-json.js.map +1 -0
  858. package/src/shared/child-cache-retention.d.ts +30 -0
  859. package/src/shared/child-cache-retention.d.ts.map +1 -0
  860. package/src/shared/child-cache-retention.js +41 -0
  861. package/src/shared/child-cache-retention.js.map +1 -0
  862. package/src/shared/child-session-name.d.ts +9 -0
  863. package/src/shared/child-session-name.d.ts.map +1 -0
  864. package/src/shared/child-session-name.js +39 -0
  865. package/src/shared/child-session-name.js.map +1 -0
  866. package/src/shared/child-transcript.d.ts +38 -0
  867. package/src/shared/child-transcript.d.ts.map +1 -0
  868. package/src/shared/child-transcript.js +226 -0
  869. package/src/shared/child-transcript.js.map +1 -0
  870. package/src/shared/completion-owner.d.ts +3 -0
  871. package/src/shared/completion-owner.d.ts.map +1 -0
  872. package/src/shared/completion-owner.js +9 -0
  873. package/src/shared/completion-owner.js.map +1 -0
  874. package/src/shared/display-text.d.ts +6 -0
  875. package/src/shared/display-text.d.ts.map +1 -0
  876. package/src/shared/display-text.js +155 -0
  877. package/src/shared/display-text.js.map +1 -0
  878. package/src/shared/extension-context.d.ts +6 -0
  879. package/src/shared/extension-context.d.ts.map +1 -0
  880. package/src/shared/extension-context.js +22 -0
  881. package/src/shared/extension-context.js.map +1 -0
  882. package/src/shared/file-coalescer.d.ts +12 -0
  883. package/src/shared/file-coalescer.d.ts.map +1 -0
  884. package/src/shared/file-coalescer.js +35 -0
  885. package/src/shared/file-coalescer.js.map +1 -0
  886. package/src/shared/file-system-retry.d.ts +32 -0
  887. package/src/shared/file-system-retry.d.ts.map +1 -0
  888. package/src/shared/file-system-retry.js +85 -0
  889. package/src/shared/file-system-retry.js.map +1 -0
  890. package/src/shared/fork-context.d.ts +59 -0
  891. package/src/shared/fork-context.d.ts.map +1 -0
  892. package/src/shared/fork-context.js +171 -0
  893. package/src/shared/fork-context.js.map +1 -0
  894. package/src/shared/fork-session-cwd.d.ts +3 -0
  895. package/src/shared/fork-session-cwd.d.ts.map +1 -0
  896. package/src/shared/fork-session-cwd.js +24 -0
  897. package/src/shared/fork-session-cwd.js.map +1 -0
  898. package/src/shared/formatters.d.ts +36 -0
  899. package/src/shared/formatters.d.ts.map +1 -0
  900. package/src/shared/formatters.js +143 -0
  901. package/src/shared/formatters.js.map +1 -0
  902. package/src/shared/jsonl-writer.d.ts +21 -0
  903. package/src/shared/jsonl-writer.d.ts.map +1 -0
  904. package/src/shared/jsonl-writer.js +68 -0
  905. package/src/shared/jsonl-writer.js.map +1 -0
  906. package/src/shared/launch-contract.d.ts +64 -0
  907. package/src/shared/launch-contract.d.ts.map +1 -0
  908. package/src/shared/launch-contract.js +141 -0
  909. package/src/shared/launch-contract.js.map +1 -0
  910. package/src/shared/model-info.d.ts +44 -0
  911. package/src/shared/model-info.d.ts.map +1 -0
  912. package/src/shared/model-info.js +73 -0
  913. package/src/shared/model-info.js.map +1 -0
  914. package/src/shared/model-response-aliases.d.ts +2 -0
  915. package/src/shared/model-response-aliases.d.ts.map +1 -0
  916. package/src/shared/model-response-aliases.js +16 -0
  917. package/src/shared/model-response-aliases.js.map +1 -0
  918. package/src/shared/node-executable.d.ts +2 -0
  919. package/src/shared/node-executable.d.ts.map +1 -0
  920. package/src/shared/node-executable.js +21 -0
  921. package/src/shared/node-executable.js.map +1 -0
  922. package/src/shared/opencode-session-headers.d.ts +13 -0
  923. package/src/shared/opencode-session-headers.d.ts.map +1 -0
  924. package/src/shared/opencode-session-headers.js +27 -0
  925. package/src/shared/opencode-session-headers.js.map +1 -0
  926. package/src/shared/prompt-resources.d.ts +6 -0
  927. package/src/shared/prompt-resources.d.ts.map +1 -0
  928. package/src/shared/prompt-resources.js +11 -0
  929. package/src/shared/prompt-resources.js.map +1 -0
  930. package/src/shared/pruned-fork.d.ts +35 -0
  931. package/src/shared/pruned-fork.d.ts.map +1 -0
  932. package/src/shared/pruned-fork.js +424 -0
  933. package/src/shared/pruned-fork.js.map +1 -0
  934. package/src/shared/required-child-extensions.d.ts +20 -0
  935. package/src/shared/required-child-extensions.d.ts.map +1 -0
  936. package/src/shared/required-child-extensions.js +74 -0
  937. package/src/shared/required-child-extensions.js.map +1 -0
  938. package/src/shared/session-file-trust.d.ts +2 -0
  939. package/src/shared/session-file-trust.d.ts.map +1 -0
  940. package/src/shared/session-file-trust.js +21 -0
  941. package/src/shared/session-file-trust.js.map +1 -0
  942. package/src/shared/session-identity.d.ts +7 -0
  943. package/src/shared/session-identity.d.ts.map +1 -0
  944. package/src/shared/session-identity.js +7 -0
  945. package/src/shared/session-identity.js.map +1 -0
  946. package/src/shared/session-tokens.d.ts +3 -0
  947. package/src/shared/session-tokens.d.ts.map +1 -0
  948. package/src/shared/session-tokens.js +59 -0
  949. package/src/shared/session-tokens.js.map +1 -0
  950. package/src/shared/settings.d.ts +147 -0
  951. package/src/shared/settings.d.ts.map +1 -0
  952. package/src/shared/settings.js +248 -0
  953. package/src/shared/settings.js.map +1 -0
  954. package/src/shared/shortcuts.d.ts +2 -0
  955. package/src/shared/shortcuts.d.ts.map +1 -0
  956. package/src/shared/shortcuts.js +18 -0
  957. package/src/shared/shortcuts.js.map +1 -0
  958. package/src/shared/status-format.d.ts +10 -0
  959. package/src/shared/status-format.d.ts.map +1 -0
  960. package/src/shared/status-format.js +61 -0
  961. package/src/shared/status-format.js.map +1 -0
  962. package/src/shared/thinking-ceiling.d.ts +14 -0
  963. package/src/shared/thinking-ceiling.d.ts.map +1 -0
  964. package/src/shared/thinking-ceiling.js +38 -0
  965. package/src/shared/thinking-ceiling.js.map +1 -0
  966. package/src/shared/types.d.ts +2667 -0
  967. package/src/shared/types.d.ts.map +1 -0
  968. package/src/shared/types.js +265 -0
  969. package/src/shared/types.js.map +1 -0
  970. package/src/shared/utf8.d.ts +6 -0
  971. package/src/shared/utf8.d.ts.map +1 -0
  972. package/src/shared/utf8.js +13 -0
  973. package/src/shared/utf8.js.map +1 -0
  974. package/src/shared/utils.d.ts +71 -0
  975. package/src/shared/utils.d.ts.map +1 -0
  976. package/src/shared/utils.js +593 -0
  977. package/src/shared/utils.js.map +1 -0
  978. package/src/shared/watch-strategy.d.ts +3 -0
  979. package/src/shared/watch-strategy.d.ts.map +1 -0
  980. package/src/shared/watch-strategy.js +6 -0
  981. package/src/shared/watch-strategy.js.map +1 -0
  982. package/src/shared/workflow-child-permit.d.ts +59 -0
  983. package/src/shared/workflow-child-permit.d.ts.map +1 -0
  984. package/src/shared/workflow-child-permit.js +160 -0
  985. package/src/shared/workflow-child-permit.js.map +1 -0
  986. package/src/slash/delegation-adapters.d.ts +147 -0
  987. package/src/slash/delegation-adapters.d.ts.map +1 -0
  988. package/src/slash/delegation-adapters.js +293 -0
  989. package/src/slash/delegation-adapters.js.map +1 -0
  990. package/src/slash/delegation-json.d.ts +11 -0
  991. package/src/slash/delegation-json.d.ts.map +1 -0
  992. package/src/slash/delegation-json.js +118 -0
  993. package/src/slash/delegation-json.js.map +1 -0
  994. package/src/slash/delegation-request.d.ts +13 -0
  995. package/src/slash/delegation-request.d.ts.map +1 -0
  996. package/src/slash/delegation-request.js +175 -0
  997. package/src/slash/delegation-request.js.map +1 -0
  998. package/src/slash/prompt-template-bridge.d.ts +27 -0
  999. package/src/slash/prompt-template-bridge.d.ts.map +1 -0
  1000. package/src/slash/prompt-template-bridge.js +380 -0
  1001. package/src/slash/prompt-template-bridge.js.map +1 -0
  1002. package/src/slash/prompt-workflows.d.ts +22 -0
  1003. package/src/slash/prompt-workflows.d.ts.map +1 -0
  1004. package/src/slash/prompt-workflows.js +261 -0
  1005. package/src/slash/prompt-workflows.js.map +1 -0
  1006. package/src/slash/selector.d.ts +48 -0
  1007. package/src/slash/selector.d.ts.map +1 -0
  1008. package/src/slash/selector.js +118 -0
  1009. package/src/slash/selector.js.map +1 -0
  1010. package/src/slash/slash-bridge.d.ts +31 -0
  1011. package/src/slash/slash-bridge.d.ts.map +1 -0
  1012. package/src/slash/slash-bridge.js +133 -0
  1013. package/src/slash/slash-bridge.js.map +1 -0
  1014. package/src/slash/slash-commands.d.ts +9 -0
  1015. package/src/slash/slash-commands.d.ts.map +1 -0
  1016. package/src/slash/slash-commands.js +1295 -0
  1017. package/src/slash/slash-commands.js.map +1 -0
  1018. package/src/slash/slash-live-state.d.ts +22 -0
  1019. package/src/slash/slash-live-state.d.ts.map +1 -0
  1020. package/src/slash/slash-live-state.js +264 -0
  1021. package/src/slash/slash-live-state.js.map +1 -0
  1022. package/src/slash/subagents-admin.d.ts +3 -0
  1023. package/src/slash/subagents-admin.d.ts.map +1 -0
  1024. package/src/slash/subagents-admin.js +454 -0
  1025. package/src/slash/subagents-admin.js.map +1 -0
  1026. package/src/tui/fleet-status.d.ts +86 -0
  1027. package/src/tui/fleet-status.d.ts.map +1 -0
  1028. package/src/tui/fleet-status.js +1083 -0
  1029. package/src/tui/fleet-status.js.map +1 -0
  1030. package/src/tui/fleet-transcript.d.ts +50 -0
  1031. package/src/tui/fleet-transcript.d.ts.map +1 -0
  1032. package/src/tui/fleet-transcript.js +497 -0
  1033. package/src/tui/fleet-transcript.js.map +1 -0
  1034. package/src/tui/fleet.d.ts +169 -0
  1035. package/src/tui/fleet.d.ts.map +1 -0
  1036. package/src/tui/fleet.js +1412 -0
  1037. package/src/tui/fleet.js.map +1 -0
  1038. package/src/tui/render-helpers.d.ts +24 -0
  1039. package/src/tui/render-helpers.d.ts.map +1 -0
  1040. package/src/tui/render-helpers.js +101 -0
  1041. package/src/tui/render-helpers.js.map +1 -0
  1042. package/src/tui/render.d.ts +61 -0
  1043. package/src/tui/render.d.ts.map +1 -0
  1044. package/src/tui/render.js +3607 -0
  1045. package/src/tui/render.js.map +1 -0
  1046. package/src/watchdog/change-signature.d.ts +8 -0
  1047. package/src/watchdog/change-signature.d.ts.map +1 -0
  1048. package/src/watchdog/change-signature.js +246 -0
  1049. package/src/watchdog/change-signature.js.map +1 -0
  1050. package/src/watchdog/child-status.d.ts +54 -0
  1051. package/src/watchdog/child-status.d.ts.map +1 -0
  1052. package/src/watchdog/child-status.js +188 -0
  1053. package/src/watchdog/child-status.js.map +1 -0
  1054. package/src/watchdog/diff-tool.d.ts +23 -0
  1055. package/src/watchdog/diff-tool.d.ts.map +1 -0
  1056. package/src/watchdog/diff-tool.js +84 -0
  1057. package/src/watchdog/diff-tool.js.map +1 -0
  1058. package/src/watchdog/emission-guard.d.ts +37 -0
  1059. package/src/watchdog/emission-guard.d.ts.map +1 -0
  1060. package/src/watchdog/emission-guard.js +98 -0
  1061. package/src/watchdog/emission-guard.js.map +1 -0
  1062. package/src/watchdog/guidance.d.ts +4 -0
  1063. package/src/watchdog/guidance.d.ts.map +1 -0
  1064. package/src/watchdog/guidance.js +20 -0
  1065. package/src/watchdog/guidance.js.map +1 -0
  1066. package/src/watchdog/lsp-diagnostics.d.ts +18 -0
  1067. package/src/watchdog/lsp-diagnostics.d.ts.map +1 -0
  1068. package/src/watchdog/lsp-diagnostics.js +490 -0
  1069. package/src/watchdog/lsp-diagnostics.js.map +1 -0
  1070. package/src/watchdog/model-selection.d.ts +25 -0
  1071. package/src/watchdog/model-selection.d.ts.map +1 -0
  1072. package/src/watchdog/model-selection.js +168 -0
  1073. package/src/watchdog/model-selection.js.map +1 -0
  1074. package/src/watchdog/permission-arbiter.d.ts +21 -0
  1075. package/src/watchdog/permission-arbiter.d.ts.map +1 -0
  1076. package/src/watchdog/permission-arbiter.js +136 -0
  1077. package/src/watchdog/permission-arbiter.js.map +1 -0
  1078. package/src/watchdog/register-child.d.ts +12 -0
  1079. package/src/watchdog/register-child.d.ts.map +1 -0
  1080. package/src/watchdog/register-child.js +120 -0
  1081. package/src/watchdog/register-child.js.map +1 -0
  1082. package/src/watchdog/register-main.d.ts +10 -0
  1083. package/src/watchdog/register-main.d.ts.map +1 -0
  1084. package/src/watchdog/register-main.js +419 -0
  1085. package/src/watchdog/register-main.js.map +1 -0
  1086. package/src/watchdog/render.d.ts +12 -0
  1087. package/src/watchdog/render.d.ts.map +1 -0
  1088. package/src/watchdog/render.js +52 -0
  1089. package/src/watchdog/render.js.map +1 -0
  1090. package/src/watchdog/review.d.ts +36 -0
  1091. package/src/watchdog/review.d.ts.map +1 -0
  1092. package/src/watchdog/review.js +318 -0
  1093. package/src/watchdog/review.js.map +1 -0
  1094. package/src/watchdog/rules.d.ts +22 -0
  1095. package/src/watchdog/rules.d.ts.map +1 -0
  1096. package/src/watchdog/rules.js +59 -0
  1097. package/src/watchdog/rules.js.map +1 -0
  1098. package/src/watchdog/runtime.d.ts +196 -0
  1099. package/src/watchdog/runtime.d.ts.map +1 -0
  1100. package/src/watchdog/runtime.js +862 -0
  1101. package/src/watchdog/runtime.js.map +1 -0
  1102. package/src/watchdog/scope.d.ts +15 -0
  1103. package/src/watchdog/scope.d.ts.map +1 -0
  1104. package/src/watchdog/scope.js +45 -0
  1105. package/src/watchdog/scope.js.map +1 -0
  1106. package/src/watchdog/settings.d.ts +30 -0
  1107. package/src/watchdog/settings.d.ts.map +1 -0
  1108. package/src/watchdog/settings.js +476 -0
  1109. package/src/watchdog/settings.js.map +1 -0
  1110. package/src/watchdog/tool-actions.d.ts +18 -0
  1111. package/src/watchdog/tool-actions.d.ts.map +1 -0
  1112. package/src/watchdog/tool-actions.js +151 -0
  1113. package/src/watchdog/tool-actions.js.map +1 -0
  1114. package/src/watchdog/turn-delta.d.ts +12 -0
  1115. package/src/watchdog/turn-delta.d.ts.map +1 -0
  1116. package/src/watchdog/turn-delta.js +185 -0
  1117. package/src/watchdog/turn-delta.js.map +1 -0
  1118. package/src/watchdog/types.d.ts +142 -0
  1119. package/src/watchdog/types.d.ts.map +1 -0
  1120. package/src/watchdog/types.js +28 -0
  1121. package/src/watchdog/types.js.map +1 -0
  1122. package/src/watchdog/warning-format.d.ts +8 -0
  1123. package/src/watchdog/warning-format.d.ts.map +1 -0
  1124. package/src/watchdog/warning-format.js +60 -0
  1125. package/src/watchdog/warning-format.js.map +1 -0
  1126. package/src/workflows/chat-progress.d.ts +38 -0
  1127. package/src/workflows/chat-progress.d.ts.map +1 -0
  1128. package/src/workflows/chat-progress.js +130 -0
  1129. package/src/workflows/chat-progress.js.map +1 -0
  1130. package/src/workflows/host-command.d.ts +31 -0
  1131. package/src/workflows/host-command.d.ts.map +1 -0
  1132. package/src/workflows/host-command.js +228 -0
  1133. package/src/workflows/host-command.js.map +1 -0
  1134. package/src/workflows/scripted-workflow.d.ts +195 -0
  1135. package/src/workflows/scripted-workflow.d.ts.map +1 -0
  1136. package/src/workflows/scripted-workflow.js +2636 -0
  1137. package/src/workflows/scripted-workflow.js.map +1 -0
  1138. package/src/workflows/workflow-checklist.d.ts +124 -0
  1139. package/src/workflows/workflow-checklist.d.ts.map +1 -0
  1140. package/src/workflows/workflow-checklist.js +312 -0
  1141. package/src/workflows/workflow-checklist.js.map +1 -0
  1142. package/src/workflows/workflow-child-summary.d.ts +20 -0
  1143. package/src/workflows/workflow-child-summary.d.ts.map +1 -0
  1144. package/src/workflows/workflow-child-summary.js +179 -0
  1145. package/src/workflows/workflow-child-summary.js.map +1 -0
  1146. package/src/workflows/workflow-preflight.d.ts +59 -0
  1147. package/src/workflows/workflow-preflight.d.ts.map +1 -0
  1148. package/src/workflows/workflow-preflight.js +289 -0
  1149. package/src/workflows/workflow-preflight.js.map +1 -0
  1150. package/src/workflows/workflow-receipt.d.ts +35 -0
  1151. package/src/workflows/workflow-receipt.d.ts.map +1 -0
  1152. package/src/workflows/workflow-receipt.js +449 -0
  1153. package/src/workflows/workflow-receipt.js.map +1 -0
  1154. package/src/workflows/workflow-resources.d.ts +43 -0
  1155. package/src/workflows/workflow-resources.d.ts.map +1 -0
  1156. package/src/workflows/workflow-resources.js +230 -0
  1157. package/src/workflows/workflow-resources.js.map +1 -0
  1158. package/src/workflows/workflow-settlement.d.ts +85 -0
  1159. package/src/workflows/workflow-settlement.d.ts.map +1 -0
  1160. package/src/workflows/workflow-settlement.js +204 -0
  1161. package/src/workflows/workflow-settlement.js.map +1 -0
  1162. package/index.ts +0 -13
  1163. package/src/agents/advertised-agent-prompt.ts +0 -94
  1164. package/src/agents/agent-management.ts +0 -1417
  1165. package/src/agents/agent-memory.ts +0 -254
  1166. package/src/agents/agent-refinements.ts +0 -624
  1167. package/src/agents/agent-scope.ts +0 -6
  1168. package/src/agents/agent-selection.ts +0 -25
  1169. package/src/agents/agent-serializer.ts +0 -182
  1170. package/src/agents/agents.ts +0 -2917
  1171. package/src/agents/builtin-names.ts +0 -16
  1172. package/src/agents/chain-serializer.ts +0 -285
  1173. package/src/agents/frontmatter.ts +0 -153
  1174. package/src/agents/identity.ts +0 -30
  1175. package/src/agents/proactive-skills.ts +0 -194
  1176. package/src/agents/runtime-agent-events.ts +0 -70
  1177. package/src/agents/runtime-agent-registry.ts +0 -430
  1178. package/src/agents/skills.ts +0 -754
  1179. package/src/api/agents.ts +0 -12
  1180. package/src/api/background-work.ts +0 -206
  1181. package/src/api/capability-ceiling.ts +0 -16
  1182. package/src/api/child-tool-plan.ts +0 -5
  1183. package/src/api/control-channel.ts +0 -4
  1184. package/src/api/delegation.ts +0 -116
  1185. package/src/api/external-job-provider.ts +0 -195
  1186. package/src/api/external-runs.ts +0 -282
  1187. package/src/api/intercom-bridge.ts +0 -3
  1188. package/src/api/preflight.ts +0 -539
  1189. package/src/api/project-panes.ts +0 -32
  1190. package/src/api/required-child-extensions.ts +0 -6
  1191. package/src/api/shared-types.ts +0 -29
  1192. package/src/api/workflow-resources.ts +0 -6
  1193. package/src/extension/config.ts +0 -230
  1194. package/src/extension/control-notices.ts +0 -58
  1195. package/src/extension/doctor.ts +0 -270
  1196. package/src/extension/fanout-child.ts +0 -265
  1197. package/src/extension/herdr-pi-bridge.ts +0 -160
  1198. package/src/extension/index.ts +0 -1205
  1199. package/src/extension/public-execution.ts +0 -225
  1200. package/src/extension/rpc.ts +0 -848
  1201. package/src/extension/schemas.ts +0 -428
  1202. package/src/extension/steering-notices.ts +0 -35
  1203. package/src/extension/subagent-guide.ts +0 -39
  1204. package/src/extension/tool-description.ts +0 -175
  1205. package/src/extension/tool-result.ts +0 -19
  1206. package/src/inspectors/actions.ts +0 -148
  1207. package/src/inspectors/ghostty/actions.ts +0 -74
  1208. package/src/inspectors/ghostty/plugin.ts +0 -29
  1209. package/src/inspectors/herdr/actions.ts +0 -155
  1210. package/src/inspectors/herdr/client.ts +0 -130
  1211. package/src/inspectors/herdr/focus.ts +0 -55
  1212. package/src/inspectors/herdr/plugin.ts +0 -20
  1213. package/src/inspectors/herdr/project-panes.ts +0 -730
  1214. package/src/inspectors/inspector-runner.ts +0 -153
  1215. package/src/inspectors/plugins.ts +0 -8
  1216. package/src/inspectors/session-roots-codec.ts +0 -31
  1217. package/src/inspectors/shell-command.ts +0 -16
  1218. package/src/inspectors/types.ts +0 -51
  1219. package/src/integrations/herdr-status.ts +0 -400
  1220. package/src/integrations/pi-web-session-liveness.ts +0 -73
  1221. package/src/intercom/intercom-bridge.ts +0 -233
  1222. package/src/intercom/native-supervisor-channel.ts +0 -917
  1223. package/src/intercom/result-intercom.ts +0 -423
  1224. package/src/intercom/supervisor-ui.ts +0 -244
  1225. package/src/missions/actions.ts +0 -433
  1226. package/src/missions/goal-driver.ts +0 -164
  1227. package/src/missions/lifecycle.ts +0 -367
  1228. package/src/missions/store.ts +0 -584
  1229. package/src/missions/types.ts +0 -190
  1230. package/src/missions/workflow-state.ts +0 -281
  1231. package/src/policy/authority.ts +0 -50
  1232. package/src/profiles/profiles.ts +0 -668
  1233. package/src/runs/background/active-async-capacity.ts +0 -520
  1234. package/src/runs/background/active-run-index.ts +0 -155
  1235. package/src/runs/background/async-execution.ts +0 -2278
  1236. package/src/runs/background/async-job-tracker.ts +0 -826
  1237. package/src/runs/background/async-resume.ts +0 -647
  1238. package/src/runs/background/async-retention.ts +0 -912
  1239. package/src/runs/background/async-status-snapshot.ts +0 -46
  1240. package/src/runs/background/async-status.ts +0 -771
  1241. package/src/runs/background/auto-drain.ts +0 -92
  1242. package/src/runs/background/binary-bootstrap.ts +0 -38
  1243. package/src/runs/background/chain-append.ts +0 -321
  1244. package/src/runs/background/chain-root-attachment.ts +0 -259
  1245. package/src/runs/background/completion-batcher.ts +0 -168
  1246. package/src/runs/background/completion-dedupe.ts +0 -58
  1247. package/src/runs/background/completion-replay.ts +0 -287
  1248. package/src/runs/background/control-channel.ts +0 -600
  1249. package/src/runs/background/fleet-view.ts +0 -648
  1250. package/src/runs/background/index-segment.ts +0 -59
  1251. package/src/runs/background/inspect-rpc.ts +0 -443
  1252. package/src/runs/background/notify.ts +0 -819
  1253. package/src/runs/background/owned-process-tree.ts +0 -131
  1254. package/src/runs/background/parallel-groups.ts +0 -45
  1255. package/src/runs/background/process-terminal.ts +0 -310
  1256. package/src/runs/background/result-delivery-ownership.ts +0 -45
  1257. package/src/runs/background/result-files.ts +0 -523
  1258. package/src/runs/background/result-watcher.ts +0 -809
  1259. package/src/runs/background/resume-guidance.ts +0 -56
  1260. package/src/runs/background/retained-children.ts +0 -135
  1261. package/src/runs/background/retained-nested-route-tracker.ts +0 -96
  1262. package/src/runs/background/run-child-session.ts +0 -690
  1263. package/src/runs/background/run-id-query.ts +0 -7
  1264. package/src/runs/background/run-id-resolver.ts +0 -175
  1265. package/src/runs/background/run-status.ts +0 -786
  1266. package/src/runs/background/runner-aliases.ts +0 -142
  1267. package/src/runs/background/runner-child-launch.ts +0 -91
  1268. package/src/runs/background/runner-child-sessions.ts +0 -32
  1269. package/src/runs/background/runner-http-dispatcher.ts +0 -119
  1270. package/src/runs/background/scheduled-runs.ts +0 -1012
  1271. package/src/runs/background/stale-run-reconciler.ts +0 -436
  1272. package/src/runs/background/steering.ts +0 -260
  1273. package/src/runs/background/subagent-runner.ts +0 -5357
  1274. package/src/runs/background/subagent-wait.ts +0 -876
  1275. package/src/runs/background/terminal-run-index.ts +0 -138
  1276. package/src/runs/background/top-level-async.ts +0 -14
  1277. package/src/runs/background/wait-completions.ts +0 -261
  1278. package/src/runs/background/wait-config.ts +0 -50
  1279. package/src/runs/background/wait-subscriptions.ts +0 -354
  1280. package/src/runs/background/wait-tool.ts +0 -45
  1281. package/src/runs/foreground/async-dismiss-action.ts +0 -86
  1282. package/src/runs/foreground/async-steering-action.ts +0 -276
  1283. package/src/runs/foreground/async-stop-action.ts +0 -176
  1284. package/src/runs/foreground/execution.ts +0 -2254
  1285. package/src/runs/foreground/foreground-control.ts +0 -157
  1286. package/src/runs/foreground/foreground-history.ts +0 -163
  1287. package/src/runs/foreground/prompt-audit.ts +0 -178
  1288. package/src/runs/foreground/subagent-executor.ts +0 -7526
  1289. package/src/runs/foreground/workflow-detach-reconcile.ts +0 -304
  1290. package/src/runs/foreground/workflow-foreground-steering.ts +0 -169
  1291. package/src/runs/shared/abort-recovery.ts +0 -119
  1292. package/src/runs/shared/acceptance.ts +0 -1698
  1293. package/src/runs/shared/agent-contract.ts +0 -38
  1294. package/src/runs/shared/async-status-projection.ts +0 -659
  1295. package/src/runs/shared/background-process-options.ts +0 -9
  1296. package/src/runs/shared/capability-ceiling.ts +0 -211
  1297. package/src/runs/shared/chain-outputs.ts +0 -116
  1298. package/src/runs/shared/child-hooks.ts +0 -189
  1299. package/src/runs/shared/child-identity.ts +0 -62
  1300. package/src/runs/shared/child-launch-plan.ts +0 -163
  1301. package/src/runs/shared/child-launch.ts +0 -342
  1302. package/src/runs/shared/child-lifecycle.ts +0 -28
  1303. package/src/runs/shared/child-runtime-config.ts +0 -133
  1304. package/src/runs/shared/child-session.ts +0 -448
  1305. package/src/runs/shared/child-tool-plan.ts +0 -661
  1306. package/src/runs/shared/claude-code-adapter.ts +0 -133
  1307. package/src/runs/shared/codex-exec-adapter.ts +0 -129
  1308. package/src/runs/shared/completion-evidence.ts +0 -89
  1309. package/src/runs/shared/completion-guard.ts +0 -255
  1310. package/src/runs/shared/context-mode.ts +0 -44
  1311. package/src/runs/shared/cursor-agent-adapter.ts +0 -114
  1312. package/src/runs/shared/dynamic-fanout.ts +0 -297
  1313. package/src/runs/shared/effective-system-prompt.ts +0 -33
  1314. package/src/runs/shared/extension-bindings.ts +0 -78
  1315. package/src/runs/shared/external-cli-contract.ts +0 -177
  1316. package/src/runs/shared/external-cli-preflight.ts +0 -142
  1317. package/src/runs/shared/external-cli-runner.ts +0 -431
  1318. package/src/runs/shared/external-job-bridge.ts +0 -460
  1319. package/src/runs/shared/external-job-runner.ts +0 -389
  1320. package/src/runs/shared/fast-mode-extension.ts +0 -10
  1321. package/src/runs/shared/herdr-connection.ts +0 -134
  1322. package/src/runs/shared/herdr-external-adapters.ts +0 -169
  1323. package/src/runs/shared/herdr-machine.ts +0 -279
  1324. package/src/runs/shared/herdr-pi-protocol.ts +0 -59
  1325. package/src/runs/shared/herdr-placed-run.ts +0 -263
  1326. package/src/runs/shared/host-step-status.ts +0 -231
  1327. package/src/runs/shared/lane-metadata.ts +0 -126
  1328. package/src/runs/shared/launch-cwd.ts +0 -16
  1329. package/src/runs/shared/llm-intent-arbiter.ts +0 -321
  1330. package/src/runs/shared/long-running-guard.ts +0 -221
  1331. package/src/runs/shared/mcp-config-sources.ts +0 -422
  1332. package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -484
  1333. package/src/runs/shared/mcp-direct-tool-grant.ts +0 -194
  1334. package/src/runs/shared/model-resolution-diagnostic.ts +0 -76
  1335. package/src/runs/shared/model-resolution.ts +0 -441
  1336. package/src/runs/shared/model-scope.ts +0 -205
  1337. package/src/runs/shared/mutation-evidence.ts +0 -199
  1338. package/src/runs/shared/nested-events.ts +0 -1079
  1339. package/src/runs/shared/nested-path.ts +0 -38
  1340. package/src/runs/shared/nested-render.ts +0 -127
  1341. package/src/runs/shared/orca-progress-tabs.ts +0 -510
  1342. package/src/runs/shared/parallel-handoff.ts +0 -741
  1343. package/src/runs/shared/parallel-utils.ts +0 -279
  1344. package/src/runs/shared/permissions.ts +0 -86
  1345. package/src/runs/shared/pi-spawn.ts +0 -207
  1346. package/src/runs/shared/process-signal.ts +0 -35
  1347. package/src/runs/shared/readonly-drain-observation.ts +0 -42
  1348. package/src/runs/shared/run-fanout-budget.ts +0 -267
  1349. package/src/runs/shared/run-history.ts +0 -201
  1350. package/src/runs/shared/runtime-acknowledged-extensions.ts +0 -44
  1351. package/src/runs/shared/session-lease.ts +0 -293
  1352. package/src/runs/shared/single-output.ts +0 -304
  1353. package/src/runs/shared/spawn-budget.ts +0 -128
  1354. package/src/runs/shared/structured-output.ts +0 -236
  1355. package/src/runs/shared/subagent-control.ts +0 -294
  1356. package/src/runs/shared/subagent-prompt-runtime.ts +0 -545
  1357. package/src/runs/shared/task-intent.ts +0 -244
  1358. package/src/runs/shared/tool-availability.ts +0 -37
  1359. package/src/runs/shared/tool-budget.ts +0 -66
  1360. package/src/runs/shared/tool-timeout.ts +0 -93
  1361. package/src/runs/shared/usage-budget.ts +0 -65
  1362. package/src/runs/shared/workflow-async-child-guidance.ts +0 -18
  1363. package/src/runs/shared/workflow-graph.ts +0 -225
  1364. package/src/runs/shared/worktree-cleanup-plan.ts +0 -869
  1365. package/src/runs/shared/worktree-setup-command.ts +0 -213
  1366. package/src/runs/shared/worktree.ts +0 -1538
  1367. package/src/shared/accessible-dir.ts +0 -47
  1368. package/src/shared/agent-stream-options.ts +0 -5
  1369. package/src/shared/artifacts.ts +0 -281
  1370. package/src/shared/atomic-json.ts +0 -83
  1371. package/src/shared/capacity-resilient-json.ts +0 -102
  1372. package/src/shared/child-cache-retention.ts +0 -43
  1373. package/src/shared/child-session-name.ts +0 -46
  1374. package/src/shared/child-transcript.ts +0 -264
  1375. package/src/shared/completion-owner.ts +0 -14
  1376. package/src/shared/display-text.ts +0 -150
  1377. package/src/shared/extension-context.ts +0 -24
  1378. package/src/shared/file-coalescer.ts +0 -49
  1379. package/src/shared/file-system-retry.ts +0 -95
  1380. package/src/shared/fork-context.ts +0 -236
  1381. package/src/shared/fork-session-cwd.ts +0 -27
  1382. package/src/shared/formatters.ts +0 -146
  1383. package/src/shared/jsonl-writer.ts +0 -92
  1384. package/src/shared/launch-contract.ts +0 -198
  1385. package/src/shared/model-info.ts +0 -101
  1386. package/src/shared/model-response-aliases.ts +0 -13
  1387. package/src/shared/node-executable.ts +0 -21
  1388. package/src/shared/opencode-session-headers.ts +0 -30
  1389. package/src/shared/prompt-resources.ts +0 -11
  1390. package/src/shared/pruned-fork.ts +0 -450
  1391. package/src/shared/required-child-extensions.ts +0 -81
  1392. package/src/shared/session-file-trust.ts +0 -19
  1393. package/src/shared/session-identity.ts +0 -10
  1394. package/src/shared/session-tokens.ts +0 -55
  1395. package/src/shared/settings.ts +0 -412
  1396. package/src/shared/shortcuts.ts +0 -13
  1397. package/src/shared/status-format.ts +0 -55
  1398. package/src/shared/thinking-ceiling.ts +0 -46
  1399. package/src/shared/types.ts +0 -2983
  1400. package/src/shared/utf8.ts +0 -11
  1401. package/src/shared/utils.ts +0 -608
  1402. package/src/shared/watch-strategy.ts +0 -12
  1403. package/src/shared/workflow-child-permit.ts +0 -212
  1404. package/src/slash/delegation-adapters.ts +0 -428
  1405. package/src/slash/delegation-json.ts +0 -108
  1406. package/src/slash/delegation-request.ts +0 -176
  1407. package/src/slash/prompt-template-bridge.ts +0 -419
  1408. package/src/slash/prompt-workflows.ts +0 -287
  1409. package/src/slash/selector.ts +0 -147
  1410. package/src/slash/slash-bridge.ts +0 -192
  1411. package/src/slash/slash-commands.ts +0 -1325
  1412. package/src/slash/slash-live-state.ts +0 -310
  1413. package/src/slash/subagents-admin.ts +0 -460
  1414. package/src/tui/fleet-status.ts +0 -1109
  1415. package/src/tui/fleet-transcript.ts +0 -536
  1416. package/src/tui/fleet.ts +0 -1448
  1417. package/src/tui/render-helpers.ts +0 -111
  1418. package/src/tui/render.ts +0 -3721
  1419. package/src/types/pi-runtime-compat.d.ts +0 -8
  1420. package/src/watchdog/change-signature.ts +0 -260
  1421. package/src/watchdog/child-status.ts +0 -225
  1422. package/src/watchdog/diff-tool.ts +0 -77
  1423. package/src/watchdog/emission-guard.ts +0 -125
  1424. package/src/watchdog/guidance.ts +0 -20
  1425. package/src/watchdog/lsp-diagnostics.ts +0 -538
  1426. package/src/watchdog/model-selection.ts +0 -187
  1427. package/src/watchdog/permission-arbiter.ts +0 -156
  1428. package/src/watchdog/register-child.ts +0 -128
  1429. package/src/watchdog/register-main.ts +0 -445
  1430. package/src/watchdog/render.ts +0 -53
  1431. package/src/watchdog/review.ts +0 -363
  1432. package/src/watchdog/rules.ts +0 -70
  1433. package/src/watchdog/runtime.ts +0 -924
  1434. package/src/watchdog/scope.ts +0 -51
  1435. package/src/watchdog/settings.ts +0 -515
  1436. package/src/watchdog/tool-actions.ts +0 -156
  1437. package/src/watchdog/turn-delta.ts +0 -184
  1438. package/src/watchdog/types.ts +0 -186
  1439. package/src/watchdog/warning-format.ts +0 -72
  1440. package/src/workflows/chat-progress.ts +0 -152
  1441. package/src/workflows/host-command.ts +0 -235
  1442. package/src/workflows/scripted-workflow.ts +0 -2575
  1443. package/src/workflows/workflow-checklist.ts +0 -436
  1444. package/src/workflows/workflow-child-summary.ts +0 -170
  1445. package/src/workflows/workflow-preflight.ts +0 -297
  1446. package/src/workflows/workflow-receipt.ts +0 -384
  1447. package/src/workflows/workflow-resources.ts +0 -236
  1448. package/src/workflows/workflow-settlement.ts +0 -249
@@ -1,1325 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import { keyText, type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent";
5
- import { Key, matchesKey, truncateToWidth, type Component, type KeyId, type TUI } from "@earendil-works/pi-tui";
6
- import { discoverAgentSnapshot, discoverAgents, findBlockingAgentDiagnostic, formatUnknownAgentError, resolveAgentName, unknownAgentDiagnosticContext, type AgentConfig, type AgentDiscoveryDiagnostic, type AgentScope, type UnknownAgentDiagnosticContext } from "../agents/agents.ts";
7
- import { listRuntimeAgentConfigs, mergeRuntimeAgents } from "../agents/runtime-agent-registry.ts";
8
- import { resolveExistingReadPaths } from "../shared/settings.ts";
9
- import {
10
- DEFAULT_PROVIDER_MODELS_MAX_AGE_DAYS,
11
- applySubagentProfile,
12
- checkSubagentProfile,
13
- generateProfilesForProvider,
14
- listSubagentProfiles,
15
- readSubagentProfile,
16
- refreshProviderModelCatalog,
17
- } from "../profiles/profiles.ts";
18
- import type { SubagentParamsLike } from "../runs/foreground/subagent-executor.ts";
19
- import { findModelInfo, toModelInfo } from "../shared/model-info.ts";
20
- import { formatTokens, shortenPath } from "../shared/formatters.ts";
21
- import { listAsyncRuns, formatAsyncRunProgressLabel, type AsyncRunSummary } from "../runs/background/async-status.ts";
22
- import { encodeInspectReply, handleInspectRpcArgs, INSPECT_WIDGET_KEY } from "../runs/background/inspect-rpc.ts";
23
- import { listScheduledRunSummaries } from "../runs/background/scheduled-runs.ts";
24
- import { resolveAsyncStatusChild } from "../runs/shared/child-identity.ts";
25
- import { readStatus } from "../shared/utils.ts";
26
- import { getArtifactPaths, getArtifactsDir } from "../shared/artifacts.ts";
27
- import { readWorkflowReceipt } from "../workflows/workflow-receipt.ts";
28
- import type { SlashSubagentResponse, SlashSubagentUpdate } from "./slash-bridge.ts";
29
- import { registerPromptWorkflowCommands } from "./prompt-workflows.ts";
30
- import { openSubagentsAdmin } from "./subagents-admin.ts";
31
- import { SUBAGENT_GUIDE_TOPICS } from "../extension/subagent-guide.ts";
32
- import { openSubagentFleet } from "../tui/fleet.ts";
33
- import { createBuiltinInspectorPlugins } from "../inspectors/plugins.ts";
34
- import {
35
- applySlashUpdate,
36
- buildSlashInitialResult,
37
- failSlashResult,
38
- finalizeSlashResult,
39
- resolveSlashMessageDetails,
40
- } from "./slash-live-state.ts";
41
- import {
42
- SLASH_RESULT_TYPE,
43
- SLASH_TEXT_RESULT_TYPE,
44
- SLASH_SUBAGENT_CANCEL_EVENT,
45
- SLASH_SUBAGENT_REQUEST_EVENT,
46
- SLASH_SUBAGENT_RESPONSE_EVENT,
47
- SLASH_SUBAGENT_STARTED_EVENT,
48
- SLASH_SUBAGENT_UPDATE_EVENT,
49
- DIRS,
50
- type Details,
51
- type FleetKeybindingsConfig,
52
- type SingleResult,
53
- type SubagentState,
54
- type Usage,
55
- } from "../shared/types.ts";
56
-
57
- interface InlineConfig {
58
- output?: string | false;
59
- outputMode?: "inline" | "file-only";
60
- reads?: string[] | false;
61
- model?: string;
62
- skill?: string[] | false;
63
- }
64
-
65
- const parseInlineConfig = (raw: string): InlineConfig => {
66
- const config: InlineConfig = {};
67
- for (const part of raw.split(",")) {
68
- const trimmed = part.trim();
69
- if (!trimmed) continue;
70
- const eq = trimmed.indexOf("=");
71
- if (eq === -1) continue;
72
- const key = trimmed.slice(0, eq).trim();
73
- const val = trimmed.slice(eq + 1).trim();
74
- switch (key) {
75
- case "output": config.output = val === "false" ? false : val; break;
76
- case "outputMode": if (val === "inline" || val === "file-only") config.outputMode = val; break;
77
- case "reads": config.reads = val === "false" ? false : val.split("+").filter(Boolean); break;
78
- case "model": config.model = val || undefined; break;
79
- case "skill": case "skills": config.skill = val === "false" ? false : val.split("+").filter(Boolean); break;
80
- }
81
- }
82
- return config;
83
- };
84
-
85
- const parseAgentToken = (token: string): { name: string; config: InlineConfig } => {
86
- const bracket = token.indexOf("[");
87
- if (bracket === -1) return { name: token, config: {} };
88
- const end = token.lastIndexOf("]");
89
- return { name: token.slice(0, bracket), config: parseInlineConfig(token.slice(bracket + 1, end !== -1 ? end : undefined)) };
90
- };
91
-
92
- const extractExecutionFlags = (rawArgs: string): { args: string; bg: boolean; fork: boolean } => {
93
- let args = rawArgs.trim();
94
- let bg = false;
95
- let fork = false;
96
-
97
- while (true) {
98
- if (args.endsWith(" --bg") || args === "--bg") {
99
- bg = true;
100
- args = args === "--bg" ? "" : args.slice(0, -5).trim();
101
- continue;
102
- }
103
- if (args.endsWith(" --fork") || args === "--fork") {
104
- fork = true;
105
- args = args === "--fork" ? "" : args.slice(0, -7).trim();
106
- continue;
107
- }
108
- break;
109
- }
110
-
111
- return { args, bg, fork };
112
- };
113
-
114
- function discoverSlashAgents(pi: ExtensionAPI, cwd: string, scope: AgentScope): { agents: AgentConfig[]; agentDiagnostics?: AgentDiscoveryDiagnostic[]; unknownAgentDiagnosticContext: UnknownAgentDiagnosticContext } {
115
- if (listRuntimeAgentConfigs(pi).length === 0) {
116
- const discovered = discoverAgents(cwd, scope);
117
- return { ...discovered, unknownAgentDiagnosticContext: unknownAgentDiagnosticContext(discovered) };
118
- }
119
- const snapshot = discoverAgentSnapshot(cwd, scope, undefined, { includeChains: false });
120
- const discovered = snapshot.effective;
121
- const all = snapshot.all;
122
- const configuredAgents: AgentConfig[] = [
123
- ...all.builtin,
124
- ...all.package,
125
- ...(scope !== "project" ? all.user : []),
126
- ...(scope !== "user" ? all.project : []),
127
- ];
128
- const merged = mergeRuntimeAgents(pi, discovered, configuredAgents);
129
- return { ...merged, unknownAgentDiagnosticContext: { ...unknownAgentDiagnosticContext(discovered), agents: merged.agents } };
130
- }
131
-
132
- const makeAgentCompletions = (pi: ExtensionAPI, state: SubagentState) => (prefix: string) => {
133
- if (!state.baseCwd || prefix.includes(" ")) return null;
134
- return discoverSlashAgents(pi, state.baseCwd, "both").agents
135
- .filter((agent) => agent.name.startsWith(prefix))
136
- .map((agent) => ({ value: agent.name, label: agent.name }));
137
- };
138
-
139
- const makeProviderCompletions = (state: SubagentState) => (prefix: string) => {
140
- if (prefix.includes(" ")) return null;
141
- const available = state.lastUiContext?.modelRegistry?.getAvailable?.();
142
- if (!Array.isArray(available)) return null;
143
- const providers = [...new Set(available
144
- .map((model) => typeof model?.provider === "string" ? model.provider : "")
145
- .filter(Boolean))]
146
- .sort((a, b) => a.localeCompare(b));
147
- return providers
148
- .filter((provider) => provider.startsWith(prefix))
149
- .map((provider) => ({ value: provider, label: provider }));
150
- };
151
-
152
- function sendSlashText(pi: ExtensionAPI, text: string): void {
153
- pi.sendMessage({ customType: SLASH_TEXT_RESULT_TYPE, content: text, display: true });
154
- }
155
-
156
- async function withSlashStatus<T>(
157
- ctx: ExtensionContext,
158
- text: string,
159
- run: () => Promise<T>,
160
- ): Promise<T> {
161
- if (ctx.hasUI) ctx.ui.setStatus("subagent-slash-text", text);
162
- try {
163
- return await run();
164
- } finally {
165
- if (ctx.hasUI) ctx.ui.setStatus("subagent-slash-text", undefined);
166
- }
167
- }
168
-
169
- type Theme = ExtensionContext["ui"]["theme"];
170
-
171
- type StopSelectorTarget = {
172
- kind: "async" | "scheduled";
173
- id: string;
174
- label: string;
175
- detail: string;
176
- actionLabel: string;
177
- };
178
-
179
- type StopSelectorResult = { confirmed: boolean; target?: StopSelectorTarget };
180
-
181
- function commandForTarget(target: StopSelectorTarget): string {
182
- return target.kind === "scheduled"
183
- ? `subagent({ action: "schedule.pause", id: ${JSON.stringify(target.id)} })`
184
- : `subagent({ action: "stop", id: ${JSON.stringify(target.id)} })`;
185
- }
186
-
187
- function formatAsyncStopTarget(run: AsyncRunSummary): StopSelectorTarget {
188
- const progress = formatAsyncRunProgressLabel(run);
189
- const cwd = run.cwd ? shortenPath(run.cwd) : shortenPath(run.asyncDir);
190
- return {
191
- kind: "async",
192
- id: run.id,
193
- label: `${run.id} · ${run.mode} · ${progress}`,
194
- detail: `${run.state} · ${cwd}`,
195
- actionLabel: "stop async run",
196
- };
197
- }
198
-
199
- function scheduledStopTargets(ctx: ExtensionContext, _state: SubagentState): StopSelectorTarget[] {
200
- try {
201
- return listScheduledRunSummaries(ctx.cwd)
202
- .filter((schedule) => !schedule.paused && !schedule.activeRunId && schedule.trigger.nextRunAt)
203
- .sort((left, right) => left.trigger.nextRunAt!.localeCompare(right.trigger.nextRunAt!))
204
- .map((schedule) => ({
205
- kind: "scheduled" as const,
206
- id: schedule.id,
207
- label: `${schedule.id} · ${schedule.name}`,
208
- detail: `scheduled · ${schedule.trigger.nextRunAt}`,
209
- actionLabel: "pause schedule",
210
- }));
211
- } catch {
212
- return [];
213
- }
214
- }
215
-
216
- function discoverStopTargets(ctx: ExtensionContext, state: SubagentState): StopSelectorTarget[] {
217
- const sessionId = state.currentSessionId ?? ctx.sessionManager.getSessionId() ?? undefined;
218
- const asyncTargets = listAsyncRuns(DIRS.async, {
219
- states: ["queued", "running"],
220
- ...(sessionId ? { sessionId } : {}),
221
- }).map(formatAsyncStopTarget);
222
- return [...asyncTargets, ...scheduledStopTargets(ctx, state)];
223
- }
224
-
225
- function stopFallbackText(targets: StopSelectorTarget[]): string {
226
- if (targets.length === 0) return "No active current-session async runs or scheduled subagent runs to stop.";
227
- const lines = ["Subagent stop targets:", ""];
228
- for (const target of targets) {
229
- lines.push(`- ${target.label}`);
230
- lines.push(` ${target.detail}`);
231
- lines.push(` ${target.actionLabel}: ${commandForTarget(target)}`);
232
- if (target.kind === "async") lines.push(` slash: /subagents-stop ${target.id}`);
233
- }
234
- return lines.join("\n");
235
- }
236
-
237
- function selectForegroundDetachControl(state: SubagentState, requested: string) {
238
- const controls = [...state.foregroundControls.values()];
239
- if (requested) {
240
- const matches = controls.filter((control) => control.runId === requested || control.runId.startsWith(requested));
241
- if (matches.length > 1) throw new Error(`Ambiguous foreground run id prefix '${requested}' matched: ${matches.map((control) => control.runId).join(", ")}. Provide a longer id.`);
242
- return matches[0];
243
- }
244
- const singleControls = controls.filter((control) => control.mode === "single");
245
- if (state.lastForegroundControlId) {
246
- const latest = state.foregroundControls.get(state.lastForegroundControlId);
247
- if (latest?.mode === "single") return latest;
248
- }
249
- return singleControls.sort((left, right) => right.updatedAt - left.updatedAt)[0];
250
- }
251
-
252
- class SubagentsStopSelector implements Component {
253
- readonly width = 84;
254
- private selected = 0;
255
- private confirming = false;
256
- private readonly tui: TUI;
257
- private readonly theme: Theme;
258
- private readonly targets: StopSelectorTarget[];
259
- private readonly done: (result: StopSelectorResult) => void;
260
-
261
- constructor(tui: TUI, theme: Theme, targets: StopSelectorTarget[], done: (result: StopSelectorResult) => void) {
262
- this.tui = tui;
263
- this.theme = theme;
264
- this.targets = targets;
265
- this.done = done;
266
- }
267
-
268
- handleInput(data: string): void {
269
- if (matchesKey(data, "escape") || matchesKey(data, "ctrl+c")) {
270
- this.done({ confirmed: false });
271
- return;
272
- }
273
- if (this.confirming) {
274
- if (matchesKey(data, "return") || data.toLowerCase() === "y") {
275
- this.done({ confirmed: true, target: this.targets[this.selected] });
276
- return;
277
- }
278
- if (data.toLowerCase() === "n" || matchesKey(data, "backspace")) {
279
- this.confirming = false;
280
- this.tui.requestRender();
281
- }
282
- return;
283
- }
284
- if (matchesKey(data, "up") || matchesKey(data, "k")) {
285
- this.selected = Math.max(0, this.selected - 1);
286
- this.tui.requestRender();
287
- return;
288
- }
289
- if (matchesKey(data, "down") || matchesKey(data, "j")) {
290
- this.selected = Math.min(this.targets.length - 1, this.selected + 1);
291
- this.tui.requestRender();
292
- return;
293
- }
294
- if (matchesKey(data, "return")) {
295
- this.confirming = true;
296
- this.tui.requestRender();
297
- }
298
- }
299
-
300
- invalidate(): void {}
301
-
302
- render(width: number): string[] {
303
- const contentWidth = Math.max(0, Math.min(this.width, Math.floor(width)));
304
- const lines = [this.theme.bold("Stop subagent run"), this.theme.fg("dim", "Select a current-session async run to stop, or a scheduled run to cancel."), ""];
305
- const maxRows = 10;
306
- const start = Math.max(0, Math.min(this.selected - maxRows + 1, Math.max(0, this.targets.length - maxRows)));
307
- for (let index = start; index < Math.min(this.targets.length, start + maxRows); index++) {
308
- const target = this.targets[index]!;
309
- const selected = index === this.selected;
310
- const marker = selected ? "›" : " ";
311
- const actionLabel = target.actionLabel;
312
- const action = target.kind === "scheduled" ? this.theme.fg("warning", actionLabel) : this.theme.fg("accent", actionLabel);
313
- const labelWidth = Math.max(0, contentWidth - marker.length - actionLabel.length - 2);
314
- lines.push(`${marker} ${action} ${target.label.slice(0, labelWidth)}`);
315
- if (selected) lines.push(this.theme.fg("dim", ` ${target.detail}`.slice(0, contentWidth)));
316
- }
317
- if (this.targets.length > maxRows) lines.push(this.theme.fg("dim", `Showing ${start + 1}-${Math.min(this.targets.length, start + maxRows)} of ${this.targets.length}`));
318
- lines.push("");
319
- if (this.confirming) {
320
- const target = this.targets[this.selected]!;
321
- lines.push(this.theme.fg("warning", `Confirm: ${target.actionLabel} ${target.id}?`));
322
- if (target.kind === "async") lines.push(this.theme.fg("dim", "Stop ends this run; use interrupt for a resumable pause."));
323
- lines.push(this.theme.fg("dim", "Enter/Y confirms · N returns · Esc cancels"));
324
- } else {
325
- lines.push(this.theme.fg("dim", "↑↓/jk select · Enter confirm · Esc cancel"));
326
- }
327
- return lines.map((line) => truncateToWidth(line, contentWidth));
328
- }
329
- }
330
-
331
- function emptyUsage(): Usage {
332
- return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 0 };
333
- }
334
-
335
- function addUsage(target: Usage, source: Usage): void {
336
- target.input += source.input;
337
- target.output += source.output;
338
- target.cacheRead += source.cacheRead;
339
- target.cacheWrite += source.cacheWrite;
340
- target.cost += source.cost;
341
- target.turns += source.turns;
342
- }
343
-
344
- function usageHasValue(usage: Usage): boolean {
345
- return usage.input !== 0 || usage.output !== 0 || usage.cacheRead !== 0 || usage.cacheWrite !== 0 || usage.cost !== 0 || usage.turns !== 0;
346
- }
347
-
348
- function nonNegativeNumber(value: unknown): number | undefined {
349
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
350
- }
351
-
352
- function usageFromValue(value: unknown, turnsOverride?: number): Usage | undefined {
353
- if (!value || typeof value !== "object" || Array.isArray(value)) return undefined;
354
- const record = value as Record<string, unknown>;
355
- const costValue = typeof record.cost === "object" && record.cost !== null && !Array.isArray(record.cost)
356
- ? (record.cost as Record<string, unknown>).total
357
- : record.cost;
358
- const turnsValue = turnsOverride ?? record.turns;
359
- const usage = {
360
- input: nonNegativeNumber(record.input) ?? 0,
361
- output: nonNegativeNumber(record.output) ?? 0,
362
- cacheRead: nonNegativeNumber(record.cacheRead) ?? 0,
363
- cacheWrite: nonNegativeNumber(record.cacheWrite) ?? 0,
364
- cost: nonNegativeNumber(costValue) ?? 0,
365
- turns: nonNegativeNumber(turnsValue) ?? 0,
366
- };
367
- return Number.isSafeInteger(usage.turns) ? usage : undefined;
368
- }
369
-
370
- function assistantUsageFromMessage(message: unknown): Usage | undefined {
371
- if (!message || typeof message !== "object") return undefined;
372
- const msg = message as { role?: unknown; usage?: unknown };
373
- return msg.role === "assistant" ? usageFromValue(msg.usage, 1) : undefined;
374
- }
375
-
376
- function compactionUsageFromEntry(entry: unknown): Usage | undefined {
377
- if (!entry || typeof entry !== "object") return undefined;
378
- const record = entry as { type?: unknown; usage?: unknown };
379
- return record.type === "compaction" ? usageFromValue(record.usage, 0) : undefined;
380
- }
381
-
382
- const MAX_USAGE_METADATA_BYTES = 2 * 1024 * 1024;
383
-
384
- function readUsageMetadata(metadataPath: string): Record<string, unknown> | undefined {
385
- let fd: number | undefined;
386
- try {
387
- fd = fs.openSync(metadataPath, "r");
388
- const stat = fs.fstatSync(fd);
389
- if (!stat.isFile() || stat.size > MAX_USAGE_METADATA_BYTES) return undefined;
390
- const buffer = Buffer.allocUnsafe(stat.size);
391
- let offset = 0;
392
- while (offset < buffer.length) {
393
- const bytesRead = fs.readSync(fd, buffer, offset, buffer.length - offset, null);
394
- if (bytesRead <= 0) return undefined;
395
- offset += bytesRead;
396
- }
397
- const value: unknown = JSON.parse(buffer.toString("utf-8"));
398
- return value && typeof value === "object" && !Array.isArray(value) ? value as Record<string, unknown> : undefined;
399
- } finally {
400
- if (fd !== undefined) fs.closeSync(fd);
401
- }
402
- }
403
-
404
- function isSubagentDetails(value: unknown): value is Details {
405
- if (!value || typeof value !== "object") return false;
406
- const details = value as { mode?: unknown; results?: unknown };
407
- return typeof details.mode === "string" && Array.isArray(details.results);
408
- }
409
-
410
- function detailsFromSessionEntry(entry: unknown): Details | undefined {
411
- if (!entry || typeof entry !== "object") return undefined;
412
- const record = entry as { type?: unknown; customType?: unknown; details?: unknown; message?: unknown };
413
- if (record.type === "custom_message" && record.customType === SLASH_RESULT_TYPE) {
414
- const details = resolveSlashMessageDetails(record.details)?.result.details;
415
- return isSubagentDetails(details) ? details : undefined;
416
- }
417
- if (record.type !== "message" || !record.message || typeof record.message !== "object") return undefined;
418
- const message = record.message as { role?: unknown; toolName?: unknown; details?: unknown };
419
- if (message.role !== "toolResult" || (message.toolName !== "subagent" && message.toolName !== "bg_wait")) return undefined;
420
- return isSubagentDetails(message.details) ? message.details : undefined;
421
- }
422
-
423
- function metadataUsage(
424
- artifactsDirs: string[],
425
- input: { runId: string; agent: string },
426
- ): Usage | undefined {
427
- if (!/^[A-Za-z0-9._-]+$/.test(input.runId)) return undefined;
428
- for (const artifactsDir of artifactsDirs) {
429
- for (const index of [0, undefined] as const) {
430
- const metadataPath = getArtifactPaths(artifactsDir, input.runId, input.agent, index).metadataPath;
431
- try {
432
- const metadata = readUsageMetadata(metadataPath);
433
- if (!metadata) continue;
434
- if (metadata.runId !== input.runId || metadata.agent !== input.agent) continue;
435
- const usage = usageFromValue(metadata.usage);
436
- if (usage && usageHasValue(usage)) return usage;
437
- } catch (error) {
438
- if ((error as NodeJS.ErrnoException).code !== "ENOENT") console.error(`Failed to read subagent usage metadata '${metadataPath}':`, error);
439
- }
440
- }
441
- }
442
- return undefined;
443
- }
444
-
445
- function formatCostUsage(label: string, usage: Usage): string {
446
- const extras = [
447
- usage.cacheRead ? `cache read ${formatTokens(usage.cacheRead)}` : "",
448
- usage.cacheWrite ? `cache write ${formatTokens(usage.cacheWrite)}` : "",
449
- usage.turns ? `${usage.turns} turn${usage.turns === 1 ? "" : "s"}` : "",
450
- ].filter(Boolean);
451
- return `${label}: ↑${formatTokens(usage.input)} ↓${formatTokens(usage.output)} $${usage.cost.toFixed(4)}${extras.length ? ` (${extras.join(", ")})` : ""}`;
452
- }
453
-
454
- function buildSubagentCostReport(ctx: ExtensionContext, state: SubagentState): string {
455
- const parent = emptyUsage();
456
- const childTotal = emptyUsage();
457
- const total = emptyUsage();
458
- const children: Array<{ label: string; usage: Usage; sessionFile?: string }> = [];
459
- const seenChildren = new Set<string>();
460
- const workflowRunIds = new Set<string>();
461
- let unresolvedAsyncChildren = 0;
462
-
463
- const addChild = (input: { agent?: string; runId?: string; usage?: Usage; sessionFile?: string }): boolean => {
464
- if (!input.usage || !usageHasValue(input.usage)) return false;
465
- const identity = input.runId ? `run:${input.runId}` : input.sessionFile ? `session:${input.sessionFile}` : undefined;
466
- if (identity && seenChildren.has(identity)) return true;
467
- if (identity) seenChildren.add(identity);
468
- const usage = { ...input.usage };
469
- children.push({
470
- label: `Child ${children.length + 1} (${input.agent ?? "unknown"})`,
471
- usage,
472
- ...(input.sessionFile ? { sessionFile: input.sessionFile } : {}),
473
- });
474
- addUsage(childTotal, usage);
475
- return true;
476
- };
477
-
478
- for (const entry of ctx.sessionManager.getBranch()) {
479
- const message = entry.type === "message" ? (entry as { message?: unknown }).message : undefined;
480
- const parentUsage = assistantUsageFromMessage(message) ?? compactionUsageFromEntry(entry);
481
- if (parentUsage) addUsage(parent, parentUsage);
482
- const details = detailsFromSessionEntry(entry);
483
- if (!details) continue;
484
- if (details.mode === "workflow" && details.runId) workflowRunIds.add(details.runId);
485
- for (const result of details.results) {
486
- const resultRunId = (result as SingleResult & { runId?: unknown }).runId;
487
- addChild({ agent: result.agent, runId: typeof resultRunId === "string" ? resultRunId : undefined, usage: usageFromValue(result.usage), sessionFile: result.sessionFile });
488
- }
489
- for (const completion of details.completions ?? []) {
490
- if (completion.mode === "workflow") workflowRunIds.add(completion.runId);
491
- for (const result of completion.results ?? []) {
492
- addChild({ agent: result.agent, runId: result.runId, usage: usageFromValue(result.usage), sessionFile: result.sessionFile });
493
- }
494
- }
495
- }
496
-
497
- let sessionFile: string | null = null;
498
- try {
499
- sessionFile = ctx.sessionManager.getSessionFile() ?? null;
500
- } catch { /* an unpersisted session can still report direct child usage */ }
501
- const artifactsDirs = new Set<string>();
502
- const addArtifactsDir = (cwd: string | undefined): void => {
503
- try {
504
- artifactsDirs.add(getArtifactsDir(sessionFile, cwd, state.artifactDirPreference));
505
- } catch { /* invalid or unavailable project roots are ignored */ }
506
- };
507
- addArtifactsDir(ctx.cwd);
508
- addArtifactsDir(state.baseCwd);
509
-
510
- for (const workflowRunId of workflowRunIds) {
511
- try {
512
- const status = readStatus(path.join(DIRS.async, workflowRunId));
513
- addArtifactsDir(status?.cwd);
514
- const receipt = readWorkflowReceipt(DIRS.async, workflowRunId);
515
- const summaryChildren = new Map((receipt.workflowChildren?.children ?? []).map((child) => [child.childId, child]));
516
- const refsByRunId = new Map<string, { runId: string; agent: string }>();
517
- const addRef = (runId: string | undefined, agent: string | undefined): void => {
518
- if (!runId || !agent || refsByRunId.has(runId)) return;
519
- refsByRunId.set(runId, { runId, agent });
520
- };
521
- for (const [key, entry] of Object.entries(receipt.entries)) {
522
- const summaryChild = summaryChildren.get(key);
523
- const runIds = entry.continuation?.runIds?.length
524
- ? entry.continuation.runIds
525
- : entry.latestRunId ? [entry.latestRunId] : summaryChild?.runId ? [summaryChild.runId] : [];
526
- for (const runId of runIds) addRef(runId, entry.agent ?? summaryChild?.agent);
527
- }
528
- for (const child of receipt.workflowChildren?.children ?? []) {
529
- if (!Object.hasOwn(receipt.entries, child.childId)) addRef(child.runId, child.agent);
530
- }
531
- const refs = [...refsByRunId.values()];
532
- for (const ref of refs) {
533
- if (seenChildren.has(`run:${ref.runId}`)) continue;
534
- const usage = metadataUsage([...artifactsDirs], ref);
535
- if (!usage || !addChild({ ...ref, usage })) unresolvedAsyncChildren += 1;
536
- }
537
- } catch (error) {
538
- if ((error as NodeJS.ErrnoException).code !== "ENOENT") console.error(`Failed to resolve async subagent usage for '${workflowRunId}':`, error);
539
- }
540
- }
541
-
542
- addUsage(total, parent);
543
- addUsage(total, childTotal);
544
- const lines = [
545
- "Subagent cost",
546
- "",
547
- formatCostUsage("Parent", parent),
548
- ];
549
- if (children.length === 0) {
550
- lines.push("No subagent child usage found in this session.");
551
- } else {
552
- for (const child of children) {
553
- lines.push(formatCostUsage(child.label, child.usage));
554
- if (child.sessionFile) lines.push(` Session: ${child.sessionFile}`);
555
- }
556
- }
557
- if (unresolvedAsyncChildren > 0) lines.push(`Async child usage unavailable: ${unresolvedAsyncChildren}.`);
558
- lines.push("────────────────────────────", formatCostUsage("Children", childTotal), formatCostUsage("Total", total));
559
- return lines.join("\n");
560
- }
561
-
562
- function parseSingleRequiredArg(args: string, usage: string): { ok: true; value: string } | { ok: false; message: string } {
563
- const parts = args.trim().split(/\s+/).filter(Boolean);
564
- if (parts.length !== 1) return { ok: false, message: usage };
565
- return { ok: true, value: parts[0]! };
566
- }
567
-
568
- function getProfileWorkerModel(profile: { subagents?: { agentOverrides?: Record<string, { model?: string }> } }): string | undefined {
569
- const model = profile.subagents?.agentOverrides?.worker?.model;
570
- return typeof model === "string" && model.trim() ? model.trim() : undefined;
571
- }
572
-
573
- function isStaleExtensionContextError(error: unknown): boolean {
574
- return error instanceof Error
575
- && (error.message.includes("This extension ctx is stale")
576
- || error.message.includes("Extension context no longer active"));
577
- }
578
-
579
- function slashHasUI(ctx: ExtensionContext): boolean | undefined {
580
- try {
581
- return ctx.hasUI;
582
- } catch (error) {
583
- if (isStaleExtensionContextError(error)) return undefined;
584
- throw error;
585
- }
586
- }
587
-
588
-
589
- async function requestSlashRun(
590
- pi: ExtensionAPI,
591
- ctx: ExtensionContext,
592
- requestId: string,
593
- params: SubagentParamsLike,
594
- signal?: AbortSignal,
595
- ): Promise<SlashSubagentResponse> {
596
- return new Promise((resolve, reject) => {
597
- let done = false;
598
- let started = false;
599
- let startTimeout: ReturnType<typeof setTimeout> | undefined;
600
-
601
- const onStarted = (data: unknown) => {
602
- if (done || signal?.aborted || !data || typeof data !== "object") return;
603
- if ((data as { requestId?: unknown }).requestId !== requestId) return;
604
- started = true;
605
- if (startTimeout) clearTimeout(startTimeout);
606
- try {
607
- if (ctx.hasUI) ctx.ui.setStatus("subagent-slash", "running...");
608
- } catch (error) {
609
- if (isStaleExtensionContextError(error)) {
610
- finish(() => reject(error));
611
- return;
612
- }
613
- throw error;
614
- }
615
- };
616
-
617
- const onResponse = (data: unknown) => {
618
- if (done || signal?.aborted || !data || typeof data !== "object") return;
619
- const response = data as Partial<SlashSubagentResponse>;
620
- if (response.requestId !== requestId) return;
621
- if (startTimeout) clearTimeout(startTimeout);
622
- finish(() => resolve(response as SlashSubagentResponse));
623
- };
624
-
625
- const onUpdate = (data: unknown) => {
626
- if (done || signal?.aborted || !data || typeof data !== "object") return;
627
- const update = data as SlashSubagentUpdate;
628
- if (update.requestId !== requestId) return;
629
- applySlashUpdate(requestId, update);
630
- try {
631
- if (!ctx.hasUI) return;
632
- const tool = update.currentTool ? ` ${update.currentTool}` : "";
633
- const count = update.toolCount ?? 0;
634
- const liveDetailKey = keyText("app.tools.expand");
635
- ctx.ui.setStatus("subagent-slash", `${count} tools${tool} | ${liveDetailKey} live detail`);
636
- } catch (error) {
637
- if (isStaleExtensionContextError(error)) {
638
- finish(() => reject(error));
639
- return;
640
- }
641
- throw error;
642
- }
643
- };
644
-
645
- const onTerminalInput = ctx.hasUI
646
- ? ctx.ui.onTerminalInput((input) => {
647
- if (!matchesKey(input, Key.escape)) return undefined;
648
- pi.events.emit(SLASH_SUBAGENT_CANCEL_EVENT, { requestId });
649
- finish(() => reject(new Error("Cancelled")));
650
- return { consume: true };
651
- })
652
- : undefined;
653
-
654
- const unsubStarted = pi.events.on(SLASH_SUBAGENT_STARTED_EVENT, onStarted);
655
- const unsubResponse = pi.events.on(SLASH_SUBAGENT_RESPONSE_EVENT, onResponse);
656
- const unsubUpdate = pi.events.on(SLASH_SUBAGENT_UPDATE_EVENT, onUpdate);
657
-
658
- let onAbort: () => void;
659
- const finish = (next: () => void) => {
660
- if (done) return;
661
- done = true;
662
- if (startTimeout) clearTimeout(startTimeout);
663
- unsubStarted();
664
- unsubResponse();
665
- unsubUpdate();
666
- try {
667
- onTerminalInput?.();
668
- } catch (error) {
669
- if (!isStaleExtensionContextError(error)) throw error;
670
- }
671
- signal?.removeEventListener("abort", onAbort);
672
- next();
673
- };
674
- onAbort = () => finish(() => reject(new Error("Slash subagent request canceled during session replacement or reload.")));
675
- startTimeout = setTimeout(() => {
676
- finish(() => reject(new Error(
677
- "Slash subagent bridge did not start within 15s. Ensure the extension is loaded correctly.",
678
- )));
679
- }, 15_000);
680
-
681
- if (signal?.aborted) {
682
- onAbort();
683
- return;
684
- }
685
- signal?.addEventListener("abort", onAbort, { once: true });
686
- try {
687
- pi.events.emit(SLASH_SUBAGENT_REQUEST_EVENT, { requestId, params, ctx });
688
- } catch (error) {
689
- if (isStaleExtensionContextError(error)) {
690
- finish(() => reject(error));
691
- return;
692
- }
693
- throw error;
694
- }
695
-
696
- // Bridge emits STARTED synchronously during REQUEST emit.
697
- // If not started, no bridge received the request.
698
- if (!started && done) return;
699
- if (!started) {
700
- finish(() => reject(new Error(
701
- "No slash subagent bridge responded. Ensure the subagent extension is loaded correctly.",
702
- )));
703
- }
704
- });
705
- }
706
-
707
- function extractSlashMessageText(content: string | Array<{ type?: string; text?: string }>): string {
708
- if (typeof content === "string") return content;
709
- if (!Array.isArray(content)) return "";
710
- return content
711
- .filter((part): part is { type: "text"; text: string } => part?.type === "text" && typeof part.text === "string")
712
- .map((part) => part.text)
713
- .join("\n");
714
- }
715
-
716
- function formatExportPathList(paths: string[]): string {
717
- return paths.map((file) => `- \`${file}\``).join("\n");
718
- }
719
-
720
- function collectResultPaths(results: SingleResult[], getPath: (result: SingleResult) => string | undefined): string[] {
721
- return results
722
- .map(getPath)
723
- .filter((file): file is string => typeof file === "string" && file.length > 0);
724
- }
725
-
726
- function buildSlashExportText(response: SlashSubagentResponse): string {
727
- const output = extractSlashMessageText(response.result.content) || response.errorText || "(no output)";
728
- const results = response.result.details?.results ?? [];
729
- const sessionFiles = collectResultPaths(results, (result) => result.sessionFile);
730
- const savedOutputs = collectResultPaths(results, (result) => result.savedOutputPath);
731
- const artifactOutputs = collectResultPaths(results, (result) => result.artifactPaths?.outputPath);
732
- const sections = ["## Subagent result", output];
733
- if (sessionFiles.length > 0) sections.push("## Child session exports", formatExportPathList(sessionFiles));
734
- if (savedOutputs.length > 0) sections.push("## Saved outputs", formatExportPathList(savedOutputs));
735
- if (artifactOutputs.length > 0) sections.push("## Artifact outputs", formatExportPathList(artifactOutputs));
736
- return sections.join("\n\n");
737
- }
738
-
739
- function persistSlashSessionSnapshot(ctx: ExtensionContext): void {
740
- try {
741
- if (!ctx.sessionManager) return;
742
- const sessionManager = ctx.sessionManager as typeof ctx.sessionManager & {
743
- _rewriteFile?: () => void;
744
- flushed?: boolean;
745
- };
746
- const sessionFile = sessionManager.getSessionFile();
747
- if (!sessionFile || typeof sessionManager._rewriteFile !== "function") return;
748
- fs.mkdirSync(path.dirname(sessionFile), { recursive: true });
749
- sessionManager._rewriteFile();
750
- sessionManager.flushed = true;
751
- } catch (error) {
752
- console.error("Failed to persist slash session snapshot for export:", error);
753
- }
754
- }
755
-
756
- async function runSlashSubagent(
757
- pi: ExtensionAPI,
758
- ctx: ExtensionContext,
759
- params: SubagentParamsLike,
760
- signal?: AbortSignal,
761
- ): Promise<void> {
762
- if (signal?.aborted) return;
763
- const initialHasUI = slashHasUI(ctx);
764
- if (initialHasUI === undefined) return;
765
- try {
766
- if (initialHasUI) ctx.ui.setToolsExpanded(false);
767
- } catch (error) {
768
- if (isStaleExtensionContextError(error)) return;
769
- throw error;
770
- }
771
- const requestId = randomUUID();
772
- const initialDetails = buildSlashInitialResult(requestId, params);
773
- const initialText = extractSlashMessageText(initialDetails.result.content) || "Running subagent...";
774
- try {
775
- pi.sendMessage({
776
- customType: SLASH_RESULT_TYPE,
777
- content: initialText,
778
- display: true,
779
- details: initialDetails,
780
- });
781
- } catch (error) {
782
- if (isStaleExtensionContextError(error)) return;
783
- throw error;
784
- }
785
- persistSlashSessionSnapshot(ctx);
786
-
787
- try {
788
- const response = await requestSlashRun(pi, ctx, requestId, params, signal);
789
- if (signal?.aborted) return;
790
- const hasUI = slashHasUI(ctx);
791
- if (hasUI === undefined) return;
792
- const finalDetails = finalizeSlashResult(response);
793
- pi.sendMessage({
794
- customType: SLASH_RESULT_TYPE,
795
- content: buildSlashExportText(response),
796
- display: !hasUI,
797
- details: finalDetails,
798
- });
799
- persistSlashSessionSnapshot(ctx);
800
- if (hasUI) {
801
- ctx.ui.setStatus("subagent-slash", undefined);
802
- }
803
- if (response.isError && hasUI) {
804
- ctx.ui.notify(response.errorText || "Subagent failed", "error");
805
- }
806
- } catch (error) {
807
- if (signal?.aborted || isStaleExtensionContextError(error)) return;
808
- const message = error instanceof Error ? error.message : String(error);
809
- const hasUI = slashHasUI(ctx);
810
- if (hasUI === undefined) return;
811
- const failedDetails = failSlashResult(requestId, params, message);
812
- pi.sendMessage({
813
- customType: SLASH_RESULT_TYPE,
814
- content: `## Subagent result\n\n${message}`,
815
- display: !hasUI,
816
- details: failedDetails,
817
- });
818
- persistSlashSessionSnapshot(ctx);
819
- if (hasUI) {
820
- ctx.ui.setStatus("subagent-slash", undefined);
821
- }
822
- if (message === "Cancelled") {
823
- if (hasUI) ctx.ui.notify("Cancelled", "warning");
824
- return;
825
- }
826
- if (hasUI) ctx.ui.notify(message, "error");
827
- }
828
- }
829
-
830
- function slashRunWorkflowScript(key: string, child: Record<string, unknown>): string {
831
- return `return runs.run(${JSON.stringify(key)}, ${JSON.stringify(child)})`;
832
- }
833
-
834
- export function registerSlashCommands(
835
- pi: ExtensionAPI,
836
- state: SubagentState,
837
- options: { fleetKeybindings?: FleetKeybindingsConfig; foregroundDetachShortcut?: string } = {},
838
- ): { dispose: () => void } {
839
- let fleetOpen = false;
840
- let disposed = false;
841
- const pendingRequests = new Set<AbortController>();
842
- const runCommand = (ctx: ExtensionContext, params: SubagentParamsLike): Promise<void> => {
843
- if (disposed) return Promise.resolve();
844
- const controller = new AbortController();
845
- pendingRequests.add(controller);
846
- return runSlashSubagent(pi, ctx, params, controller.signal).finally(() => pendingRequests.delete(controller));
847
- };
848
- const launchCommand = (ctx: ExtensionContext, params: SubagentParamsLike): void => {
849
- void runCommand(ctx, params);
850
- };
851
- const showFleet = async (ctx: ExtensionContext) => {
852
- state.lastUiContext = ctx;
853
- if (!ctx.hasUI) {
854
- await runCommand(ctx, { action: "status", view: "fleet" });
855
- return;
856
- }
857
- if (fleetOpen) {
858
- ctx.ui.notify("Subagent fleet inspector is already open.", "info");
859
- return;
860
- }
861
- fleetOpen = true;
862
- try {
863
- await openSubagentFleet(ctx, state, { asyncDirRoot: DIRS.async, inspectorPlugins: createBuiltinInspectorPlugins(), resultsDir: DIRS.results, fleetKeybindings: options.fleetKeybindings });
864
- } finally {
865
- fleetOpen = false;
866
- }
867
- };
868
-
869
- pi.registerCommand("subagents", {
870
- description: "Administer subagents: inspect metadata and update models, thinking, or prompts",
871
- handler: async (args, ctx) => {
872
- await openSubagentsAdmin(pi, ctx, args);
873
- },
874
- });
875
-
876
- pi.registerCommand("run", {
877
- description: "Run one subagent through workflowScript: /run agent[output=file] [task] [--bg] [--fork]",
878
- getArgumentCompletions: makeAgentCompletions(pi, state),
879
- handler: async (args, ctx) => {
880
- const { args: cleanedArgs, bg, fork } = extractExecutionFlags(args);
881
- const input = cleanedArgs.trim();
882
- const firstSpace = input.indexOf(" ");
883
- if (!input) { ctx.ui.notify("Usage: /run <agent> [task] [--bg] [--fork]", "error"); return; }
884
- const { name: agentName, config: inline } = parseAgentToken(firstSpace === -1 ? input : input.slice(0, firstSpace));
885
- const task = firstSpace === -1 ? "" : input.slice(firstSpace + 1).trim();
886
-
887
- if (!state.baseCwd) { ctx.ui.notify("Subagent session cwd is not initialized yet", "error"); return; }
888
- const discovered = discoverSlashAgents(pi, state.baseCwd, "both");
889
- const resolvedAgent = resolveAgentName(agentName, discovered.agents);
890
- const candidates = resolvedAgent.error
891
- ? discovered.agents.filter((agent) => resolveAgentName(agentName, [agent]).agent)
892
- : resolvedAgent.agent;
893
- const diagnostic = findBlockingAgentDiagnostic(agentName, candidates, discovered.agentDiagnostics);
894
- if (diagnostic || resolvedAgent.error || !resolvedAgent.agent) {
895
- ctx.ui.notify(diagnostic ? `Agent '${agentName}' has invalid configuration: ${diagnostic.error}` : resolvedAgent.error ?? formatUnknownAgentError(agentName, discovered.unknownAgentDiagnosticContext), "error");
896
- return;
897
- }
898
-
899
- let finalTask = task;
900
- if (inline.reads && Array.isArray(inline.reads) && inline.reads.length > 0) {
901
- const existingReads = inline.reads.filter((read) => resolveExistingReadPaths([read], state.baseCwd).length > 0);
902
- if (existingReads.length > 0) finalTask = `[Read from: ${existingReads.join(", ")}]\n\n${finalTask}`;
903
- }
904
- const child: Record<string, unknown> = { agent: agentName, task: finalTask, agentScope: "both" };
905
- if (inline.output !== undefined) child.output = inline.output;
906
- if (inline.outputMode !== undefined) child.outputMode = inline.outputMode;
907
- if (inline.skill !== undefined) child.skill = inline.skill;
908
- if (inline.model) child.model = inline.model;
909
- if (fork) child.context = "fork";
910
- launchCommand(ctx, { workflowScript: slashRunWorkflowScript("run", child), async: bg ? true : false });
911
- },
912
- });
913
-
914
- pi.registerCommand("subagent-cost", {
915
- description: "Show parent and subagent child usage cost for this session",
916
- handler: async (_args, ctx) => {
917
- sendSlashText(pi, buildSubagentCostReport(ctx, state));
918
- },
919
- });
920
-
921
- pi.registerCommand("subagents-doctor", {
922
- description: "Show subagent diagnostics",
923
- handler: async (_args, ctx) => {
924
- await runCommand(ctx, { action: "doctor" });
925
- },
926
- });
927
-
928
- pi.registerCommand("subagents-inspect-rpc", {
929
- description: "Host integration bridge: answer an async child inspection request with a correlated widget payload (no model turn)",
930
- handler: async (args, ctx) => {
931
- if (ctx.mode === "tui") {
932
- ctx.ui.notify("Inspection replies are emitted only on RPC surfaces. Use /subagents or subagent({ action: \"status\", view: \"transcript\" }) interactively.", "info");
933
- return;
934
- }
935
- if (!ctx.hasUI) return;
936
- const reply = handleInspectRpcArgs(args, { state });
937
- // Emit-then-retract in one handler: stdio delivers the two widget
938
- // updates in order, the host buffers the payload by requestId, and
939
- // the dedicated key never accumulates visible state.
940
- ctx.ui.setWidget(INSPECT_WIDGET_KEY, encodeInspectReply(reply));
941
- ctx.ui.setWidget(INSPECT_WIDGET_KEY, undefined);
942
- },
943
- });
944
-
945
- pi.registerCommand("subagents-guide", {
946
- description: "Show a packaged subagents guide topic",
947
- getArgumentCompletions: (prefix) => prefix.includes(" ") ? null : SUBAGENT_GUIDE_TOPICS
948
- .filter((topic) => topic.startsWith(prefix))
949
- .map((topic) => ({ value: topic, label: topic })),
950
- handler: async (args, ctx) => {
951
- const topic = args.trim();
952
- if (topic.includes(" ")) {
953
- ctx.ui.notify("Usage: /subagents-guide [topic]", "error");
954
- return;
955
- }
956
- await runCommand(ctx, { action: "guide", ...(topic ? { topic } : {}) });
957
- },
958
- });
959
-
960
- pi.registerCommand("subagents-refine", {
961
- description: "Generate a bounded project-local refinement overlay for one subagent",
962
- getArgumentCompletions: makeAgentCompletions(pi, state),
963
- handler: async (args, ctx) => {
964
- const parts = args.trim().split(/\s+/).filter(Boolean);
965
- if (parts.length !== 1) {
966
- ctx.ui.notify("Usage: /subagents-refine <agent>", "error");
967
- return;
968
- }
969
- await runCommand(ctx, { action: "refine", agent: parts[0] });
970
- },
971
- });
972
-
973
- pi.registerCommand("subagents-fleet", {
974
- description: "Open the live subagent fleet inspector",
975
- handler: async (_args, ctx) => showFleet(ctx),
976
- });
977
-
978
- const detachForegroundRun = (args: string, ctx: ExtensionContext): void => {
979
- const id = args.trim();
980
- let control: ReturnType<typeof selectForegroundDetachControl>;
981
- try {
982
- control = selectForegroundDetachControl(state, id);
983
- } catch (error) {
984
- ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
985
- return;
986
- }
987
- if (!control) {
988
- ctx.ui.notify(id ? `No active foreground run found for '${id}'.` : "No active foreground single-subagent run to detach.", "info");
989
- return;
990
- }
991
- if (control.mode !== "single") {
992
- ctx.ui.notify("/subagents-detach currently supports single-subagent runs only.", "error");
993
- return;
994
- }
995
- if (!control.detach?.()) {
996
- ctx.ui.notify(`Foreground run ${control.runId} is not currently detachable.`, "info");
997
- return;
998
- }
999
- sendSlashText(pi, `Detached foreground run ${control.runId} without terminating its child. Use subagent({ action: "status", id: ${JSON.stringify(control.runId)} }) or bg_wait({ id: ${JSON.stringify(control.runId)} }) to recover the eventual result. This does not daemonize the process or guarantee survival across Pi reload/restart.`);
1000
- };
1001
-
1002
- pi.registerCommand("subagents-detach", {
1003
- description: "Detach the active foreground single-subagent run without terminating it",
1004
- handler: async (args, ctx) => detachForegroundRun(args, ctx),
1005
- });
1006
-
1007
- if (options.foregroundDetachShortcut) {
1008
- pi.registerShortcut(options.foregroundDetachShortcut as KeyId, {
1009
- description: "Detach the active foreground subagent and keep it running in the background",
1010
- handler: async (ctx) => detachForegroundRun("", ctx),
1011
- });
1012
- }
1013
-
1014
- pi.registerCommand("subagents-stop", {
1015
- description: "Stop a current-session async subagent run, or one child of it with /subagents-stop <run-id> <child-id>",
1016
- handler: async (args, ctx) => {
1017
- const [id, childId, ...extra] = args.trim().split(/\s+/).filter(Boolean);
1018
- if (extra.length > 0) {
1019
- sendSlashText(pi, "Usage: /subagents-stop [run-id] [child-id]");
1020
- return;
1021
- }
1022
- if (id) {
1023
- await runCommand(ctx, childId ? { action: "stop", id, childId } : { action: "stop", id });
1024
- return;
1025
- }
1026
-
1027
- let targets: StopSelectorTarget[];
1028
- try {
1029
- targets = discoverStopTargets(ctx, state);
1030
- } catch (error) {
1031
- const message = error instanceof Error ? error.message : String(error);
1032
- ctx.ui.notify(message, "error");
1033
- return;
1034
- }
1035
- if (!ctx.hasUI) {
1036
- sendSlashText(pi, stopFallbackText(targets));
1037
- return;
1038
- }
1039
- if (targets.length === 0) {
1040
- ctx.ui.notify("No active current-session async runs or scheduled subagent runs to stop.", "info");
1041
- return;
1042
- }
1043
-
1044
- const result = await ctx.ui.custom<StopSelectorResult>(
1045
- (tui, theme, _kb, done) => new SubagentsStopSelector(tui, theme, targets, done),
1046
- { overlay: true, overlayOptions: { anchor: "center", width: 88, maxHeight: "80%" } },
1047
- );
1048
- if (!result?.confirmed || !result.target) return;
1049
- if (result.target.kind === "scheduled") {
1050
- await runCommand(ctx, { action: "schedule.pause", id: result.target.id });
1051
- return;
1052
- }
1053
- await runCommand(ctx, { action: "stop", id: result.target.id });
1054
- },
1055
- });
1056
-
1057
- pi.registerCommand("subagents-steer", {
1058
- description: "Steer a live async subagent run with a message, or one child of it with --child <child-id>",
1059
- handler: async (args, ctx) => {
1060
- const tokens = args.trim().split(/\s+/).filter(Boolean);
1061
- const usage = "Usage: /subagents-steer <run-id> [--child <child-id>] <message>";
1062
- const [id, ...rest] = tokens;
1063
- if (!id || id.startsWith("--")) {
1064
- sendSlashText(pi, usage);
1065
- return;
1066
- }
1067
- // Only the optional child selector is parsed as a flag. Everything
1068
- // after the run id (or selector) is free-form message text, including
1069
- // a leading token such as `--verbose`.
1070
- let childId: string | undefined;
1071
- let messageStart = 0;
1072
- if (rest[0] === "--child" && rest[1] && !rest[1].startsWith("--")) {
1073
- childId = rest[1];
1074
- messageStart = 2;
1075
- }
1076
- const message = rest.slice(messageStart).join(" ").trim();
1077
- if (!message) {
1078
- sendSlashText(pi, usage);
1079
- return;
1080
- }
1081
- let targetId = id;
1082
- let childIndex: number | undefined;
1083
- if (childId !== undefined) {
1084
- const sessionId = state.currentSessionId ?? ctx.sessionManager.getSessionId() ?? undefined;
1085
- const run = listAsyncRuns(DIRS.async, {
1086
- runId: id,
1087
- states: ["queued", "running", "paused"],
1088
- ...(sessionId ? { sessionId } : {}),
1089
- })[0];
1090
- const status = run ? readStatus(run.asyncDir) : null;
1091
- if (!run || !status) {
1092
- sendSlashText(pi, `No current-session async run found for '${id}'.`);
1093
- return;
1094
- }
1095
- const resolutionStatus = {
1096
- ...status,
1097
- steps: status.steps?.map((step, index) => ({ ...step, children: run.steps[index]?.children ?? step.children })),
1098
- };
1099
- const resolution = resolveAsyncStatusChild(resolutionStatus, childId, { includeNested: true });
1100
- if (!resolution.ok) {
1101
- sendSlashText(pi, resolution.message);
1102
- return;
1103
- }
1104
- if (resolution.child.nested) targetId = resolution.child.nested.id;
1105
- else if (resolution.child.step.runId) targetId = resolution.child.step.runId;
1106
- else childIndex = resolution.child.index;
1107
- }
1108
- await runCommand(ctx, {
1109
- action: "steer",
1110
- id: targetId,
1111
- message,
1112
- ...(childIndex !== undefined ? { index: childIndex } : {}),
1113
- // Host-style exact-child authority, matching the extension RPC
1114
- // nonRecoveringSteer guarantee: never swap the addressed child for
1115
- // a pause-and-revive replacement after a missed acknowledgment.
1116
- steeringRecovery: false,
1117
- });
1118
- },
1119
- });
1120
-
1121
- registerPromptWorkflowCommands({
1122
- pi,
1123
- run: async (params, ctx) => {
1124
- launchCommand(ctx, params);
1125
- },
1126
- });
1127
-
1128
- pi.registerCommand("subagents-models", {
1129
- description: "Show model mappings for discovered subagents",
1130
- getArgumentCompletions: makeAgentCompletions(pi, state),
1131
- handler: async (args, ctx) => {
1132
- const trimmed = args.trim();
1133
- if (!trimmed) {
1134
- await runCommand(ctx, { action: "models" });
1135
- return;
1136
- }
1137
- const parts = trimmed.split(/\s+/).filter(Boolean);
1138
- if (parts.length !== 1) {
1139
- ctx.ui.notify("Usage: /subagents-models [agent-name]", "error");
1140
- return;
1141
- }
1142
- await runCommand(ctx, { action: "models", agent: parts[0]! });
1143
- },
1144
- });
1145
-
1146
- pi.registerCommand("subagents-profiles", {
1147
- description: "List saved subagent profiles",
1148
- handler: async (_args, _ctx) => {
1149
- const profiles = listSubagentProfiles();
1150
- if (profiles.length === 0) {
1151
- sendSlashText(pi, "Subagent profiles\n\nNo subagent profiles found in ~/.pi/agent/profiles/pi-subagents/");
1152
- return;
1153
- }
1154
- sendSlashText(pi, `Subagent profiles\n\n${profiles.join("\n")}`);
1155
- },
1156
- });
1157
-
1158
- pi.registerCommand("subagents-load-profile", {
1159
- description: "Load a subagent profile into ~/.pi/agent/settings.json",
1160
- getArgumentCompletions: (prefix) => {
1161
- if (prefix.includes(" ")) return null;
1162
- return listSubagentProfiles()
1163
- .filter((name) => name.startsWith(prefix))
1164
- .map((name) => ({ value: name, label: name }));
1165
- },
1166
- handler: async (args, ctx) => {
1167
- const parsed = parseSingleRequiredArg(args, "Usage: /subagents-load-profile <name>");
1168
- if (parsed.ok === false) {
1169
- ctx.ui.notify(parsed.message, "error");
1170
- return;
1171
- }
1172
- try {
1173
- await withSlashStatus(ctx, `Loading profile ${parsed.value}…`, async () => {
1174
- const { profile } = readSubagentProfile(parsed.value);
1175
- const workerModel = getProfileWorkerModel(profile);
1176
- const result = applySubagentProfile(parsed.value);
1177
- const lines = [
1178
- `Loaded subagent profile: ${parsed.value}`,
1179
- `Profile: ${result.filePath}`,
1180
- `Updated: ${result.settingsPath}`,
1181
- ];
1182
-
1183
- if (workerModel && typeof pi.setModel === "function" && typeof ctx.modelRegistry?.find === "function" && typeof ctx.modelRegistry?.getAvailable === "function") {
1184
- const shouldSwitch = await ctx.ui.confirm(
1185
- "",
1186
- `Profile loaded. Also switch this session to the profile worker model?\n\n${workerModel}`,
1187
- );
1188
- if (shouldSwitch) {
1189
- const modelInfo = findModelInfo(workerModel, ctx.modelRegistry.getAvailable().map(toModelInfo));
1190
- const model = modelInfo ? ctx.modelRegistry.find(modelInfo.provider, modelInfo.id) : undefined;
1191
- if (!modelInfo || !model) {
1192
- lines.push(`Could not switch current session model: '${workerModel}' is not available in the current model registry.`);
1193
- } else {
1194
- const success = await pi.setModel(model);
1195
- if (success) lines.push(`Current session model switched to: ${modelInfo.fullId}`);
1196
- else lines.push(`Could not switch current session model to '${workerModel}': no API key or provider access is available.`);
1197
- }
1198
- }
1199
- } else if (workerModel) {
1200
- lines.push(`Profile worker model: ${workerModel}`);
1201
- }
1202
-
1203
- sendSlashText(pi, lines.join("\n"));
1204
- });
1205
- } catch (error) {
1206
- ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
1207
- }
1208
- },
1209
- });
1210
-
1211
- pi.registerCommand("subagents-refresh-provider-models", {
1212
- description: "Refresh the cached model catalog for one provider",
1213
- getArgumentCompletions: makeProviderCompletions(state),
1214
- handler: async (args, ctx) => {
1215
- const trimmed = args.trim();
1216
- const force = /(?:^|\s)--force$/.test(trimmed) || /(?:^|\s)force$/.test(trimmed);
1217
- const withoutForce = trimmed.replace(/(?:^|\s)(?:--force|force)$/, "").trim();
1218
- const parsed = parseSingleRequiredArg(withoutForce, "Usage: /subagents-refresh-provider-models <provider> [--force]");
1219
- if (parsed.ok === false) {
1220
- ctx.ui.notify(parsed.message, "error");
1221
- return;
1222
- }
1223
- try {
1224
- await withSlashStatus(ctx, `Refreshing provider models for ${parsed.value}…`, async () => {
1225
- const result = await refreshProviderModelCatalog(pi, ctx, parsed.value, { force, maxAgeDays: DEFAULT_PROVIDER_MODELS_MAX_AGE_DAYS });
1226
- const lines = [
1227
- "Provider model catalog",
1228
- `Provider: ${parsed.value}`,
1229
- `Status: ${result.reused ? "fresh cache reused" : "refreshed"}`,
1230
- `File: ${result.filePath}`,
1231
- `Models: ${result.catalog.models.length}`,
1232
- `Refreshed at: ${result.catalog.refreshedAt}`,
1233
- ];
1234
- if (result.heuristicFallbackCount > 0) {
1235
- lines.push(`Warning: ${result.heuristicFallbackCount} model${result.heuristicFallbackCount === 1 ? " was" : "s were"} classified with name heuristics fallback.`);
1236
- }
1237
- sendSlashText(pi, lines.join("\n"));
1238
- });
1239
- } catch (error) {
1240
- ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
1241
- }
1242
- },
1243
- });
1244
-
1245
- pi.registerCommand("subagents-generate-profiles", {
1246
- description: "Generate <provider>.quota and <provider>.quality subagent profiles",
1247
- getArgumentCompletions: makeProviderCompletions(state),
1248
- handler: async (args, ctx) => {
1249
- const parsed = parseSingleRequiredArg(args, "Usage: /subagents-generate-profiles <provider>");
1250
- if (parsed.ok === false) {
1251
- ctx.ui.notify(parsed.message, "error");
1252
- return;
1253
- }
1254
- try {
1255
- await withSlashStatus(ctx, `Generating profiles for ${parsed.value}…`, async () => {
1256
- const result = await generateProfilesForProvider(pi, ctx, parsed.value, { maxAgeDays: DEFAULT_PROVIDER_MODELS_MAX_AGE_DAYS });
1257
- const lines = [
1258
- "Generated subagent profiles",
1259
- `Provider: ${parsed.value}`,
1260
- `Catalog: ${result.catalogPath}`,
1261
- `Quota: ${result.quotaPath}`,
1262
- ` cheap=${result.quotaModels.cheap}`,
1263
- ` medium=${result.quotaModels.medium}`,
1264
- ` strong=${result.quotaModels.strong}`,
1265
- `Quality: ${result.qualityPath}`,
1266
- ` cheap=${result.qualityModels.cheap}`,
1267
- ` medium=${result.qualityModels.medium}`,
1268
- ` strong=${result.qualityModels.strong}`,
1269
- ];
1270
- if (result.selectedHeuristicFallbackCount > 0) {
1271
- lines.push(`Warning: generated profiles depend on heuristic-only classification for ${result.selectedHeuristicFallbackCount} selected model${result.selectedHeuristicFallbackCount === 1 ? "" : "s"}.`);
1272
- } else if (result.heuristicFallbackCount > 0) {
1273
- lines.push(`Warning: provider catalog still contains ${result.heuristicFallbackCount} heuristic-classified model${result.heuristicFallbackCount === 1 ? "" : "s"}.`);
1274
- }
1275
- sendSlashText(pi, lines.join("\n"));
1276
- });
1277
- } catch (error) {
1278
- ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
1279
- }
1280
- },
1281
- });
1282
-
1283
- pi.registerCommand("subagents-check-profile", {
1284
- description: "Check whether a saved profile still points to usable models",
1285
- getArgumentCompletions: (prefix) => {
1286
- if (prefix.includes(" ")) return null;
1287
- return listSubagentProfiles()
1288
- .filter((name) => name.startsWith(prefix))
1289
- .map((name) => ({ value: name, label: name }));
1290
- },
1291
- handler: async (args, ctx) => {
1292
- const parsed = parseSingleRequiredArg(args, "Usage: /subagents-check-profile <name>");
1293
- if (parsed.ok === false) {
1294
- ctx.ui.notify(parsed.message, "error");
1295
- return;
1296
- }
1297
- try {
1298
- await withSlashStatus(ctx, `Checking profile ${parsed.value}…`, async () => {
1299
- const result = await checkSubagentProfile(pi, ctx, parsed.value);
1300
- const lines = [
1301
- "Subagent profile check",
1302
- `Profile: ${result.profileName}`,
1303
- `File: ${result.filePath}`,
1304
- "",
1305
- ...result.results.map((entry) => `${entry.agent} → ${entry.model} — registry ${entry.inRegistry ? "ok" : "missing"}; probe ${entry.probe.status}${entry.probe.message ? ` (${entry.probe.message.split(/\r?\n/, 1)[0]})` : ""}`),
1306
- ];
1307
- sendSlashText(pi, lines.join("\n"));
1308
- });
1309
- } catch (error) {
1310
- ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
1311
- }
1312
- },
1313
- });
1314
-
1315
- return {
1316
- dispose: () => {
1317
- if (disposed) return;
1318
- disposed = true;
1319
- // A reload revokes the command context; do not let delayed responses
1320
- // resume a command against the old Pi context.
1321
- for (const controller of pendingRequests) controller.abort();
1322
- pendingRequests.clear();
1323
- },
1324
- };
1325
- }