pi-subagents 0.69.0 → 0.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1448) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/agents/reviewer.md +3 -2
  3. package/docs/agents.md +6 -2
  4. package/docs/configuration.md +1 -1
  5. package/docs/extension-api.md +1 -1
  6. package/docs/models.md +3 -1
  7. package/docs/observability.md +6 -0
  8. package/docs/watchdog.md +2 -0
  9. package/docs/workflows.md +6 -2
  10. package/index.d.ts +3 -0
  11. package/index.d.ts.map +1 -0
  12. package/index.js +10 -0
  13. package/index.js.map +1 -0
  14. package/package.json +89 -73
  15. package/runner-peer-loader.mjs +4 -7
  16. package/runner-peer-preload.mjs +5 -7
  17. package/skills/pi-subagents/references/prompting-and-roles.md +2 -2
  18. package/src/agents/advertised-agent-prompt.d.ts +8 -0
  19. package/src/agents/advertised-agent-prompt.d.ts.map +1 -0
  20. package/src/agents/advertised-agent-prompt.js +77 -0
  21. package/src/agents/advertised-agent-prompt.js.map +1 -0
  22. package/src/agents/agent-management.d.ts +27 -0
  23. package/src/agents/agent-management.d.ts.map +1 -0
  24. package/src/agents/agent-management.js +1528 -0
  25. package/src/agents/agent-management.js.map +1 -0
  26. package/src/agents/agent-memory.d.ts +49 -0
  27. package/src/agents/agent-memory.d.ts.map +1 -0
  28. package/src/agents/agent-memory.js +349 -0
  29. package/src/agents/agent-memory.js.map +1 -0
  30. package/src/agents/agent-refinements.d.ts +100 -0
  31. package/src/agents/agent-refinements.d.ts.map +1 -0
  32. package/src/agents/agent-refinements.js +569 -0
  33. package/src/agents/agent-refinements.js.map +1 -0
  34. package/src/agents/agent-scope.d.ts +3 -0
  35. package/src/agents/agent-scope.d.ts.map +1 -0
  36. package/src/agents/agent-scope.js +6 -0
  37. package/src/agents/agent-scope.js.map +1 -0
  38. package/src/agents/agent-selection.d.ts +3 -0
  39. package/src/agents/agent-selection.d.ts.map +1 -0
  40. package/src/agents/agent-selection.js +23 -0
  41. package/src/agents/agent-selection.js.map +1 -0
  42. package/src/agents/agent-serializer.d.ts +8 -0
  43. package/src/agents/agent-serializer.d.ts.map +1 -0
  44. package/src/agents/agent-serializer.js +200 -0
  45. package/src/agents/agent-serializer.js.map +1 -0
  46. package/src/agents/agents.d.ts +313 -0
  47. package/src/agents/agents.d.ts.map +1 -0
  48. package/src/agents/agents.js +2622 -0
  49. package/src/agents/agents.js.map +1 -0
  50. package/src/agents/builtin-names.d.ts +2 -0
  51. package/src/agents/builtin-names.d.ts.map +1 -0
  52. package/src/agents/builtin-names.js +17 -0
  53. package/src/agents/builtin-names.js.map +1 -0
  54. package/src/agents/chain-serializer.d.ts +7 -0
  55. package/src/agents/chain-serializer.d.ts.map +1 -0
  56. package/src/agents/chain-serializer.js +319 -0
  57. package/src/agents/chain-serializer.js.map +1 -0
  58. package/src/agents/frontmatter.d.ts +16 -0
  59. package/src/agents/frontmatter.d.ts.map +1 -0
  60. package/src/agents/frontmatter.js +142 -0
  61. package/src/agents/frontmatter.js.map +1 -0
  62. package/src/agents/identity.d.ts +8 -0
  63. package/src/agents/identity.d.ts.map +1 -0
  64. package/src/agents/identity.js +30 -0
  65. package/src/agents/identity.js.map +1 -0
  66. package/src/agents/proactive-skills.d.ts +35 -0
  67. package/src/agents/proactive-skills.d.ts.map +1 -0
  68. package/src/agents/proactive-skills.js +154 -0
  69. package/src/agents/proactive-skills.js.map +1 -0
  70. package/src/agents/runtime-agent-events.d.ts +27 -0
  71. package/src/agents/runtime-agent-events.d.ts.map +1 -0
  72. package/src/agents/runtime-agent-events.js +53 -0
  73. package/src/agents/runtime-agent-events.js.map +1 -0
  74. package/src/agents/runtime-agent-registry.d.ts +59 -0
  75. package/src/agents/runtime-agent-registry.d.ts.map +1 -0
  76. package/src/agents/runtime-agent-registry.js +390 -0
  77. package/src/agents/runtime-agent-registry.js.map +1 -0
  78. package/src/agents/skills.d.ts +33 -0
  79. package/src/agents/skills.d.ts.map +1 -0
  80. package/src/agents/skills.js +685 -0
  81. package/src/agents/skills.js.map +1 -0
  82. package/src/api/agents.d.ts +5 -0
  83. package/src/api/agents.d.ts.map +1 -0
  84. package/src/api/agents.js +3 -0
  85. package/src/api/agents.js.map +1 -0
  86. package/src/api/background-work.d.ts +39 -0
  87. package/src/api/background-work.d.ts.map +1 -0
  88. package/src/api/background-work.js +165 -0
  89. package/src/api/background-work.js.map +1 -0
  90. package/src/api/capability-ceiling.d.ts +2 -0
  91. package/src/api/capability-ceiling.d.ts.map +1 -0
  92. package/src/api/capability-ceiling.js +2 -0
  93. package/src/api/capability-ceiling.js.map +1 -0
  94. package/src/api/child-tool-plan.d.ts +2 -0
  95. package/src/api/child-tool-plan.d.ts.map +1 -0
  96. package/src/api/child-tool-plan.js +2 -0
  97. package/src/api/child-tool-plan.js.map +1 -0
  98. package/src/api/control-channel.d.ts +2 -0
  99. package/src/api/control-channel.d.ts.map +1 -0
  100. package/src/api/control-channel.js +2 -0
  101. package/src/api/control-channel.js.map +1 -0
  102. package/src/api/delegation.d.ts +99 -0
  103. package/src/api/delegation.d.ts.map +1 -0
  104. package/src/api/delegation.js +9 -0
  105. package/src/api/delegation.js.map +1 -0
  106. package/src/api/external-job-provider.d.ts +58 -0
  107. package/src/api/external-job-provider.d.ts.map +1 -0
  108. package/src/api/external-job-provider.js +140 -0
  109. package/src/api/external-job-provider.js.map +1 -0
  110. package/src/api/external-runs.d.ts +48 -0
  111. package/src/api/external-runs.d.ts.map +1 -0
  112. package/src/api/external-runs.js +245 -0
  113. package/src/api/external-runs.js.map +1 -0
  114. package/src/api/intercom-bridge.d.ts +2 -0
  115. package/src/api/intercom-bridge.d.ts.map +1 -0
  116. package/src/api/intercom-bridge.js +2 -0
  117. package/src/api/intercom-bridge.js.map +1 -0
  118. package/src/api/preflight.d.ts +173 -0
  119. package/src/api/preflight.d.ts.map +1 -0
  120. package/src/api/preflight.js +362 -0
  121. package/src/api/preflight.js.map +1 -0
  122. package/src/api/project-panes.d.ts +8 -0
  123. package/src/api/project-panes.d.ts.map +1 -0
  124. package/src/api/project-panes.js +8 -0
  125. package/src/api/project-panes.js.map +1 -0
  126. package/src/api/required-child-extensions.d.ts +2 -0
  127. package/src/api/required-child-extensions.d.ts.map +1 -0
  128. package/src/api/required-child-extensions.js +2 -0
  129. package/src/api/required-child-extensions.js.map +1 -0
  130. package/src/api/shared-types.d.ts +2 -0
  131. package/src/api/shared-types.d.ts.map +1 -0
  132. package/src/api/shared-types.js +2 -0
  133. package/src/api/shared-types.js.map +1 -0
  134. package/src/api/workflow-resources.d.ts +3 -0
  135. package/src/api/workflow-resources.d.ts.map +1 -0
  136. package/src/api/workflow-resources.js +2 -0
  137. package/src/api/workflow-resources.js.map +1 -0
  138. package/src/extension/config.d.ts +8 -0
  139. package/src/extension/config.d.ts.map +1 -0
  140. package/src/extension/config.js +245 -0
  141. package/src/extension/config.js.map +1 -0
  142. package/src/extension/control-notices.d.ts +19 -0
  143. package/src/extension/control-notices.d.ts.map +1 -0
  144. package/src/extension/control-notices.js +34 -0
  145. package/src/extension/control-notices.js.map +1 -0
  146. package/src/extension/doctor.d.ts +33 -0
  147. package/src/extension/doctor.d.ts.map +1 -0
  148. package/src/extension/doctor.js +231 -0
  149. package/src/extension/doctor.js.map +1 -0
  150. package/src/extension/fanout-child.d.ts +7 -0
  151. package/src/extension/fanout-child.d.ts.map +1 -0
  152. package/src/extension/fanout-child.js +261 -0
  153. package/src/extension/fanout-child.js.map +1 -0
  154. package/src/extension/herdr-pi-bridge.d.ts +17 -0
  155. package/src/extension/herdr-pi-bridge.d.ts.map +1 -0
  156. package/src/extension/herdr-pi-bridge.js +243 -0
  157. package/src/extension/herdr-pi-bridge.js.map +1 -0
  158. package/src/extension/index.d.ts +20 -0
  159. package/src/extension/index.d.ts.map +1 -0
  160. package/src/extension/index.js +1108 -0
  161. package/src/extension/index.js.map +1 -0
  162. package/src/extension/public-execution.d.ts +62 -0
  163. package/src/extension/public-execution.d.ts.map +1 -0
  164. package/src/extension/public-execution.js +174 -0
  165. package/src/extension/public-execution.js.map +1 -0
  166. package/src/extension/rpc.d.ts +83 -0
  167. package/src/extension/rpc.d.ts.map +1 -0
  168. package/src/extension/rpc.js +687 -0
  169. package/src/extension/rpc.js.map +1 -0
  170. package/src/extension/schemas.d.ts +252 -0
  171. package/src/extension/schemas.d.ts.map +1 -0
  172. package/src/extension/schemas.js +396 -0
  173. package/src/extension/schemas.js.map +1 -0
  174. package/src/extension/steering-notices.d.ts +15 -0
  175. package/src/extension/steering-notices.d.ts.map +1 -0
  176. package/src/extension/steering-notices.js +23 -0
  177. package/src/extension/steering-notices.js.map +1 -0
  178. package/src/extension/subagent-guide.d.ts +4 -0
  179. package/src/extension/subagent-guide.d.ts.map +1 -0
  180. package/src/extension/subagent-guide.js +35 -0
  181. package/src/extension/subagent-guide.js.map +1 -0
  182. package/src/extension/tool-description.d.ts +20 -0
  183. package/src/extension/tool-description.d.ts.map +1 -0
  184. package/src/extension/tool-description.js +160 -0
  185. package/src/extension/tool-description.js.map +1 -0
  186. package/src/extension/tool-result.d.ts +10 -0
  187. package/src/extension/tool-result.d.ts.map +1 -0
  188. package/src/extension/tool-result.js +17 -0
  189. package/src/extension/tool-result.js.map +1 -0
  190. package/src/inspectors/actions.d.ts +23 -0
  191. package/src/inspectors/actions.d.ts.map +1 -0
  192. package/src/inspectors/actions.js +155 -0
  193. package/src/inspectors/actions.js.map +1 -0
  194. package/src/inspectors/ghostty/actions.d.ts +12 -0
  195. package/src/inspectors/ghostty/actions.d.ts.map +1 -0
  196. package/src/inspectors/ghostty/actions.js +63 -0
  197. package/src/inspectors/ghostty/actions.js.map +1 -0
  198. package/src/inspectors/ghostty/plugin.d.ts +8 -0
  199. package/src/inspectors/ghostty/plugin.d.ts.map +1 -0
  200. package/src/inspectors/ghostty/plugin.js +24 -0
  201. package/src/inspectors/ghostty/plugin.js.map +1 -0
  202. package/src/inspectors/herdr/actions.d.ts +26 -0
  203. package/src/inspectors/herdr/actions.d.ts.map +1 -0
  204. package/src/inspectors/herdr/actions.js +134 -0
  205. package/src/inspectors/herdr/actions.js.map +1 -0
  206. package/src/inspectors/herdr/client.d.ts +42 -0
  207. package/src/inspectors/herdr/client.d.ts.map +1 -0
  208. package/src/inspectors/herdr/client.js +130 -0
  209. package/src/inspectors/herdr/client.js.map +1 -0
  210. package/src/inspectors/herdr/focus.d.ts +25 -0
  211. package/src/inspectors/herdr/focus.d.ts.map +1 -0
  212. package/src/inspectors/herdr/focus.js +50 -0
  213. package/src/inspectors/herdr/focus.js.map +1 -0
  214. package/src/inspectors/herdr/plugin.d.ts +7 -0
  215. package/src/inspectors/herdr/plugin.d.ts.map +1 -0
  216. package/src/inspectors/herdr/plugin.js +15 -0
  217. package/src/inspectors/herdr/plugin.js.map +1 -0
  218. package/src/inspectors/herdr/project-panes.d.ts +137 -0
  219. package/src/inspectors/herdr/project-panes.d.ts.map +1 -0
  220. package/src/inspectors/herdr/project-panes.js +608 -0
  221. package/src/inspectors/herdr/project-panes.js.map +1 -0
  222. package/src/inspectors/inspector-runner.d.ts +24 -0
  223. package/src/inspectors/inspector-runner.d.ts.map +1 -0
  224. package/src/inspectors/inspector-runner.js +162 -0
  225. package/src/inspectors/inspector-runner.js.map +1 -0
  226. package/src/inspectors/plugins.d.ts +4 -0
  227. package/src/inspectors/plugins.d.ts.map +1 -0
  228. package/src/inspectors/plugins.js +7 -0
  229. package/src/inspectors/plugins.js.map +1 -0
  230. package/src/inspectors/session-roots-codec.d.ts +16 -0
  231. package/src/inspectors/session-roots-codec.d.ts.map +1 -0
  232. package/src/inspectors/session-roots-codec.js +33 -0
  233. package/src/inspectors/session-roots-codec.js.map +1 -0
  234. package/src/inspectors/shell-command.d.ts +2 -0
  235. package/src/inspectors/shell-command.d.ts.map +1 -0
  236. package/src/inspectors/shell-command.js +17 -0
  237. package/src/inspectors/shell-command.js.map +1 -0
  238. package/src/inspectors/types.d.ts +49 -0
  239. package/src/inspectors/types.d.ts.map +1 -0
  240. package/src/inspectors/types.js +2 -0
  241. package/src/inspectors/types.js.map +1 -0
  242. package/src/integrations/herdr-status.d.ts +46 -0
  243. package/src/integrations/herdr-status.d.ts.map +1 -0
  244. package/src/integrations/herdr-status.js +371 -0
  245. package/src/integrations/herdr-status.js.map +1 -0
  246. package/src/integrations/pi-web-session-liveness.d.ts +20 -0
  247. package/src/integrations/pi-web-session-liveness.d.ts.map +1 -0
  248. package/src/integrations/pi-web-session-liveness.js +54 -0
  249. package/src/integrations/pi-web-session-liveness.js.map +1 -0
  250. package/src/intercom/intercom-bridge.d.ts +59 -0
  251. package/src/intercom/intercom-bridge.d.ts.map +1 -0
  252. package/src/intercom/intercom-bridge.js +192 -0
  253. package/src/intercom/intercom-bridge.js.map +1 -0
  254. package/src/intercom/native-supervisor-channel.d.ts +64 -0
  255. package/src/intercom/native-supervisor-channel.d.ts.map +1 -0
  256. package/src/intercom/native-supervisor-channel.js +894 -0
  257. package/src/intercom/native-supervisor-channel.js.map +1 -0
  258. package/src/intercom/result-intercom.d.ts +36 -0
  259. package/src/intercom/result-intercom.d.ts.map +1 -0
  260. package/src/intercom/result-intercom.js +372 -0
  261. package/src/intercom/result-intercom.js.map +1 -0
  262. package/src/intercom/supervisor-ui.d.ts +40 -0
  263. package/src/intercom/supervisor-ui.d.ts.map +1 -0
  264. package/src/intercom/supervisor-ui.js +202 -0
  265. package/src/intercom/supervisor-ui.js.map +1 -0
  266. package/src/missions/actions.d.ts +55 -0
  267. package/src/missions/actions.d.ts.map +1 -0
  268. package/src/missions/actions.js +396 -0
  269. package/src/missions/actions.js.map +1 -0
  270. package/src/missions/goal-driver.d.ts +16 -0
  271. package/src/missions/goal-driver.d.ts.map +1 -0
  272. package/src/missions/goal-driver.js +157 -0
  273. package/src/missions/goal-driver.js.map +1 -0
  274. package/src/missions/lifecycle.d.ts +40 -0
  275. package/src/missions/lifecycle.d.ts.map +1 -0
  276. package/src/missions/lifecycle.js +352 -0
  277. package/src/missions/lifecycle.js.map +1 -0
  278. package/src/missions/store.d.ts +22 -0
  279. package/src/missions/store.d.ts.map +1 -0
  280. package/src/missions/store.js +573 -0
  281. package/src/missions/store.js.map +1 -0
  282. package/src/missions/types.d.ts +168 -0
  283. package/src/missions/types.d.ts.map +1 -0
  284. package/src/missions/types.js +10 -0
  285. package/src/missions/types.js.map +1 -0
  286. package/src/missions/workflow-state.d.ts +15 -0
  287. package/src/missions/workflow-state.d.ts.map +1 -0
  288. package/src/missions/workflow-state.js +274 -0
  289. package/src/missions/workflow-state.js.map +1 -0
  290. package/src/policy/authority.d.ts +10 -0
  291. package/src/policy/authority.d.ts.map +1 -0
  292. package/src/policy/authority.js +42 -0
  293. package/src/policy/authority.js.map +1 -0
  294. package/src/profiles/profiles.d.ts +135 -0
  295. package/src/profiles/profiles.d.ts.map +1 -0
  296. package/src/profiles/profiles.js +520 -0
  297. package/src/profiles/profiles.js.map +1 -0
  298. package/src/runs/background/active-async-capacity.d.ts +100 -0
  299. package/src/runs/background/active-async-capacity.d.ts.map +1 -0
  300. package/src/runs/background/active-async-capacity.js +492 -0
  301. package/src/runs/background/active-async-capacity.js.map +1 -0
  302. package/src/runs/background/active-run-index.d.ts +13 -0
  303. package/src/runs/background/active-run-index.d.ts.map +1 -0
  304. package/src/runs/background/active-run-index.js +158 -0
  305. package/src/runs/background/active-run-index.js.map +1 -0
  306. package/src/runs/background/async-execution.d.ts +274 -0
  307. package/src/runs/background/async-execution.d.ts.map +1 -0
  308. package/src/runs/background/async-execution.js +1989 -0
  309. package/src/runs/background/async-execution.js.map +1 -0
  310. package/src/runs/background/async-job-tracker.d.ts +28 -0
  311. package/src/runs/background/async-job-tracker.d.ts.map +1 -0
  312. package/src/runs/background/async-job-tracker.js +876 -0
  313. package/src/runs/background/async-job-tracker.js.map +1 -0
  314. package/src/runs/background/async-resume.d.ts +59 -0
  315. package/src/runs/background/async-resume.d.ts.map +1 -0
  316. package/src/runs/background/async-resume.js +670 -0
  317. package/src/runs/background/async-resume.js.map +1 -0
  318. package/src/runs/background/async-retention.d.ts +45 -0
  319. package/src/runs/background/async-retention.d.ts.map +1 -0
  320. package/src/runs/background/async-retention.js +884 -0
  321. package/src/runs/background/async-retention.js.map +1 -0
  322. package/src/runs/background/async-status-snapshot.d.ts +10 -0
  323. package/src/runs/background/async-status-snapshot.d.ts.map +1 -0
  324. package/src/runs/background/async-status-snapshot.js +25 -0
  325. package/src/runs/background/async-status-snapshot.js.map +1 -0
  326. package/src/runs/background/async-status.d.ts +169 -0
  327. package/src/runs/background/async-status.d.ts.map +1 -0
  328. package/src/runs/background/async-status.js +673 -0
  329. package/src/runs/background/async-status.js.map +1 -0
  330. package/src/runs/background/auto-drain.d.ts +17 -0
  331. package/src/runs/background/auto-drain.d.ts.map +1 -0
  332. package/src/runs/background/auto-drain.js +73 -0
  333. package/src/runs/background/auto-drain.js.map +1 -0
  334. package/src/runs/background/binary-bootstrap.d.ts +9 -0
  335. package/src/runs/background/binary-bootstrap.d.ts.map +1 -0
  336. package/src/runs/background/binary-bootstrap.js +41 -0
  337. package/src/runs/background/binary-bootstrap.js.map +1 -0
  338. package/src/runs/background/chain-append.d.ts +35 -0
  339. package/src/runs/background/chain-append.d.ts.map +1 -0
  340. package/src/runs/background/chain-append.js +300 -0
  341. package/src/runs/background/chain-append.js.map +1 -0
  342. package/src/runs/background/chain-root-attachment.d.ts +49 -0
  343. package/src/runs/background/chain-root-attachment.d.ts.map +1 -0
  344. package/src/runs/background/chain-root-attachment.js +184 -0
  345. package/src/runs/background/chain-root-attachment.js.map +1 -0
  346. package/src/runs/background/completion-batcher.d.ts +52 -0
  347. package/src/runs/background/completion-batcher.d.ts.map +1 -0
  348. package/src/runs/background/completion-batcher.js +120 -0
  349. package/src/runs/background/completion-batcher.js.map +1 -0
  350. package/src/runs/background/completion-dedupe.d.ts +14 -0
  351. package/src/runs/background/completion-dedupe.d.ts.map +1 -0
  352. package/src/runs/background/completion-dedupe.js +49 -0
  353. package/src/runs/background/completion-dedupe.js.map +1 -0
  354. package/src/runs/background/completion-replay.d.ts +48 -0
  355. package/src/runs/background/completion-replay.d.ts.map +1 -0
  356. package/src/runs/background/completion-replay.js +267 -0
  357. package/src/runs/background/completion-replay.js.map +1 -0
  358. package/src/runs/background/control-channel.d.ts +156 -0
  359. package/src/runs/background/control-channel.d.ts.map +1 -0
  360. package/src/runs/background/control-channel.js +521 -0
  361. package/src/runs/background/control-channel.js.map +1 -0
  362. package/src/runs/background/fleet-view.d.ts +64 -0
  363. package/src/runs/background/fleet-view.d.ts.map +1 -0
  364. package/src/runs/background/fleet-view.js +648 -0
  365. package/src/runs/background/fleet-view.js.map +1 -0
  366. package/src/runs/background/index-segment.d.ts +16 -0
  367. package/src/runs/background/index-segment.d.ts.map +1 -0
  368. package/src/runs/background/index-segment.js +59 -0
  369. package/src/runs/background/index-segment.js.map +1 -0
  370. package/src/runs/background/inspect-rpc.d.ts +60 -0
  371. package/src/runs/background/inspect-rpc.d.ts.map +1 -0
  372. package/src/runs/background/inspect-rpc.js +406 -0
  373. package/src/runs/background/inspect-rpc.js.map +1 -0
  374. package/src/runs/background/notify.d.ts +162 -0
  375. package/src/runs/background/notify.d.ts.map +1 -0
  376. package/src/runs/background/notify.js +665 -0
  377. package/src/runs/background/notify.js.map +1 -0
  378. package/src/runs/background/owned-process-tree.d.ts +11 -0
  379. package/src/runs/background/owned-process-tree.d.ts.map +1 -0
  380. package/src/runs/background/owned-process-tree.js +117 -0
  381. package/src/runs/background/owned-process-tree.js.map +1 -0
  382. package/src/runs/background/parallel-groups.d.ts +4 -0
  383. package/src/runs/background/parallel-groups.d.ts.map +1 -0
  384. package/src/runs/background/parallel-groups.js +47 -0
  385. package/src/runs/background/parallel-groups.js.map +1 -0
  386. package/src/runs/background/process-terminal.d.ts +34 -0
  387. package/src/runs/background/process-terminal.d.ts.map +1 -0
  388. package/src/runs/background/process-terminal.js +305 -0
  389. package/src/runs/background/process-terminal.js.map +1 -0
  390. package/src/runs/background/result-delivery-ownership.d.ts +11 -0
  391. package/src/runs/background/result-delivery-ownership.d.ts.map +1 -0
  392. package/src/runs/background/result-delivery-ownership.js +37 -0
  393. package/src/runs/background/result-delivery-ownership.js.map +1 -0
  394. package/src/runs/background/result-files.d.ts +33 -0
  395. package/src/runs/background/result-files.d.ts.map +1 -0
  396. package/src/runs/background/result-files.js +528 -0
  397. package/src/runs/background/result-files.js.map +1 -0
  398. package/src/runs/background/result-watcher.d.ts +87 -0
  399. package/src/runs/background/result-watcher.d.ts.map +1 -0
  400. package/src/runs/background/result-watcher.js +764 -0
  401. package/src/runs/background/result-watcher.js.map +1 -0
  402. package/src/runs/background/resume-guidance.d.ts +5 -0
  403. package/src/runs/background/resume-guidance.d.ts.map +1 -0
  404. package/src/runs/background/resume-guidance.js +57 -0
  405. package/src/runs/background/resume-guidance.js.map +1 -0
  406. package/src/runs/background/retained-children.d.ts +25 -0
  407. package/src/runs/background/retained-children.d.ts.map +1 -0
  408. package/src/runs/background/retained-children.js +128 -0
  409. package/src/runs/background/retained-children.js.map +1 -0
  410. package/src/runs/background/retained-nested-route-tracker.d.ts +13 -0
  411. package/src/runs/background/retained-nested-route-tracker.d.ts.map +1 -0
  412. package/src/runs/background/retained-nested-route-tracker.js +91 -0
  413. package/src/runs/background/retained-nested-route-tracker.js.map +1 -0
  414. package/src/runs/background/run-child-session.d.ts +123 -0
  415. package/src/runs/background/run-child-session.d.ts.map +1 -0
  416. package/src/runs/background/run-child-session.js +602 -0
  417. package/src/runs/background/run-child-session.js.map +1 -0
  418. package/src/runs/background/run-id-query.d.ts +4 -0
  419. package/src/runs/background/run-id-query.d.ts.map +1 -0
  420. package/src/runs/background/run-id-query.js +7 -0
  421. package/src/runs/background/run-id-query.js.map +1 -0
  422. package/src/runs/background/run-id-resolver.d.ts +23 -0
  423. package/src/runs/background/run-id-resolver.d.ts.map +1 -0
  424. package/src/runs/background/run-id-resolver.js +170 -0
  425. package/src/runs/background/run-id-resolver.js.map +1 -0
  426. package/src/runs/background/run-status.d.ts +26 -0
  427. package/src/runs/background/run-status.d.ts.map +1 -0
  428. package/src/runs/background/run-status.js +826 -0
  429. package/src/runs/background/run-status.js.map +1 -0
  430. package/src/runs/background/runner-aliases.d.ts +17 -0
  431. package/src/runs/background/runner-aliases.d.ts.map +1 -0
  432. package/src/runs/background/runner-aliases.js +141 -0
  433. package/src/runs/background/runner-aliases.js.map +1 -0
  434. package/src/runs/background/runner-child-launch.d.ts +24 -0
  435. package/src/runs/background/runner-child-launch.d.ts.map +1 -0
  436. package/src/runs/background/runner-child-launch.js +68 -0
  437. package/src/runs/background/runner-child-launch.js.map +1 -0
  438. package/src/runs/background/runner-child-sessions.d.ts +7 -0
  439. package/src/runs/background/runner-child-sessions.d.ts.map +1 -0
  440. package/src/runs/background/runner-child-sessions.js +35 -0
  441. package/src/runs/background/runner-child-sessions.js.map +1 -0
  442. package/src/runs/background/runner-http-dispatcher.d.ts +43 -0
  443. package/src/runs/background/runner-http-dispatcher.d.ts.map +1 -0
  444. package/src/runs/background/runner-http-dispatcher.js +114 -0
  445. package/src/runs/background/runner-http-dispatcher.js.map +1 -0
  446. package/src/runs/background/scheduled-runs.d.ts +116 -0
  447. package/src/runs/background/scheduled-runs.d.ts.map +1 -0
  448. package/src/runs/background/scheduled-runs.js +1024 -0
  449. package/src/runs/background/scheduled-runs.js.map +1 -0
  450. package/src/runs/background/stale-run-reconciler.d.ts +37 -0
  451. package/src/runs/background/stale-run-reconciler.d.ts.map +1 -0
  452. package/src/runs/background/stale-run-reconciler.js +393 -0
  453. package/src/runs/background/stale-run-reconciler.js.map +1 -0
  454. package/src/runs/background/steering.d.ts +52 -0
  455. package/src/runs/background/steering.d.ts.map +1 -0
  456. package/src/runs/background/steering.js +247 -0
  457. package/src/runs/background/steering.js.map +1 -0
  458. package/src/runs/background/subagent-runner.d.ts +201 -0
  459. package/src/runs/background/subagent-runner.d.ts.map +1 -0
  460. package/src/runs/background/subagent-runner.js +5134 -0
  461. package/src/runs/background/subagent-runner.js.map +1 -0
  462. package/src/runs/background/subagent-wait.d.ts +122 -0
  463. package/src/runs/background/subagent-wait.d.ts.map +1 -0
  464. package/src/runs/background/subagent-wait.js +735 -0
  465. package/src/runs/background/subagent-wait.js.map +1 -0
  466. package/src/runs/background/terminal-run-index.d.ts +8 -0
  467. package/src/runs/background/terminal-run-index.d.ts.map +1 -0
  468. package/src/runs/background/terminal-run-index.js +123 -0
  469. package/src/runs/background/terminal-run-index.js.map +1 -0
  470. package/src/runs/background/top-level-async.d.ts +8 -0
  471. package/src/runs/background/top-level-async.d.ts.map +1 -0
  472. package/src/runs/background/top-level-async.js +6 -0
  473. package/src/runs/background/top-level-async.js.map +1 -0
  474. package/src/runs/background/wait-completions.d.ts +29 -0
  475. package/src/runs/background/wait-completions.d.ts.map +1 -0
  476. package/src/runs/background/wait-completions.js +264 -0
  477. package/src/runs/background/wait-completions.js.map +1 -0
  478. package/src/runs/background/wait-config.d.ts +9 -0
  479. package/src/runs/background/wait-config.d.ts.map +1 -0
  480. package/src/runs/background/wait-config.js +47 -0
  481. package/src/runs/background/wait-config.js.map +1 -0
  482. package/src/runs/background/wait-subscriptions.d.ts +27 -0
  483. package/src/runs/background/wait-subscriptions.d.ts.map +1 -0
  484. package/src/runs/background/wait-subscriptions.js +337 -0
  485. package/src/runs/background/wait-subscriptions.js.map +1 -0
  486. package/src/runs/background/wait-tool.d.ts +7 -0
  487. package/src/runs/background/wait-tool.d.ts.map +1 -0
  488. package/src/runs/background/wait-tool.js +36 -0
  489. package/src/runs/background/wait-tool.js.map +1 -0
  490. package/src/runs/foreground/async-dismiss-action.d.ts +7 -0
  491. package/src/runs/foreground/async-dismiss-action.d.ts.map +1 -0
  492. package/src/runs/foreground/async-dismiss-action.js +82 -0
  493. package/src/runs/foreground/async-dismiss-action.js.map +1 -0
  494. package/src/runs/foreground/async-steering-action.d.ts +32 -0
  495. package/src/runs/foreground/async-steering-action.d.ts.map +1 -0
  496. package/src/runs/foreground/async-steering-action.js +270 -0
  497. package/src/runs/foreground/async-steering-action.js.map +1 -0
  498. package/src/runs/foreground/async-stop-action.d.ts +7 -0
  499. package/src/runs/foreground/async-stop-action.d.ts.map +1 -0
  500. package/src/runs/foreground/async-stop-action.js +171 -0
  501. package/src/runs/foreground/async-stop-action.js.map +1 -0
  502. package/src/runs/foreground/execution.d.ts +11 -0
  503. package/src/runs/foreground/execution.d.ts.map +1 -0
  504. package/src/runs/foreground/execution.js +2186 -0
  505. package/src/runs/foreground/execution.js.map +1 -0
  506. package/src/runs/foreground/foreground-control.d.ts +25 -0
  507. package/src/runs/foreground/foreground-control.d.ts.map +1 -0
  508. package/src/runs/foreground/foreground-control.js +139 -0
  509. package/src/runs/foreground/foreground-control.js.map +1 -0
  510. package/src/runs/foreground/foreground-history.d.ts +12 -0
  511. package/src/runs/foreground/foreground-history.d.ts.map +1 -0
  512. package/src/runs/foreground/foreground-history.js +165 -0
  513. package/src/runs/foreground/foreground-history.js.map +1 -0
  514. package/src/runs/foreground/prompt-audit.d.ts +33 -0
  515. package/src/runs/foreground/prompt-audit.d.ts.map +1 -0
  516. package/src/runs/foreground/prompt-audit.js +143 -0
  517. package/src/runs/foreground/prompt-audit.js.map +1 -0
  518. package/src/runs/foreground/subagent-executor.d.ts +296 -0
  519. package/src/runs/foreground/subagent-executor.d.ts.map +1 -0
  520. package/src/runs/foreground/subagent-executor.js +7047 -0
  521. package/src/runs/foreground/subagent-executor.js.map +1 -0
  522. package/src/runs/foreground/workflow-detach-reconcile.d.ts +16 -0
  523. package/src/runs/foreground/workflow-detach-reconcile.d.ts.map +1 -0
  524. package/src/runs/foreground/workflow-detach-reconcile.js +284 -0
  525. package/src/runs/foreground/workflow-detach-reconcile.js.map +1 -0
  526. package/src/runs/foreground/workflow-foreground-steering.d.ts +44 -0
  527. package/src/runs/foreground/workflow-foreground-steering.d.ts.map +1 -0
  528. package/src/runs/foreground/workflow-foreground-steering.js +149 -0
  529. package/src/runs/foreground/workflow-foreground-steering.js.map +1 -0
  530. package/src/runs/shared/abort-recovery.d.ts +27 -0
  531. package/src/runs/shared/abort-recovery.d.ts.map +1 -0
  532. package/src/runs/shared/abort-recovery.js +109 -0
  533. package/src/runs/shared/abort-recovery.js.map +1 -0
  534. package/src/runs/shared/acceptance.d.ts +145 -0
  535. package/src/runs/shared/acceptance.d.ts.map +1 -0
  536. package/src/runs/shared/acceptance.js +1650 -0
  537. package/src/runs/shared/acceptance.js.map +1 -0
  538. package/src/runs/shared/agent-contract.d.ts +6 -0
  539. package/src/runs/shared/agent-contract.d.ts.map +1 -0
  540. package/src/runs/shared/agent-contract.js +36 -0
  541. package/src/runs/shared/agent-contract.js.map +1 -0
  542. package/src/runs/shared/async-status-projection.d.ts +94 -0
  543. package/src/runs/shared/async-status-projection.d.ts.map +1 -0
  544. package/src/runs/shared/async-status-projection.js +542 -0
  545. package/src/runs/shared/async-status-projection.js.map +1 -0
  546. package/src/runs/shared/background-process-options.d.ts +5 -0
  547. package/src/runs/shared/background-process-options.d.ts.map +1 -0
  548. package/src/runs/shared/background-process-options.js +7 -0
  549. package/src/runs/shared/background-process-options.js.map +1 -0
  550. package/src/runs/shared/capability-ceiling.d.ts +58 -0
  551. package/src/runs/shared/capability-ceiling.d.ts.map +1 -0
  552. package/src/runs/shared/capability-ceiling.js +179 -0
  553. package/src/runs/shared/capability-ceiling.js.map +1 -0
  554. package/src/runs/shared/chain-outputs.d.ts +19 -0
  555. package/src/runs/shared/chain-outputs.d.ts.map +1 -0
  556. package/src/runs/shared/chain-outputs.js +105 -0
  557. package/src/runs/shared/chain-outputs.js.map +1 -0
  558. package/src/runs/shared/child-hooks.d.ts +34 -0
  559. package/src/runs/shared/child-hooks.d.ts.map +1 -0
  560. package/src/runs/shared/child-hooks.js +188 -0
  561. package/src/runs/shared/child-hooks.js.map +1 -0
  562. package/src/runs/shared/child-identity.d.ts +24 -0
  563. package/src/runs/shared/child-identity.d.ts.map +1 -0
  564. package/src/runs/shared/child-identity.js +41 -0
  565. package/src/runs/shared/child-identity.js.map +1 -0
  566. package/src/runs/shared/child-launch-plan.d.ts +71 -0
  567. package/src/runs/shared/child-launch-plan.d.ts.map +1 -0
  568. package/src/runs/shared/child-launch-plan.js +89 -0
  569. package/src/runs/shared/child-launch-plan.js.map +1 -0
  570. package/src/runs/shared/child-launch.d.ts +114 -0
  571. package/src/runs/shared/child-launch.d.ts.map +1 -0
  572. package/src/runs/shared/child-launch.js +231 -0
  573. package/src/runs/shared/child-launch.js.map +1 -0
  574. package/src/runs/shared/child-lifecycle.d.ts +14 -0
  575. package/src/runs/shared/child-lifecycle.d.ts.map +1 -0
  576. package/src/runs/shared/child-lifecycle.js +23 -0
  577. package/src/runs/shared/child-lifecycle.js.map +1 -0
  578. package/src/runs/shared/child-runtime-config.d.ts +102 -0
  579. package/src/runs/shared/child-runtime-config.d.ts.map +1 -0
  580. package/src/runs/shared/child-runtime-config.js +39 -0
  581. package/src/runs/shared/child-runtime-config.js.map +1 -0
  582. package/src/runs/shared/child-session.d.ts +155 -0
  583. package/src/runs/shared/child-session.d.ts.map +1 -0
  584. package/src/runs/shared/child-session.js +347 -0
  585. package/src/runs/shared/child-session.js.map +1 -0
  586. package/src/runs/shared/child-tool-plan.d.ts +73 -0
  587. package/src/runs/shared/child-tool-plan.d.ts.map +1 -0
  588. package/src/runs/shared/child-tool-plan.js +380 -0
  589. package/src/runs/shared/child-tool-plan.js.map +1 -0
  590. package/src/runs/shared/claude-code-adapter.d.ts +25 -0
  591. package/src/runs/shared/claude-code-adapter.d.ts.map +1 -0
  592. package/src/runs/shared/claude-code-adapter.js +120 -0
  593. package/src/runs/shared/claude-code-adapter.js.map +1 -0
  594. package/src/runs/shared/codex-exec-adapter.d.ts +26 -0
  595. package/src/runs/shared/codex-exec-adapter.d.ts.map +1 -0
  596. package/src/runs/shared/codex-exec-adapter.js +128 -0
  597. package/src/runs/shared/codex-exec-adapter.js.map +1 -0
  598. package/src/runs/shared/completion-evidence.d.ts +31 -0
  599. package/src/runs/shared/completion-evidence.d.ts.map +1 -0
  600. package/src/runs/shared/completion-evidence.js +54 -0
  601. package/src/runs/shared/completion-evidence.js.map +1 -0
  602. package/src/runs/shared/completion-guard.d.ts +35 -0
  603. package/src/runs/shared/completion-guard.d.ts.map +1 -0
  604. package/src/runs/shared/completion-guard.js +214 -0
  605. package/src/runs/shared/completion-guard.js.map +1 -0
  606. package/src/runs/shared/context-mode.d.ts +13 -0
  607. package/src/runs/shared/context-mode.d.ts.map +1 -0
  608. package/src/runs/shared/context-mode.js +39 -0
  609. package/src/runs/shared/context-mode.js.map +1 -0
  610. package/src/runs/shared/cursor-agent-adapter.d.ts +27 -0
  611. package/src/runs/shared/cursor-agent-adapter.d.ts.map +1 -0
  612. package/src/runs/shared/cursor-agent-adapter.js +100 -0
  613. package/src/runs/shared/cursor-agent-adapter.js.map +1 -0
  614. package/src/runs/shared/dynamic-fanout.d.ts +50 -0
  615. package/src/runs/shared/dynamic-fanout.d.ts.map +1 -0
  616. package/src/runs/shared/dynamic-fanout.js +274 -0
  617. package/src/runs/shared/dynamic-fanout.js.map +1 -0
  618. package/src/runs/shared/effective-system-prompt.d.ts +18 -0
  619. package/src/runs/shared/effective-system-prompt.d.ts.map +1 -0
  620. package/src/runs/shared/effective-system-prompt.js +23 -0
  621. package/src/runs/shared/effective-system-prompt.js.map +1 -0
  622. package/src/runs/shared/extension-bindings.d.ts +17 -0
  623. package/src/runs/shared/extension-bindings.d.ts.map +1 -0
  624. package/src/runs/shared/extension-bindings.js +83 -0
  625. package/src/runs/shared/extension-bindings.js.map +1 -0
  626. package/src/runs/shared/external-cli-contract.d.ts +30 -0
  627. package/src/runs/shared/external-cli-contract.d.ts.map +1 -0
  628. package/src/runs/shared/external-cli-contract.js +146 -0
  629. package/src/runs/shared/external-cli-contract.js.map +1 -0
  630. package/src/runs/shared/external-cli-preflight.d.ts +32 -0
  631. package/src/runs/shared/external-cli-preflight.d.ts.map +1 -0
  632. package/src/runs/shared/external-cli-preflight.js +116 -0
  633. package/src/runs/shared/external-cli-preflight.js.map +1 -0
  634. package/src/runs/shared/external-cli-runner.d.ts +66 -0
  635. package/src/runs/shared/external-cli-runner.d.ts.map +1 -0
  636. package/src/runs/shared/external-cli-runner.js +421 -0
  637. package/src/runs/shared/external-cli-runner.js.map +1 -0
  638. package/src/runs/shared/external-job-bridge.d.ts +18 -0
  639. package/src/runs/shared/external-job-bridge.d.ts.map +1 -0
  640. package/src/runs/shared/external-job-bridge.js +424 -0
  641. package/src/runs/shared/external-job-bridge.js.map +1 -0
  642. package/src/runs/shared/external-job-runner.d.ts +45 -0
  643. package/src/runs/shared/external-job-runner.d.ts.map +1 -0
  644. package/src/runs/shared/external-job-runner.js +353 -0
  645. package/src/runs/shared/external-job-runner.js.map +1 -0
  646. package/src/runs/shared/fast-mode-extension.d.ts +4 -0
  647. package/src/runs/shared/fast-mode-extension.d.ts.map +1 -0
  648. package/src/runs/shared/fast-mode-extension.js +9 -0
  649. package/src/runs/shared/fast-mode-extension.js.map +1 -0
  650. package/src/runs/shared/herdr-connection.d.ts +71 -0
  651. package/src/runs/shared/herdr-connection.d.ts.map +1 -0
  652. package/src/runs/shared/herdr-connection.js +258 -0
  653. package/src/runs/shared/herdr-connection.js.map +1 -0
  654. package/src/runs/shared/herdr-external-adapters.d.ts +148 -0
  655. package/src/runs/shared/herdr-external-adapters.d.ts.map +1 -0
  656. package/src/runs/shared/herdr-external-adapters.js +405 -0
  657. package/src/runs/shared/herdr-external-adapters.js.map +1 -0
  658. package/src/runs/shared/herdr-machine.d.ts +48 -0
  659. package/src/runs/shared/herdr-machine.d.ts.map +1 -0
  660. package/src/runs/shared/herdr-machine.js +247 -0
  661. package/src/runs/shared/herdr-machine.js.map +1 -0
  662. package/src/runs/shared/herdr-pi-protocol.d.ts +22 -0
  663. package/src/runs/shared/herdr-pi-protocol.d.ts.map +1 -0
  664. package/src/runs/shared/herdr-pi-protocol.js +58 -0
  665. package/src/runs/shared/herdr-pi-protocol.js.map +1 -0
  666. package/src/runs/shared/herdr-placed-run.d.ts +267 -0
  667. package/src/runs/shared/herdr-placed-run.d.ts.map +1 -0
  668. package/src/runs/shared/herdr-placed-run.js +716 -0
  669. package/src/runs/shared/herdr-placed-run.js.map +1 -0
  670. package/src/runs/shared/host-step-status.d.ts +34 -0
  671. package/src/runs/shared/host-step-status.d.ts.map +1 -0
  672. package/src/runs/shared/host-step-status.js +245 -0
  673. package/src/runs/shared/host-step-status.js.map +1 -0
  674. package/src/runs/shared/lane-metadata.d.ts +24 -0
  675. package/src/runs/shared/lane-metadata.d.ts.map +1 -0
  676. package/src/runs/shared/lane-metadata.js +127 -0
  677. package/src/runs/shared/lane-metadata.js.map +1 -0
  678. package/src/runs/shared/launch-cwd.d.ts +2 -0
  679. package/src/runs/shared/launch-cwd.d.ts.map +1 -0
  680. package/src/runs/shared/launch-cwd.js +17 -0
  681. package/src/runs/shared/launch-cwd.js.map +1 -0
  682. package/src/runs/shared/llm-intent-arbiter.d.ts +48 -0
  683. package/src/runs/shared/llm-intent-arbiter.d.ts.map +1 -0
  684. package/src/runs/shared/llm-intent-arbiter.js +235 -0
  685. package/src/runs/shared/llm-intent-arbiter.js.map +1 -0
  686. package/src/runs/shared/long-running-guard.d.ts +33 -0
  687. package/src/runs/shared/long-running-guard.d.ts.map +1 -0
  688. package/src/runs/shared/long-running-guard.js +199 -0
  689. package/src/runs/shared/long-running-guard.js.map +1 -0
  690. package/src/runs/shared/mcp-config-sources.d.ts +30 -0
  691. package/src/runs/shared/mcp-config-sources.d.ts.map +1 -0
  692. package/src/runs/shared/mcp-config-sources.js +419 -0
  693. package/src/runs/shared/mcp-config-sources.js.map +1 -0
  694. package/src/runs/shared/mcp-direct-tool-allowlist.d.ts +59 -0
  695. package/src/runs/shared/mcp-direct-tool-allowlist.d.ts.map +1 -0
  696. package/src/runs/shared/mcp-direct-tool-allowlist.js +400 -0
  697. package/src/runs/shared/mcp-direct-tool-allowlist.js.map +1 -0
  698. package/src/runs/shared/mcp-direct-tool-grant.d.ts +41 -0
  699. package/src/runs/shared/mcp-direct-tool-grant.d.ts.map +1 -0
  700. package/src/runs/shared/mcp-direct-tool-grant.js +146 -0
  701. package/src/runs/shared/mcp-direct-tool-grant.js.map +1 -0
  702. package/src/runs/shared/model-resolution-diagnostic.d.ts +22 -0
  703. package/src/runs/shared/model-resolution-diagnostic.d.ts.map +1 -0
  704. package/src/runs/shared/model-resolution-diagnostic.js +65 -0
  705. package/src/runs/shared/model-resolution-diagnostic.js.map +1 -0
  706. package/src/runs/shared/model-resolution.d.ts +92 -0
  707. package/src/runs/shared/model-resolution.d.ts.map +1 -0
  708. package/src/runs/shared/model-resolution.js +343 -0
  709. package/src/runs/shared/model-resolution.js.map +1 -0
  710. package/src/runs/shared/model-scope.d.ts +68 -0
  711. package/src/runs/shared/model-scope.d.ts.map +1 -0
  712. package/src/runs/shared/model-scope.js +156 -0
  713. package/src/runs/shared/model-scope.js.map +1 -0
  714. package/src/runs/shared/mutation-evidence.d.ts +19 -0
  715. package/src/runs/shared/mutation-evidence.d.ts.map +1 -0
  716. package/src/runs/shared/mutation-evidence.js +199 -0
  717. package/src/runs/shared/mutation-evidence.js.map +1 -0
  718. package/src/runs/shared/nested-events.d.ts +134 -0
  719. package/src/runs/shared/nested-events.d.ts.map +1 -0
  720. package/src/runs/shared/nested-events.js +1056 -0
  721. package/src/runs/shared/nested-events.js.map +1 -0
  722. package/src/runs/shared/nested-path.d.ts +9 -0
  723. package/src/runs/shared/nested-path.d.ts.map +1 -0
  724. package/src/runs/shared/nested-path.js +35 -0
  725. package/src/runs/shared/nested-path.js.map +1 -0
  726. package/src/runs/shared/nested-render.d.ts +21 -0
  727. package/src/runs/shared/nested-render.d.ts.map +1 -0
  728. package/src/runs/shared/nested-render.js +116 -0
  729. package/src/runs/shared/nested-render.js.map +1 -0
  730. package/src/runs/shared/orca-progress-tabs.d.ts +33 -0
  731. package/src/runs/shared/orca-progress-tabs.d.ts.map +1 -0
  732. package/src/runs/shared/orca-progress-tabs.js +527 -0
  733. package/src/runs/shared/orca-progress-tabs.js.map +1 -0
  734. package/src/runs/shared/parallel-handoff.d.ts +73 -0
  735. package/src/runs/shared/parallel-handoff.d.ts.map +1 -0
  736. package/src/runs/shared/parallel-handoff.js +733 -0
  737. package/src/runs/shared/parallel-handoff.js.map +1 -0
  738. package/src/runs/shared/parallel-utils.d.ts +165 -0
  739. package/src/runs/shared/parallel-utils.d.ts.map +1 -0
  740. package/src/runs/shared/parallel-utils.js +126 -0
  741. package/src/runs/shared/parallel-utils.js.map +1 -0
  742. package/src/runs/shared/permissions.d.ts +13 -0
  743. package/src/runs/shared/permissions.d.ts.map +1 -0
  744. package/src/runs/shared/permissions.js +93 -0
  745. package/src/runs/shared/permissions.js.map +1 -0
  746. package/src/runs/shared/pi-spawn.d.ts +28 -0
  747. package/src/runs/shared/pi-spawn.d.ts.map +1 -0
  748. package/src/runs/shared/pi-spawn.js +156 -0
  749. package/src/runs/shared/pi-spawn.js.map +1 -0
  750. package/src/runs/shared/process-signal.d.ts +16 -0
  751. package/src/runs/shared/process-signal.d.ts.map +1 -0
  752. package/src/runs/shared/process-signal.js +22 -0
  753. package/src/runs/shared/process-signal.js.map +1 -0
  754. package/src/runs/shared/readonly-drain-observation.d.ts +26 -0
  755. package/src/runs/shared/readonly-drain-observation.d.ts.map +1 -0
  756. package/src/runs/shared/readonly-drain-observation.js +51 -0
  757. package/src/runs/shared/readonly-drain-observation.js.map +1 -0
  758. package/src/runs/shared/run-fanout-budget.d.ts +15 -0
  759. package/src/runs/shared/run-fanout-budget.d.ts.map +1 -0
  760. package/src/runs/shared/run-fanout-budget.js +259 -0
  761. package/src/runs/shared/run-fanout-budget.js.map +1 -0
  762. package/src/runs/shared/run-history.d.ts +20 -0
  763. package/src/runs/shared/run-history.d.ts.map +1 -0
  764. package/src/runs/shared/run-history.js +200 -0
  765. package/src/runs/shared/run-history.js.map +1 -0
  766. package/src/runs/shared/runtime-acknowledged-extensions.d.ts +8 -0
  767. package/src/runs/shared/runtime-acknowledged-extensions.d.ts.map +1 -0
  768. package/src/runs/shared/runtime-acknowledged-extensions.js +45 -0
  769. package/src/runs/shared/runtime-acknowledged-extensions.js.map +1 -0
  770. package/src/runs/shared/session-lease.d.ts +70 -0
  771. package/src/runs/shared/session-lease.d.ts.map +1 -0
  772. package/src/runs/shared/session-lease.js +251 -0
  773. package/src/runs/shared/session-lease.js.map +1 -0
  774. package/src/runs/shared/single-output.d.ts +61 -0
  775. package/src/runs/shared/single-output.d.ts.map +1 -0
  776. package/src/runs/shared/single-output.js +263 -0
  777. package/src/runs/shared/single-output.js.map +1 -0
  778. package/src/runs/shared/spawn-budget.d.ts +21 -0
  779. package/src/runs/shared/spawn-budget.d.ts.map +1 -0
  780. package/src/runs/shared/spawn-budget.js +94 -0
  781. package/src/runs/shared/spawn-budget.js.map +1 -0
  782. package/src/runs/shared/structured-output.d.ts +57 -0
  783. package/src/runs/shared/structured-output.d.ts.map +1 -0
  784. package/src/runs/shared/structured-output.js +391 -0
  785. package/src/runs/shared/structured-output.js.map +1 -0
  786. package/src/runs/shared/subagent-control.d.ts +50 -0
  787. package/src/runs/shared/subagent-control.d.ts.map +1 -0
  788. package/src/runs/shared/subagent-control.js +247 -0
  789. package/src/runs/shared/subagent-control.js.map +1 -0
  790. package/src/runs/shared/subagent-prompt-runtime.d.ts +28 -0
  791. package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -0
  792. package/src/runs/shared/subagent-prompt-runtime.js +548 -0
  793. package/src/runs/shared/subagent-prompt-runtime.js.map +1 -0
  794. package/src/runs/shared/task-intent.d.ts +38 -0
  795. package/src/runs/shared/task-intent.d.ts.map +1 -0
  796. package/src/runs/shared/task-intent.js +213 -0
  797. package/src/runs/shared/task-intent.js.map +1 -0
  798. package/src/runs/shared/tool-availability.d.ts +17 -0
  799. package/src/runs/shared/tool-availability.d.ts.map +1 -0
  800. package/src/runs/shared/tool-availability.js +30 -0
  801. package/src/runs/shared/tool-availability.js.map +1 -0
  802. package/src/runs/shared/tool-budget.d.ts +22 -0
  803. package/src/runs/shared/tool-budget.d.ts.map +1 -0
  804. package/src/runs/shared/tool-budget.js +79 -0
  805. package/src/runs/shared/tool-budget.js.map +1 -0
  806. package/src/runs/shared/tool-timeout.d.ts +32 -0
  807. package/src/runs/shared/tool-timeout.d.ts.map +1 -0
  808. package/src/runs/shared/tool-timeout.js +74 -0
  809. package/src/runs/shared/tool-timeout.js.map +1 -0
  810. package/src/runs/shared/usage-budget.d.ts +8 -0
  811. package/src/runs/shared/usage-budget.d.ts.map +1 -0
  812. package/src/runs/shared/usage-budget.js +75 -0
  813. package/src/runs/shared/usage-budget.js.map +1 -0
  814. package/src/runs/shared/usage-reconciliation.d.ts +9 -0
  815. package/src/runs/shared/usage-reconciliation.d.ts.map +1 -0
  816. package/src/runs/shared/usage-reconciliation.js +72 -0
  817. package/src/runs/shared/usage-reconciliation.js.map +1 -0
  818. package/src/runs/shared/workflow-async-child-guidance.d.ts +4 -0
  819. package/src/runs/shared/workflow-async-child-guidance.d.ts.map +1 -0
  820. package/src/runs/shared/workflow-async-child-guidance.js +18 -0
  821. package/src/runs/shared/workflow-async-child-guidance.js.map +1 -0
  822. package/src/runs/shared/workflow-graph.d.ts +32 -0
  823. package/src/runs/shared/workflow-graph.d.ts.map +1 -0
  824. package/src/runs/shared/workflow-graph.js +222 -0
  825. package/src/runs/shared/workflow-graph.js.map +1 -0
  826. package/src/runs/shared/worktree-cleanup-plan.d.ts +78 -0
  827. package/src/runs/shared/worktree-cleanup-plan.d.ts.map +1 -0
  828. package/src/runs/shared/worktree-cleanup-plan.js +782 -0
  829. package/src/runs/shared/worktree-cleanup-plan.js.map +1 -0
  830. package/src/runs/shared/worktree-setup-command.d.ts +39 -0
  831. package/src/runs/shared/worktree-setup-command.d.ts.map +1 -0
  832. package/src/runs/shared/worktree-setup-command.js +201 -0
  833. package/src/runs/shared/worktree-setup-command.js.map +1 -0
  834. package/src/runs/shared/worktree.d.ts +179 -0
  835. package/src/runs/shared/worktree.d.ts.map +1 -0
  836. package/src/runs/shared/worktree.js +1333 -0
  837. package/src/runs/shared/worktree.js.map +1 -0
  838. package/src/shared/accessible-dir.d.ts +12 -0
  839. package/src/shared/accessible-dir.d.ts.map +1 -0
  840. package/src/shared/accessible-dir.js +37 -0
  841. package/src/shared/accessible-dir.js.map +1 -0
  842. package/src/shared/agent-stream-options.d.ts +6 -0
  843. package/src/shared/agent-stream-options.d.ts.map +1 -0
  844. package/src/shared/agent-stream-options.js +4 -0
  845. package/src/shared/agent-stream-options.js.map +1 -0
  846. package/src/shared/artifacts.d.ts +23 -0
  847. package/src/shared/artifacts.d.ts.map +1 -0
  848. package/src/shared/artifacts.js +273 -0
  849. package/src/shared/artifacts.js.map +1 -0
  850. package/src/shared/atomic-json.d.ts +19 -0
  851. package/src/shared/atomic-json.d.ts.map +1 -0
  852. package/src/shared/atomic-json.js +60 -0
  853. package/src/shared/atomic-json.js.map +1 -0
  854. package/src/shared/capacity-resilient-json.d.ts +27 -0
  855. package/src/shared/capacity-resilient-json.d.ts.map +1 -0
  856. package/src/shared/capacity-resilient-json.js +87 -0
  857. package/src/shared/capacity-resilient-json.js.map +1 -0
  858. package/src/shared/child-cache-retention.d.ts +30 -0
  859. package/src/shared/child-cache-retention.d.ts.map +1 -0
  860. package/src/shared/child-cache-retention.js +41 -0
  861. package/src/shared/child-cache-retention.js.map +1 -0
  862. package/src/shared/child-session-name.d.ts +9 -0
  863. package/src/shared/child-session-name.d.ts.map +1 -0
  864. package/src/shared/child-session-name.js +39 -0
  865. package/src/shared/child-session-name.js.map +1 -0
  866. package/src/shared/child-transcript.d.ts +38 -0
  867. package/src/shared/child-transcript.d.ts.map +1 -0
  868. package/src/shared/child-transcript.js +226 -0
  869. package/src/shared/child-transcript.js.map +1 -0
  870. package/src/shared/completion-owner.d.ts +3 -0
  871. package/src/shared/completion-owner.d.ts.map +1 -0
  872. package/src/shared/completion-owner.js +9 -0
  873. package/src/shared/completion-owner.js.map +1 -0
  874. package/src/shared/display-text.d.ts +6 -0
  875. package/src/shared/display-text.d.ts.map +1 -0
  876. package/src/shared/display-text.js +155 -0
  877. package/src/shared/display-text.js.map +1 -0
  878. package/src/shared/extension-context.d.ts +6 -0
  879. package/src/shared/extension-context.d.ts.map +1 -0
  880. package/src/shared/extension-context.js +22 -0
  881. package/src/shared/extension-context.js.map +1 -0
  882. package/src/shared/file-coalescer.d.ts +12 -0
  883. package/src/shared/file-coalescer.d.ts.map +1 -0
  884. package/src/shared/file-coalescer.js +35 -0
  885. package/src/shared/file-coalescer.js.map +1 -0
  886. package/src/shared/file-system-retry.d.ts +32 -0
  887. package/src/shared/file-system-retry.d.ts.map +1 -0
  888. package/src/shared/file-system-retry.js +85 -0
  889. package/src/shared/file-system-retry.js.map +1 -0
  890. package/src/shared/fork-context.d.ts +59 -0
  891. package/src/shared/fork-context.d.ts.map +1 -0
  892. package/src/shared/fork-context.js +171 -0
  893. package/src/shared/fork-context.js.map +1 -0
  894. package/src/shared/fork-session-cwd.d.ts +3 -0
  895. package/src/shared/fork-session-cwd.d.ts.map +1 -0
  896. package/src/shared/fork-session-cwd.js +24 -0
  897. package/src/shared/fork-session-cwd.js.map +1 -0
  898. package/src/shared/formatters.d.ts +36 -0
  899. package/src/shared/formatters.d.ts.map +1 -0
  900. package/src/shared/formatters.js +143 -0
  901. package/src/shared/formatters.js.map +1 -0
  902. package/src/shared/jsonl-writer.d.ts +21 -0
  903. package/src/shared/jsonl-writer.d.ts.map +1 -0
  904. package/src/shared/jsonl-writer.js +68 -0
  905. package/src/shared/jsonl-writer.js.map +1 -0
  906. package/src/shared/launch-contract.d.ts +64 -0
  907. package/src/shared/launch-contract.d.ts.map +1 -0
  908. package/src/shared/launch-contract.js +141 -0
  909. package/src/shared/launch-contract.js.map +1 -0
  910. package/src/shared/model-info.d.ts +44 -0
  911. package/src/shared/model-info.d.ts.map +1 -0
  912. package/src/shared/model-info.js +73 -0
  913. package/src/shared/model-info.js.map +1 -0
  914. package/src/shared/model-response-aliases.d.ts +2 -0
  915. package/src/shared/model-response-aliases.d.ts.map +1 -0
  916. package/src/shared/model-response-aliases.js +16 -0
  917. package/src/shared/model-response-aliases.js.map +1 -0
  918. package/src/shared/node-executable.d.ts +2 -0
  919. package/src/shared/node-executable.d.ts.map +1 -0
  920. package/src/shared/node-executable.js +21 -0
  921. package/src/shared/node-executable.js.map +1 -0
  922. package/src/shared/opencode-session-headers.d.ts +13 -0
  923. package/src/shared/opencode-session-headers.d.ts.map +1 -0
  924. package/src/shared/opencode-session-headers.js +27 -0
  925. package/src/shared/opencode-session-headers.js.map +1 -0
  926. package/src/shared/prompt-resources.d.ts +6 -0
  927. package/src/shared/prompt-resources.d.ts.map +1 -0
  928. package/src/shared/prompt-resources.js +11 -0
  929. package/src/shared/prompt-resources.js.map +1 -0
  930. package/src/shared/pruned-fork.d.ts +35 -0
  931. package/src/shared/pruned-fork.d.ts.map +1 -0
  932. package/src/shared/pruned-fork.js +424 -0
  933. package/src/shared/pruned-fork.js.map +1 -0
  934. package/src/shared/required-child-extensions.d.ts +20 -0
  935. package/src/shared/required-child-extensions.d.ts.map +1 -0
  936. package/src/shared/required-child-extensions.js +74 -0
  937. package/src/shared/required-child-extensions.js.map +1 -0
  938. package/src/shared/session-file-trust.d.ts +2 -0
  939. package/src/shared/session-file-trust.d.ts.map +1 -0
  940. package/src/shared/session-file-trust.js +21 -0
  941. package/src/shared/session-file-trust.js.map +1 -0
  942. package/src/shared/session-identity.d.ts +7 -0
  943. package/src/shared/session-identity.d.ts.map +1 -0
  944. package/src/shared/session-identity.js +7 -0
  945. package/src/shared/session-identity.js.map +1 -0
  946. package/src/shared/session-tokens.d.ts +3 -0
  947. package/src/shared/session-tokens.d.ts.map +1 -0
  948. package/src/shared/session-tokens.js +59 -0
  949. package/src/shared/session-tokens.js.map +1 -0
  950. package/src/shared/settings.d.ts +147 -0
  951. package/src/shared/settings.d.ts.map +1 -0
  952. package/src/shared/settings.js +248 -0
  953. package/src/shared/settings.js.map +1 -0
  954. package/src/shared/shortcuts.d.ts +2 -0
  955. package/src/shared/shortcuts.d.ts.map +1 -0
  956. package/src/shared/shortcuts.js +18 -0
  957. package/src/shared/shortcuts.js.map +1 -0
  958. package/src/shared/status-format.d.ts +10 -0
  959. package/src/shared/status-format.d.ts.map +1 -0
  960. package/src/shared/status-format.js +61 -0
  961. package/src/shared/status-format.js.map +1 -0
  962. package/src/shared/thinking-ceiling.d.ts +14 -0
  963. package/src/shared/thinking-ceiling.d.ts.map +1 -0
  964. package/src/shared/thinking-ceiling.js +38 -0
  965. package/src/shared/thinking-ceiling.js.map +1 -0
  966. package/src/shared/types.d.ts +2667 -0
  967. package/src/shared/types.d.ts.map +1 -0
  968. package/src/shared/types.js +265 -0
  969. package/src/shared/types.js.map +1 -0
  970. package/src/shared/utf8.d.ts +6 -0
  971. package/src/shared/utf8.d.ts.map +1 -0
  972. package/src/shared/utf8.js +13 -0
  973. package/src/shared/utf8.js.map +1 -0
  974. package/src/shared/utils.d.ts +71 -0
  975. package/src/shared/utils.d.ts.map +1 -0
  976. package/src/shared/utils.js +593 -0
  977. package/src/shared/utils.js.map +1 -0
  978. package/src/shared/watch-strategy.d.ts +3 -0
  979. package/src/shared/watch-strategy.d.ts.map +1 -0
  980. package/src/shared/watch-strategy.js +6 -0
  981. package/src/shared/watch-strategy.js.map +1 -0
  982. package/src/shared/workflow-child-permit.d.ts +59 -0
  983. package/src/shared/workflow-child-permit.d.ts.map +1 -0
  984. package/src/shared/workflow-child-permit.js +160 -0
  985. package/src/shared/workflow-child-permit.js.map +1 -0
  986. package/src/slash/delegation-adapters.d.ts +147 -0
  987. package/src/slash/delegation-adapters.d.ts.map +1 -0
  988. package/src/slash/delegation-adapters.js +293 -0
  989. package/src/slash/delegation-adapters.js.map +1 -0
  990. package/src/slash/delegation-json.d.ts +11 -0
  991. package/src/slash/delegation-json.d.ts.map +1 -0
  992. package/src/slash/delegation-json.js +118 -0
  993. package/src/slash/delegation-json.js.map +1 -0
  994. package/src/slash/delegation-request.d.ts +13 -0
  995. package/src/slash/delegation-request.d.ts.map +1 -0
  996. package/src/slash/delegation-request.js +175 -0
  997. package/src/slash/delegation-request.js.map +1 -0
  998. package/src/slash/prompt-template-bridge.d.ts +27 -0
  999. package/src/slash/prompt-template-bridge.d.ts.map +1 -0
  1000. package/src/slash/prompt-template-bridge.js +380 -0
  1001. package/src/slash/prompt-template-bridge.js.map +1 -0
  1002. package/src/slash/prompt-workflows.d.ts +22 -0
  1003. package/src/slash/prompt-workflows.d.ts.map +1 -0
  1004. package/src/slash/prompt-workflows.js +261 -0
  1005. package/src/slash/prompt-workflows.js.map +1 -0
  1006. package/src/slash/selector.d.ts +48 -0
  1007. package/src/slash/selector.d.ts.map +1 -0
  1008. package/src/slash/selector.js +118 -0
  1009. package/src/slash/selector.js.map +1 -0
  1010. package/src/slash/slash-bridge.d.ts +31 -0
  1011. package/src/slash/slash-bridge.d.ts.map +1 -0
  1012. package/src/slash/slash-bridge.js +133 -0
  1013. package/src/slash/slash-bridge.js.map +1 -0
  1014. package/src/slash/slash-commands.d.ts +9 -0
  1015. package/src/slash/slash-commands.d.ts.map +1 -0
  1016. package/src/slash/slash-commands.js +1295 -0
  1017. package/src/slash/slash-commands.js.map +1 -0
  1018. package/src/slash/slash-live-state.d.ts +22 -0
  1019. package/src/slash/slash-live-state.d.ts.map +1 -0
  1020. package/src/slash/slash-live-state.js +264 -0
  1021. package/src/slash/slash-live-state.js.map +1 -0
  1022. package/src/slash/subagents-admin.d.ts +3 -0
  1023. package/src/slash/subagents-admin.d.ts.map +1 -0
  1024. package/src/slash/subagents-admin.js +454 -0
  1025. package/src/slash/subagents-admin.js.map +1 -0
  1026. package/src/tui/fleet-status.d.ts +86 -0
  1027. package/src/tui/fleet-status.d.ts.map +1 -0
  1028. package/src/tui/fleet-status.js +1083 -0
  1029. package/src/tui/fleet-status.js.map +1 -0
  1030. package/src/tui/fleet-transcript.d.ts +50 -0
  1031. package/src/tui/fleet-transcript.d.ts.map +1 -0
  1032. package/src/tui/fleet-transcript.js +497 -0
  1033. package/src/tui/fleet-transcript.js.map +1 -0
  1034. package/src/tui/fleet.d.ts +169 -0
  1035. package/src/tui/fleet.d.ts.map +1 -0
  1036. package/src/tui/fleet.js +1412 -0
  1037. package/src/tui/fleet.js.map +1 -0
  1038. package/src/tui/render-helpers.d.ts +24 -0
  1039. package/src/tui/render-helpers.d.ts.map +1 -0
  1040. package/src/tui/render-helpers.js +101 -0
  1041. package/src/tui/render-helpers.js.map +1 -0
  1042. package/src/tui/render.d.ts +61 -0
  1043. package/src/tui/render.d.ts.map +1 -0
  1044. package/src/tui/render.js +3607 -0
  1045. package/src/tui/render.js.map +1 -0
  1046. package/src/watchdog/change-signature.d.ts +8 -0
  1047. package/src/watchdog/change-signature.d.ts.map +1 -0
  1048. package/src/watchdog/change-signature.js +246 -0
  1049. package/src/watchdog/change-signature.js.map +1 -0
  1050. package/src/watchdog/child-status.d.ts +54 -0
  1051. package/src/watchdog/child-status.d.ts.map +1 -0
  1052. package/src/watchdog/child-status.js +188 -0
  1053. package/src/watchdog/child-status.js.map +1 -0
  1054. package/src/watchdog/diff-tool.d.ts +23 -0
  1055. package/src/watchdog/diff-tool.d.ts.map +1 -0
  1056. package/src/watchdog/diff-tool.js +84 -0
  1057. package/src/watchdog/diff-tool.js.map +1 -0
  1058. package/src/watchdog/emission-guard.d.ts +37 -0
  1059. package/src/watchdog/emission-guard.d.ts.map +1 -0
  1060. package/src/watchdog/emission-guard.js +98 -0
  1061. package/src/watchdog/emission-guard.js.map +1 -0
  1062. package/src/watchdog/guidance.d.ts +4 -0
  1063. package/src/watchdog/guidance.d.ts.map +1 -0
  1064. package/src/watchdog/guidance.js +20 -0
  1065. package/src/watchdog/guidance.js.map +1 -0
  1066. package/src/watchdog/lsp-diagnostics.d.ts +18 -0
  1067. package/src/watchdog/lsp-diagnostics.d.ts.map +1 -0
  1068. package/src/watchdog/lsp-diagnostics.js +490 -0
  1069. package/src/watchdog/lsp-diagnostics.js.map +1 -0
  1070. package/src/watchdog/model-selection.d.ts +25 -0
  1071. package/src/watchdog/model-selection.d.ts.map +1 -0
  1072. package/src/watchdog/model-selection.js +168 -0
  1073. package/src/watchdog/model-selection.js.map +1 -0
  1074. package/src/watchdog/permission-arbiter.d.ts +21 -0
  1075. package/src/watchdog/permission-arbiter.d.ts.map +1 -0
  1076. package/src/watchdog/permission-arbiter.js +136 -0
  1077. package/src/watchdog/permission-arbiter.js.map +1 -0
  1078. package/src/watchdog/register-child.d.ts +12 -0
  1079. package/src/watchdog/register-child.d.ts.map +1 -0
  1080. package/src/watchdog/register-child.js +120 -0
  1081. package/src/watchdog/register-child.js.map +1 -0
  1082. package/src/watchdog/register-main.d.ts +10 -0
  1083. package/src/watchdog/register-main.d.ts.map +1 -0
  1084. package/src/watchdog/register-main.js +419 -0
  1085. package/src/watchdog/register-main.js.map +1 -0
  1086. package/src/watchdog/render.d.ts +12 -0
  1087. package/src/watchdog/render.d.ts.map +1 -0
  1088. package/src/watchdog/render.js +52 -0
  1089. package/src/watchdog/render.js.map +1 -0
  1090. package/src/watchdog/review.d.ts +36 -0
  1091. package/src/watchdog/review.d.ts.map +1 -0
  1092. package/src/watchdog/review.js +318 -0
  1093. package/src/watchdog/review.js.map +1 -0
  1094. package/src/watchdog/rules.d.ts +22 -0
  1095. package/src/watchdog/rules.d.ts.map +1 -0
  1096. package/src/watchdog/rules.js +59 -0
  1097. package/src/watchdog/rules.js.map +1 -0
  1098. package/src/watchdog/runtime.d.ts +196 -0
  1099. package/src/watchdog/runtime.d.ts.map +1 -0
  1100. package/src/watchdog/runtime.js +862 -0
  1101. package/src/watchdog/runtime.js.map +1 -0
  1102. package/src/watchdog/scope.d.ts +15 -0
  1103. package/src/watchdog/scope.d.ts.map +1 -0
  1104. package/src/watchdog/scope.js +45 -0
  1105. package/src/watchdog/scope.js.map +1 -0
  1106. package/src/watchdog/settings.d.ts +30 -0
  1107. package/src/watchdog/settings.d.ts.map +1 -0
  1108. package/src/watchdog/settings.js +476 -0
  1109. package/src/watchdog/settings.js.map +1 -0
  1110. package/src/watchdog/tool-actions.d.ts +18 -0
  1111. package/src/watchdog/tool-actions.d.ts.map +1 -0
  1112. package/src/watchdog/tool-actions.js +151 -0
  1113. package/src/watchdog/tool-actions.js.map +1 -0
  1114. package/src/watchdog/turn-delta.d.ts +12 -0
  1115. package/src/watchdog/turn-delta.d.ts.map +1 -0
  1116. package/src/watchdog/turn-delta.js +185 -0
  1117. package/src/watchdog/turn-delta.js.map +1 -0
  1118. package/src/watchdog/types.d.ts +142 -0
  1119. package/src/watchdog/types.d.ts.map +1 -0
  1120. package/src/watchdog/types.js +28 -0
  1121. package/src/watchdog/types.js.map +1 -0
  1122. package/src/watchdog/warning-format.d.ts +8 -0
  1123. package/src/watchdog/warning-format.d.ts.map +1 -0
  1124. package/src/watchdog/warning-format.js +60 -0
  1125. package/src/watchdog/warning-format.js.map +1 -0
  1126. package/src/workflows/chat-progress.d.ts +38 -0
  1127. package/src/workflows/chat-progress.d.ts.map +1 -0
  1128. package/src/workflows/chat-progress.js +130 -0
  1129. package/src/workflows/chat-progress.js.map +1 -0
  1130. package/src/workflows/host-command.d.ts +31 -0
  1131. package/src/workflows/host-command.d.ts.map +1 -0
  1132. package/src/workflows/host-command.js +228 -0
  1133. package/src/workflows/host-command.js.map +1 -0
  1134. package/src/workflows/scripted-workflow.d.ts +195 -0
  1135. package/src/workflows/scripted-workflow.d.ts.map +1 -0
  1136. package/src/workflows/scripted-workflow.js +2636 -0
  1137. package/src/workflows/scripted-workflow.js.map +1 -0
  1138. package/src/workflows/workflow-checklist.d.ts +124 -0
  1139. package/src/workflows/workflow-checklist.d.ts.map +1 -0
  1140. package/src/workflows/workflow-checklist.js +312 -0
  1141. package/src/workflows/workflow-checklist.js.map +1 -0
  1142. package/src/workflows/workflow-child-summary.d.ts +20 -0
  1143. package/src/workflows/workflow-child-summary.d.ts.map +1 -0
  1144. package/src/workflows/workflow-child-summary.js +179 -0
  1145. package/src/workflows/workflow-child-summary.js.map +1 -0
  1146. package/src/workflows/workflow-preflight.d.ts +59 -0
  1147. package/src/workflows/workflow-preflight.d.ts.map +1 -0
  1148. package/src/workflows/workflow-preflight.js +289 -0
  1149. package/src/workflows/workflow-preflight.js.map +1 -0
  1150. package/src/workflows/workflow-receipt.d.ts +35 -0
  1151. package/src/workflows/workflow-receipt.d.ts.map +1 -0
  1152. package/src/workflows/workflow-receipt.js +449 -0
  1153. package/src/workflows/workflow-receipt.js.map +1 -0
  1154. package/src/workflows/workflow-resources.d.ts +43 -0
  1155. package/src/workflows/workflow-resources.d.ts.map +1 -0
  1156. package/src/workflows/workflow-resources.js +230 -0
  1157. package/src/workflows/workflow-resources.js.map +1 -0
  1158. package/src/workflows/workflow-settlement.d.ts +85 -0
  1159. package/src/workflows/workflow-settlement.d.ts.map +1 -0
  1160. package/src/workflows/workflow-settlement.js +204 -0
  1161. package/src/workflows/workflow-settlement.js.map +1 -0
  1162. package/index.ts +0 -13
  1163. package/src/agents/advertised-agent-prompt.ts +0 -94
  1164. package/src/agents/agent-management.ts +0 -1417
  1165. package/src/agents/agent-memory.ts +0 -254
  1166. package/src/agents/agent-refinements.ts +0 -624
  1167. package/src/agents/agent-scope.ts +0 -6
  1168. package/src/agents/agent-selection.ts +0 -25
  1169. package/src/agents/agent-serializer.ts +0 -182
  1170. package/src/agents/agents.ts +0 -2917
  1171. package/src/agents/builtin-names.ts +0 -16
  1172. package/src/agents/chain-serializer.ts +0 -285
  1173. package/src/agents/frontmatter.ts +0 -153
  1174. package/src/agents/identity.ts +0 -30
  1175. package/src/agents/proactive-skills.ts +0 -194
  1176. package/src/agents/runtime-agent-events.ts +0 -70
  1177. package/src/agents/runtime-agent-registry.ts +0 -430
  1178. package/src/agents/skills.ts +0 -754
  1179. package/src/api/agents.ts +0 -12
  1180. package/src/api/background-work.ts +0 -206
  1181. package/src/api/capability-ceiling.ts +0 -16
  1182. package/src/api/child-tool-plan.ts +0 -5
  1183. package/src/api/control-channel.ts +0 -4
  1184. package/src/api/delegation.ts +0 -116
  1185. package/src/api/external-job-provider.ts +0 -195
  1186. package/src/api/external-runs.ts +0 -282
  1187. package/src/api/intercom-bridge.ts +0 -3
  1188. package/src/api/preflight.ts +0 -539
  1189. package/src/api/project-panes.ts +0 -32
  1190. package/src/api/required-child-extensions.ts +0 -6
  1191. package/src/api/shared-types.ts +0 -29
  1192. package/src/api/workflow-resources.ts +0 -6
  1193. package/src/extension/config.ts +0 -230
  1194. package/src/extension/control-notices.ts +0 -58
  1195. package/src/extension/doctor.ts +0 -270
  1196. package/src/extension/fanout-child.ts +0 -265
  1197. package/src/extension/herdr-pi-bridge.ts +0 -160
  1198. package/src/extension/index.ts +0 -1205
  1199. package/src/extension/public-execution.ts +0 -225
  1200. package/src/extension/rpc.ts +0 -848
  1201. package/src/extension/schemas.ts +0 -428
  1202. package/src/extension/steering-notices.ts +0 -35
  1203. package/src/extension/subagent-guide.ts +0 -39
  1204. package/src/extension/tool-description.ts +0 -175
  1205. package/src/extension/tool-result.ts +0 -19
  1206. package/src/inspectors/actions.ts +0 -148
  1207. package/src/inspectors/ghostty/actions.ts +0 -74
  1208. package/src/inspectors/ghostty/plugin.ts +0 -29
  1209. package/src/inspectors/herdr/actions.ts +0 -155
  1210. package/src/inspectors/herdr/client.ts +0 -130
  1211. package/src/inspectors/herdr/focus.ts +0 -55
  1212. package/src/inspectors/herdr/plugin.ts +0 -20
  1213. package/src/inspectors/herdr/project-panes.ts +0 -730
  1214. package/src/inspectors/inspector-runner.ts +0 -153
  1215. package/src/inspectors/plugins.ts +0 -8
  1216. package/src/inspectors/session-roots-codec.ts +0 -31
  1217. package/src/inspectors/shell-command.ts +0 -16
  1218. package/src/inspectors/types.ts +0 -51
  1219. package/src/integrations/herdr-status.ts +0 -400
  1220. package/src/integrations/pi-web-session-liveness.ts +0 -73
  1221. package/src/intercom/intercom-bridge.ts +0 -233
  1222. package/src/intercom/native-supervisor-channel.ts +0 -917
  1223. package/src/intercom/result-intercom.ts +0 -423
  1224. package/src/intercom/supervisor-ui.ts +0 -244
  1225. package/src/missions/actions.ts +0 -433
  1226. package/src/missions/goal-driver.ts +0 -164
  1227. package/src/missions/lifecycle.ts +0 -367
  1228. package/src/missions/store.ts +0 -584
  1229. package/src/missions/types.ts +0 -190
  1230. package/src/missions/workflow-state.ts +0 -281
  1231. package/src/policy/authority.ts +0 -50
  1232. package/src/profiles/profiles.ts +0 -668
  1233. package/src/runs/background/active-async-capacity.ts +0 -520
  1234. package/src/runs/background/active-run-index.ts +0 -155
  1235. package/src/runs/background/async-execution.ts +0 -2278
  1236. package/src/runs/background/async-job-tracker.ts +0 -826
  1237. package/src/runs/background/async-resume.ts +0 -647
  1238. package/src/runs/background/async-retention.ts +0 -912
  1239. package/src/runs/background/async-status-snapshot.ts +0 -46
  1240. package/src/runs/background/async-status.ts +0 -771
  1241. package/src/runs/background/auto-drain.ts +0 -92
  1242. package/src/runs/background/binary-bootstrap.ts +0 -38
  1243. package/src/runs/background/chain-append.ts +0 -321
  1244. package/src/runs/background/chain-root-attachment.ts +0 -259
  1245. package/src/runs/background/completion-batcher.ts +0 -168
  1246. package/src/runs/background/completion-dedupe.ts +0 -58
  1247. package/src/runs/background/completion-replay.ts +0 -287
  1248. package/src/runs/background/control-channel.ts +0 -600
  1249. package/src/runs/background/fleet-view.ts +0 -648
  1250. package/src/runs/background/index-segment.ts +0 -59
  1251. package/src/runs/background/inspect-rpc.ts +0 -443
  1252. package/src/runs/background/notify.ts +0 -819
  1253. package/src/runs/background/owned-process-tree.ts +0 -131
  1254. package/src/runs/background/parallel-groups.ts +0 -45
  1255. package/src/runs/background/process-terminal.ts +0 -310
  1256. package/src/runs/background/result-delivery-ownership.ts +0 -45
  1257. package/src/runs/background/result-files.ts +0 -523
  1258. package/src/runs/background/result-watcher.ts +0 -809
  1259. package/src/runs/background/resume-guidance.ts +0 -56
  1260. package/src/runs/background/retained-children.ts +0 -135
  1261. package/src/runs/background/retained-nested-route-tracker.ts +0 -96
  1262. package/src/runs/background/run-child-session.ts +0 -690
  1263. package/src/runs/background/run-id-query.ts +0 -7
  1264. package/src/runs/background/run-id-resolver.ts +0 -175
  1265. package/src/runs/background/run-status.ts +0 -786
  1266. package/src/runs/background/runner-aliases.ts +0 -142
  1267. package/src/runs/background/runner-child-launch.ts +0 -91
  1268. package/src/runs/background/runner-child-sessions.ts +0 -32
  1269. package/src/runs/background/runner-http-dispatcher.ts +0 -119
  1270. package/src/runs/background/scheduled-runs.ts +0 -1012
  1271. package/src/runs/background/stale-run-reconciler.ts +0 -436
  1272. package/src/runs/background/steering.ts +0 -260
  1273. package/src/runs/background/subagent-runner.ts +0 -5357
  1274. package/src/runs/background/subagent-wait.ts +0 -876
  1275. package/src/runs/background/terminal-run-index.ts +0 -138
  1276. package/src/runs/background/top-level-async.ts +0 -14
  1277. package/src/runs/background/wait-completions.ts +0 -261
  1278. package/src/runs/background/wait-config.ts +0 -50
  1279. package/src/runs/background/wait-subscriptions.ts +0 -354
  1280. package/src/runs/background/wait-tool.ts +0 -45
  1281. package/src/runs/foreground/async-dismiss-action.ts +0 -86
  1282. package/src/runs/foreground/async-steering-action.ts +0 -276
  1283. package/src/runs/foreground/async-stop-action.ts +0 -176
  1284. package/src/runs/foreground/execution.ts +0 -2254
  1285. package/src/runs/foreground/foreground-control.ts +0 -157
  1286. package/src/runs/foreground/foreground-history.ts +0 -163
  1287. package/src/runs/foreground/prompt-audit.ts +0 -178
  1288. package/src/runs/foreground/subagent-executor.ts +0 -7526
  1289. package/src/runs/foreground/workflow-detach-reconcile.ts +0 -304
  1290. package/src/runs/foreground/workflow-foreground-steering.ts +0 -169
  1291. package/src/runs/shared/abort-recovery.ts +0 -119
  1292. package/src/runs/shared/acceptance.ts +0 -1698
  1293. package/src/runs/shared/agent-contract.ts +0 -38
  1294. package/src/runs/shared/async-status-projection.ts +0 -659
  1295. package/src/runs/shared/background-process-options.ts +0 -9
  1296. package/src/runs/shared/capability-ceiling.ts +0 -211
  1297. package/src/runs/shared/chain-outputs.ts +0 -116
  1298. package/src/runs/shared/child-hooks.ts +0 -189
  1299. package/src/runs/shared/child-identity.ts +0 -62
  1300. package/src/runs/shared/child-launch-plan.ts +0 -163
  1301. package/src/runs/shared/child-launch.ts +0 -342
  1302. package/src/runs/shared/child-lifecycle.ts +0 -28
  1303. package/src/runs/shared/child-runtime-config.ts +0 -133
  1304. package/src/runs/shared/child-session.ts +0 -448
  1305. package/src/runs/shared/child-tool-plan.ts +0 -661
  1306. package/src/runs/shared/claude-code-adapter.ts +0 -133
  1307. package/src/runs/shared/codex-exec-adapter.ts +0 -129
  1308. package/src/runs/shared/completion-evidence.ts +0 -89
  1309. package/src/runs/shared/completion-guard.ts +0 -255
  1310. package/src/runs/shared/context-mode.ts +0 -44
  1311. package/src/runs/shared/cursor-agent-adapter.ts +0 -114
  1312. package/src/runs/shared/dynamic-fanout.ts +0 -297
  1313. package/src/runs/shared/effective-system-prompt.ts +0 -33
  1314. package/src/runs/shared/extension-bindings.ts +0 -78
  1315. package/src/runs/shared/external-cli-contract.ts +0 -177
  1316. package/src/runs/shared/external-cli-preflight.ts +0 -142
  1317. package/src/runs/shared/external-cli-runner.ts +0 -431
  1318. package/src/runs/shared/external-job-bridge.ts +0 -460
  1319. package/src/runs/shared/external-job-runner.ts +0 -389
  1320. package/src/runs/shared/fast-mode-extension.ts +0 -10
  1321. package/src/runs/shared/herdr-connection.ts +0 -134
  1322. package/src/runs/shared/herdr-external-adapters.ts +0 -169
  1323. package/src/runs/shared/herdr-machine.ts +0 -279
  1324. package/src/runs/shared/herdr-pi-protocol.ts +0 -59
  1325. package/src/runs/shared/herdr-placed-run.ts +0 -263
  1326. package/src/runs/shared/host-step-status.ts +0 -231
  1327. package/src/runs/shared/lane-metadata.ts +0 -126
  1328. package/src/runs/shared/launch-cwd.ts +0 -16
  1329. package/src/runs/shared/llm-intent-arbiter.ts +0 -321
  1330. package/src/runs/shared/long-running-guard.ts +0 -221
  1331. package/src/runs/shared/mcp-config-sources.ts +0 -422
  1332. package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -484
  1333. package/src/runs/shared/mcp-direct-tool-grant.ts +0 -194
  1334. package/src/runs/shared/model-resolution-diagnostic.ts +0 -76
  1335. package/src/runs/shared/model-resolution.ts +0 -441
  1336. package/src/runs/shared/model-scope.ts +0 -205
  1337. package/src/runs/shared/mutation-evidence.ts +0 -199
  1338. package/src/runs/shared/nested-events.ts +0 -1079
  1339. package/src/runs/shared/nested-path.ts +0 -38
  1340. package/src/runs/shared/nested-render.ts +0 -127
  1341. package/src/runs/shared/orca-progress-tabs.ts +0 -510
  1342. package/src/runs/shared/parallel-handoff.ts +0 -741
  1343. package/src/runs/shared/parallel-utils.ts +0 -279
  1344. package/src/runs/shared/permissions.ts +0 -86
  1345. package/src/runs/shared/pi-spawn.ts +0 -207
  1346. package/src/runs/shared/process-signal.ts +0 -35
  1347. package/src/runs/shared/readonly-drain-observation.ts +0 -42
  1348. package/src/runs/shared/run-fanout-budget.ts +0 -267
  1349. package/src/runs/shared/run-history.ts +0 -201
  1350. package/src/runs/shared/runtime-acknowledged-extensions.ts +0 -44
  1351. package/src/runs/shared/session-lease.ts +0 -293
  1352. package/src/runs/shared/single-output.ts +0 -304
  1353. package/src/runs/shared/spawn-budget.ts +0 -128
  1354. package/src/runs/shared/structured-output.ts +0 -236
  1355. package/src/runs/shared/subagent-control.ts +0 -294
  1356. package/src/runs/shared/subagent-prompt-runtime.ts +0 -545
  1357. package/src/runs/shared/task-intent.ts +0 -244
  1358. package/src/runs/shared/tool-availability.ts +0 -37
  1359. package/src/runs/shared/tool-budget.ts +0 -66
  1360. package/src/runs/shared/tool-timeout.ts +0 -93
  1361. package/src/runs/shared/usage-budget.ts +0 -65
  1362. package/src/runs/shared/workflow-async-child-guidance.ts +0 -18
  1363. package/src/runs/shared/workflow-graph.ts +0 -225
  1364. package/src/runs/shared/worktree-cleanup-plan.ts +0 -869
  1365. package/src/runs/shared/worktree-setup-command.ts +0 -213
  1366. package/src/runs/shared/worktree.ts +0 -1538
  1367. package/src/shared/accessible-dir.ts +0 -47
  1368. package/src/shared/agent-stream-options.ts +0 -5
  1369. package/src/shared/artifacts.ts +0 -281
  1370. package/src/shared/atomic-json.ts +0 -83
  1371. package/src/shared/capacity-resilient-json.ts +0 -102
  1372. package/src/shared/child-cache-retention.ts +0 -43
  1373. package/src/shared/child-session-name.ts +0 -46
  1374. package/src/shared/child-transcript.ts +0 -264
  1375. package/src/shared/completion-owner.ts +0 -14
  1376. package/src/shared/display-text.ts +0 -150
  1377. package/src/shared/extension-context.ts +0 -24
  1378. package/src/shared/file-coalescer.ts +0 -49
  1379. package/src/shared/file-system-retry.ts +0 -95
  1380. package/src/shared/fork-context.ts +0 -236
  1381. package/src/shared/fork-session-cwd.ts +0 -27
  1382. package/src/shared/formatters.ts +0 -146
  1383. package/src/shared/jsonl-writer.ts +0 -92
  1384. package/src/shared/launch-contract.ts +0 -198
  1385. package/src/shared/model-info.ts +0 -101
  1386. package/src/shared/model-response-aliases.ts +0 -13
  1387. package/src/shared/node-executable.ts +0 -21
  1388. package/src/shared/opencode-session-headers.ts +0 -30
  1389. package/src/shared/prompt-resources.ts +0 -11
  1390. package/src/shared/pruned-fork.ts +0 -450
  1391. package/src/shared/required-child-extensions.ts +0 -81
  1392. package/src/shared/session-file-trust.ts +0 -19
  1393. package/src/shared/session-identity.ts +0 -10
  1394. package/src/shared/session-tokens.ts +0 -55
  1395. package/src/shared/settings.ts +0 -412
  1396. package/src/shared/shortcuts.ts +0 -13
  1397. package/src/shared/status-format.ts +0 -55
  1398. package/src/shared/thinking-ceiling.ts +0 -46
  1399. package/src/shared/types.ts +0 -2983
  1400. package/src/shared/utf8.ts +0 -11
  1401. package/src/shared/utils.ts +0 -608
  1402. package/src/shared/watch-strategy.ts +0 -12
  1403. package/src/shared/workflow-child-permit.ts +0 -212
  1404. package/src/slash/delegation-adapters.ts +0 -428
  1405. package/src/slash/delegation-json.ts +0 -108
  1406. package/src/slash/delegation-request.ts +0 -176
  1407. package/src/slash/prompt-template-bridge.ts +0 -419
  1408. package/src/slash/prompt-workflows.ts +0 -287
  1409. package/src/slash/selector.ts +0 -147
  1410. package/src/slash/slash-bridge.ts +0 -192
  1411. package/src/slash/slash-commands.ts +0 -1325
  1412. package/src/slash/slash-live-state.ts +0 -310
  1413. package/src/slash/subagents-admin.ts +0 -460
  1414. package/src/tui/fleet-status.ts +0 -1109
  1415. package/src/tui/fleet-transcript.ts +0 -536
  1416. package/src/tui/fleet.ts +0 -1448
  1417. package/src/tui/render-helpers.ts +0 -111
  1418. package/src/tui/render.ts +0 -3721
  1419. package/src/types/pi-runtime-compat.d.ts +0 -8
  1420. package/src/watchdog/change-signature.ts +0 -260
  1421. package/src/watchdog/child-status.ts +0 -225
  1422. package/src/watchdog/diff-tool.ts +0 -77
  1423. package/src/watchdog/emission-guard.ts +0 -125
  1424. package/src/watchdog/guidance.ts +0 -20
  1425. package/src/watchdog/lsp-diagnostics.ts +0 -538
  1426. package/src/watchdog/model-selection.ts +0 -187
  1427. package/src/watchdog/permission-arbiter.ts +0 -156
  1428. package/src/watchdog/register-child.ts +0 -128
  1429. package/src/watchdog/register-main.ts +0 -445
  1430. package/src/watchdog/render.ts +0 -53
  1431. package/src/watchdog/review.ts +0 -363
  1432. package/src/watchdog/rules.ts +0 -70
  1433. package/src/watchdog/runtime.ts +0 -924
  1434. package/src/watchdog/scope.ts +0 -51
  1435. package/src/watchdog/settings.ts +0 -515
  1436. package/src/watchdog/tool-actions.ts +0 -156
  1437. package/src/watchdog/turn-delta.ts +0 -184
  1438. package/src/watchdog/types.ts +0 -186
  1439. package/src/watchdog/warning-format.ts +0 -72
  1440. package/src/workflows/chat-progress.ts +0 -152
  1441. package/src/workflows/host-command.ts +0 -235
  1442. package/src/workflows/scripted-workflow.ts +0 -2575
  1443. package/src/workflows/workflow-checklist.ts +0 -436
  1444. package/src/workflows/workflow-child-summary.ts +0 -170
  1445. package/src/workflows/workflow-preflight.ts +0 -297
  1446. package/src/workflows/workflow-receipt.ts +0 -384
  1447. package/src/workflows/workflow-resources.ts +0 -236
  1448. package/src/workflows/workflow-settlement.ts +0 -249
