botmux 2.111.0 → 2.112.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 (1041) hide show
  1. package/README.en.md +19 -7
  2. package/README.md +19 -7
  3. package/dist/adapters/adopt-route.d.ts.map +1 -1
  4. package/dist/adapters/adopt-route.js +2 -1
  5. package/dist/adapters/adopt-route.js.map +1 -1
  6. package/dist/adapters/backend/herdr-backend.d.ts +29 -0
  7. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  8. package/dist/adapters/backend/herdr-backend.js +167 -0
  9. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  10. package/dist/adapters/backend/riff-backend.js +2 -2
  11. package/dist/adapters/backend/sandbox.d.ts +61 -6
  12. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  13. package/dist/adapters/backend/sandbox.js +235 -43
  14. package/dist/adapters/backend/sandbox.js.map +1 -1
  15. package/dist/adapters/backend/tmux-backend.d.ts +1 -0
  16. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  17. package/dist/adapters/backend/tmux-backend.js +1 -0
  18. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  19. package/dist/adapters/cli/claude-code.d.ts +2 -0
  20. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  21. package/dist/adapters/cli/claude-code.js +7 -0
  22. package/dist/adapters/cli/claude-code.js.map +1 -1
  23. package/dist/adapters/cli/codex-app-turn.d.ts +16 -0
  24. package/dist/adapters/cli/codex-app-turn.d.ts.map +1 -1
  25. package/dist/adapters/cli/codex-app-turn.js +26 -0
  26. package/dist/adapters/cli/codex-app-turn.js.map +1 -1
  27. package/dist/adapters/cli/codex.d.ts.map +1 -1
  28. package/dist/adapters/cli/codex.js +1 -0
  29. package/dist/adapters/cli/codex.js.map +1 -1
  30. package/dist/adapters/cli/grok.d.ts +8 -6
  31. package/dist/adapters/cli/grok.d.ts.map +1 -1
  32. package/dist/adapters/cli/grok.js +14 -6
  33. package/dist/adapters/cli/grok.js.map +1 -1
  34. package/dist/adapters/cli/read-isolation.d.ts +40 -14
  35. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  36. package/dist/adapters/cli/read-isolation.js +116 -19
  37. package/dist/adapters/cli/read-isolation.js.map +1 -1
  38. package/dist/adapters/cli/runner-control-channel.d.ts +32 -0
  39. package/dist/adapters/cli/runner-control-channel.d.ts.map +1 -0
  40. package/dist/adapters/cli/runner-control-channel.js +104 -0
  41. package/dist/adapters/cli/runner-control-channel.js.map +1 -0
  42. package/dist/adapters/cli/shared-hints.d.ts +1 -1
  43. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  44. package/dist/adapters/cli/shared-hints.js +9 -0
  45. package/dist/adapters/cli/shared-hints.js.map +1 -1
  46. package/dist/adapters/cli/traex.d.ts.map +1 -1
  47. package/dist/adapters/cli/traex.js +100 -64
  48. package/dist/adapters/cli/traex.js.map +1 -1
  49. package/dist/adapters/cli/types.d.ts +13 -0
  50. package/dist/adapters/cli/types.d.ts.map +1 -1
  51. package/dist/bot-registry.d.ts +36 -27
  52. package/dist/bot-registry.d.ts.map +1 -1
  53. package/dist/bot-registry.js +354 -8
  54. package/dist/bot-registry.js.map +1 -1
  55. package/dist/cli/saved-workflow.d.ts +25 -0
  56. package/dist/cli/saved-workflow.d.ts.map +1 -0
  57. package/dist/cli/saved-workflow.js +338 -0
  58. package/dist/cli/saved-workflow.js.map +1 -0
  59. package/dist/cli/send-dispatch.d.ts +18 -3
  60. package/dist/cli/send-dispatch.d.ts.map +1 -1
  61. package/dist/cli/send-dispatch.js +22 -3
  62. package/dist/cli/send-dispatch.js.map +1 -1
  63. package/dist/cli/v3-run-cancel.d.ts +47 -0
  64. package/dist/cli/v3-run-cancel.d.ts.map +1 -0
  65. package/dist/cli/v3-run-cancel.js +96 -0
  66. package/dist/cli/v3-run-cancel.js.map +1 -0
  67. package/dist/cli/vc-agent.d.ts.map +1 -1
  68. package/dist/cli/vc-agent.js +54 -1
  69. package/dist/cli/vc-agent.js.map +1 -1
  70. package/dist/cli/workflow-migration.d.ts +39 -0
  71. package/dist/cli/workflow-migration.d.ts.map +1 -0
  72. package/dist/cli/workflow-migration.js +302 -0
  73. package/dist/cli/workflow-migration.js.map +1 -0
  74. package/dist/cli/workflow-run-archive.d.ts +29 -0
  75. package/dist/cli/workflow-run-archive.d.ts.map +1 -0
  76. package/dist/cli/workflow-run-archive.js +183 -0
  77. package/dist/cli/workflow-run-archive.js.map +1 -0
  78. package/dist/cli/workflow.d.ts +5 -10
  79. package/dist/cli/workflow.d.ts.map +1 -1
  80. package/dist/cli/workflow.js +85 -764
  81. package/dist/cli/workflow.js.map +1 -1
  82. package/dist/cli.d.ts.map +1 -1
  83. package/dist/cli.js +1018 -191
  84. package/dist/cli.js.map +1 -1
  85. package/dist/codex-app-runner.js +30 -21
  86. package/dist/codex-app-runner.js.map +1 -1
  87. package/dist/core/command-handler.d.ts.map +1 -1
  88. package/dist/core/command-handler.js +21 -9
  89. package/dist/core/command-handler.js.map +1 -1
  90. package/dist/core/current-turn-provenance.d.ts +39 -0
  91. package/dist/core/current-turn-provenance.d.ts.map +1 -0
  92. package/dist/core/current-turn-provenance.js +122 -0
  93. package/dist/core/current-turn-provenance.js.map +1 -0
  94. package/dist/core/daemon-ipc-auth.d.ts +20 -0
  95. package/dist/core/daemon-ipc-auth.d.ts.map +1 -0
  96. package/dist/core/daemon-ipc-auth.js +44 -0
  97. package/dist/core/daemon-ipc-auth.js.map +1 -0
  98. package/dist/core/daemon-ipc-session-auth.d.ts +37 -0
  99. package/dist/core/daemon-ipc-session-auth.d.ts.map +1 -0
  100. package/dist/core/daemon-ipc-session-auth.js +35 -0
  101. package/dist/core/daemon-ipc-session-auth.js.map +1 -0
  102. package/dist/core/dashboard-command/index.d.ts +0 -2
  103. package/dist/core/dashboard-command/index.d.ts.map +1 -1
  104. package/dist/core/dashboard-command/index.js +2 -2
  105. package/dist/core/dashboard-command/index.js.map +1 -1
  106. package/dist/core/dashboard-command/stub.d.ts +1 -1
  107. package/dist/core/dashboard-command/stub.d.ts.map +1 -1
  108. package/dist/core/dashboard-command/stub.js +0 -1
  109. package/dist/core/dashboard-command/stub.js.map +1 -1
  110. package/dist/core/dashboard-ipc-server.d.ts +11 -2
  111. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  112. package/dist/core/dashboard-ipc-server.js +266 -41
  113. package/dist/core/dashboard-ipc-server.js.map +1 -1
  114. package/dist/core/dashboard-secret.d.ts +3 -0
  115. package/dist/core/dashboard-secret.d.ts.map +1 -0
  116. package/dist/core/dashboard-secret.js +7 -0
  117. package/dist/core/dashboard-secret.js.map +1 -0
  118. package/dist/core/data-dir.d.ts +24 -0
  119. package/dist/core/data-dir.d.ts.map +1 -0
  120. package/dist/core/data-dir.js +48 -0
  121. package/dist/core/data-dir.js.map +1 -0
  122. package/dist/core/inflight-input-tracker.d.ts +4 -2
  123. package/dist/core/inflight-input-tracker.d.ts.map +1 -1
  124. package/dist/core/inflight-input-tracker.js +6 -5
  125. package/dist/core/inflight-input-tracker.js.map +1 -1
  126. package/dist/core/inject-queue-policy.d.ts +70 -0
  127. package/dist/core/inject-queue-policy.d.ts.map +1 -0
  128. package/dist/core/inject-queue-policy.js +30 -0
  129. package/dist/core/inject-queue-policy.js.map +1 -0
  130. package/dist/core/maintenance.d.ts +1 -1
  131. package/dist/core/maintenance.d.ts.map +1 -1
  132. package/dist/core/maintenance.js +3 -2
  133. package/dist/core/maintenance.js.map +1 -1
  134. package/dist/core/managed-origin-capability.d.ts +30 -0
  135. package/dist/core/managed-origin-capability.d.ts.map +1 -0
  136. package/dist/core/managed-origin-capability.js +88 -0
  137. package/dist/core/managed-origin-capability.js.map +1 -0
  138. package/dist/core/role-library.d.ts +15 -0
  139. package/dist/core/role-library.d.ts.map +1 -0
  140. package/dist/core/role-library.js +75 -0
  141. package/dist/core/role-library.js.map +1 -0
  142. package/dist/core/session-cwd.d.ts +14 -0
  143. package/dist/core/session-cwd.d.ts.map +1 -0
  144. package/dist/core/session-cwd.js +17 -0
  145. package/dist/core/session-cwd.js.map +1 -0
  146. package/dist/core/session-manager.d.ts +4 -1
  147. package/dist/core/session-manager.d.ts.map +1 -1
  148. package/dist/core/session-manager.js +27 -8
  149. package/dist/core/session-manager.js.map +1 -1
  150. package/dist/core/session-marker.d.ts +22 -0
  151. package/dist/core/session-marker.d.ts.map +1 -1
  152. package/dist/core/session-marker.js +185 -20
  153. package/dist/core/session-marker.js.map +1 -1
  154. package/dist/core/slash-inject.d.ts +15 -0
  155. package/dist/core/slash-inject.d.ts.map +1 -0
  156. package/dist/core/slash-inject.js +25 -0
  157. package/dist/core/slash-inject.js.map +1 -0
  158. package/dist/core/terminal-url.d.ts +1 -0
  159. package/dist/core/terminal-url.d.ts.map +1 -1
  160. package/dist/core/terminal-url.js +14 -8
  161. package/dist/core/terminal-url.js.map +1 -1
  162. package/dist/core/terminal-write-auth.d.ts +26 -0
  163. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  164. package/dist/core/terminal-write-auth.js +48 -3
  165. package/dist/core/terminal-write-auth.js.map +1 -1
  166. package/dist/core/trigger-session.d.ts +24 -1
  167. package/dist/core/trigger-session.d.ts.map +1 -1
  168. package/dist/core/trigger-session.js +106 -15
  169. package/dist/core/trigger-session.js.map +1 -1
  170. package/dist/core/types.d.ts +26 -1
  171. package/dist/core/types.d.ts.map +1 -1
  172. package/dist/core/types.js +10 -0
  173. package/dist/core/types.js.map +1 -1
  174. package/dist/core/worker-pool.d.ts +65 -2
  175. package/dist/core/worker-pool.d.ts.map +1 -1
  176. package/dist/core/worker-pool.js +459 -39
  177. package/dist/core/worker-pool.js.map +1 -1
  178. package/dist/daemon.d.ts +249 -8
  179. package/dist/daemon.d.ts.map +1 -1
  180. package/dist/daemon.js +7383 -1195
  181. package/dist/daemon.js.map +1 -1
  182. package/dist/dashboard/aggregator.d.ts +1 -1
  183. package/dist/dashboard/aggregator.d.ts.map +1 -1
  184. package/dist/dashboard/aggregator.js +2 -2
  185. package/dist/dashboard/aggregator.js.map +1 -1
  186. package/dist/dashboard/auth.d.ts +3 -8
  187. package/dist/dashboard/auth.d.ts.map +1 -1
  188. package/dist/dashboard/auth.js +63 -22
  189. package/dist/dashboard/auth.js.map +1 -1
  190. package/dist/dashboard/bot-onboarding.d.ts +5 -0
  191. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  192. package/dist/dashboard/bot-onboarding.js +37 -0
  193. package/dist/dashboard/bot-onboarding.js.map +1 -1
  194. package/dist/dashboard/connector-api.d.ts.map +1 -1
  195. package/dist/dashboard/connector-api.js +42 -2
  196. package/dist/dashboard/connector-api.js.map +1 -1
  197. package/dist/dashboard/daemon-internal-api.d.ts +0 -2
  198. package/dist/dashboard/daemon-internal-api.d.ts.map +1 -1
  199. package/dist/dashboard/daemon-internal-api.js +26 -93
  200. package/dist/dashboard/daemon-internal-api.js.map +1 -1
  201. package/dist/dashboard/daemon-internal-client.d.ts.map +1 -1
  202. package/dist/dashboard/daemon-internal-client.js +2 -3
  203. package/dist/dashboard/daemon-internal-client.js.map +1 -1
  204. package/dist/dashboard/federation-api.js +1 -1
  205. package/dist/dashboard/federation-api.js.map +1 -1
  206. package/dist/dashboard/federation-spoke-api.js +1 -1
  207. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  208. package/dist/dashboard/history-senders.d.ts +3 -0
  209. package/dist/dashboard/history-senders.d.ts.map +1 -1
  210. package/dist/dashboard/history-senders.js.map +1 -1
  211. package/dist/dashboard/http.d.ts +4 -0
  212. package/dist/dashboard/http.d.ts.map +1 -0
  213. package/dist/dashboard/http.js +6 -0
  214. package/dist/dashboard/http.js.map +1 -0
  215. package/dist/dashboard/registry.d.ts +4 -0
  216. package/dist/dashboard/registry.d.ts.map +1 -1
  217. package/dist/dashboard/registry.js.map +1 -1
  218. package/dist/dashboard/trigger-api.js +1 -1
  219. package/dist/dashboard/trigger-api.js.map +1 -1
  220. package/dist/dashboard/v3-runs-api.d.ts +13 -10
  221. package/dist/dashboard/v3-runs-api.d.ts.map +1 -1
  222. package/dist/dashboard/v3-runs-api.js +121 -4
  223. package/dist/dashboard/v3-runs-api.js.map +1 -1
  224. package/dist/dashboard/vc-consumer-profiles-api.d.ts +105 -0
  225. package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -0
  226. package/dist/dashboard/vc-consumer-profiles-api.js +312 -0
  227. package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -0
  228. package/dist/dashboard/web/app.d.ts.map +1 -1
  229. package/dist/dashboard/web/app.js +7 -6
  230. package/dist/dashboard/web/app.js.map +1 -1
  231. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  232. package/dist/dashboard/web/bot-defaults-page.js +9 -14
  233. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  234. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  235. package/dist/dashboard/web/bot-onboarding.js +7 -3
  236. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  237. package/dist/dashboard/web/connectors-page.d.ts +5 -0
  238. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  239. package/dist/dashboard/web/connectors-page.js +16 -12
  240. package/dist/dashboard/web/connectors-page.js.map +1 -1
  241. package/dist/dashboard/web/create-session-entry.d.ts +4 -0
  242. package/dist/dashboard/web/create-session-entry.d.ts.map +1 -0
  243. package/dist/dashboard/web/create-session-entry.js +17 -0
  244. package/dist/dashboard/web/create-session-entry.js.map +1 -0
  245. package/dist/dashboard/web/dashboard-components.d.ts +5 -0
  246. package/dist/dashboard/web/dashboard-components.d.ts.map +1 -1
  247. package/dist/dashboard/web/dashboard-components.js +29 -4
  248. package/dist/dashboard/web/dashboard-components.js.map +1 -1
  249. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  250. package/dist/dashboard/web/dashboard-routes.js +0 -1
  251. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  252. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  253. package/dist/dashboard/web/i18n.js +192 -382
  254. package/dist/dashboard/web/i18n.js.map +1 -1
  255. package/dist/dashboard/web/preferences.d.ts +3 -0
  256. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  257. package/dist/dashboard/web/preferences.js +18 -0
  258. package/dist/dashboard/web/preferences.js.map +1 -1
  259. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  260. package/dist/dashboard/web/schedules-page.js +4 -1
  261. package/dist/dashboard/web/schedules-page.js.map +1 -1
  262. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  263. package/dist/dashboard/web/sessions-page.js +64 -18
  264. package/dist/dashboard/web/sessions-page.js.map +1 -1
  265. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  266. package/dist/dashboard/web/settings-page.js +2 -1
  267. package/dist/dashboard/web/settings-page.js.map +1 -1
  268. package/dist/dashboard/web/v3-api.d.ts +12 -2
  269. package/dist/dashboard/web/v3-api.d.ts.map +1 -1
  270. package/dist/dashboard/web/v3-api.js +34 -6
  271. package/dist/dashboard/web/v3-api.js.map +1 -1
  272. package/dist/dashboard/web/v3-components.d.ts +6 -0
  273. package/dist/dashboard/web/v3-components.d.ts.map +1 -1
  274. package/dist/dashboard/web/v3-components.js +66 -23
  275. package/dist/dashboard/web/v3-components.js.map +1 -1
  276. package/dist/dashboard/web/v3-model.js +1 -1
  277. package/dist/dashboard/web/v3-model.js.map +1 -1
  278. package/dist/dashboard/web/v3-terminal.js +2 -2
  279. package/dist/dashboard/web/v3-terminal.js.map +1 -1
  280. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +19 -0
  281. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -0
  282. package/dist/dashboard/web/vc-consumer-profiles-section.js +382 -0
  283. package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -0
  284. package/dist/dashboard/webhook-routes.d.ts.map +1 -1
  285. package/dist/dashboard/webhook-routes.js +29 -6
  286. package/dist/dashboard/webhook-routes.js.map +1 -1
  287. package/dist/dashboard-web/app.js +1 -1
  288. package/dist/dashboard-web/chunks/bot-defaults-page-RYBL4ZYE.js +4 -0
  289. package/dist/dashboard-web/chunks/{chunk-OEJIT66L.js → chunk-CMDPZOPK.js} +1 -1
  290. package/dist/dashboard-web/chunks/chunk-I35DXGM4.js +1 -0
  291. package/dist/dashboard-web/chunks/chunk-NYZHARIU.js +47 -0
  292. package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +1 -0
  293. package/dist/dashboard-web/chunks/{chunk-YQFXGRSD.js → chunk-YBOHL7T7.js} +1 -1
  294. package/dist/dashboard-web/chunks/chunk-YWCPDL4S.js +1 -0
  295. package/dist/dashboard-web/chunks/connectors-page-DAMP7TTV.js +1 -0
  296. package/dist/dashboard-web/chunks/{groups-page-5AJPPJH2.js → groups-page-BPFA356N.js} +1 -1
  297. package/dist/dashboard-web/chunks/{insights-page-R3DFECX4.js → insights-page-SHOPHTWY.js} +1 -1
  298. package/dist/dashboard-web/chunks/{monitor-room-NLMKJLDY.js → monitor-room-PXPJGZCN.js} +1 -1
  299. package/dist/dashboard-web/chunks/{monitoring-page-EHSOX4GV.js → monitoring-page-4DF54M5Y.js} +1 -1
  300. package/dist/dashboard-web/chunks/{office-page-OXJKFJ4R.js → office-page-6OHU6KMZ.js} +1 -1
  301. package/dist/dashboard-web/chunks/{overview-page-GJHIVXJF.js → overview-page-IHIZ6F5M.js} +1 -1
  302. package/dist/dashboard-web/chunks/{roles-page-6ZODQISW.js → roles-page-JYTBYKEF.js} +1 -1
  303. package/dist/dashboard-web/chunks/{schedules-page-DAGMHVCH.js → schedules-page-WJ72T7KV.js} +1 -1
  304. package/dist/dashboard-web/chunks/sessions-page-QC56OIAI.js +3 -0
  305. package/dist/dashboard-web/chunks/settings-page-TCKWEXTN.js +2 -0
  306. package/dist/dashboard-web/chunks/{skills-page-J7EVUHXP.js → skills-page-RJJNIECW.js} +1 -1
  307. package/dist/dashboard-web/chunks/{team-federation-page-YM5JBIII.js → team-federation-page-ZMDX3E7K.js} +1 -1
  308. package/dist/dashboard-web/chunks/v3-page-VLLAUQ33.js +94 -0
  309. package/dist/dashboard-web/chunks/{whiteboards-page-75N2U6W4.js → whiteboards-page-NAO53CKM.js} +1 -1
  310. package/dist/dashboard-web/style.css +363 -274
  311. package/dist/dashboard.js +194 -78
  312. package/dist/dashboard.js.map +1 -1
  313. package/dist/global-config.d.ts +1 -1
  314. package/dist/i18n/en.d.ts.map +1 -1
  315. package/dist/i18n/en.js +12 -87
  316. package/dist/i18n/en.js.map +1 -1
  317. package/dist/i18n/zh.d.ts.map +1 -1
  318. package/dist/i18n/zh.js +12 -87
  319. package/dist/i18n/zh.js.map +1 -1
  320. package/dist/im/lark/brand-template.d.ts +15 -0
  321. package/dist/im/lark/brand-template.d.ts.map +1 -0
  322. package/dist/im/lark/brand-template.js +114 -0
  323. package/dist/im/lark/brand-template.js.map +1 -0
  324. package/dist/im/lark/card-handler.d.ts +6 -3
  325. package/dist/im/lark/card-handler.d.ts.map +1 -1
  326. package/dist/im/lark/card-handler.js +23 -39
  327. package/dist/im/lark/card-handler.js.map +1 -1
  328. package/dist/im/lark/client.d.ts +8 -2
  329. package/dist/im/lark/client.d.ts.map +1 -1
  330. package/dist/im/lark/client.js +33 -31
  331. package/dist/im/lark/client.js.map +1 -1
  332. package/dist/im/lark/doc-comment.d.ts +18 -0
  333. package/dist/im/lark/doc-comment.d.ts.map +1 -1
  334. package/dist/im/lark/doc-comment.js +119 -5
  335. package/dist/im/lark/doc-comment.js.map +1 -1
  336. package/dist/im/lark/event-dispatcher.d.ts +18 -2
  337. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  338. package/dist/im/lark/event-dispatcher.js +41 -19
  339. package/dist/im/lark/event-dispatcher.js.map +1 -1
  340. package/dist/im/lark/merge-forward.d.ts.map +1 -1
  341. package/dist/im/lark/merge-forward.js +7 -2
  342. package/dist/im/lark/merge-forward.js.map +1 -1
  343. package/dist/im/lark/message-parser.d.ts.map +1 -1
  344. package/dist/im/lark/message-parser.js +7 -0
  345. package/dist/im/lark/message-parser.js.map +1 -1
  346. package/dist/im/lark/overview-card.d.ts +1 -2
  347. package/dist/im/lark/overview-card.d.ts.map +1 -1
  348. package/dist/im/lark/overview-card.js +1 -48
  349. package/dist/im/lark/overview-card.js.map +1 -1
  350. package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -1
  351. package/dist/im/lark/v3-blocked-card-handler.js +5 -5
  352. package/dist/im/lark/v3-blocked-card-handler.js.map +1 -1
  353. package/dist/im/lark/v3-blocked-card.d.ts +1 -0
  354. package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
  355. package/dist/im/lark/v3-blocked-card.js +19 -2
  356. package/dist/im/lark/v3-blocked-card.js.map +1 -1
  357. package/dist/im/lark/v3-distillation-card-handler.d.ts +12 -0
  358. package/dist/im/lark/v3-distillation-card-handler.d.ts.map +1 -0
  359. package/dist/im/lark/v3-distillation-card-handler.js +107 -0
  360. package/dist/im/lark/v3-distillation-card-handler.js.map +1 -0
  361. package/dist/im/lark/v3-distillation-card.d.ts +42 -0
  362. package/dist/im/lark/v3-distillation-card.d.ts.map +1 -0
  363. package/dist/im/lark/v3-distillation-card.js +206 -0
  364. package/dist/im/lark/v3-distillation-card.js.map +1 -0
  365. package/dist/im/lark/v3-gate-card-handler.d.ts +1 -1
  366. package/dist/im/lark/v3-gate-card-handler.d.ts.map +1 -1
  367. package/dist/im/lark/v3-gate-card-handler.js +6 -5
  368. package/dist/im/lark/v3-gate-card-handler.js.map +1 -1
  369. package/dist/im/lark/v3-gate-card.d.ts +8 -1
  370. package/dist/im/lark/v3-gate-card.d.ts.map +1 -1
  371. package/dist/im/lark/v3-gate-card.js +38 -7
  372. package/dist/im/lark/v3-gate-card.js.map +1 -1
  373. package/dist/im/lark/v3-loop-grant-card-handler.d.ts.map +1 -1
  374. package/dist/im/lark/v3-loop-grant-card-handler.js +3 -4
  375. package/dist/im/lark/v3-loop-grant-card-handler.js.map +1 -1
  376. package/dist/im/lark/v3-loop-grant-card.js +1 -1
  377. package/dist/im/lark/v3-loop-grant-card.js.map +1 -1
  378. package/dist/im/lark/v3-progress-card-manager.d.ts +79 -0
  379. package/dist/im/lark/v3-progress-card-manager.d.ts.map +1 -0
  380. package/dist/im/lark/v3-progress-card-manager.js +444 -0
  381. package/dist/im/lark/v3-progress-card-manager.js.map +1 -0
  382. package/dist/im/lark/v3-progress-card.d.ts +26 -0
  383. package/dist/im/lark/v3-progress-card.d.ts.map +1 -0
  384. package/dist/im/lark/v3-progress-card.js +211 -0
  385. package/dist/im/lark/v3-progress-card.js.map +1 -0
  386. package/dist/im/lark/v3-revisit-grant-card-handler.d.ts.map +1 -1
  387. package/dist/im/lark/v3-revisit-grant-card-handler.js +3 -4
  388. package/dist/im/lark/v3-revisit-grant-card-handler.js.map +1 -1
  389. package/dist/im/lark/v3-revisit-grant-card.js +1 -1
  390. package/dist/im/lark/v3-revisit-grant-card.js.map +1 -1
  391. package/dist/im/lark/v3-run-save-card-handler.d.ts +12 -0
  392. package/dist/im/lark/v3-run-save-card-handler.d.ts.map +1 -0
  393. package/dist/im/lark/v3-run-save-card-handler.js +160 -0
  394. package/dist/im/lark/v3-run-save-card-handler.js.map +1 -0
  395. package/dist/im/lark/v3-run-save-card.d.ts +38 -0
  396. package/dist/im/lark/v3-run-save-card.d.ts.map +1 -0
  397. package/dist/im/lark/v3-run-save-card.js +125 -0
  398. package/dist/im/lark/v3-run-save-card.js.map +1 -0
  399. package/dist/im/lark/v3-saved-workflow-command.d.ts +36 -0
  400. package/dist/im/lark/v3-saved-workflow-command.d.ts.map +1 -0
  401. package/dist/im/lark/v3-saved-workflow-command.js +186 -0
  402. package/dist/im/lark/v3-saved-workflow-command.js.map +1 -0
  403. package/dist/im/lark/v3-saved-workflow-handler.d.ts +89 -0
  404. package/dist/im/lark/v3-saved-workflow-handler.d.ts.map +1 -0
  405. package/dist/im/lark/v3-saved-workflow-handler.js +212 -0
  406. package/dist/im/lark/v3-saved-workflow-handler.js.map +1 -0
  407. package/dist/im/lark/workflow-slash-command.d.ts +7 -110
  408. package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
  409. package/dist/im/lark/workflow-slash-command.js +16 -230
  410. package/dist/im/lark/workflow-slash-command.js.map +1 -1
  411. package/dist/index-daemon.js +1 -1
  412. package/dist/index-daemon.js.map +1 -1
  413. package/dist/mir-runner.js +11 -15
  414. package/dist/mir-runner.js.map +1 -1
  415. package/dist/mira-runner.js +8 -12
  416. package/dist/mira-runner.js.map +1 -1
  417. package/dist/services/bridge-turn-queue.d.ts +29 -12
  418. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  419. package/dist/services/bridge-turn-queue.js +59 -23
  420. package/dist/services/bridge-turn-queue.js.map +1 -1
  421. package/dist/services/claude-transcript.d.ts +15 -0
  422. package/dist/services/claude-transcript.d.ts.map +1 -1
  423. package/dist/services/claude-transcript.js +24 -0
  424. package/dist/services/claude-transcript.js.map +1 -1
  425. package/dist/services/codex-bridge-queue.d.ts +13 -2
  426. package/dist/services/codex-bridge-queue.d.ts.map +1 -1
  427. package/dist/services/codex-bridge-queue.js +20 -3
  428. package/dist/services/codex-bridge-queue.js.map +1 -1
  429. package/dist/services/codex-transcript.d.ts +6 -0
  430. package/dist/services/codex-transcript.d.ts.map +1 -1
  431. package/dist/services/codex-transcript.js.map +1 -1
  432. package/dist/services/grok-transcript.d.ts +3 -2
  433. package/dist/services/grok-transcript.d.ts.map +1 -1
  434. package/dist/services/grok-transcript.js +73 -22
  435. package/dist/services/grok-transcript.js.map +1 -1
  436. package/dist/services/hook-runner.d.ts.map +1 -1
  437. package/dist/services/hook-runner.js +26 -3
  438. package/dist/services/hook-runner.js.map +1 -1
  439. package/dist/services/schedule-store.d.ts +37 -0
  440. package/dist/services/schedule-store.d.ts.map +1 -1
  441. package/dist/services/schedule-store.js +259 -141
  442. package/dist/services/schedule-store.js.map +1 -1
  443. package/dist/services/send-policy.d.ts +50 -0
  444. package/dist/services/send-policy.d.ts.map +1 -1
  445. package/dist/services/send-policy.js +65 -0
  446. package/dist/services/send-policy.js.map +1 -1
  447. package/dist/services/session-lifecycle-hooks.d.ts.map +1 -1
  448. package/dist/services/session-lifecycle-hooks.js +12 -0
  449. package/dist/services/session-lifecycle-hooks.js.map +1 -1
  450. package/dist/services/traex-transcript.d.ts +11 -2
  451. package/dist/services/traex-transcript.d.ts.map +1 -1
  452. package/dist/services/traex-transcript.js +142 -8
  453. package/dist/services/traex-transcript.js.map +1 -1
  454. package/dist/services/trigger-types.d.ts +6 -1
  455. package/dist/services/trigger-types.d.ts.map +1 -1
  456. package/dist/services/trigger-types.js.map +1 -1
  457. package/dist/services/turn-terminal-deduper.d.ts +14 -0
  458. package/dist/services/turn-terminal-deduper.d.ts.map +1 -0
  459. package/dist/services/turn-terminal-deduper.js +34 -0
  460. package/dist/services/turn-terminal-deduper.js.map +1 -0
  461. package/dist/services/vc-meeting-action-gate.d.ts +246 -0
  462. package/dist/services/vc-meeting-action-gate.d.ts.map +1 -0
  463. package/dist/services/vc-meeting-action-gate.js +756 -0
  464. package/dist/services/vc-meeting-action-gate.js.map +1 -0
  465. package/dist/services/vc-meeting-action-store.d.ts +222 -0
  466. package/dist/services/vc-meeting-action-store.d.ts.map +1 -0
  467. package/dist/services/vc-meeting-action-store.js +806 -0
  468. package/dist/services/vc-meeting-action-store.js.map +1 -0
  469. package/dist/services/vc-meeting-consumer-isolation.d.ts +27 -0
  470. package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -0
  471. package/dist/services/vc-meeting-consumer-isolation.js +37 -0
  472. package/dist/services/vc-meeting-consumer-isolation.js.map +1 -0
  473. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +72 -0
  474. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -0
  475. package/dist/services/vc-meeting-consumer-profile-bootstrap.js +343 -0
  476. package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -0
  477. package/dist/services/vc-meeting-consumer-profile-store.d.ts +39 -0
  478. package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +1 -0
  479. package/dist/services/vc-meeting-consumer-profile-store.js +190 -0
  480. package/dist/services/vc-meeting-consumer-profile-store.js.map +1 -0
  481. package/dist/services/vc-meeting-daemon-auth.d.ts +29 -0
  482. package/dist/services/vc-meeting-daemon-auth.d.ts.map +1 -0
  483. package/dist/services/vc-meeting-daemon-auth.js +117 -0
  484. package/dist/services/vc-meeting-daemon-auth.js.map +1 -0
  485. package/dist/services/vc-meeting-delivery-feed.d.ts +52 -0
  486. package/dist/services/vc-meeting-delivery-feed.d.ts.map +1 -0
  487. package/dist/services/vc-meeting-delivery-feed.js +231 -0
  488. package/dist/services/vc-meeting-delivery-feed.js.map +1 -0
  489. package/dist/services/vc-meeting-delivery-hub-store.d.ts +213 -0
  490. package/dist/services/vc-meeting-delivery-hub-store.d.ts.map +1 -0
  491. package/dist/services/vc-meeting-delivery-hub-store.js +1230 -0
  492. package/dist/services/vc-meeting-delivery-hub-store.js.map +1 -0
  493. package/dist/services/vc-meeting-delivery-protocol.d.ts +159 -0
  494. package/dist/services/vc-meeting-delivery-protocol.d.ts.map +1 -0
  495. package/dist/services/vc-meeting-delivery-protocol.js +443 -0
  496. package/dist/services/vc-meeting-delivery-protocol.js.map +1 -0
  497. package/dist/services/vc-meeting-delivery-receiver.d.ts +80 -0
  498. package/dist/services/vc-meeting-delivery-receiver.d.ts.map +1 -0
  499. package/dist/services/vc-meeting-delivery-receiver.js +543 -0
  500. package/dist/services/vc-meeting-delivery-receiver.js.map +1 -0
  501. package/dist/services/vc-meeting-delivery-store.d.ts +339 -0
  502. package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -0
  503. package/dist/services/vc-meeting-delivery-store.js +1024 -0
  504. package/dist/services/vc-meeting-delivery-store.js.map +1 -0
  505. package/dist/services/vc-meeting-feed-metadata-store.d.ts +58 -0
  506. package/dist/services/vc-meeting-feed-metadata-store.d.ts.map +1 -0
  507. package/dist/services/vc-meeting-feed-metadata-store.js +356 -0
  508. package/dist/services/vc-meeting-feed-metadata-store.js.map +1 -0
  509. package/dist/services/vc-meeting-im-reply.d.ts +55 -0
  510. package/dist/services/vc-meeting-im-reply.d.ts.map +1 -0
  511. package/dist/services/vc-meeting-im-reply.js +279 -0
  512. package/dist/services/vc-meeting-im-reply.js.map +1 -0
  513. package/dist/services/vc-meeting-im-routing.d.ts +131 -0
  514. package/dist/services/vc-meeting-im-routing.d.ts.map +1 -0
  515. package/dist/services/vc-meeting-im-routing.js +449 -0
  516. package/dist/services/vc-meeting-im-routing.js.map +1 -0
  517. package/dist/services/vc-meeting-listener-message-store.d.ts +23 -0
  518. package/dist/services/vc-meeting-listener-message-store.d.ts.map +1 -0
  519. package/dist/services/vc-meeting-listener-message-store.js +142 -0
  520. package/dist/services/vc-meeting-listener-message-store.js.map +1 -0
  521. package/dist/services/vc-meeting-member-policy.d.ts +37 -0
  522. package/dist/services/vc-meeting-member-policy.d.ts.map +1 -0
  523. package/dist/services/vc-meeting-member-policy.js +102 -0
  524. package/dist/services/vc-meeting-member-policy.js.map +1 -0
  525. package/dist/services/vc-meeting-profile-instructions.d.ts +22 -0
  526. package/dist/services/vc-meeting-profile-instructions.d.ts.map +1 -0
  527. package/dist/services/vc-meeting-profile-instructions.js +64 -0
  528. package/dist/services/vc-meeting-profile-instructions.js.map +1 -0
  529. package/dist/services/vc-meeting-runtime-store.d.ts +63 -0
  530. package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
  531. package/dist/services/vc-meeting-runtime-store.js +605 -116
  532. package/dist/services/vc-meeting-runtime-store.js.map +1 -1
  533. package/dist/services/vc-meeting-send-policy.d.ts +89 -0
  534. package/dist/services/vc-meeting-send-policy.d.ts.map +1 -0
  535. package/dist/services/vc-meeting-send-policy.js +150 -0
  536. package/dist/services/vc-meeting-send-policy.js.map +1 -0
  537. package/dist/services/vc-meeting-terminal-reconciler.d.ts +93 -0
  538. package/dist/services/vc-meeting-terminal-reconciler.d.ts.map +1 -0
  539. package/dist/services/vc-meeting-terminal-reconciler.js +198 -0
  540. package/dist/services/vc-meeting-terminal-reconciler.js.map +1 -0
  541. package/dist/setup/open-platform-automation.d.ts +2 -0
  542. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  543. package/dist/setup/open-platform-automation.js +1 -0
  544. package/dist/setup/open-platform-automation.js.map +1 -1
  545. package/dist/setup/open-platform-outcome.d.ts +50 -0
  546. package/dist/setup/open-platform-outcome.d.ts.map +1 -0
  547. package/dist/setup/open-platform-outcome.js +56 -0
  548. package/dist/setup/open-platform-outcome.js.map +1 -0
  549. package/dist/setup/setup-args.d.ts +7 -2
  550. package/dist/setup/setup-args.d.ts.map +1 -1
  551. package/dist/setup/setup-args.js +21 -5
  552. package/dist/setup/setup-args.js.map +1 -1
  553. package/dist/skills/definitions.d.ts.map +1 -1
  554. package/dist/skills/definitions.js +66 -54
  555. package/dist/skills/definitions.js.map +1 -1
  556. package/dist/skills/injection-mode.d.ts +5 -4
  557. package/dist/skills/injection-mode.d.ts.map +1 -1
  558. package/dist/skills/injection-mode.js +19 -10
  559. package/dist/skills/injection-mode.js.map +1 -1
  560. package/dist/types.d.ts +187 -0
  561. package/dist/types.d.ts.map +1 -1
  562. package/dist/utils/canonical-input-hash.d.ts +5 -0
  563. package/dist/utils/canonical-input-hash.d.ts.map +1 -0
  564. package/dist/utils/canonical-input-hash.js +43 -0
  565. package/dist/utils/canonical-input-hash.js.map +1 -0
  566. package/dist/utils/canonical-json.d.ts +10 -0
  567. package/dist/utils/canonical-json.d.ts.map +1 -0
  568. package/dist/utils/canonical-json.js +23 -0
  569. package/dist/utils/canonical-json.js.map +1 -0
  570. package/dist/utils/child-env.d.ts +1 -1
  571. package/dist/utils/child-env.d.ts.map +1 -1
  572. package/dist/utils/child-env.js +8 -0
  573. package/dist/utils/child-env.js.map +1 -1
  574. package/dist/utils/daemon-discovery.d.ts +4 -0
  575. package/dist/utils/daemon-discovery.d.ts.map +1 -1
  576. package/dist/utils/daemon-discovery.js +12 -6
  577. package/dist/utils/daemon-discovery.js.map +1 -1
  578. package/dist/utils/file-lock.d.ts.map +1 -1
  579. package/dist/utils/file-lock.js +696 -102
  580. package/dist/utils/file-lock.js.map +1 -1
  581. package/dist/utils/fs-durability.d.ts +20 -0
  582. package/dist/utils/fs-durability.d.ts.map +1 -0
  583. package/dist/utils/fs-durability.js +84 -0
  584. package/dist/utils/fs-durability.js.map +1 -0
  585. package/dist/utils/global-install.d.ts +5 -2
  586. package/dist/utils/global-install.d.ts.map +1 -1
  587. package/dist/utils/global-install.js +22 -4
  588. package/dist/utils/global-install.js.map +1 -1
  589. package/dist/utils/herdr-web-history.d.ts +12 -0
  590. package/dist/utils/herdr-web-history.d.ts.map +1 -0
  591. package/dist/utils/herdr-web-history.js +74 -0
  592. package/dist/utils/herdr-web-history.js.map +1 -0
  593. package/dist/utils/herdr-web-terminal-binding.d.ts +39 -0
  594. package/dist/utils/herdr-web-terminal-binding.d.ts.map +1 -0
  595. package/dist/utils/herdr-web-terminal-binding.js +56 -0
  596. package/dist/utils/herdr-web-terminal-binding.js.map +1 -0
  597. package/dist/utils/pending-input-queue.d.ts +30 -1
  598. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  599. package/dist/utils/pending-input-queue.js +45 -5
  600. package/dist/utils/pending-input-queue.js.map +1 -1
  601. package/dist/vc-agent/cards.d.ts +49 -4
  602. package/dist/vc-agent/cards.d.ts.map +1 -1
  603. package/dist/vc-agent/cards.js +460 -70
  604. package/dist/vc-agent/cards.js.map +1 -1
  605. package/dist/vc-agent/polling-source.d.ts +6 -1
  606. package/dist/vc-agent/polling-source.d.ts.map +1 -1
  607. package/dist/vc-agent/polling-source.js +17 -4
  608. package/dist/vc-agent/polling-source.js.map +1 -1
  609. package/dist/worker.js +1333 -283
  610. package/dist/worker.js.map +1 -1
  611. package/dist/workflows/definition.d.ts +28 -35
  612. package/dist/workflows/definition.d.ts.map +1 -1
  613. package/dist/workflows/definition.js +7 -24
  614. package/dist/workflows/definition.js.map +1 -1
  615. package/dist/workflows/events/payloads.d.ts +28 -28
  616. package/dist/workflows/events/replay.d.ts +5 -0
  617. package/dist/workflows/events/replay.d.ts.map +1 -1
  618. package/dist/workflows/events/replay.js +6 -1
  619. package/dist/workflows/events/replay.js.map +1 -1
  620. package/dist/workflows/events/schema.d.ts +663 -663
  621. package/dist/workflows/events/schema.d.ts.map +1 -1
  622. package/dist/workflows/events/schema.js +1 -4
  623. package/dist/workflows/events/schema.js.map +1 -1
  624. package/dist/workflows/hostExecutors/botmux-schedule.d.ts +5 -4
  625. package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
  626. package/dist/workflows/hostExecutors/botmux-schedule.js +80 -35
  627. package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
  628. package/dist/workflows/hostExecutors/feishu-im.d.ts +3 -3
  629. package/dist/workflows/hostExecutors/feishu-im.d.ts.map +1 -1
  630. package/dist/workflows/hostExecutors/feishu-im.js +3 -3
  631. package/dist/workflows/hostExecutors/feishu-im.js.map +1 -1
  632. package/dist/workflows/hostExecutors/feishu-reply.d.ts +1 -1
  633. package/dist/workflows/hostExecutors/feishu-reply.d.ts.map +1 -1
  634. package/dist/workflows/hostExecutors/feishu-reply.js +1 -1
  635. package/dist/workflows/hostExecutors/feishu-reply.js.map +1 -1
  636. package/dist/workflows/hostExecutors/feishu-send.d.ts +1 -1
  637. package/dist/workflows/hostExecutors/feishu-send.d.ts.map +1 -1
  638. package/dist/workflows/hostExecutors/feishu-send.js +1 -1
  639. package/dist/workflows/hostExecutors/feishu-send.js.map +1 -1
  640. package/dist/workflows/hostExecutors/index.d.ts +0 -1
  641. package/dist/workflows/hostExecutors/index.d.ts.map +1 -1
  642. package/dist/workflows/hostExecutors/index.js +0 -1
  643. package/dist/workflows/hostExecutors/index.js.map +1 -1
  644. package/dist/workflows/hostExecutors/registry.d.ts +1 -1
  645. package/dist/workflows/hostExecutors/registry.d.ts.map +1 -1
  646. package/dist/workflows/hostExecutors/types.d.ts +21 -29
  647. package/dist/workflows/hostExecutors/types.d.ts.map +1 -1
  648. package/dist/workflows/migration/v2-definition-paths.d.ts +3 -0
  649. package/dist/workflows/migration/v2-definition-paths.d.ts.map +1 -0
  650. package/dist/workflows/migration/v2-definition-paths.js +10 -0
  651. package/dist/workflows/migration/v2-definition-paths.js.map +1 -0
  652. package/dist/workflows/migration/v2-ledger.d.ts +138 -0
  653. package/dist/workflows/migration/v2-ledger.d.ts.map +1 -0
  654. package/dist/workflows/migration/v2-ledger.js +599 -0
  655. package/dist/workflows/migration/v2-ledger.js.map +1 -0
  656. package/dist/workflows/migration/v2-migration-service.d.ts +40 -0
  657. package/dist/workflows/migration/v2-migration-service.d.ts.map +1 -0
  658. package/dist/workflows/migration/v2-migration-service.js +454 -0
  659. package/dist/workflows/migration/v2-migration-service.js.map +1 -0
  660. package/dist/workflows/migration/v2-read-only-ids.d.ts +7 -0
  661. package/dist/workflows/migration/v2-read-only-ids.d.ts.map +1 -0
  662. package/dist/workflows/migration/v2-read-only-ids.js +9 -0
  663. package/dist/workflows/migration/v2-read-only-ids.js.map +1 -0
  664. package/dist/workflows/migration/v2-run-archive-schema.d.ts +976 -0
  665. package/dist/workflows/migration/v2-run-archive-schema.d.ts.map +1 -0
  666. package/dist/workflows/migration/v2-run-archive-schema.js +113 -0
  667. package/dist/workflows/migration/v2-run-archive-schema.js.map +1 -0
  668. package/dist/workflows/migration/v2-run-archive.d.ts +92 -0
  669. package/dist/workflows/migration/v2-run-archive.d.ts.map +1 -0
  670. package/dist/workflows/migration/v2-run-archive.js +1220 -0
  671. package/dist/workflows/migration/v2-run-archive.js.map +1 -0
  672. package/dist/workflows/migration/v2-scanner.d.ts +22 -0
  673. package/dist/workflows/migration/v2-scanner.d.ts.map +1 -0
  674. package/dist/workflows/migration/v2-scanner.js +114 -0
  675. package/dist/workflows/migration/v2-scanner.js.map +1 -0
  676. package/dist/workflows/migration/v2-to-v3.d.ts +32 -0
  677. package/dist/workflows/migration/v2-to-v3.d.ts.map +1 -0
  678. package/dist/workflows/migration/v2-to-v3.js +494 -0
  679. package/dist/workflows/migration/v2-to-v3.js.map +1 -0
  680. package/dist/workflows/ops-projection.d.ts.map +1 -1
  681. package/dist/workflows/ops-projection.js +4 -3
  682. package/dist/workflows/ops-projection.js.map +1 -1
  683. package/dist/workflows/shared/idempotency-key.d.ts +19 -0
  684. package/dist/workflows/shared/idempotency-key.d.ts.map +1 -0
  685. package/dist/workflows/shared/idempotency-key.js +23 -0
  686. package/dist/workflows/shared/idempotency-key.js.map +1 -0
  687. package/dist/workflows/{params.d.ts → shared/params.d.ts} +42 -6
  688. package/dist/workflows/shared/params.d.ts.map +1 -0
  689. package/dist/workflows/{params.js → shared/params.js} +91 -4
  690. package/dist/workflows/shared/params.js.map +1 -0
  691. package/dist/workflows/shared/provider-reconciler.d.ts +47 -0
  692. package/dist/workflows/shared/provider-reconciler.d.ts.map +1 -0
  693. package/dist/workflows/shared/provider-reconciler.js +17 -0
  694. package/dist/workflows/shared/provider-reconciler.js.map +1 -0
  695. package/dist/workflows/{spawn-policy.d.ts → shared/sandbox-policy.d.ts} +2 -2
  696. package/dist/workflows/shared/sandbox-policy.d.ts.map +1 -0
  697. package/dist/workflows/{spawn-policy.js → shared/sandbox-policy.js} +1 -1
  698. package/dist/workflows/shared/sandbox-policy.js.map +1 -0
  699. package/dist/workflows/shared/worker-process.d.ts +29 -0
  700. package/dist/workflows/shared/worker-process.d.ts.map +1 -0
  701. package/dist/workflows/shared/worker-process.js +56 -0
  702. package/dist/workflows/shared/worker-process.js.map +1 -0
  703. package/dist/workflows/v3/architect.d.ts.map +1 -1
  704. package/dist/workflows/v3/architect.js +16 -4
  705. package/dist/workflows/v3/architect.js.map +1 -1
  706. package/dist/workflows/v3/attempt-ledger.d.ts +23 -0
  707. package/dist/workflows/v3/attempt-ledger.d.ts.map +1 -0
  708. package/dist/workflows/v3/attempt-ledger.js +74 -0
  709. package/dist/workflows/v3/attempt-ledger.js.map +1 -0
  710. package/dist/workflows/v3/bot-resolve.d.ts +19 -1
  711. package/dist/workflows/v3/bot-resolve.d.ts.map +1 -1
  712. package/dist/workflows/v3/bot-resolve.js +129 -3
  713. package/dist/workflows/v3/bot-resolve.js.map +1 -1
  714. package/dist/workflows/v3/cli-daemon-command-authority.d.ts +59 -0
  715. package/dist/workflows/v3/cli-daemon-command-authority.d.ts.map +1 -0
  716. package/dist/workflows/v3/cli-daemon-command-authority.js +175 -0
  717. package/dist/workflows/v3/cli-daemon-command-authority.js.map +1 -0
  718. package/dist/workflows/v3/cli-run.d.ts +27 -0
  719. package/dist/workflows/v3/cli-run.d.ts.map +1 -1
  720. package/dist/workflows/v3/cli-run.js +113 -29
  721. package/dist/workflows/v3/cli-run.js.map +1 -1
  722. package/dist/workflows/v3/contract.d.ts +16 -16
  723. package/dist/workflows/v3/contract.d.ts.map +1 -1
  724. package/dist/workflows/v3/contract.js +15 -11
  725. package/dist/workflows/v3/contract.js.map +1 -1
  726. package/dist/workflows/v3/daemon-ipc-auth.d.ts +113 -0
  727. package/dist/workflows/v3/daemon-ipc-auth.d.ts.map +1 -0
  728. package/dist/workflows/v3/daemon-ipc-auth.js +294 -0
  729. package/dist/workflows/v3/daemon-ipc-auth.js.map +1 -0
  730. package/dist/workflows/v3/daemon-ipc-body.d.ts +30 -0
  731. package/dist/workflows/v3/daemon-ipc-body.d.ts.map +1 -0
  732. package/dist/workflows/v3/daemon-ipc-body.js +65 -0
  733. package/dist/workflows/v3/daemon-ipc-body.js.map +1 -0
  734. package/dist/workflows/v3/daemon-ipc-client.d.ts +32 -0
  735. package/dist/workflows/v3/daemon-ipc-client.d.ts.map +1 -0
  736. package/dist/workflows/v3/daemon-ipc-client.js +74 -0
  737. package/dist/workflows/v3/daemon-ipc-client.js.map +1 -0
  738. package/dist/workflows/v3/daemon-run.d.ts +87 -2
  739. package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
  740. package/dist/workflows/v3/daemon-run.js +863 -68
  741. package/dist/workflows/v3/daemon-run.js.map +1 -1
  742. package/dist/workflows/v3/dag.d.ts +22 -8
  743. package/dist/workflows/v3/dag.d.ts.map +1 -1
  744. package/dist/workflows/v3/dag.js +214 -22
  745. package/dist/workflows/v3/dag.js.map +1 -1
  746. package/dist/workflows/v3/distillation-compiler.d.ts +36 -0
  747. package/dist/workflows/v3/distillation-compiler.d.ts.map +1 -0
  748. package/dist/workflows/v3/distillation-compiler.js +704 -0
  749. package/dist/workflows/v3/distillation-compiler.js.map +1 -0
  750. package/dist/workflows/v3/distillation-private-root.d.ts +10 -0
  751. package/dist/workflows/v3/distillation-private-root.d.ts.map +1 -0
  752. package/dist/workflows/v3/distillation-private-root.js +34 -0
  753. package/dist/workflows/v3/distillation-private-root.js.map +1 -0
  754. package/dist/workflows/v3/distillation-runner.d.ts +64 -0
  755. package/dist/workflows/v3/distillation-runner.d.ts.map +1 -0
  756. package/dist/workflows/v3/distillation-runner.js +1028 -0
  757. package/dist/workflows/v3/distillation-runner.js.map +1 -0
  758. package/dist/workflows/v3/distillation-schema.d.ts +63 -0
  759. package/dist/workflows/v3/distillation-schema.d.ts.map +1 -0
  760. package/dist/workflows/v3/distillation-schema.js +184 -0
  761. package/dist/workflows/v3/distillation-schema.js.map +1 -0
  762. package/dist/workflows/v3/distillation-service.d.ts +78 -0
  763. package/dist/workflows/v3/distillation-service.d.ts.map +1 -0
  764. package/dist/workflows/v3/distillation-service.js +416 -0
  765. package/dist/workflows/v3/distillation-service.js.map +1 -0
  766. package/dist/workflows/v3/distillation-source.d.ts +35 -0
  767. package/dist/workflows/v3/distillation-source.d.ts.map +1 -0
  768. package/dist/workflows/v3/distillation-source.js +118 -0
  769. package/dist/workflows/v3/distillation-source.js.map +1 -0
  770. package/dist/workflows/v3/distillation-store.d.ts +185 -0
  771. package/dist/workflows/v3/distillation-store.d.ts.map +1 -0
  772. package/dist/workflows/v3/distillation-store.js +1127 -0
  773. package/dist/workflows/v3/distillation-store.js.map +1 -0
  774. package/dist/workflows/v3/drive-lease.d.ts +7 -0
  775. package/dist/workflows/v3/drive-lease.d.ts.map +1 -0
  776. package/dist/workflows/v3/drive-lease.js +10 -0
  777. package/dist/workflows/v3/drive-lease.js.map +1 -0
  778. package/dist/workflows/v3/ephemeral-pool.d.ts +1 -1
  779. package/dist/workflows/v3/ephemeral-pool.d.ts.map +1 -1
  780. package/dist/workflows/v3/ephemeral-pool.js +222 -37
  781. package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
  782. package/dist/workflows/v3/grill-state.d.ts +18 -3
  783. package/dist/workflows/v3/grill-state.d.ts.map +1 -1
  784. package/dist/workflows/v3/grill-state.js +22 -5
  785. package/dist/workflows/v3/grill-state.js.map +1 -1
  786. package/dist/workflows/v3/host-bindings.d.ts +40 -0
  787. package/dist/workflows/v3/host-bindings.d.ts.map +1 -0
  788. package/dist/workflows/v3/host-bindings.js +272 -0
  789. package/dist/workflows/v3/host-bindings.js.map +1 -0
  790. package/dist/workflows/v3/host-effect-ledger.d.ts +22 -0
  791. package/dist/workflows/v3/host-effect-ledger.d.ts.map +1 -0
  792. package/dist/workflows/v3/host-effect-ledger.js +110 -0
  793. package/dist/workflows/v3/host-effect-ledger.js.map +1 -0
  794. package/dist/workflows/v3/host-execution.d.ts +142 -0
  795. package/dist/workflows/v3/host-execution.d.ts.map +1 -0
  796. package/dist/workflows/v3/host-execution.js +424 -0
  797. package/dist/workflows/v3/host-execution.js.map +1 -0
  798. package/dist/workflows/v3/host.d.ts +46 -10
  799. package/dist/workflows/v3/host.d.ts.map +1 -1
  800. package/dist/workflows/v3/host.js +419 -140
  801. package/dist/workflows/v3/host.js.map +1 -1
  802. package/dist/workflows/v3/human-gate.d.ts +19 -1
  803. package/dist/workflows/v3/human-gate.d.ts.map +1 -1
  804. package/dist/workflows/v3/human-gate.js +145 -19
  805. package/dist/workflows/v3/human-gate.js.map +1 -1
  806. package/dist/workflows/v3/journal.d.ts +125 -7
  807. package/dist/workflows/v3/journal.d.ts.map +1 -1
  808. package/dist/workflows/v3/journal.js +154 -38
  809. package/dist/workflows/v3/journal.js.map +1 -1
  810. package/dist/workflows/v3/library-materialize.d.ts +88 -0
  811. package/dist/workflows/v3/library-materialize.d.ts.map +1 -0
  812. package/dist/workflows/v3/library-materialize.js +294 -0
  813. package/dist/workflows/v3/library-materialize.js.map +1 -0
  814. package/dist/workflows/v3/library-schema.d.ts +138 -0
  815. package/dist/workflows/v3/library-schema.d.ts.map +1 -0
  816. package/dist/workflows/v3/library-schema.js +573 -0
  817. package/dist/workflows/v3/library-schema.js.map +1 -0
  818. package/dist/workflows/v3/library-service.d.ts +126 -0
  819. package/dist/workflows/v3/library-service.d.ts.map +1 -0
  820. package/dist/workflows/v3/library-service.js +542 -0
  821. package/dist/workflows/v3/library-service.js.map +1 -0
  822. package/dist/workflows/v3/library-store.d.ts +124 -0
  823. package/dist/workflows/v3/library-store.d.ts.map +1 -0
  824. package/dist/workflows/v3/library-store.js +665 -0
  825. package/dist/workflows/v3/library-store.js.map +1 -0
  826. package/dist/workflows/v3/orchestrator.d.ts +9 -1
  827. package/dist/workflows/v3/orchestrator.d.ts.map +1 -1
  828. package/dist/workflows/v3/orchestrator.js +2 -1
  829. package/dist/workflows/v3/orchestrator.js.map +1 -1
  830. package/dist/workflows/v3/progress-projection.d.ts +99 -0
  831. package/dist/workflows/v3/progress-projection.d.ts.map +1 -0
  832. package/dist/workflows/v3/progress-projection.js +197 -0
  833. package/dist/workflows/v3/progress-projection.js.map +1 -0
  834. package/dist/workflows/v3/run-envelope.d.ts +1279 -0
  835. package/dist/workflows/v3/run-envelope.d.ts.map +1 -0
  836. package/dist/workflows/v3/run-envelope.js +681 -0
  837. package/dist/workflows/v3/run-envelope.js.map +1 -0
  838. package/dist/workflows/v3/runtime.d.ts +39 -7
  839. package/dist/workflows/v3/runtime.d.ts.map +1 -1
  840. package/dist/workflows/v3/runtime.js +1992 -100
  841. package/dist/workflows/v3/runtime.js.map +1 -1
  842. package/dist/workflows/v3/session-relay-client.d.ts +61 -0
  843. package/dist/workflows/v3/session-relay-client.d.ts.map +1 -0
  844. package/dist/workflows/v3/session-relay-client.js +92 -0
  845. package/dist/workflows/v3/session-relay-client.js.map +1 -0
  846. package/dist/workflows/v3/session-relay.d.ts +66 -0
  847. package/dist/workflows/v3/session-relay.d.ts.map +1 -0
  848. package/dist/workflows/v3/session-relay.js +157 -0
  849. package/dist/workflows/v3/session-relay.js.map +1 -0
  850. package/dist/workflows/v3/start-intent.d.ts +8 -0
  851. package/dist/workflows/v3/start-intent.d.ts.map +1 -0
  852. package/dist/workflows/v3/start-intent.js +34 -0
  853. package/dist/workflows/v3/start-intent.js.map +1 -0
  854. package/dist/workflows/v3/state.d.ts +11 -2
  855. package/dist/workflows/v3/state.d.ts.map +1 -1
  856. package/dist/workflows/v3/state.js +182 -10
  857. package/dist/workflows/v3/state.js.map +1 -1
  858. package/dist/workflows/v3/template-bindings.d.ts +22 -0
  859. package/dist/workflows/v3/template-bindings.d.ts.map +1 -0
  860. package/dist/workflows/v3/template-bindings.js +204 -0
  861. package/dist/workflows/v3/template-bindings.js.map +1 -0
  862. package/dist/workflows/v3/worker-fence.d.ts +158 -0
  863. package/dist/workflows/v3/worker-fence.d.ts.map +1 -0
  864. package/dist/workflows/v3/worker-fence.js +685 -0
  865. package/dist/workflows/v3/worker-fence.js.map +1 -0
  866. package/package.json +3 -2
  867. package/dist/core/dashboard-command/workflows.d.ts +0 -20
  868. package/dist/core/dashboard-command/workflows.d.ts.map +0 -1
  869. package/dist/core/dashboard-command/workflows.js +0 -45
  870. package/dist/core/dashboard-command/workflows.js.map +0 -1
  871. package/dist/dashboard/web/legacy-workflow-link.d.ts +0 -2
  872. package/dist/dashboard/web/legacy-workflow-link.d.ts.map +0 -1
  873. package/dist/dashboard/web/legacy-workflow-link.js +0 -12
  874. package/dist/dashboard/web/legacy-workflow-link.js.map +0 -1
  875. package/dist/dashboard/web/legacy-workflow-page.d.ts +0 -3
  876. package/dist/dashboard/web/legacy-workflow-page.d.ts.map +0 -1
  877. package/dist/dashboard/web/legacy-workflow-page.js +0 -717
  878. package/dist/dashboard/web/legacy-workflow-page.js.map +0 -1
  879. package/dist/dashboard/web/workflow-version-switch.d.ts +0 -8
  880. package/dist/dashboard/web/workflow-version-switch.d.ts.map +0 -1
  881. package/dist/dashboard/web/workflow-version-switch.js +0 -9
  882. package/dist/dashboard/web/workflow-version-switch.js.map +0 -1
  883. package/dist/dashboard/web/workflows.d.ts +0 -273
  884. package/dist/dashboard/web/workflows.d.ts.map +0 -1
  885. package/dist/dashboard/web/workflows.js +0 -436
  886. package/dist/dashboard/web/workflows.js.map +0 -1
  887. package/dist/dashboard/workflow-api.d.ts +0 -30
  888. package/dist/dashboard/workflow-api.d.ts.map +0 -1
  889. package/dist/dashboard/workflow-api.js +0 -397
  890. package/dist/dashboard/workflow-api.js.map +0 -1
  891. package/dist/dashboard/workflow-card-model.d.ts +0 -127
  892. package/dist/dashboard/workflow-card-model.d.ts.map +0 -1
  893. package/dist/dashboard/workflow-card-model.js +0 -186
  894. package/dist/dashboard/workflow-card-model.js.map +0 -1
  895. package/dist/dashboard/workflows-action-helpers.d.ts +0 -105
  896. package/dist/dashboard/workflows-action-helpers.d.ts.map +0 -1
  897. package/dist/dashboard/workflows-action-helpers.js +0 -196
  898. package/dist/dashboard/workflows-action-helpers.js.map +0 -1
  899. package/dist/dashboard-web/chunks/bot-defaults-page-7T7DPOV6.js +0 -4
  900. package/dist/dashboard-web/chunks/chunk-IGXYYRYJ.js +0 -1
  901. package/dist/dashboard-web/chunks/chunk-ISOD7VDX.js +0 -1
  902. package/dist/dashboard-web/chunks/chunk-PNK3HQBI.js +0 -37
  903. package/dist/dashboard-web/chunks/chunk-SRIE4MLQ.js +0 -1
  904. package/dist/dashboard-web/chunks/connectors-page-UQ4QBE45.js +0 -1
  905. package/dist/dashboard-web/chunks/legacy-workflow-page-QMC7OZXH.js +0 -2
  906. package/dist/dashboard-web/chunks/sessions-page-NNZIDHZM.js +0 -3
  907. package/dist/dashboard-web/chunks/settings-page-LJIXX5LQ.js +0 -2
  908. package/dist/dashboard-web/chunks/v3-page-YLYVHGKD.js +0 -94
  909. package/dist/dashboard-web/terminal-replay.html +0 -227
  910. package/dist/im/lark/workflow-card-handler.d.ts +0 -51
  911. package/dist/im/lark/workflow-card-handler.d.ts.map +0 -1
  912. package/dist/im/lark/workflow-card-handler.js +0 -163
  913. package/dist/im/lark/workflow-card-handler.js.map +0 -1
  914. package/dist/im/lark/workflow-cards.d.ts +0 -47
  915. package/dist/im/lark/workflow-cards.d.ts.map +0 -1
  916. package/dist/im/lark/workflow-cards.js +0 -231
  917. package/dist/im/lark/workflow-cards.js.map +0 -1
  918. package/dist/im/lark/workflow-progress-card.d.ts +0 -81
  919. package/dist/im/lark/workflow-progress-card.d.ts.map +0 -1
  920. package/dist/im/lark/workflow-progress-card.js +0 -336
  921. package/dist/im/lark/workflow-progress-card.js.map +0 -1
  922. package/dist/im/lark/workflows-card.d.ts +0 -102
  923. package/dist/im/lark/workflows-card.d.ts.map +0 -1
  924. package/dist/im/lark/workflows-card.js +0 -737
  925. package/dist/im/lark/workflows-card.js.map +0 -1
  926. package/dist/workflows/attempt-resume.d.ts +0 -119
  927. package/dist/workflows/attempt-resume.d.ts.map +0 -1
  928. package/dist/workflows/attempt-resume.js +0 -392
  929. package/dist/workflows/attempt-resume.js.map +0 -1
  930. package/dist/workflows/blob.d.ts +0 -27
  931. package/dist/workflows/blob.d.ts.map +0 -1
  932. package/dist/workflows/blob.js +0 -40
  933. package/dist/workflows/blob.js.map +0 -1
  934. package/dist/workflows/cancel-run.d.ts +0 -45
  935. package/dist/workflows/cancel-run.d.ts.map +0 -1
  936. package/dist/workflows/cancel-run.js +0 -99
  937. package/dist/workflows/cancel-run.js.map +0 -1
  938. package/dist/workflows/cancel.d.ts +0 -111
  939. package/dist/workflows/cancel.d.ts.map +0 -1
  940. package/dist/workflows/cancel.js +0 -120
  941. package/dist/workflows/cancel.js.map +0 -1
  942. package/dist/workflows/catalog.d.ts +0 -60
  943. package/dist/workflows/catalog.d.ts.map +0 -1
  944. package/dist/workflows/catalog.js +0 -119
  945. package/dist/workflows/catalog.js.map +0 -1
  946. package/dist/workflows/cold-attach.d.ts +0 -30
  947. package/dist/workflows/cold-attach.d.ts.map +0 -1
  948. package/dist/workflows/cold-attach.js +0 -40
  949. package/dist/workflows/cold-attach.js.map +0 -1
  950. package/dist/workflows/cold-scan.d.ts +0 -21
  951. package/dist/workflows/cold-scan.d.ts.map +0 -1
  952. package/dist/workflows/cold-scan.js +0 -70
  953. package/dist/workflows/cold-scan.js.map +0 -1
  954. package/dist/workflows/daemon-spawn.d.ts +0 -119
  955. package/dist/workflows/daemon-spawn.d.ts.map +0 -1
  956. package/dist/workflows/daemon-spawn.js +0 -564
  957. package/dist/workflows/daemon-spawn.js.map +0 -1
  958. package/dist/workflows/effect-input.d.ts +0 -4
  959. package/dist/workflows/effect-input.d.ts.map +0 -1
  960. package/dist/workflows/effect-input.js +0 -19
  961. package/dist/workflows/effect-input.js.map +0 -1
  962. package/dist/workflows/events/append.d.ts +0 -77
  963. package/dist/workflows/events/append.d.ts.map +0 -1
  964. package/dist/workflows/events/append.js +0 -214
  965. package/dist/workflows/events/append.js.map +0 -1
  966. package/dist/workflows/events/idempotency.d.ts +0 -77
  967. package/dist/workflows/events/idempotency.d.ts.map +0 -1
  968. package/dist/workflows/events/idempotency.js +0 -116
  969. package/dist/workflows/events/idempotency.js.map +0 -1
  970. package/dist/workflows/events/index.d.ts +0 -7
  971. package/dist/workflows/events/index.d.ts.map +0 -1
  972. package/dist/workflows/events/index.js +0 -7
  973. package/dist/workflows/events/index.js.map +0 -1
  974. package/dist/workflows/fanout.d.ts +0 -36
  975. package/dist/workflows/fanout.d.ts.map +0 -1
  976. package/dist/workflows/fanout.js +0 -115
  977. package/dist/workflows/fanout.js.map +0 -1
  978. package/dist/workflows/hostExecutors/protocol.d.ts +0 -42
  979. package/dist/workflows/hostExecutors/protocol.d.ts.map +0 -1
  980. package/dist/workflows/hostExecutors/protocol.js +0 -181
  981. package/dist/workflows/hostExecutors/protocol.js.map +0 -1
  982. package/dist/workflows/loader.d.ts +0 -30
  983. package/dist/workflows/loader.d.ts.map +0 -1
  984. package/dist/workflows/loader.js +0 -84
  985. package/dist/workflows/loader.js.map +0 -1
  986. package/dist/workflows/loop.d.ts +0 -50
  987. package/dist/workflows/loop.d.ts.map +0 -1
  988. package/dist/workflows/loop.js +0 -408
  989. package/dist/workflows/loop.js.map +0 -1
  990. package/dist/workflows/orchestrator.d.ts +0 -171
  991. package/dist/workflows/orchestrator.d.ts.map +0 -1
  992. package/dist/workflows/orchestrator.js +0 -609
  993. package/dist/workflows/orchestrator.js.map +0 -1
  994. package/dist/workflows/output-binding.d.ts +0 -77
  995. package/dist/workflows/output-binding.d.ts.map +0 -1
  996. package/dist/workflows/output-binding.js +0 -329
  997. package/dist/workflows/output-binding.js.map +0 -1
  998. package/dist/workflows/params.d.ts.map +0 -1
  999. package/dist/workflows/params.js.map +0 -1
  1000. package/dist/workflows/resume.d.ts +0 -263
  1001. package/dist/workflows/resume.d.ts.map +0 -1
  1002. package/dist/workflows/resume.js +0 -808
  1003. package/dist/workflows/resume.js.map +0 -1
  1004. package/dist/workflows/run-id.d.ts +0 -2
  1005. package/dist/workflows/run-id.d.ts.map +0 -1
  1006. package/dist/workflows/run-id.js +0 -7
  1007. package/dist/workflows/run-id.js.map +0 -1
  1008. package/dist/workflows/run-init.d.ts +0 -48
  1009. package/dist/workflows/run-init.d.ts.map +0 -1
  1010. package/dist/workflows/run-init.js +0 -100
  1011. package/dist/workflows/run-init.js.map +0 -1
  1012. package/dist/workflows/runs-dir.d.ts +0 -4
  1013. package/dist/workflows/runs-dir.d.ts.map +0 -1
  1014. package/dist/workflows/runs-dir.js +0 -15
  1015. package/dist/workflows/runs-dir.js.map +0 -1
  1016. package/dist/workflows/runtime.d.ts +0 -215
  1017. package/dist/workflows/runtime.d.ts.map +0 -1
  1018. package/dist/workflows/runtime.js +0 -630
  1019. package/dist/workflows/runtime.js.map +0 -1
  1020. package/dist/workflows/spawn-bot.d.ts +0 -165
  1021. package/dist/workflows/spawn-bot.d.ts.map +0 -1
  1022. package/dist/workflows/spawn-bot.js +0 -215
  1023. package/dist/workflows/spawn-bot.js.map +0 -1
  1024. package/dist/workflows/spawn-policy.d.ts.map +0 -1
  1025. package/dist/workflows/spawn-policy.js.map +0 -1
  1026. package/dist/workflows/system.d.ts +0 -49
  1027. package/dist/workflows/system.d.ts.map +0 -1
  1028. package/dist/workflows/system.js +0 -48
  1029. package/dist/workflows/system.js.map +0 -1
  1030. package/dist/workflows/trigger-from-envelope.d.ts +0 -13
  1031. package/dist/workflows/trigger-from-envelope.d.ts.map +0 -1
  1032. package/dist/workflows/trigger-from-envelope.js +0 -68
  1033. package/dist/workflows/trigger-from-envelope.js.map +0 -1
  1034. package/dist/workflows/trigger-run.d.ts +0 -70
  1035. package/dist/workflows/trigger-run.d.ts.map +0 -1
  1036. package/dist/workflows/trigger-run.js +0 -88
  1037. package/dist/workflows/trigger-run.js.map +0 -1
  1038. package/dist/workflows/wait.d.ts +0 -141
  1039. package/dist/workflows/wait.d.ts.map +0 -1
  1040. package/dist/workflows/wait.js +0 -203
  1041. package/dist/workflows/wait.js.map +0 -1
