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