@@ -1,384 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import { writePrivateAtomicJson } from "../shared/atomic-json.ts";
4
- import type { AcceptanceRecoveryMetadata, ExternalCliReceiptMetadata, WorkflowReceipt, WorkflowReceiptEntry, WorkflowReceiptState, WorkflowRecoveryAction, WorkflowResourceProvenance, WorkflowTerminalOutcome, WorkflowTerminalResolution } from "../shared/types.ts";
5
- import type { WorkflowReceiptResumeReference, WorkflowScriptChildResult } from "./scripted-workflow.ts";
6
- import { parseWorkflowChildSummary } from "./workflow-child-summary.ts";
7
- import { HOST_STEP_MAX_COUNT, assertUniqueHostStepIds, parseHostStepNode } from "../runs/shared/host-step-status.ts";
8
- import { assertWorkflowLaneKey, normalizeWorkflowLaneMetadata } from "../runs/shared/lane-metadata.ts";
9
-
10
- export type { WorkflowReceipt, WorkflowReceiptEntry, WorkflowReceiptState } from "../shared/types.ts";
11
-
12
- export const WORKFLOW_RECEIPT_VERSION = 1;
13
- export const WORKFLOW_RECEIPT_FILE = "workflow-receipt.json";
14
- const MAX_WORKFLOW_RECEIPT_BYTES = 2 * 1024 * 1024;
15
-
16
- const KEY_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
17
- const RESOURCE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
18
-
19
- function assertSafeRunId(value: string, label: string): string {
20
- const normalized = value.trim();
21
- if (!normalized || path.basename(normalized) !== normalized || normalized === "." || normalized === "..") {
22
- throw new Error(`${label} must be an exact workflow run id, not a path or prefix.`);
23
- }
24
- return normalized;
25
- }
26
-
27
- function assertKey(value: string, label: string): string {
28
- if (!KEY_PATTERN.test(value)) throw new Error(`${label} is invalid.`);
29
- return value;
30
- }
31
-
32
- export function workflowReceiptPath(asyncDirRoot: string, workflowRunId: string): string {
33
- return path.join(asyncDirRoot, assertSafeRunId(workflowRunId, "workflowRunId"), WORKFLOW_RECEIPT_FILE);
34
- }
35
-
36
- export function buildWorkflowReceipt(input: {
37
- workflowRunId: string;
38
- state: WorkflowReceiptState;
39
- children: WorkflowScriptChildResult[];
40
- argsDigest?: string;
41
- hostSteps?: WorkflowReceipt["hostSteps"];
42
- workflowChildren?: WorkflowReceipt["workflowChildren"];
43
- resource?: WorkflowResourceProvenance;
44
- terminalOutcome?: WorkflowTerminalOutcome;
45
- createdAt?: number;
46
- }): WorkflowReceipt {
47
- const workflowRunId = assertSafeRunId(input.workflowRunId, "workflowRunId");
48
- if (input.argsDigest !== undefined && !/^[a-f0-9]{64}$/u.test(input.argsDigest)) throw new Error("workflow receipt argsDigest must be a lowercase SHA-256 digest.");
49
- if (input.workflowChildren?.workflowRunId !== undefined && input.workflowChildren.workflowRunId !== workflowRunId) throw new Error("workflowChildren workflowRunId does not match its receipt.");
50
- const entries: Record<string, WorkflowReceiptEntry> = Object.create(null) as Record<string, WorkflowReceiptEntry>;
51
- for (const child of input.children) {
52
- const key = assertKey(child.key, "workflow receipt child key");
53
- if (entries[key]) throw new Error(`Workflow receipt has duplicate child key '${key}'.`);
54
- const lane = normalizeWorkflowLaneMetadata(child.lane, `workflow receipt child '${key}'.lane`);
55
- assertWorkflowLaneKey(lane, key, `workflow receipt child '${key}'.lane`);
56
- const runIds = [...new Set((child.continuation?.runIds ?? (child.runId ? [child.runId] : [])).filter((runId) => typeof runId === "string" && runId.trim()).map((runId) => runId.trim()))];
57
- const latestRunId = runIds.at(-1);
58
- const resumability = child.resumability ?? { state: "not-resumable", reason: child.runId ? "resumability was not recorded" : "child produced no run id" };
59
- if (resumability.state === "resumable" && !latestRunId) throw new Error(`Workflow receipt child '${key}' is resumable but has no retained run id.`);
60
- const base = {
61
- key,
62
- ...(lane ? { lane } : {}),
63
- ...(child.terminalOutcome ? { terminalOutcome: child.terminalOutcome } : {}),
64
- ...(child.agent ? { agent: child.agent } : {}),
65
- ...(child.requestedContext ? { requestedContext: child.requestedContext } : {}),
66
- ...(child.resolvedContext ? { resolvedContext: child.resolvedContext } : {}),
67
- ...(child.outputReference ? { outputReference: child.outputReference } : {}),
68
- ...(child.recovery ? { acceptanceRecovery: child.recovery } : {}),
69
- ...(child.externalAdapter ? { externalAdapter: child.externalAdapter } : {}),
70
- continuation: { runIds },
71
- };
72
- entries[key] = resumability.state === "resumable"
73
- ? { ...base, latestRunId: latestRunId!, resumability }
74
- : { ...base, ...(latestRunId ? { latestRunId } : {}), resumability };
75
- }
76
- if (input.hostSteps && input.hostSteps.length > HOST_STEP_MAX_COUNT) throw new Error(`Workflow receipt has more than ${HOST_STEP_MAX_COUNT} host steps.`);
77
- const hostSteps = input.hostSteps?.map((hostStep, index) => parseHostStepNode(hostStep, `workflow receipt hostSteps[${index}]`));
78
- if (hostSteps) assertUniqueHostStepIds(hostSteps, "workflow receipt");
79
- const resource = parseWorkflowResource(input.resource, "workflow receipt");
80
- return { version: WORKFLOW_RECEIPT_VERSION, workflowRunId, state: input.state, createdAt: input.createdAt ?? Date.now(), entries, ...(input.argsDigest ? { argsDigest: input.argsDigest } : {}), ...(resource ? { resource } : {}), ...(hostSteps?.length ? { hostSteps } : {}), ...(input.workflowChildren ? { workflowChildren: input.workflowChildren } : {}), ...(input.terminalOutcome ? { terminalOutcome: input.terminalOutcome } : {}) };
81
- }
82
-
83
- export function writeWorkflowReceipt(asyncDir: string, receipt: WorkflowReceipt): string {
84
- const receiptPath = path.join(asyncDir, WORKFLOW_RECEIPT_FILE);
85
- writePrivateAtomicJson(receiptPath, receipt);
86
- return receiptPath;
87
- }
88
-
89
- function readWorkflowReceiptFile(receiptPath: string): unknown {
90
- let fd: number | undefined;
91
- try {
92
- fd = fs.openSync(receiptPath, "r");
93
- const stat = fs.fstatSync(fd);
94
- if (!stat.isFile()) throw new Error("workflow receipt is not a regular file.");
95
- if (stat.size > MAX_WORKFLOW_RECEIPT_BYTES) throw new Error(`workflow receipt exceeds the ${MAX_WORKFLOW_RECEIPT_BYTES}-byte limit.`);
96
- const buffer = Buffer.allocUnsafe(stat.size);
97
- let offset = 0;
98
- while (offset < buffer.length) {
99
- const bytesRead = fs.readSync(fd, buffer, offset, buffer.length - offset, null);
100
- if (bytesRead <= 0) throw new Error("workflow receipt ended before its declared size.");
101
- offset += bytesRead;
102
- }
103
- return JSON.parse(buffer.toString("utf-8")) as unknown;
104
- } finally {
105
- if (fd !== undefined) fs.closeSync(fd);
106
- }
107
- }
108
-
109
- const EXTERNAL_CLI_CAPABILITIES = {
110
- stop: true,
111
- steer: false,
112
- resume: false,
113
- structuredOutput: false,
114
- toolEvents: false,
115
- supervisor: "unsupported",
116
- forkContext: false,
117
- extensionBindings: false,
118
- } as const;
119
-
120
- function parseExternalCliMachine(value: unknown, label: string): void {
121
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label}.machine must be an object.`);
122
- const machine = value as Record<string, unknown>;
123
- const unknownMachine = Object.keys(machine).filter((field) => !["provider", "id", "label", "target", "session", "cwd", "remoteGit"].includes(field));
124
- if (unknownMachine.length > 0) throw new Error(`${label}.machine has unsupported fields: ${unknownMachine.join(", ")}.`);
125
- if (machine.provider !== "herdr" || typeof machine.id !== "string" || !machine.id.trim() || typeof machine.target !== "string" || !machine.target.trim() || typeof machine.cwd !== "string" || !machine.cwd.trim()) throw new Error(`${label}.machine is invalid.`);
126
- for (const field of ["label", "session"] as const) if (machine[field] !== undefined && (typeof machine[field] !== "string" || !machine[field].trim())) throw new Error(`${label}.machine.${field} is invalid.`);
127
- if (machine.remoteGit === undefined) return;
128
- if (!machine.remoteGit || typeof machine.remoteGit !== "object" || Array.isArray(machine.remoteGit)) throw new Error(`${label}.machine.remoteGit must be an object.`);
129
- const remoteGit = machine.remoteGit as Record<string, unknown>;
130
- const unknownRemoteGit = Object.keys(remoteGit).filter((field) => !["head", "branch", "dirty"].includes(field));
131
- if (unknownRemoteGit.length > 0 || (remoteGit.head !== undefined && (typeof remoteGit.head !== "string" || !remoteGit.head.trim())) || (remoteGit.branch !== undefined && (typeof remoteGit.branch !== "string" || !remoteGit.branch.trim())) || (remoteGit.dirty !== undefined && typeof remoteGit.dirty !== "boolean")) throw new Error(`${label}.machine.remoteGit is invalid.`);
132
- }
133
-
134
- function parseExternalCliReceiptMetadata(value: unknown, key: string, source: string): ExternalCliReceiptMetadata | undefined {
135
- if (value === undefined) return undefined;
136
- const label = `Invalid workflow receipt '${source}': entry '${key}' externalAdapter`;
137
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object.`);
138
- const metadata = value as Record<string, unknown>;
139
- const unknownMetadata = Object.keys(metadata).filter((field) => !["adapter", "capabilities", "machine", "safety", "outputArtifacts", "handoff", "supervisor", "nonResumableReason"].includes(field));
140
- if (unknownMetadata.length > 0) throw new Error(`${label} has unsupported fields: ${unknownMetadata.join(", ")}.`);
141
- const adapter = metadata.adapter;
142
- if (!adapter || typeof adapter !== "object" || Array.isArray(adapter)) throw new Error(`${label}.adapter must be an object.`);
143
- const adapterRecord = adapter as Record<string, unknown>;
144
- const unknownAdapter = Object.keys(adapterRecord).filter((field) => !["id", "version", "executionMode"].includes(field));
145
- if (unknownAdapter.length > 0) throw new Error(`${label}.adapter has unsupported fields: ${unknownAdapter.join(", ")}.`);
146
- if ((adapterRecord.id !== "external-cli" && adapterRecord.id !== "codex-exec" && adapterRecord.id !== "codex-exec-writer" && adapterRecord.id !== "claude-code" && adapterRecord.id !== "claude-code-writer" && adapterRecord.id !== "cursor-agent" && adapterRecord.id !== "cursor-agent-writer" && adapterRecord.id !== "grok-build") || adapterRecord.version !== 1 || adapterRecord.executionMode !== (adapterRecord.id === "cursor-agent" || adapterRecord.id === "cursor-agent-writer" || adapterRecord.id === "grok-build" ? "one-shot-prompt-file" : "one-shot-stdin")) throw new Error(`${label}.adapter is invalid.`);
147
- const capabilities = metadata.capabilities;
148
- if (!capabilities || typeof capabilities !== "object" || Array.isArray(capabilities)) throw new Error(`${label}.capabilities must be an object.`);
149
- const capabilityRecord = capabilities as Record<string, unknown>;
150
- const unknownCapabilities = Object.keys(capabilityRecord).filter((field) => !(field in EXTERNAL_CLI_CAPABILITIES));
151
- if (unknownCapabilities.length > 0) throw new Error(`${label}.capabilities has unsupported fields: ${unknownCapabilities.join(", ")}.`);
152
- for (const [capability, expected] of Object.entries(EXTERNAL_CLI_CAPABILITIES)) {
153
- if (capabilityRecord[capability] !== expected) throw new Error(`${label}.capabilities.${capability} is invalid.`);
154
- }
155
- if (metadata.machine !== undefined) parseExternalCliMachine(metadata.machine, label);
156
- const safety = metadata.safety;
157
- if (adapterRecord.id === "codex-exec") {
158
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
159
- const safetyRecord = safety as Record<string, unknown>;
160
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !["sandbox", "approvalPolicy", "ephemeral"].includes(field));
161
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
162
- if (safetyRecord.sandbox !== "read-only" || safetyRecord.approvalPolicy !== "never" || safetyRecord.ephemeral !== true) throw new Error(`${label}.safety is invalid.`);
163
- } else if (adapterRecord.id === "codex-exec-writer") {
164
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
165
- const safetyRecord = safety as Record<string, unknown>;
166
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !["access", "sandbox", "approvalPolicy", "ephemeral"].includes(field));
167
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
168
- if (safetyRecord.access !== "workspace-write" || safetyRecord.sandbox !== "workspace-write" || safetyRecord.approvalPolicy !== "never" || safetyRecord.ephemeral !== true) throw new Error(`${label}.safety is invalid.`);
169
- } else if (adapterRecord.id === "claude-code") {
170
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
171
- const safetyRecord = safety as Record<string, unknown>;
172
- const legacy = safetyRecord.authentication === undefined;
173
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !(legacy
174
- ? ["permissionMode", "tools", "mcp", "settingSources", "sessionPersistence"]
175
- : ["access", "authentication", "permissionMode", "tools", "mcp", "settingSources", "userSettingsTrust", "sessionPersistence"]).includes(field));
176
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
177
- if (legacy) {
178
- if (safetyRecord.permissionMode !== "plan" || safetyRecord.tools !== "none" || safetyRecord.mcp !== "empty-strict" || safetyRecord.settingSources !== "none" || safetyRecord.sessionPersistence !== false) throw new Error(`${label}.safety is invalid.`);
179
- } else if (safetyRecord.access !== "read-only" || safetyRecord.authentication !== "existing-cli-required" || safetyRecord.permissionMode !== "plan" || safetyRecord.tools !== "none" || safetyRecord.mcp !== "empty-strict" || safetyRecord.settingSources !== "user" || safetyRecord.userSettingsTrust !== "required" || safetyRecord.sessionPersistence !== false) throw new Error(`${label}.safety is invalid.`);
180
- } else if (adapterRecord.id === "claude-code-writer") {
181
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
182
- const safetyRecord = safety as Record<string, unknown>;
183
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !["access", "authentication", "permissionMode", "tools", "mcp", "settingSources", "userSettingsTrust", "sessionPersistence"].includes(field));
184
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
185
- if (safetyRecord.access !== "workspace-write" || safetyRecord.authentication !== "existing-cli-required" || safetyRecord.permissionMode !== "acceptEdits" || safetyRecord.tools !== "Read,Write,Edit,Glob,Grep" || safetyRecord.mcp !== "empty-strict" || safetyRecord.settingSources !== "user" || safetyRecord.userSettingsTrust !== "required" || safetyRecord.sessionPersistence !== false) throw new Error(`${label}.safety is invalid.`);
186
- } else if (adapterRecord.id === "cursor-agent" || adapterRecord.id === "cursor-agent-writer") {
187
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
188
- const safetyRecord = safety as Record<string, unknown>;
189
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !["access", "authentication", "mode", "sandbox", "workspaceTrust", "sessionReuse"].includes(field));
190
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
191
- const writer = adapterRecord.id === "cursor-agent-writer";
192
- if (safetyRecord.access !== (writer ? "workspace-write" : "read-only") || safetyRecord.authentication !== "cursor-api-key-or-existing-login" || safetyRecord.mode !== (writer ? "print" : "ask") || safetyRecord.sandbox !== "enabled" || safetyRecord.workspaceTrust !== "existing-required" || safetyRecord.sessionReuse !== false) throw new Error(`${label}.safety is invalid.`);
193
- } else if (adapterRecord.id === "grok-build") {
194
- if (!safety || typeof safety !== "object" || Array.isArray(safety)) throw new Error(`${label}.safety is missing.`);
195
- const safetyRecord = safety as Record<string, unknown>;
196
- const unknownSafety = Object.keys(safetyRecord).filter((field) => !["access", "authentication", "permissionMode", "tools", "deniedTools", "sandbox", "webSearch", "subagents", "config", "updates", "sessionPersistence"].includes(field));
197
- if (unknownSafety.length > 0) throw new Error(`${label}.safety has unsupported fields: ${unknownSafety.join(", ")}.`);
198
- if (safetyRecord.access !== "read-only" || safetyRecord.authentication !== "xai-api-key-required" || safetyRecord.permissionMode !== "plan" || safetyRecord.tools !== "read_file,grep,list_dir" || safetyRecord.deniedTools !== "run_terminal_cmd,search_replace,Agent,Bash,Edit,Write,MCPTool" || safetyRecord.sandbox !== "read-only" || safetyRecord.webSearch !== false || safetyRecord.subagents !== false || safetyRecord.config !== "temporary-home" || safetyRecord.updates !== "disabled" || safetyRecord.sessionPersistence !== false) throw new Error(`${label}.safety is invalid.`);
199
- } else if (safety !== undefined) throw new Error(`${label}.safety is invalid for the generic adapter.`);
200
- const handoff = metadata.handoff;
201
- if (!handoff || typeof handoff !== "object" || Array.isArray(handoff)) throw new Error(`${label}.handoff must be an object.`);
202
- const handoffRecord = handoff as Record<string, unknown>;
203
- const unknownHandoff = Object.keys(handoffRecord).filter((field) => field !== "mode");
204
- if (unknownHandoff.length > 0) throw new Error(`${label}.handoff has unsupported fields: ${unknownHandoff.join(", ")}.`);
205
- if (handoffRecord.mode !== "fresh") throw new Error(`${label}.handoff is invalid.`);
206
- const supervisor = metadata.supervisor;
207
- if (!supervisor || typeof supervisor !== "object" || Array.isArray(supervisor)) throw new Error(`${label}.supervisor must be an object.`);
208
- const supervisorRecord = supervisor as Record<string, unknown>;
209
- const unknownSupervisor = Object.keys(supervisorRecord).filter((field) => !["mode", "reason"].includes(field));
210
- if (unknownSupervisor.length > 0) throw new Error(`${label}.supervisor has unsupported fields: ${unknownSupervisor.join(", ")}.`);
211
- if (supervisorRecord.mode !== "unsupported" || typeof supervisorRecord.reason !== "string" || !supervisorRecord.reason.trim()) throw new Error(`${label}.supervisor is invalid.`);
212
- if (typeof metadata.nonResumableReason !== "string" || !metadata.nonResumableReason.trim()) throw new Error(`${label}.nonResumableReason is missing.`);
213
- const outputArtifacts = metadata.outputArtifacts;
214
- if (outputArtifacts !== undefined) {
215
- if (!outputArtifacts || typeof outputArtifacts !== "object" || Array.isArray(outputArtifacts)) throw new Error(`${label}.outputArtifacts must be an object.`);
216
- const unknownArtifacts = Object.keys(outputArtifacts).filter((field) => !["stdoutPath", "stderrPath", "finalOutputPath"].includes(field));
217
- if (unknownArtifacts.length > 0) throw new Error(`${label}.outputArtifacts has unsupported fields: ${unknownArtifacts.join(", ")}.`);
218
- for (const field of ["stdoutPath", "stderrPath", "finalOutputPath"] as const) {
219
- const artifactPath = (outputArtifacts as Record<string, unknown>)[field];
220
- if (artifactPath !== undefined && (typeof artifactPath !== "string" || !artifactPath.trim())) throw new Error(`${label}.outputArtifacts.${field} must be a non-empty string.`);
221
- }
222
- }
223
- return value as ExternalCliReceiptMetadata;
224
- }
225
-
226
- function parseTerminalOutcome(value: unknown, label: string): WorkflowTerminalOutcome | undefined {
227
- if (value === undefined) return undefined;
228
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object.`);
229
- const outcome = value as Record<string, unknown>;
230
- if (outcome.state !== "partial" || (outcome.reason !== "budget_exhausted" && outcome.reason !== "timeout")) throw new Error(`${label} is invalid.`);
231
- return { state: "partial", reason: outcome.reason };
232
- }
233
-
234
- function parseAcceptanceRecoveryMetadata(value: unknown, label: string): AcceptanceRecoveryMetadata | undefined {
235
- if (value === undefined) return undefined;
236
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object.`);
237
- const recovery = value as Record<string, unknown>;
238
- if (recovery.status !== "available-for-review" || recovery.reason !== "acceptance-metadata-rejected") throw new Error(`${label} is invalid.`);
239
- if (typeof recovery.reportPath !== "string" || !recovery.reportPath.trim() || typeof recovery.reportHash !== "string" || !/^[a-f0-9]{64}$/u.test(recovery.reportHash)) throw new Error(`${label} is invalid.`);
240
- return {
241
- status: "available-for-review",
242
- reason: "acceptance-metadata-rejected",
243
- reportPath: recovery.reportPath,
244
- reportHash: recovery.reportHash,
245
- };
246
- }
247
-
248
- function parseEntry(value: unknown, key: string, source: string): WorkflowReceiptEntry {
249
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' must be an object.`);
250
- const entry = value as Record<string, unknown>;
251
- if (entry.key !== key) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' has a mismatched key.`);
252
- const latestRunId = entry.latestRunId;
253
- if (latestRunId !== undefined && (typeof latestRunId !== "string" || !latestRunId.trim())) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' latestRunId must be non-empty.`);
254
- const continuation = entry.continuation;
255
- if (!continuation || typeof continuation !== "object" || Array.isArray(continuation) || !Array.isArray((continuation as Record<string, unknown>).runIds)) {
256
- throw new Error(`Invalid workflow receipt '${source}': entry '${key}' continuation is missing.`);
257
- }
258
- const runIds = (continuation as { runIds: unknown[] }).runIds;
259
- if (runIds.some((runId) => typeof runId !== "string" || !runId.trim())) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' continuation contains an invalid run id.`);
260
- if (latestRunId !== undefined && runIds.at(-1) !== latestRunId) throw new Error(`Workflow receipt '${source}' entry '${key}' is stale: latestRunId does not match its continuation lineage.`);
261
- const resumability = entry.resumability;
262
- if (!resumability || typeof resumability !== "object" || Array.isArray(resumability)) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' resumability is missing.`);
263
- const state = (resumability as Record<string, unknown>).state;
264
- if (state !== "resumable" && state !== "not-resumable") throw new Error(`Invalid workflow receipt '${source}': entry '${key}' resumability state is invalid.`);
265
- const reason = (resumability as Record<string, unknown>).reason;
266
- if (state === "resumable" && latestRunId === undefined) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' resumable entry has no retained run id.`);
267
- if (state === "not-resumable" && (typeof reason !== "string" || !reason.trim())) throw new Error(`Invalid workflow receipt '${source}': entry '${key}' non-resumable reason is missing.`);
268
- const terminalOutcome = parseTerminalOutcome(entry.terminalOutcome, `Invalid workflow receipt '${source}': entry '${key}' terminalOutcome`);
269
- const acceptanceRecovery = parseAcceptanceRecoveryMetadata(entry.acceptanceRecovery, `Invalid workflow receipt '${source}': entry '${key}' acceptanceRecovery`);
270
- parseExternalCliReceiptMetadata(entry.externalAdapter, key, source);
271
- const lane = normalizeWorkflowLaneMetadata(entry.lane, `Invalid workflow receipt '${source}': entry '${key}'.lane`);
272
- assertWorkflowLaneKey(lane, key, `Invalid workflow receipt '${source}': entry '${key}'.lane`);
273
- return { ...(value as WorkflowReceiptEntry), ...(lane ? { lane } : {}), ...(terminalOutcome ? { terminalOutcome } : {}), ...(acceptanceRecovery ? { acceptanceRecovery } : {}) };
274
- }
275
-
276
- function parseWorkflowResolution(value: unknown, source: string): WorkflowTerminalResolution | undefined {
277
- if (value === undefined) return undefined;
278
- if (value !== "settled-awaiting-resume" && value !== "failed-child" && value !== "interrupted-child") throw new Error(`Invalid workflow receipt '${source}': workflowResolution is invalid.`);
279
- return value;
280
- }
281
-
282
- function parseWorkflowResource(value: unknown, source: string): WorkflowResourceProvenance | undefined {
283
- if (value === undefined) return undefined;
284
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`Invalid workflow receipt '${source}': resource must be an object.`);
285
- const resource = value as Record<string, unknown>;
286
- if (resource.kind !== "workflow" || typeof resource.name !== "string" || !KEY_PATTERN.test(resource.name) || !Number.isInteger(resource.version) || (resource.version as number) < 1 || (resource.version as number) > 1_000_000 || resource.invocation !== "named" || resource.expansion !== "resolved" || typeof resource.id !== "string" || !RESOURCE_ID_PATTERN.test(resource.id)) {
287
- throw new Error(`Invalid workflow receipt '${source}': resource is invalid.`);
288
- }
289
- return {
290
- kind: "workflow",
291
- name: resource.name,
292
- version: resource.version as number,
293
- invocation: "named",
294
- expansion: "resolved",
295
- id: resource.id,
296
- };
297
- }
298
-
299
- function parseRecovery(value: unknown, workflowRunId: string, entries: Record<string, WorkflowReceiptEntry>, source: string): WorkflowRecoveryAction[] | undefined {
300
- if (value === undefined) return undefined;
301
- if (!Array.isArray(value)) throw new Error(`Invalid workflow receipt '${source}': recovery must be an array.`);
302
- return value.map((item, index) => {
303
- if (!item || typeof item !== "object" || Array.isArray(item)) throw new Error(`Invalid workflow receipt '${source}': recovery[${index}] must be an object.`);
304
- const action = item as Record<string, unknown>;
305
- const key = action.key;
306
- const resume = action.resume;
307
- if (typeof key !== "string" || !entries[key] || action.call !== "runs.run" || action.taskRequired !== true || !resume || typeof resume !== "object" || Array.isArray(resume)) throw new Error(`Invalid workflow receipt '${source}': recovery[${index}] is invalid.`);
308
- const reference = resume as Record<string, unknown>;
309
- if (reference.workflowRunId !== workflowRunId || reference.key !== key || reference.latest !== true || entries[key].resumability.state !== "resumable") throw new Error(`Invalid workflow receipt '${source}': recovery[${index}] does not identify a resumable entry.`);
310
- return { key, call: "runs.run", resume: { workflowRunId, key, latest: true }, taskRequired: true };
311
- });
312
- }
313
-
314
- export function readWorkflowReceipt(asyncDirRoot: string, workflowRunId: string): WorkflowReceipt {
315
- const receiptPath = workflowReceiptPath(asyncDirRoot, workflowRunId);
316
- let value: unknown;
317
- try {
318
- value = readWorkflowReceiptFile(receiptPath);
319
- } catch (error) {
320
- if ((error as NodeJS.ErrnoException).code === "ENOENT") {
321
- const workflowDir = path.dirname(receiptPath);
322
- if (fs.existsSync(path.join(workflowDir, "status.json")) || fs.existsSync(path.join(workflowDir, "events.jsonl"))) {
323
- throw new Error(`Workflow receipt '${workflowRunId}' is not available because the workflow may still be active or terminal receipt writing failed. Use direct child run IDs from status/events for direct resume after the normal retained-child checks.`);
324
- }
325
- throw new Error(`Workflow receipt '${workflowRunId}' was not found.`);
326
- }
327
- throw new Error(`Workflow receipt '${workflowRunId}' could not be read: ${error instanceof Error ? error.message : String(error)}`, { cause: error instanceof Error ? error : undefined });
328
- }
329
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`Invalid workflow receipt '${receiptPath}': expected an object.`);
330
- const receipt = value as Record<string, unknown>;
331
- if (receipt.version !== WORKFLOW_RECEIPT_VERSION) throw new Error(`Invalid workflow receipt '${receiptPath}': unsupported version.`);
332
- if (receipt.workflowRunId !== workflowRunId) throw new Error(`Workflow receipt '${receiptPath}' is stale: workflowRunId does not match.`);
333
- if (receipt.state !== "complete" && receipt.state !== "failed" && receipt.state !== "paused" && receipt.state !== "stopped") {
334
- throw new Error(`Workflow receipt '${receiptPath}' is stale: workflow is not terminal.`);
335
- }
336
- if (typeof receipt.createdAt !== "number" || !Number.isFinite(receipt.createdAt)) throw new Error(`Invalid workflow receipt '${receiptPath}': createdAt is invalid.`);
337
- if (!receipt.entries || typeof receipt.entries !== "object" || Array.isArray(receipt.entries)) throw new Error(`Invalid workflow receipt '${receiptPath}': entries must be an object.`);
338
- const entries: Record<string, WorkflowReceiptEntry> = Object.create(null) as Record<string, WorkflowReceiptEntry>;
339
- for (const [key, entry] of Object.entries(receipt.entries as Record<string, unknown>)) entries[assertKey(key, "workflow receipt key")] = parseEntry(entry, key, receiptPath);
340
- const workflowChildren = parseWorkflowChildSummary(receipt.workflowChildren);
341
- if (workflowChildren && workflowChildren.workflowRunId !== workflowRunId) throw new Error(`Workflow receipt '${receiptPath}' is stale: workflowChildren.workflowRunId does not match.`);
342
- let hostSteps: NonNullable<WorkflowReceipt["hostSteps"]> | undefined;
343
- if (receipt.hostSteps !== undefined) {
344
- if (!Array.isArray(receipt.hostSteps)) throw new Error(`Invalid workflow receipt '${receiptPath}': hostSteps must be an array.`);
345
- if (receipt.hostSteps.length > HOST_STEP_MAX_COUNT) throw new Error(`Invalid workflow receipt '${receiptPath}': hostSteps exceeds ${HOST_STEP_MAX_COUNT} entries.`);
346
- hostSteps = receipt.hostSteps.map((hostStep, index) => parseHostStepNode(hostStep, `${receiptPath} hostSteps[${index}]`));
347
- assertUniqueHostStepIds(hostSteps, receiptPath);
348
- }
349
- const workflowResolution = parseWorkflowResolution(receipt.workflowResolution, receiptPath);
350
- if (receipt.argsDigest !== undefined && (typeof receipt.argsDigest !== "string" || !/^[a-f0-9]{64}$/u.test(receipt.argsDigest))) throw new Error(`Invalid workflow receipt '${receiptPath}': argsDigest is invalid.`);
351
- const resource = parseWorkflowResource(receipt.resource, receiptPath);
352
- const terminalOutcome = parseTerminalOutcome(receipt.terminalOutcome, `Invalid workflow receipt '${receiptPath}': terminalOutcome`);
353
- const recovery = parseRecovery(receipt.recovery, workflowRunId, entries, receiptPath);
354
- return { version: 1, workflowRunId, state: receipt.state, createdAt: receipt.createdAt, entries, ...(receipt.argsDigest ? { argsDigest: receipt.argsDigest } : {}), ...(resource ? { resource } : {}), ...(hostSteps?.length ? { hostSteps } : {}), ...(workflowChildren ? { workflowChildren } : {}), ...(workflowResolution ? { workflowResolution } : {}), ...(terminalOutcome ? { terminalOutcome } : {}), ...(recovery ? { recovery } : {}) };
355
- }
356
-
357
- export function resolveWorkflowReceiptResumeEntry(input: {
358
- reference: WorkflowReceiptResumeReference;
359
- asyncDirRoot: string;
360
- assertResumable?: (runId: string) => void;
361
- }): WorkflowReceiptEntry & { latestRunId: string; resumability: { state: "resumable" } } {
362
- if (input.reference.latest !== true) throw new Error("Keyed workflow receipt resume requires latest: true.");
363
- const key = assertKey(input.reference.key, "keyed resume key");
364
- const receipt = readWorkflowReceipt(input.asyncDirRoot, input.reference.workflowRunId.trim());
365
- const entry = receipt.entries[key];
366
- if (!entry) throw new Error(`Workflow receipt '${receipt.workflowRunId}' has no child key '${key}'.`);
367
- assertResumableEntry(entry, receipt.workflowRunId, key);
368
- input.assertResumable?.(entry.latestRunId);
369
- return entry;
370
- }
371
-
372
- function assertResumableEntry(entry: WorkflowReceiptEntry, workflowRunId: string, key: string): asserts entry is WorkflowReceiptEntry & { latestRunId: string; resumability: { state: "resumable" } } {
373
- if (entry.resumability.state !== "resumable") throw new Error(`Workflow receipt '${workflowRunId}' child '${key}' is not resumable: ${entry.resumability.reason}.`);
374
- if (!entry.latestRunId) throw new Error(`Workflow receipt '${workflowRunId}' child '${key}' has no retained run id.`);
375
- }
376
-
377
- export function resolveWorkflowReceiptResume(input: {
378
- reference: WorkflowReceiptResumeReference;
379
- asyncDirRoot: string;
380
- assertResumable?: (runId: string) => void;
381
- }): string {
382
- const entry = resolveWorkflowReceiptResumeEntry(input);
383
- return entry.latestRunId;
384
- }
@@ -1,236 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { stableJsonDigest } from "../shared/launch-contract.ts";
3
- import {
4
- createWorkflowResourcePermit,
5
- type WorkflowResourceHostAuthority,
6
- type WorkflowResourcePermit,
7
- } from "../shared/workflow-child-permit.ts";
8
- import type { WorkflowResourceProvenance } from "../shared/types.ts";
9
-
10
- const RESOURCE_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
11
- const MAX_ARGS_BYTES = 16 * 1024;
12
- const MAX_STRING_BYTES = 16 * 1024;
13
-
14
- export interface ResolvedWorkflowResource {
15
- script: string;
16
- permit: WorkflowResourcePermit;
17
- provenance: WorkflowResourceProvenance;
18
- }
19
-
20
- export type WorkflowResourceResolution =
21
- | { ok: true; resource: ResolvedWorkflowResource }
22
- | { ok: false; error: string };
23
-
24
- export interface WorkflowResourceDefinition {
25
- name: string;
26
- version: number;
27
- /** Trusted synchronous validation/expansion. The extension owns semantic command binding. */
28
- resolve: (args: Readonly<Record<string, unknown>>) => { script: string; hostCommands?: readonly WorkflowResourceHostAuthority[] } | { error: string };
29
- }
30
-
31
- export interface WorkflowResourceRegistration {
32
- dispose(): void;
33
- }
34
-
35
- export interface RegisterWorkflowResourceInput {
36
- sessionId: string;
37
- definition: WorkflowResourceDefinition;
38
- }
39
-
40
- interface WorkflowResourceRegistry {
41
- version: 1;
42
- bySession: Map<string, Map<string, WorkflowResourceDefinition>>;
43
- }
44
-
45
- function registry(): WorkflowResourceRegistry {
46
- const key = Symbol.for("pi-subagents.workflow-resources.v1");
47
- const globalObject = globalThis as Record<PropertyKey, unknown>;
48
- const existing = globalObject[key];
49
- if (existing === undefined) {
50
- const created: WorkflowResourceRegistry = { version: 1, bySession: new Map() };
51
- globalObject[key] = created;
52
- return created;
53
- }
54
- if (!isPlainRecord(existing) || existing.version !== 1 || !(existing.bySession instanceof Map)) throw new Error("Malformed or unsupported workflow resource registry.");
55
- return existing as unknown as WorkflowResourceRegistry;
56
- }
57
-
58
- /** Session ID scopes lookup, not authentication. Dispose on session_shutdown; issued permits remain valid. */
59
- export function registerWorkflowResource(input: RegisterWorkflowResourceInput): WorkflowResourceRegistration {
60
- if (!isPlainRecord(input) || Object.keys(input).some((key) => key !== "sessionId" && key !== "definition")) throw new Error("Workflow registration requires only sessionId and definition.");
61
- const { sessionId, definition } = input;
62
- if (typeof sessionId !== "string" || !sessionId || sessionId.trim() !== sessionId || sessionId.length > 256 || sessionId.includes("\0")) throw new Error("Workflow registration requires a non-empty trimmed sessionId of at most 256 characters without NUL.");
63
- if (!isPlainRecord(definition) || Object.keys(definition).some((key) => !["name", "version", "resolve"].includes(key))) throw new Error("Workflow definition requires only name, version and resolve.");
64
- const { name, version, resolve } = definition;
65
- if (typeof name !== "string" || !RESOURCE_NAME_PATTERN.test(name)) throw new Error("Workflow definition requires a safe resource name.");
66
- if (!Number.isSafeInteger(version) || version < 1) throw new Error("Workflow definition version must be a positive safe integer.");
67
- if (typeof resolve !== "function") throw new Error("Workflow definition requires a synchronous resolve function.");
68
- if (findWorkflowResource(name)) throw new Error(`Workflow resource '${name}' is a protected builtin.`);
69
- const current = registry();
70
- const bucket = current.bySession.get(sessionId) ?? new Map<string, WorkflowResourceDefinition>();
71
- if (!(bucket instanceof Map)) throw new Error("Malformed workflow resource session registry.");
72
- if (bucket.has(name)) throw new Error(`Workflow resource '${name}' is already registered in this session; dispose it first.`);
73
- const snapshot = Object.freeze({ name, version, resolve });
74
- bucket.set(name, snapshot);
75
- current.bySession.set(sessionId, bucket);
76
- let disposed = false;
77
- return {
78
- dispose() {
79
- if (disposed) return;
80
- disposed = true;
81
- if (bucket.get(name) === snapshot) bucket.delete(name);
82
- if (bucket.size === 0 && current.bySession.get(sessionId) === bucket) current.bySession.delete(sessionId);
83
- },
84
- };
85
- }
86
-
87
- function isPlainRecord(value: unknown): value is Record<string, unknown> {
88
- if (!value || typeof value !== "object" || Array.isArray(value)) return false;
89
- const prototype = Object.getPrototypeOf(value);
90
- return prototype === Object.prototype || prototype === null;
91
- }
92
-
93
- function jsonByteLength(value: unknown): number {
94
- try {
95
- const encoded = JSON.stringify(value);
96
- if (encoded === undefined) throw new Error("must contain JSON data");
97
- return Buffer.byteLength(encoded, "utf8");
98
- } catch (error) {
99
- throw new Error(`must contain plain JSON data: ${error instanceof Error ? error.message : String(error)}`);
100
- }
101
- }
102
-
103
- function validatePlainJson(value: unknown, path: string, depth = 0): void {
104
- if (depth > 8) throw new Error(`${path} is too deeply nested.`);
105
- if (value === null || typeof value === "boolean") return;
106
- if (typeof value === "string") {
107
- if (!value.trim()) throw new Error(`${path} must not be empty.`);
108
- if (Buffer.byteLength(value, "utf8") > MAX_STRING_BYTES) throw new Error(`${path} exceeds ${MAX_STRING_BYTES} bytes.`);
109
- return;
110
- }
111
- if (typeof value === "number") {
112
- if (!Number.isFinite(value)) throw new Error(`${path} must be finite.`);
113
- return;
114
- }
115
- if (Array.isArray(value)) {
116
- if (value.length > 64) throw new Error(`${path} contains too many items.`);
117
- for (const [index, entry] of value.entries()) validatePlainJson(entry, `${path}[${index}]`, depth + 1);
118
- return;
119
- }
120
- if (!isPlainRecord(value)) throw new Error(`${path} must contain plain JSON data.`);
121
- if (Object.keys(value).length > 16) throw new Error(`${path} contains too many fields.`);
122
- for (const [key, entry] of Object.entries(value)) {
123
- if (!key.trim()) throw new Error(`${path} contains an empty field name.`);
124
- validatePlainJson(entry, `${path}.${key}`, depth + 1);
125
- }
126
- }
127
-
128
- export function normalizeWorkflowArgs(value: unknown): { args: Record<string, unknown> } | { error: string } {
129
- if (value === undefined) return { args: {} };
130
- if (!isPlainRecord(value)) return { error: "workflow args must be a plain JSON object." };
131
- try {
132
- validatePlainJson(value, "workflow args");
133
- if (jsonByteLength(value) > MAX_ARGS_BYTES) return { error: `workflow args exceed ${MAX_ARGS_BYTES} bytes.` };
134
- return { args: JSON.parse(JSON.stringify(value)) };
135
- } catch (error) {
136
- return { error: error instanceof Error ? error.message : String(error) };
137
- }
138
- }
139
-
140
- export function deepFreezeWorkflowArgs<T extends Record<string, unknown>>(args: T): Readonly<T> {
141
- deepFreezeWorkflowValue(args);
142
- return args;
143
- }
144
-
145
- function deepFreezeWorkflowValue(value: unknown): void {
146
- if (!Array.isArray(value) && !isPlainRecord(value)) return;
147
- for (const entry of Object.values(value)) deepFreezeWorkflowValue(entry);
148
- Object.freeze(value);
149
- }
150
-
151
- function resolveRunCi(args: Readonly<Record<string, unknown>>): ReturnType<WorkflowResourceDefinition["resolve"]> {
152
- const allowed = new Set(["command", "timeoutMs"]);
153
- const unsupported = Object.keys(args).filter((key) => !allowed.has(key));
154
- if (unsupported.length > 0) return { error: `workflow 'run-ci' args contain unsupported fields: ${unsupported.join(", ")}.` };
155
- const command = args.command === undefined ? "npm test" : args.command;
156
- if (command !== "npm test" && command !== "npm run typecheck") return { error: "workflow 'run-ci' args.command must be 'npm test' or 'npm run typecheck'." };
157
- const timeoutMs = args.timeoutMs === undefined ? 120_000 : args.timeoutMs;
158
- if (typeof timeoutMs !== "number" || !Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 86_400_000) return { error: "workflow 'run-ci' args.timeoutMs must be an integer from 1 to 86400000." };
159
- const params = { kind: "command", command, timeoutMs, role: "ci" };
160
- return {
161
- script: `return await runs.host("ci", ${JSON.stringify(params)});`,
162
- hostCommands: [{ key: "ci", command }],
163
- };
164
- }
165
-
166
- function resolveReview(args: Readonly<Record<string, unknown>>): ReturnType<WorkflowResourceDefinition["resolve"]> {
167
- const unsupported = Object.keys(args).filter((key) => key !== "task");
168
- if (unsupported.length > 0) return { error: `workflow 'review' args contain unsupported fields: ${unsupported.join(", ")}.` };
169
- const task = args.task;
170
- if (typeof task !== "string" || !task.trim()) return { error: "workflow 'review' requires a non-empty string args.task." };
171
- return {
172
- script: `return (await runs.run("review", { agent: "reviewer", task: ${JSON.stringify(task.trim())} })).output;`,
173
- };
174
- }
175
-
176
- const WORKFLOW_RESOURCES: readonly WorkflowResourceDefinition[] = [
177
- { name: "review", version: 1, resolve: resolveReview },
178
- { name: "run-ci", version: 1, resolve: resolveRunCi },
179
- ];
180
-
181
- function findWorkflowResource(name: string): WorkflowResourceDefinition | undefined {
182
- return WORKFLOW_RESOURCES.find((resource) => resource.name === name);
183
- }
184
-
185
- function listWorkflowResourceNames(): string[] {
186
- return WORKFLOW_RESOURCES.map((resource) => resource.name);
187
- }
188
-
189
- /** Resolve only extension-owned resources so policy can distinguish them from raw scripts; caller-provided script text is never consulted. */
190
- export function resolveWorkflowResource(nameValue: unknown, argsValue?: unknown, sessionId?: string): WorkflowResourceResolution {
191
- try {
192
- const result = resolveResource(nameValue, argsValue, sessionId);
193
- return result.ok ? result : { ok: false, error: result.error.slice(0, 4096) };
194
- } catch (error) {
195
- return { ok: false, error: error instanceof Error ? error.message.slice(0, 4096) : "Workflow resource resolution failed." };
196
- }
197
- }
198
-
199
- function resolveResource(nameValue: unknown, argsValue?: unknown, sessionId?: string): WorkflowResourceResolution {
200
- if (typeof nameValue !== "string" || !nameValue.trim()) return { ok: false, error: "workflow must be a non-empty resource name." };
201
- const name = nameValue.trim();
202
- if (!RESOURCE_NAME_PATTERN.test(name)) return { ok: false, error: "workflow must use a safe resource name." };
203
- const resource = findWorkflowResource(name) ?? (sessionId ? registry().bySession.get(sessionId)?.get(name) : undefined);
204
- if (!resource) return { ok: false, error: `Unknown workflow resource '${name}'. Available resources: ${listWorkflowResourceNames().join(", ")}.` };
205
- const normalizedArgs = normalizeWorkflowArgs(argsValue);
206
- if ("error" in normalizedArgs) return { ok: false, error: normalizedArgs.error };
207
- const resolved = resource.resolve(normalizedArgs.args);
208
- if (resolved && typeof (resolved as unknown as { then?: unknown }).then === "function") {
209
- void Promise.resolve(resolved).catch(() => {});
210
- throw new Error("Workflow resource resolve must be synchronous.");
211
- }
212
- if (!isPlainRecord(resolved)) throw new Error("Workflow resource resolve must return an expansion or error object.");
213
- if ("error" in resolved) {
214
- if (Object.keys(resolved).some((key) => key !== "error") || typeof resolved.error !== "string" || !resolved.error.trim()) throw new Error("Workflow resource returned an invalid error.");
215
- return { ok: false, error: resolved.error };
216
- }
217
- const { script, hostCommands } = resolved;
218
- if (Object.keys(resolved).some((key) => key !== "script" && key !== "hostCommands") || typeof script !== "string" || !script.trim()) throw new Error("Workflow resource returned an invalid expansion.");
219
- const resourceId = randomUUID();
220
- const permit = createWorkflowResourcePermit({
221
- resourceName: resource.name,
222
- resourceVersion: resource.version,
223
- resourceId,
224
- scriptDigest: stableJsonDigest(script),
225
- authority: { host: hostCommands },
226
- });
227
- const provenance: WorkflowResourceProvenance = Object.freeze({
228
- kind: "workflow",
229
- name: resource.name,
230
- version: resource.version,
231
- invocation: "named",
232
- expansion: "resolved",
233
- id: resourceId,
234
- });
235
- return { ok: true, resource: { script, permit, provenance } };
236
- }