@@ -11,32 +11,64 @@
11
11
  * workflow approve-spec <id> → gate-1: spec_ready → spec_approved
12
12
  * workflow architect <id> → spec_approved → architect_running → (runArchitect
13
13
  * + host validateDag) → dag_ready | retreat
14
- * workflow approve-dag <id> → gate-2: dag_ready → dag_approved → kick `v3 run`
14
+ * workflow approve-dag <id> → gate-2: dag_ready → dag_approved → kick daemon start
15
15
  *
16
16
  * The CORE operations below take injected deps so they unit-test without a real
17
17
  * worker; the CLI wrapper resolves real bot/secret + codex's `runArchitect` +
18
18
  * dag.ts's `loadDag`. grill state is a conversation worktable — it does NOT
19
19
  * write the runtime journal (codex 2026-06-02).
20
20
  */
21
- import { resolve, sep } from 'node:path';
22
- import { birthRun, readGrillState, transition, defaultBaseDir, } from './grill-state.js';
23
- import { finalizeSpec, SpecValidationError } from './spec.js';
21
+ import { readFileSync } from 'node:fs';
22
+ import { join, resolve, sep } from 'node:path';
23
+ import { loadBotConfigs } from '../../bot-registry.js';
24
+ import { resolveCurrentTurnProvenance } from '../../core/current-turn-provenance.js';
25
+ import { atomicWriteFileSync } from '../../utils/atomic-write.js';
26
+ import { withFileLock, withFileLockSync } from '../../utils/file-lock.js';
27
+ import { birthRun, GRILL_STATUS_FILE, readGrillState, transition, defaultBaseDir, } from './grill-state.js';
28
+ import { finalizeSpec, validateSpec, SpecValidationError } from './spec.js';
24
29
  import { runArchitect as realRunArchitect } from './architect.js';
25
30
  import { loadDag } from './dag.js';
26
31
  import { isValidRunId } from './ops-projection.js';
27
- import { botToSnapshot } from './bot-resolve.js';
32
+ import { botToSnapshot, freezeDagBotSnapshots, resolveBotConfig, serializeFrozenBotSnapshots, } from './bot-resolve.js';
33
+ import { artifactRef, loadAuthorizedV3Run, makeAdHocRunEnvelope, publishRunEnvelopeOnce, readRunEnvelope, } from './run-envelope.js';
34
+ import { V3_SUPPORTED_CLIS, isV3SupportedCli } from './contract.js';
28
35
  // ─── Core operations (dep-injected, pure of CLI / process concerns) ─────────
29
36
  export function hostNew(opts) {
30
37
  return birthRun(opts);
31
38
  }
32
39
  /**
33
- * Read the grill worker's injected env into a chat binding, or undefined when
34
- * not running inside a daemon worker (CLI/dev no card layer). The worker
35
- * sets BOTMUX_CHAT_ID / _LARK_APP_ID / _ROOT_MESSAGE_ID / _SESSION_ID on every
36
- * CLI subprocess (worker.ts). A binding needs at least larkAppId + chatId to
37
- * be useful for posting a card; missing either undefined.
40
+ * Resolve the grill command's *current-turn* caller into a chat binding.
41
+ * Static worker env is intentionally not an authority: BOTMUX_OWNER_OPEN_ID is
42
+ * the session owner and BOTMUX_TURN_ID/root values go stale in a long-lived
43
+ * CLI. In-session commands must join the fresh process-tree marker to the
44
+ * durable session record; detached/stale calls fail closed.
45
+ *
46
+ * A genuine standalone/dev invocation (no session claim or marker) keeps the
47
+ * old minimal env binding for card experiments, but never claims an owner.
38
48
  */
39
- export function chatBindingFromEnv(env = process.env) {
49
+ export function chatBindingFromEnv(env = process.env, startPid = process.ppid) {
50
+ if (env.SESSION_DATA_DIR) {
51
+ const provenance = resolveCurrentTurnProvenance({
52
+ dataDir: env.SESSION_DATA_DIR,
53
+ envSessionId: env.BOTMUX_SESSION_ID,
54
+ startPid,
55
+ });
56
+ if (provenance) {
57
+ return {
58
+ larkAppId: provenance.larkAppId,
59
+ chatId: provenance.chatId,
60
+ ...(provenance.chatType ? { chatType: provenance.chatType } : {}),
61
+ ...(provenance.rootMessageId ? { rootMessageId: provenance.rootMessageId } : {}),
62
+ sessionId: provenance.sessionId,
63
+ ownerOpenId: provenance.callerOpenId,
64
+ };
65
+ }
66
+ }
67
+ else if (env.BOTMUX_SESSION_ID) {
68
+ throw new Error('当前命令声称来自 botmux session,但 SESSION_DATA_DIR 不可用,无法验证本轮调用者');
69
+ }
70
+ // Standalone/dev only. BOTMUX_OWNER_OPEN_ID is deliberately ignored: it is
71
+ // never proof of the human who invoked this turn.
40
72
  const larkAppId = env.BOTMUX_LARK_APP_ID;
41
73
  const chatId = env.BOTMUX_CHAT_ID;
42
74
  if (!larkAppId || !chatId)
@@ -44,43 +76,150 @@ export function chatBindingFromEnv(env = process.env) {
44
76
  return {
45
77
  larkAppId,
46
78
  chatId,
79
+ ...(env.BOTMUX_CHAT_TYPE === 'group' || env.BOTMUX_CHAT_TYPE === 'p2p'
80
+ ? { chatType: env.BOTMUX_CHAT_TYPE }
81
+ : {}),
47
82
  ...(env.BOTMUX_ROOT_MESSAGE_ID ? { rootMessageId: env.BOTMUX_ROOT_MESSAGE_ID } : {}),
48
- ...(env.BOTMUX_SESSION_ID ? { sessionId: env.BOTMUX_SESSION_ID } : {}),
49
83
  };
50
84
  }
51
- /** Parse + validate spec.md → write spec.json → status=spec_ready. On a
52
- * SpecValidationError, returns {ok:false, problems} and leaves status untouched
53
- * (grill stays grilling and relays the problems to the user). */
54
- export function hostSpecFinalize(runDir, now = new Date()) {
55
- const cur = mustRead(runDir);
56
- // Guard the status BEFORE finalizeSpec writes spec.json — otherwise an
57
- // illegal-state call (e.g. re-finalizing after the spec was approved /
58
- // architected) would overwrite spec.json and only THEN hit the rejected
59
- // transition, leaving state canonical-spec inconsistent (codex review).
60
- // Legal from `grilling` (first finalize) and `spec_ready` (Gate-1 re-draft,
61
- // re-validate in place). To revise after spec_approved/dag_ready, step back
62
- // with `revise-spec` first.
63
- if (cur.status !== 'grilling' && cur.status !== 'spec_ready') {
64
- throw new HostGuardError(`spec-finalize 需要 status=grilling 或 spec_ready,当前 ${cur.status}(先 revise-spec 退回改稿)`);
85
+ /**
86
+ * Authorize a non-`new` host mutation against the principal captured when the
87
+ * grill was born. A workflow started in chat is owned by that exact
88
+ * (app, chat, caller) tuple; a later message from the session's static owner or
89
+ * from another participant must not be able to finalize/approve it merely by
90
+ * knowing the run id.
91
+ *
92
+ * Unbound standalone/dev runs remain operable from a standalone CLI. Legacy
93
+ * bindings without an authenticated owner are also dev-only: an in-session
94
+ * caller cannot upgrade them into an owned authorization implicitly.
95
+ */
96
+ export function assertWorkflowHostCaller(runDir, current) {
97
+ const state = mustRead(runDir);
98
+ const target = state.chatBinding;
99
+ if (!target) {
100
+ if (current?.ownerOpenId) {
101
+ throw new HostGuardError(`run ${state.runId} 是未绑定的 standalone/dev run,不能从 botmux chat turn 修改`);
102
+ }
103
+ return;
104
+ }
105
+ if (!target.ownerOpenId) {
106
+ if (current?.ownerOpenId) {
107
+ throw new HostGuardError(`run ${state.runId} 的 chatBinding 缺少已认证 owner,不能从 botmux chat turn 修改`);
108
+ }
109
+ return;
110
+ }
111
+ if (!current?.ownerOpenId) {
112
+ throw new HostGuardError(`run ${state.runId} 绑定了 chat caller,当前命令缺少本轮调用者认证`);
65
113
  }
114
+ if (current.ownerOpenId !== target.ownerOpenId
115
+ || current.larkAppId !== target.larkAppId
116
+ || current.chatId !== target.chatId) {
117
+ throw new HostGuardError(`当前 caller/chat/bot 与 run ${state.runId} 的 grill.chatBinding 不匹配`);
118
+ }
119
+ }
120
+ /**
121
+ * All grill-host read/modify/write transactions share one run-scoped lock.
122
+ * `architect` holds it across the worker await because the worker always
123
+ * reuses `architect/attempts/001` and begins by deleting that directory.
124
+ * Without the lock, two calls can delete/mix one another's attempt artifacts.
125
+ *
126
+ * Lock order is deliberately fixed as:
127
+ *
128
+ * grill.state.json.lock -> run.json.lock
129
+ *
130
+ * Gate-2 authorization follows that order below. No path may acquire the
131
+ * grill lock while already holding run.json.lock, keeping the two-lock
132
+ * transaction deadlock-free.
133
+ */
134
+ const HOST_MUTATION_LOCK_WAIT_MS = 500;
135
+ function hostMutationLockTarget(runDir) {
136
+ return join(runDir, GRILL_STATUS_FILE);
137
+ }
138
+ function hostBusyError(runDir) {
139
+ return new HostGuardError(`run ${mustRead(runDir).runId} 正在执行另一个 workflow host mutation,请稍后重试`);
140
+ }
141
+ function withHostMutationLockSync(runDir, fn) {
66
142
  try {
67
- finalizeSpec(cur.specPath, cur.specJsonPath, cur.runId);
143
+ return withFileLockSync(hostMutationLockTarget(runDir), fn, {
144
+ maxWaitMs: HOST_MUTATION_LOCK_WAIT_MS,
145
+ });
68
146
  }
69
147
  catch (err) {
70
- if (err instanceof SpecValidationError)
71
- return { ok: false, problems: err.problems };
148
+ if (err instanceof Error && err.message.startsWith('file-lock timeout waiting for ')) {
149
+ throw hostBusyError(runDir);
150
+ }
72
151
  throw err;
73
152
  }
74
- const state = transition(runDir, 'spec_ready', { problems: undefined }, now);
75
- return { ok: true, state };
153
+ }
154
+ async function withHostMutationLock(runDir, fn) {
155
+ try {
156
+ return await withFileLock(hostMutationLockTarget(runDir), fn, {
157
+ maxWaitMs: HOST_MUTATION_LOCK_WAIT_MS,
158
+ });
159
+ }
160
+ catch (err) {
161
+ if (err instanceof Error && err.message.startsWith('file-lock timeout waiting for ')) {
162
+ throw hostBusyError(runDir);
163
+ }
164
+ throw err;
165
+ }
166
+ }
167
+ /**
168
+ * run.json is the create-once execution commit. Once it exists, the mutable
169
+ * grill worktable and every artifact producer must stop: otherwise a
170
+ * post-Gate-2 revise/architect/finalize could overwrite bytes whose digests are
171
+ * already pinned by the envelope. Invalid envelopes also fail closed.
172
+ *
173
+ * Caller must hold the run-scoped host mutation lock.
174
+ */
175
+ function assertRunNotCommitted(runDir, cur, operation) {
176
+ const envelope = readRunEnvelope(runDir, cur.runId);
177
+ if (envelope.kind === 'missing')
178
+ return;
179
+ if (envelope.kind === 'invalid') {
180
+ throw new HostGuardError(`${operation} 被拒绝:run.json 已存在但无效(${envelope.problems.join('; ')})`);
181
+ }
182
+ throw new HostGuardError(`${operation} 被拒绝:run.json 已发布,Gate-2 execution artifacts 已不可变`);
183
+ }
184
+ /** Parse + validate spec.md → write spec.json → status=spec_ready. On a
185
+ * SpecValidationError, returns {ok:false, problems} and leaves status untouched
186
+ * (grill stays grilling and relays the problems to the user). */
187
+ export function hostSpecFinalize(runDir, now = new Date()) {
188
+ return withHostMutationLockSync(runDir, () => {
189
+ const cur = mustRead(runDir);
190
+ assertRunNotCommitted(runDir, cur, 'spec-finalize');
191
+ // Guard the status BEFORE finalizeSpec writes spec.json — otherwise an
192
+ // illegal-state call (e.g. re-finalizing after the spec was approved /
193
+ // architected) would overwrite spec.json and only THEN hit the rejected
194
+ // transition, leaving state ⇄ canonical-spec inconsistent.
195
+ // Legal from `grilling` (first finalize) and `spec_ready` (Gate-1 re-draft,
196
+ // re-validate in place). To revise after spec_approved/dag_ready, step back
197
+ // with `revise-spec` first.
198
+ if (cur.status !== 'grilling' && cur.status !== 'spec_ready') {
199
+ throw new HostGuardError(`spec-finalize 需要 status=grilling 或 spec_ready,当前 ${cur.status}(先 revise-spec 退回改稿)`);
200
+ }
201
+ try {
202
+ finalizeSpec(cur.specPath, cur.specJsonPath, cur.runId);
203
+ }
204
+ catch (err) {
205
+ if (err instanceof SpecValidationError)
206
+ return { ok: false, problems: err.problems };
207
+ throw err;
208
+ }
209
+ const state = transition(runDir, 'spec_ready', { problems: undefined }, now);
210
+ return { ok: true, state };
211
+ });
76
212
  }
77
213
  /** gate-1: spec_ready → spec_approved. Rejects unless status is spec_ready. */
78
214
  export function hostApproveSpec(runDir, now = new Date()) {
79
- const cur = mustRead(runDir);
80
- if (cur.status !== 'spec_ready') {
81
- throw new HostGuardError(`approve-spec 需要 status=spec_ready,当前 ${cur.status}`);
82
- }
83
- return transition(runDir, 'spec_approved', {}, now);
215
+ return withHostMutationLockSync(runDir, () => {
216
+ const cur = mustRead(runDir);
217
+ assertRunNotCommitted(runDir, cur, 'approve-spec');
218
+ if (cur.status !== 'spec_ready') {
219
+ throw new HostGuardError(`approve-spec 需要 status=spec_ready,当前 ${cur.status}`);
220
+ }
221
+ return transition(runDir, 'spec_approved', {}, now);
222
+ });
84
223
  }
85
224
  /**
86
225
  * spec_approved → architect_running → runArchitect → host loadDag/validateDag.
@@ -93,71 +232,187 @@ export function hostApproveSpec(runDir, now = new Date()) {
93
232
  * approve-dag and the dashboard never re-guess paths.
94
233
  */
95
234
  export async function hostArchitect(runDir, deps, now = new Date()) {
96
- const cur = mustRead(runDir);
97
- // Accept `spec_approved` (the normal entry) AND `architect_running`
98
- // (crash-recovery): a prior architect run can be killed AFTER it persisted
99
- // `architect_running` but BEFORE it could retreat to spec_approved, leaving
100
- // the status stuck mid-flight. Without this, the only path out of
101
- // `architect_running` would be a manual edit re-running architect would
102
- // dead-end behind a spec_approved-only guard (codex review 2026-06-02).
103
- if (cur.status !== 'spec_approved' && cur.status !== 'architect_running') {
104
- throw new HostGuardError(`architect 需要 status=spec_approved(先 approve-spec),当前 ${cur.status}`);
105
- }
106
- transition(runDir, 'architect_running', { problems: undefined }, now);
107
- let res;
108
- try {
109
- res = await deps.runArchitect({
110
- runId: cur.runId,
111
- runDir,
112
- specPath: cur.specPath,
113
- specJsonPath: cur.specJsonPath,
114
- botSnapshot: deps.botSnapshot,
115
- resolveLarkAppSecret: deps.resolveLarkAppSecret,
116
- timeoutMs: deps.timeoutMs,
117
- cancelSignal: deps.cancelSignal,
118
- });
119
- }
120
- catch (err) {
121
- const problems = [err instanceof Error ? err.message : String(err)];
122
- const state = transition(runDir, 'spec_approved', { problems }, now);
123
- return { ok: false, state, problems };
124
- }
125
- if (res.status !== 'ok' || !res.dagPath || !res.notesPath) {
126
- const problems = res.problems ?? [
127
- !res.dagPath ? 'architect 未产出 dag.json' : undefined,
128
- !res.notesPath ? 'architect 未产出 architect-notes.md' : undefined,
129
- ].filter((p) => Boolean(p));
130
- const state = transition(runDir, 'spec_approved', { problems }, now);
131
- return { ok: false, state, problems };
132
- }
133
- // Assertion 2: do NOT trust architect's self-claim — host validates the dag.
134
- try {
135
- deps.loadDag(res.dagPath);
136
- }
137
- catch (err) {
138
- const problems = err.problems ?? [err instanceof Error ? err.message : String(err)];
139
- const state = transition(runDir, 'spec_approved', { problems }, now);
140
- return { ok: false, state, problems };
141
- }
142
- const state = transition(runDir, 'dag_ready', {
143
- dagPath: res.dagPath,
144
- notesPath: res.notesPath,
145
- architectManifestPath: res.manifestPath,
146
- problems: undefined,
147
- }, now);
148
- return { ok: true, state };
235
+ return withHostMutationLock(runDir, async () => {
236
+ const cur = mustRead(runDir);
237
+ assertRunNotCommitted(runDir, cur, 'architect');
238
+ // Accept `spec_approved` (the normal entry) AND `architect_running`
239
+ // (crash-recovery): a prior architect run can be killed AFTER it persisted
240
+ // `architect_running` but BEFORE it could retreat to spec_approved, leaving
241
+ // the status stuck mid-flight. Without this, the only path out of
242
+ // `architect_running` would be a manual edit re-running architect would
243
+ // dead-end behind a spec_approved-only guard.
244
+ if (cur.status !== 'spec_approved' && cur.status !== 'architect_running') {
245
+ throw new HostGuardError(`architect 需要 status=spec_approved(先 approve-spec),当前 ${cur.status}`);
246
+ }
247
+ transition(runDir, 'architect_running', { problems: undefined }, now);
248
+ let res;
249
+ try {
250
+ res = await deps.runArchitect({
251
+ runId: cur.runId,
252
+ runDir,
253
+ specPath: cur.specPath,
254
+ specJsonPath: cur.specJsonPath,
255
+ botSnapshot: deps.botSnapshot,
256
+ resolveLarkAppSecret: deps.resolveLarkAppSecret,
257
+ timeoutMs: deps.timeoutMs,
258
+ cancelSignal: deps.cancelSignal,
259
+ });
260
+ }
261
+ catch (err) {
262
+ // Defense in depth: intended Gate-2 publication also takes this host
263
+ // lock, but a foreign/older publisher might not. Never mutate grill
264
+ // state after any run.json appeared during the awaited worker call.
265
+ assertRunNotCommitted(runDir, mustRead(runDir), 'architect');
266
+ const problems = [err instanceof Error ? err.message : String(err)];
267
+ const state = transition(runDir, 'spec_approved', { problems }, now);
268
+ return { ok: false, state, problems };
269
+ }
270
+ assertRunNotCommitted(runDir, mustRead(runDir), 'architect');
271
+ if (res.status !== 'ok' || !res.dagPath || !res.notesPath) {
272
+ const problems = res.problems ?? [
273
+ !res.dagPath ? 'architect 未产出 dag.json' : undefined,
274
+ !res.notesPath ? 'architect 未产出 architect-notes.md' : undefined,
275
+ ].filter((p) => Boolean(p));
276
+ const state = transition(runDir, 'spec_approved', { problems }, now);
277
+ return { ok: false, state, problems };
278
+ }
279
+ // Assertion 2: do NOT trust architect's self-claim — host validates the dag.
280
+ try {
281
+ deps.loadDag(res.dagPath);
282
+ }
283
+ catch (err) {
284
+ const problems = err.problems ?? [err instanceof Error ? err.message : String(err)];
285
+ const state = transition(runDir, 'spec_approved', { problems }, now);
286
+ return { ok: false, state, problems };
287
+ }
288
+ const state = transition(runDir, 'dag_ready', {
289
+ dagPath: res.dagPath,
290
+ notesPath: res.notesPath,
291
+ architectManifestPath: res.manifestPath,
292
+ problems: undefined,
293
+ }, now);
294
+ return { ok: true, state };
295
+ });
149
296
  }
150
- /** gate-2: dag_ready → dag_approved. Returns the recorded dagPath for the
151
- * runner. Rejects unless status is dag_ready. */
297
+ /** gate-2: dag_ready → dag_approved. Returns the recorded dagPath for the
298
+ * runner. A dag_approved retry is accepted only with its valid ad-hoc envelope. */
152
299
  export function hostApproveDag(runDir, now = new Date()) {
153
- const cur = mustRead(runDir);
154
- if (cur.status !== 'dag_ready') {
155
- throw new HostGuardError(`approve-dag 需要 status=dag_ready,当前 ${cur.status}`);
156
- }
157
- if (!cur.dagPath)
158
- throw new Error('dag_ready 状态缺 dagPath(内部不一致)');
159
- const state = transition(runDir, 'dag_approved', {}, now);
160
- return { state, dagPath: cur.dagPath };
300
+ return withHostMutationLockSync(runDir, () => {
301
+ const cur = mustRead(runDir);
302
+ // run.json is the Gate-2 commit, so even the first state transition must
303
+ // verify it. This makes the crash window (published envelope + dag_ready
304
+ // grill state) an ordinary idempotent replay instead of a mutable limbo.
305
+ const committed = readRunEnvelope(runDir, cur.runId);
306
+ if (committed.kind === 'missing') {
307
+ throw new HostGuardError('approve-dag 需先完成 Gate-2 run.json 授权,拒绝仅修改 grill state');
308
+ }
309
+ if (committed.kind === 'invalid') {
310
+ throw new HostGuardError(`approve-dag 被拒绝:run.json 已存在但无效(${committed.problems.join('; ')})`);
311
+ }
312
+ if (committed.envelope.source.kind !== 'ad_hoc') {
313
+ throw new HostGuardError(`approve-dag 被拒绝:run.json source=${committed.envelope.source.kind} 不是 ad_hoc Gate-2`);
314
+ }
315
+ loadAuthorizedV3Run(runDir, { expectedRunId: cur.runId, allowedSources: ['ad_hoc'] });
316
+ // Approval is retryable after the create-once execution envelope has been
317
+ // committed. A caller may crash either before or after this transition;
318
+ // both replay states verify the same immutable artifacts.
319
+ if (cur.status === 'dag_approved') {
320
+ return { state: cur, dagPath: join(runDir, 'dag.json') };
321
+ }
322
+ if (cur.status !== 'dag_ready') {
323
+ throw new HostGuardError(`approve-dag 需要 status=dag_ready 或已授权的 dag_approved,当前 ${cur.status}`);
324
+ }
325
+ if (!cur.dagPath)
326
+ throw new Error('dag_ready 状态缺 dagPath(内部不一致)');
327
+ const state = transition(runDir, 'dag_approved', {}, now);
328
+ return { state, dagPath: join(runDir, 'dag.json') };
329
+ });
330
+ }
331
+ /**
332
+ * Materialize Gate-2's immutable execution artifacts and publish `run.json`.
333
+ * This must run BEFORE the grill transitions to `dag_approved`: if the process
334
+ * crashes between the two writes, retrying approval verifies/reuses the
335
+ * existing envelope and then finishes the conversation-state transition.
336
+ */
337
+ export function authorizeAdHocRun(runDir, bots, now = new Date()) {
338
+ // The outer host lock prevents Gate-2 from racing any grill RMW / architect
339
+ // attempt. The inner envelope lock serializes this producer with all other
340
+ // run.json publishers. Keep this exact order; see the lock-order invariant
341
+ // above.
342
+ return withHostMutationLockSync(runDir, () => withFileLockSync(join(runDir, 'run.json'), () => {
343
+ // Re-read both state and envelope after acquiring the cross-process lock.
344
+ const cur = mustRead(runDir);
345
+ // Crash-window replay: run.json is the create-once commit. Never rebuild
346
+ // its pinned snapshots from a possibly drifted bots.json. Both dag_ready
347
+ // (published before the state transition) and dag_approved (response lost
348
+ // after transition) are legal idempotent retry states.
349
+ const existing = readRunEnvelope(runDir, cur.runId);
350
+ if (existing.kind === 'ok') {
351
+ if (cur.status !== 'dag_ready' && cur.status !== 'dag_approved') {
352
+ throw new HostGuardError(`approve-dag 需要 status=dag_ready 或已授权的 dag_approved,当前 ${cur.status}`);
353
+ }
354
+ if (existing.envelope.source.kind !== 'ad_hoc') {
355
+ throw new Error(`run.json source=${existing.envelope.source.kind},不能作为 ad-hoc Gate-2 授权`);
356
+ }
357
+ const adHocEnvelope = existing.envelope;
358
+ loadAuthorizedV3Run(runDir, { expectedRunId: cur.runId, allowedSources: ['ad_hoc'] });
359
+ // Re-publish semantically identical bytes through the canonical helper:
360
+ // its idempotent branch heals old/crash-window envelopes by fsyncing all
361
+ // pinned artifacts plus the run directory before we acknowledge replay.
362
+ const publication = publishRunEnvelopeOnce(runDir, adHocEnvelope);
363
+ return {
364
+ dagPath: join(runDir, 'dag.json'),
365
+ envelope: adHocEnvelope,
366
+ publication,
367
+ };
368
+ }
369
+ if (existing.kind === 'invalid') {
370
+ throw new Error(`run.json 已存在但无效,拒绝覆盖:${existing.problems.join('; ')}`);
371
+ }
372
+ // A missing envelope is buildable only before Gate-2 has transitioned.
373
+ // dag_approved+missing is an integrity failure, never a reason to bless
374
+ // today's mutable DAG bytes retroactively.
375
+ if (cur.status !== 'dag_ready') {
376
+ throw new HostGuardError(`approve-dag 需要 status=dag_ready,当前 ${cur.status}`);
377
+ }
378
+ if (!cur.dagPath)
379
+ throw new Error('dag_ready 状态缺 dagPath(内部不一致)');
380
+ const dag = loadDag(cur.dagPath);
381
+ if (dag.runId !== cur.runId) {
382
+ throw new Error(`DAG runId=${dag.runId} 与 grill runId=${cur.runId} 不一致`);
383
+ }
384
+ const rawSpec = JSON.parse(readFileSync(cur.specJsonPath, 'utf-8'));
385
+ const spec = validateSpec(rawSpec);
386
+ if (spec.runId !== cur.runId) {
387
+ throw new Error(`spec runId=${spec.runId} 与 grill runId=${cur.runId} 不一致`);
388
+ }
389
+ const snapshots = freezeDagBotSnapshots(dag, bots, {
390
+ // A node that omits `bot` inherits the bot where this grill was born,
391
+ // never the first unrelated entry in bots.json. Standalone/dev runs have
392
+ // no binding and retain the legacy first-supported fallback.
393
+ defaultSelector: cur.chatBinding?.larkAppId,
394
+ });
395
+ const dagPath = join(runDir, 'dag.json');
396
+ const specPath = join(runDir, 'spec.json');
397
+ const botSnapshotsPath = join(runDir, 'bots.snapshot.json');
398
+ atomicWriteFileSync(dagPath, `${JSON.stringify(dag, null, 2)}\n`, { mode: 0o600 });
399
+ atomicWriteFileSync(specPath, `${JSON.stringify(spec, null, 2)}\n`, { mode: 0o600 });
400
+ atomicWriteFileSync(botSnapshotsPath, `${JSON.stringify(serializeFrozenBotSnapshots(snapshots), null, 2)}\n`, { mode: 0o600 });
401
+ const envelope = makeAdHocRunEnvelope({
402
+ runId: cur.runId,
403
+ createdAt: cur.createdAt,
404
+ authorizedAt: now.toISOString(),
405
+ ...(cur.chatBinding ? { chatBinding: cur.chatBinding } : {}),
406
+ ...(cur.chatBinding?.ownerOpenId ? { authorizedByOpenId: cur.chatBinding.ownerOpenId } : {}),
407
+ artifacts: {
408
+ dag: artifactRef(runDir, 'dag.json'),
409
+ spec: artifactRef(runDir, 'spec.json'),
410
+ botSnapshots: artifactRef(runDir, 'bots.snapshot.json'),
411
+ },
412
+ });
413
+ const publication = publishRunEnvelopeOnce(runDir, envelope);
414
+ return { dagPath, envelope, publication };
415
+ }));
161
416
  }
162
417
  /**
163
418
  * 改稿·改需求:把任一 grilling 之后的阶段退回 `grilling`,并清掉已失效的
@@ -168,14 +423,17 @@ export function hostApproveDag(runDir, now = new Date()) {
168
423
  * runtime)拒绝。
169
424
  */
170
425
  export function hostReviseSpec(runDir, now = new Date()) {
171
- const cur = mustRead(runDir);
172
- if (cur.status === 'grilling') {
173
- throw new HostGuardError('当前已在 grilling,直接改 spec.md 再 spec-finalize 即可');
174
- }
175
- if (cur.status === 'dag_approved') {
176
- throw new HostGuardError('DAG 已批准并交给 runtime,无法再 revise(如需改动请新建 run)');
177
- }
178
- return transition(runDir, 'grilling', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
426
+ return withHostMutationLockSync(runDir, () => {
427
+ const cur = mustRead(runDir);
428
+ assertRunNotCommitted(runDir, cur, 'revise-spec');
429
+ if (cur.status === 'grilling') {
430
+ throw new HostGuardError('当前已在 grilling,直接改 spec.md spec-finalize 即可');
431
+ }
432
+ if (cur.status === 'dag_approved') {
433
+ throw new HostGuardError('DAG 已批准并交给 runtime,无法再 revise(如需改动请新建 run)');
434
+ }
435
+ return transition(runDir, 'grilling', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
436
+ });
179
437
  }
180
438
  /**
181
439
  * 改稿·只改流程:需求没变、只是 DAG 编得不满意时,从 `dag_ready` 退回
@@ -183,11 +441,14 @@ export function hostReviseSpec(runDir, now = new Date()) {
183
441
  * 上重编一张,不必重新 grill。
184
442
  */
185
443
  export function hostReviseDag(runDir, now = new Date()) {
186
- const cur = mustRead(runDir);
187
- if (cur.status !== 'dag_ready') {
188
- throw new HostGuardError(`revise-dag 需要 status=dag_ready,当前 ${cur.status}`);
189
- }
190
- return transition(runDir, 'spec_approved', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
444
+ return withHostMutationLockSync(runDir, () => {
445
+ const cur = mustRead(runDir);
446
+ assertRunNotCommitted(runDir, cur, 'revise-dag');
447
+ if (cur.status !== 'dag_ready') {
448
+ throw new HostGuardError(`revise-dag 需要 status=dag_ready,当前 ${cur.status}`);
449
+ }
450
+ return transition(runDir, 'spec_approved', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
451
+ });
191
452
  }
192
453
  export class HostGuardError extends Error {
193
454
  constructor(message) {
@@ -214,13 +475,14 @@ function runDirFor(runId, baseDir) {
214
475
  }
215
476
  return dir;
216
477
  }
217
- /**
218
- * `botmux workflow <sub>` host-controller subcommands. Dispatched from
219
- * `cmdWorkflow` for the v3-specific verbs (new/spec-finalize/approve-spec/
220
- * architect/approve-dag); v0.2 verbs (run/create/validate/…) stay in workflow.ts.
221
- */
222
- export async function cmdWorkflowHost(sub, rest) {
478
+ export async function cmdWorkflowHost(sub, rest, deps = {}) {
223
479
  const baseDir = argValue(rest, '--base-dir') ?? defaultBaseDir();
480
+ const guardedRunDir = (runId) => {
481
+ const runDir = runDirFor(runId, baseDir);
482
+ const current = (deps.resolveChatBinding ?? chatBindingFromEnv)();
483
+ assertWorkflowHostCaller(runDir, current);
484
+ return runDir;
485
+ };
224
486
  switch (sub) {
225
487
  case 'new': {
226
488
  const goal = firstPositional(rest);
@@ -228,7 +490,7 @@ export async function cmdWorkflowHost(sub, rest) {
228
490
  throw new Error('用法: botmux workflow new "<目标>" [--base-dir <dir>]');
229
491
  // grill 经 daemon worker 出生时,env 带话题上下文 → 落 chatBinding,供后续
230
492
  // daemon humanGate 发审批卡用(CLI/dev 出生无 env → undefined,不影响)。
231
- const chatBinding = chatBindingFromEnv();
493
+ const chatBinding = (deps.resolveChatBinding ?? chatBindingFromEnv)();
232
494
  const { runId, runDir, state } = hostNew({ goal, baseDir, chatBinding });
233
495
  console.log(JSON.stringify({
234
496
  runId, runDir, status: state.status, specPath: state.specPath,
@@ -238,7 +500,7 @@ export async function cmdWorkflowHost(sub, rest) {
238
500
  }
239
501
  case 'spec-finalize': {
240
502
  const runId = requireRunId(rest);
241
- const out = hostSpecFinalize(runDirFor(runId, baseDir));
503
+ const out = hostSpecFinalize(guardedRunDir(runId));
242
504
  if (!out.ok) {
243
505
  console.error(`spec 校验失败(先修 spec.md 再 finalize):\n - ${out.problems.join('\n - ')}`);
244
506
  process.exitCode = 1;
@@ -249,26 +511,27 @@ export async function cmdWorkflowHost(sub, rest) {
249
511
  }
250
512
  case 'approve-spec': {
251
513
  const runId = requireRunId(rest);
252
- const state = hostApproveSpec(runDirFor(runId, baseDir));
514
+ const state = hostApproveSpec(guardedRunDir(runId));
253
515
  console.log(JSON.stringify({ runId, status: state.status }, null, 2));
254
516
  return;
255
517
  }
256
518
  case 'revise-spec': {
257
519
  const runId = requireRunId(rest);
258
- const state = hostReviseSpec(runDirFor(runId, baseDir));
520
+ const state = hostReviseSpec(guardedRunDir(runId));
259
521
  console.log(JSON.stringify({ runId, status: state.status }, null, 2));
260
522
  console.log('\n↩️ 已退回 grilling,可改 spec.md 再 spec-finalize(原 DAG 产物已作废)。');
261
523
  return;
262
524
  }
263
525
  case 'revise-dag': {
264
526
  const runId = requireRunId(rest);
265
- const state = hostReviseDag(runDirFor(runId, baseDir));
527
+ const state = hostReviseDag(guardedRunDir(runId));
266
528
  console.log(JSON.stringify({ runId, status: state.status }, null, 2));
267
529
  console.log('\n↩️ 已退回 spec_approved,可直接重跑 architect 重编 DAG(需求不变)。');
268
530
  return;
269
531
  }
270
532
  case 'architect': {
271
533
  const runId = requireRunId(rest);
534
+ guardedRunDir(runId);
272
535
  const out = await runArchitectCli(runId, baseDir, rest);
273
536
  if (!out.ok) {
274
537
  console.error(`architect/validateDag 失败(已退回 spec_approved,可修 spec 重跑):\n - ${out.problems.join('\n - ')}`);
@@ -280,9 +543,18 @@ export async function cmdWorkflowHost(sub, rest) {
280
543
  }
281
544
  case 'approve-dag': {
282
545
  const runId = requireRunId(rest);
283
- const { state, dagPath } = hostApproveDag(runDirFor(runId, baseDir));
546
+ const runDir = guardedRunDir(runId);
547
+ const now = new Date();
548
+ // An already-published replay must not depend on today's bots.json just
549
+ // to acknowledge the same Gate-2 decision. The in-lock reader remains
550
+ // authoritative; this read only decides whether bot snapshots are needed.
551
+ const before = readRunEnvelope(runDir, runId);
552
+ const bots = before.kind === 'missing' ? (deps.loadBots ?? loadBotConfigs)() : [];
553
+ const authorized = authorizeAdHocRun(runDir, bots, now);
554
+ const { state } = hostApproveDag(runDir, now);
555
+ const dagPath = authorized.dagPath;
284
556
  console.log(JSON.stringify({ runId, status: state.status, dagPath }, null, 2));
285
- console.log(`\n✅ DAG 已批准。开跑:botmux v3 run ${dagPath}`);
557
+ console.log(`\n✅ DAG 已批准。开跑:botmux workflow start ${runId}`);
286
558
  return;
287
559
  }
288
560
  default:
@@ -294,25 +566,32 @@ export function isHostSub(sub) {
294
566
  return ['new', 'spec-finalize', 'approve-spec', 'revise-spec', 'architect', 'revise-dag', 'approve-dag'].includes(sub);
295
567
  }
296
568
  /** Resolve real bot/secret deps and run the architect step. */
297
- async function runArchitectCli(runId, baseDir, rest) {
298
- const { loadBotConfigs } = await import('../../bot-registry.js');
299
- const bots = loadBotConfigs();
569
+ export function resolveArchitectBotSnapshot(runDir, bots, explicitSelector, workingDirOverride) {
300
570
  if (bots.length === 0)
301
571
  throw new Error('没有可用 bot 配置(bots.json 为空)');
302
- const selector = argValue(rest, '--bot');
572
+ const state = mustRead(runDir);
573
+ const selector = explicitSelector ?? state.chatBinding?.larkAppId;
303
574
  const bot = selector
304
- ? bots.find((b) => b.larkAppId === selector || b.name === selector)
305
- : bots[0];
306
- if (!bot)
307
- throw new Error(`找不到 bot "${selector}"`);
575
+ ? resolveBotConfig(selector, bots)
576
+ : bots.find((candidate) => (candidate.disableCliBypass !== true && isV3SupportedCli(candidate.cliId)));
577
+ if (!bot) {
578
+ throw new Error(`没有同时满足 bypass + v3 CLI allowlist 的 bot(supported: ${V3_SUPPORTED_CLIS.join(', ')})`);
579
+ }
580
+ const snapshot = botToSnapshot(bot, workingDirOverride);
581
+ if (!isV3SupportedCli(snapshot.cliId)) {
582
+ throw new Error(`v3 architect bot "${bot.name ?? bot.larkAppId}" uses unsupported CLI "${snapshot.cliId}" ` +
583
+ `(supported: ${V3_SUPPORTED_CLIS.join(', ')})`);
584
+ }
585
+ return snapshot;
586
+ }
587
+ async function runArchitectCli(runId, baseDir, rest) {
588
+ const bots = loadBotConfigs();
308
589
  const secretById = new Map(bots.map((b) => [b.larkAppId, b.larkAppSecret]));
309
- // Use the authoritative BotConfig BotSnapshot constructor so restricted bots
310
- // keep `disableCliBypass` here too a hand-rolled snapshot that drops it would
311
- // let the architect goal-worker (writes files / runs commands / produces the
312
- // dag.json that drives the whole run) silently start with --dangerously-skip-
313
- // permissions, violating the "downgrade-only" capability invariant.
314
- const botSnapshot = botToSnapshot(bot, argValue(rest, '--working-dir'));
315
- return hostArchitect(runDirFor(runId, baseDir), {
590
+ // The authoritative constructor rejects disableCliBypass=true: architect and
591
+ // goal workers both require CLI bypass permissions by product contract.
592
+ const runDir = runDirFor(runId, baseDir);
593
+ const botSnapshot = resolveArchitectBotSnapshot(runDir, bots, argValue(rest, '--bot'), argValue(rest, '--working-dir'));
594
+ return hostArchitect(runDir, {
316
595
  runArchitect: realRunArchitect,
317
596
  loadDag,
318
597
  botSnapshot,