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
@@ -0,0 +1,756 @@
1
+ /**
2
+ * Deterministic action gate for managed VC-meeting side effects.
3
+ *
4
+ * The receiver daemon supplies a trusted origin (session + stable delivery
5
+ * turn + dispatch attempt). This service resolves that origin from the durable
6
+ * delivery ledger, persists an immutable action intent, applies current
7
+ * membership fencing, and write-ahead claims the next provider effect. It
8
+ * deliberately never calls Lark, the realtime voice provider, or an approval
9
+ * card provider; callers execute only the returned plan.
10
+ */
11
+ import { createHash } from 'node:crypto';
12
+ import { approveAndClaimVcMeetingAction, beginVcMeetingAction, claimVcMeetingActionAttempt, claimVcMeetingApprovalCardAttempt, deriveVcMeetingActionId, findVcMeetingAction, finishVcMeetingAction, finishVcMeetingApprovalCard, isVcMeetingActionTerminal, markVcMeetingActionPendingApproval, rejectVcMeetingAction, resolveVcMeetingActionApproval, VC_MEETING_ACTION_SINKS, } from './vc-meeting-action-store.js';
13
+ import { findVcMeetingDeliveryByKey, getVcMeetingMemberProjection, listVcMeetingMemberProjections, } from './vc-meeting-delivery-store.js';
14
+ import { canonicalJson, computeInputHash } from '../utils/canonical-input-hash.js';
15
+ const MAX_OUTPUT_CHARS = 200;
16
+ function errorResult(status, errorCode, error, action) {
17
+ return {
18
+ status,
19
+ body: { ok: false, kind: 'rejected', errorCode, error, ...(action ? { action } : {}) },
20
+ };
21
+ }
22
+ function normalizeText(value) {
23
+ if (typeof value !== 'string')
24
+ return undefined;
25
+ const normalized = value.replace(/\s+/g, ' ').trim();
26
+ return normalized || undefined;
27
+ }
28
+ /**
29
+ * Stable IM source key. The canonical tuple avoids delimiter ambiguity and the
30
+ * 50-character namespace matches the bounded ids used by the action ledger.
31
+ */
32
+ export function deriveVcMeetingImTurnSourceKey(receiverSessionId, larkMessageId) {
33
+ const normalizedSessionId = normalizeText(receiverSessionId);
34
+ const normalizedMessageId = normalizeText(larkMessageId);
35
+ if (!normalizedSessionId || !normalizedMessageId) {
36
+ throw new Error('receiverSessionId and larkMessageId must be non-empty');
37
+ }
38
+ const seed = canonicalJson({
39
+ receiverSessionId: normalizedSessionId,
40
+ larkMessageId: normalizedMessageId,
41
+ });
42
+ const hex = createHash('sha256').update(seed, 'utf8').digest('hex');
43
+ return `vci_${hex.slice(0, 46)}`;
44
+ }
45
+ function isPlainObject(value) {
46
+ if (!value || typeof value !== 'object' || Array.isArray(value))
47
+ return false;
48
+ const prototype = Object.getPrototypeOf(value);
49
+ return prototype === Object.prototype || prototype === null;
50
+ }
51
+ function normalizeImActionRequest(raw) {
52
+ if (!raw || typeof raw !== 'object' || !raw.origin || typeof raw.origin !== 'object') {
53
+ return { ok: false, result: errorResult(400, 'invalid_request', 'IM action request and trusted origin are required') };
54
+ }
55
+ const listenerAppId = normalizeText(raw.origin.listenerAppId);
56
+ const meetingId = normalizeText(raw.origin.meetingId);
57
+ const memberId = normalizeText(raw.origin.memberId);
58
+ const agentAppId = normalizeText(raw.origin.agentAppId);
59
+ const ownerBootId = normalizeText(raw.origin.ownerBootId);
60
+ const receiverSessionId = normalizeText(raw.origin.receiverSessionId);
61
+ const larkMessageId = normalizeText(raw.origin.larkMessageId);
62
+ const reason = normalizeText(raw.reason);
63
+ if (!listenerAppId || !meetingId || !memberId || !agentAppId || !ownerBootId
64
+ || !receiverSessionId || !larkMessageId
65
+ || !isPositiveSafeInteger(raw.origin.ownerEpoch)
66
+ || !isPositiveSafeInteger(raw.origin.memberEpoch)
67
+ || !isPositiveSafeInteger(raw.origin.membershipGeneration)
68
+ || !isPositiveSafeInteger(raw.origin.sinkOwnerGeneration)) {
69
+ return { ok: false, result: errorResult(400, 'invalid_request', 'trusted IM action origin is invalid') };
70
+ }
71
+ if (!VC_MEETING_ACTION_SINKS.includes(raw.sink)) {
72
+ return { ok: false, result: errorResult(400, 'unsupported_sink', 'managed action sink is unsupported') };
73
+ }
74
+ if (reason && reason.length > MAX_OUTPUT_CHARS) {
75
+ return { ok: false, result: errorResult(400, 'content_too_long', `reason must be at most ${MAX_OUTPUT_CHARS} characters`) };
76
+ }
77
+ if (!isPlainObject(raw.canonicalInput)) {
78
+ return { ok: false, result: errorResult(400, 'invalid_canonical_input', 'canonicalInput must be a plain object') };
79
+ }
80
+ let canonicalInput;
81
+ try {
82
+ canonicalInput = JSON.parse(canonicalJson(raw.canonicalInput));
83
+ }
84
+ catch (err) {
85
+ return {
86
+ ok: false,
87
+ result: errorResult(400, 'invalid_canonical_input', err instanceof Error ? err.message : String(err)),
88
+ };
89
+ }
90
+ return {
91
+ ok: true,
92
+ request: {
93
+ origin: {
94
+ listenerAppId,
95
+ meetingId,
96
+ memberId,
97
+ memberEpoch: raw.origin.memberEpoch,
98
+ agentAppId,
99
+ ownerBootId,
100
+ ownerEpoch: raw.origin.ownerEpoch,
101
+ membershipGeneration: raw.origin.membershipGeneration,
102
+ sinkOwnerGeneration: raw.origin.sinkOwnerGeneration,
103
+ receiverSessionId,
104
+ larkMessageId,
105
+ },
106
+ sink: raw.sink,
107
+ canonicalInput,
108
+ ...(reason ? { reason } : {}),
109
+ },
110
+ };
111
+ }
112
+ function normalizeRequest(raw) {
113
+ if (!raw || typeof raw !== 'object') {
114
+ return { ok: false, result: errorResult(400, 'invalid_request', 'action request must be an object') };
115
+ }
116
+ const agentAppId = normalizeText(raw.agentAppId);
117
+ const receiverSessionId = normalizeText(raw.receiverSessionId);
118
+ const stableTurnId = normalizeText(raw.stableTurnId);
119
+ const content = normalizeText(raw.content);
120
+ const fallbackText = normalizeText(raw.fallbackText);
121
+ const reason = normalizeText(raw.reason);
122
+ if (!agentAppId || !receiverSessionId || !stableTurnId || !content
123
+ || !Number.isInteger(raw.dispatchAttempt) || raw.dispatchAttempt < 1) {
124
+ return { ok: false, result: errorResult(400, 'invalid_request', 'trusted action origin or content is invalid') };
125
+ }
126
+ if (raw.channel !== 'text' && raw.channel !== 'voice') {
127
+ return { ok: false, result: errorResult(400, 'unsupported_channel', 'channel must be text or voice') };
128
+ }
129
+ if (content.length > MAX_OUTPUT_CHARS
130
+ || (fallbackText?.length ?? 0) > MAX_OUTPUT_CHARS
131
+ || (reason?.length ?? 0) > MAX_OUTPUT_CHARS) {
132
+ return { ok: false, result: errorResult(400, 'content_too_long', `content fields must be at most ${MAX_OUTPUT_CHARS} characters`) };
133
+ }
134
+ if (raw.channel === 'text' && fallbackText) {
135
+ return { ok: false, result: errorResult(400, 'fallback_not_allowed', 'fallbackText only applies to voice output') };
136
+ }
137
+ return {
138
+ ok: true,
139
+ request: {
140
+ agentAppId,
141
+ receiverSessionId,
142
+ stableTurnId,
143
+ dispatchAttempt: raw.dispatchAttempt,
144
+ channel: raw.channel,
145
+ content,
146
+ ...(fallbackText ? { fallbackText } : {}),
147
+ ...(reason ? { reason } : {}),
148
+ },
149
+ };
150
+ }
151
+ function actionRef(record) {
152
+ return {
153
+ listenerAppId: record.listenerAppId,
154
+ meetingId: record.meetingId,
155
+ actionId: record.actionId,
156
+ inputHash: record.inputHash,
157
+ };
158
+ }
159
+ function executionPlan(record) {
160
+ const input = record.canonicalInput;
161
+ const channel = record.sink === 'meeting_voice' ? 'voice' : 'text';
162
+ return {
163
+ actionId: record.actionId,
164
+ inputHash: record.inputHash,
165
+ providerKey: record.providerKey,
166
+ channel,
167
+ sink: record.sink,
168
+ content: input.content,
169
+ ...(input.fallbackText ? { fallbackText: input.fallbackText } : {}),
170
+ ambiguousRecovery: channel === 'voice' ? 'manual_unknown' : 'lookup_or_idempotent_retry',
171
+ };
172
+ }
173
+ function genericExecutionPlan(record) {
174
+ return {
175
+ actionId: record.actionId,
176
+ inputHash: record.inputHash,
177
+ providerKey: record.providerKey,
178
+ sink: record.sink,
179
+ canonicalInput: structuredClone(record.canonicalInput),
180
+ ambiguousRecovery: record.sink === 'meeting_voice'
181
+ ? 'manual_unknown'
182
+ : 'lookup_or_idempotent_retry',
183
+ };
184
+ }
185
+ function existingResult(record) {
186
+ return { status: 200, body: { ok: true, kind: 'existing', action: record } };
187
+ }
188
+ function imExistingResult(record) {
189
+ return { status: 200, body: { ok: true, kind: 'existing', action: record } };
190
+ }
191
+ function rejectStatus(reason) {
192
+ return reason === 'listener_session_inactive' || reason === 'meeting_phase_closed' ? 409 : 403;
193
+ }
194
+ function isPositiveSafeInteger(value) {
195
+ return Number.isSafeInteger(value) && value > 0;
196
+ }
197
+ function rejectNewAction(deps, record, status, errorCode, error, now) {
198
+ const rejected = rejectVcMeetingAction(deps.dataDir, actionRef(record), { errorCode }, now);
199
+ if (rejected.kind === 'conflict') {
200
+ return errorResult(500, 'action_reject_transition_failed', `could not durably reject action: ${rejected.reason}`, record);
201
+ }
202
+ return errorResult(status, errorCode, error, rejected.record);
203
+ }
204
+ function currentProjection(dataDir, historical) {
205
+ const projections = listVcMeetingMemberProjections(dataDir, {
206
+ listenerAppId: historical.listenerAppId,
207
+ meetingId: historical.meetingId,
208
+ }).filter((candidate) => candidate.memberId === historical.memberId);
209
+ return {
210
+ projection: projections.find((candidate) => candidate.memberEpoch === historical.memberEpoch),
211
+ maxEpoch: Math.max(0, ...projections.map((candidate) => candidate.memberEpoch)),
212
+ };
213
+ }
214
+ /**
215
+ * Resolve, fence, authorize and write-ahead claim one managed meeting action.
216
+ * Existing non-requested records are returned before current membership
217
+ * fencing; this is what makes terminal/approval/provider replay deterministic
218
+ * across epoch or owner changes.
219
+ */
220
+ export async function requestVcMeetingManagedAction(raw, deps, now = Date.now()) {
221
+ const normalized = normalizeRequest(raw);
222
+ if (!normalized.ok)
223
+ return normalized.result;
224
+ const request = normalized.request;
225
+ if (request.agentAppId !== deps.selfAgentAppId) {
226
+ return errorResult(409, 'wrong_agent', 'trusted action origin does not match this consumer daemon');
227
+ }
228
+ // Session binding is part of trusted-origin validation and always precedes
229
+ // ledger lookup/replay. A sibling daemon sharing dataDir may not disclose an
230
+ // action merely because it knows a delivery key.
231
+ const lookup = findVcMeetingDeliveryByKey(deps.dataDir, request.stableTurnId);
232
+ if (!lookup)
233
+ return errorResult(404, 'receipt_not_found', 'delivery receipt was not found');
234
+ if (lookup.receiverSessionId !== request.receiverSessionId) {
235
+ return errorResult(409, 'receiver_session_mismatch', 'delivery is bound to a different receiver session');
236
+ }
237
+ const historicalProjection = getVcMeetingMemberProjection(deps.dataDir, lookup.memberKey);
238
+ if (!historicalProjection) {
239
+ return errorResult(409, 'projection_not_found', 'delivery membership projection was not found');
240
+ }
241
+ if (historicalProjection.agentAppId !== deps.selfAgentAppId) {
242
+ return errorResult(409, 'wrong_agent', 'delivery receipt belongs to another consumer agent');
243
+ }
244
+ if (historicalProjection.receiverSessionId !== request.receiverSessionId) {
245
+ return errorResult(409, 'receiver_session_changed', 'membership receiver session no longer matches the delivery');
246
+ }
247
+ const sink = request.channel === 'voice' ? 'meeting_voice' : 'meeting_text';
248
+ const canonicalInput = {
249
+ content: request.content,
250
+ ...(request.channel === 'voice' && request.fallbackText
251
+ ? { fallbackText: request.fallbackText }
252
+ : {}),
253
+ };
254
+ const source = {
255
+ kind: 'delivery',
256
+ key: lookup.receipt.deliveryKey,
257
+ deliverySeq: lookup.receipt.toSeq,
258
+ };
259
+ // Read an already-established lifecycle before *current* receipt/member
260
+ // fencing. This preserves deterministic terminal/pending/attempting replay,
261
+ // while a stale attempt that is first to arrive still cannot create and
262
+ // poison the primary action identity.
263
+ const proposedActionId = deriveVcMeetingActionId({
264
+ meetingId: lookup.memberKey.meetingId,
265
+ memberId: lookup.memberKey.memberId,
266
+ memberEpoch: lookup.memberKey.memberEpoch,
267
+ source,
268
+ sink,
269
+ actionSlot: 'primary',
270
+ });
271
+ const proposedInputHash = computeInputHash(canonicalInput);
272
+ const existing = findVcMeetingAction(deps.dataDir, {
273
+ listenerAppId: lookup.memberKey.listenerAppId,
274
+ meetingId: lookup.memberKey.meetingId,
275
+ }, proposedActionId);
276
+ if (existing) {
277
+ if (existing.inputHash !== proposedInputHash) {
278
+ return errorResult(409, 'action_input_mismatch', 'this delivery already has an action for the sink; treat it as handled and do not change content or slot', existing);
279
+ }
280
+ if (existing.agentAppId !== deps.selfAgentAppId) {
281
+ return errorResult(409, 'wrong_agent', 'existing action belongs to another consumer agent');
282
+ }
283
+ if (existing.status !== 'requested')
284
+ return existingResult(existing);
285
+ }
286
+ // An origin that has not yet established an action must be the exact live
287
+ // dispatched attempt. In particular, attempt N may not create a terminal
288
+ // rejected action after attempt N+1 has taken over the same stable turn.
289
+ if (lookup.receipt.stableTurnId !== request.stableTurnId) {
290
+ return errorResult(409, 'source_turn_mismatch', 'stable turn does not match the delivery receipt');
291
+ }
292
+ if (lookup.receipt.status !== 'dispatched') {
293
+ return errorResult(409, 'delivery_not_dispatched', `delivery is ${lookup.receipt.status}, not dispatched`);
294
+ }
295
+ if (lookup.receipt.dispatchAttempt !== request.dispatchAttempt) {
296
+ return errorResult(409, 'stale_dispatch_attempt', 'action origin does not match the live delivery attempt');
297
+ }
298
+ let record = existing;
299
+ let begunKind = existing ? 'existing' : 'created';
300
+ if (!record) {
301
+ // This is the authorization snapshot carried by the source turn. Reading
302
+ // the mutable projection here would let a delivery accepted under owner
303
+ // generation N execute for the first time after ownership churned to N+2.
304
+ if (!isPositiveSafeInteger(lookup.receipt.sinkOwnerGeneration)) {
305
+ return errorResult(409, 'receipt_policy_snapshot_missing', 'delivery receipt has no valid sink owner generation snapshot');
306
+ }
307
+ const begun = beginVcMeetingAction(deps.dataDir, {
308
+ listenerAppId: lookup.memberKey.listenerAppId,
309
+ meetingId: lookup.memberKey.meetingId,
310
+ memberId: lookup.memberKey.memberId,
311
+ memberEpoch: lookup.memberKey.memberEpoch,
312
+ agentAppId: deps.selfAgentAppId,
313
+ ownerGeneration: lookup.receipt.sinkOwnerGeneration,
314
+ source,
315
+ sink,
316
+ actionSlot: 'primary',
317
+ canonicalInput,
318
+ }, now);
319
+ if (begun.kind === 'conflict') {
320
+ if (begun.reason === 'input_mismatch') {
321
+ return errorResult(409, 'action_input_mismatch', 'this delivery already has an action for the sink; treat it as handled and do not change content or slot', begun.record);
322
+ }
323
+ return errorResult(400, `action_${begun.reason}`, begun.detail ?? 'action intent is invalid', begun.record);
324
+ }
325
+ record = begun.record;
326
+ begunKind = begun.kind;
327
+ }
328
+ if (record.agentAppId !== deps.selfAgentAppId) {
329
+ return errorResult(409, 'wrong_agent', 'existing action belongs to another consumer agent');
330
+ }
331
+ // A requested record may be the crash residue between begin and policy. It
332
+ // is safe to resume because all subsequent claims are store-atomic. Every
333
+ // other status is an observable existing lifecycle result and is replayed
334
+ // before current fencing.
335
+ if (begunKind === 'existing' && record.status !== 'requested')
336
+ return existingResult(record);
337
+ const recordBeforeFencing = record;
338
+ const rejectFencing = (code, message) => rejectNewAction(deps, recordBeforeFencing, 409, code, message, now);
339
+ const current = currentProjection(deps.dataDir, historicalProjection);
340
+ if (current.maxEpoch !== lookup.memberKey.memberEpoch) {
341
+ return rejectFencing('stale_member_epoch', 'delivery member epoch is no longer current');
342
+ }
343
+ if (!current.projection) {
344
+ return rejectFencing('projection_not_found', 'current membership projection was not found');
345
+ }
346
+ if (current.projection.status !== 'active') {
347
+ return rejectFencing(`membership_${current.projection.status}`, `membership is ${current.projection.status}`);
348
+ }
349
+ if (current.projection.receiverSessionId !== request.receiverSessionId) {
350
+ return rejectFencing('receiver_session_changed', 'current membership uses a different receiver session');
351
+ }
352
+ if (current.projection.agentAppId !== deps.selfAgentAppId) {
353
+ return rejectFencing('wrong_agent', 'current membership belongs to another consumer agent');
354
+ }
355
+ if (!isPositiveSafeInteger(current.projection.sinkOwnerGeneration)) {
356
+ return rejectFencing('projection_policy_invalid', 'current membership has no valid sink owner generation');
357
+ }
358
+ if (record.ownerGeneration !== current.projection.sinkOwnerGeneration) {
359
+ return rejectFencing('stale_owner_generation', 'action authorization snapshot is no longer current');
360
+ }
361
+ let authorization;
362
+ try {
363
+ authorization = await deps.authorize({
364
+ request,
365
+ projection: current.projection,
366
+ receipt: lookup.receipt,
367
+ action: record,
368
+ sink,
369
+ });
370
+ }
371
+ catch (err) {
372
+ return errorResult(503, 'authorization_unavailable', err instanceof Error ? err.message : String(err), record);
373
+ }
374
+ if (!authorization || !['allow', 'approval', 'deny'].includes(authorization.kind)) {
375
+ return errorResult(503, 'authorization_invalid_result', 'authorization callback returned an invalid decision', record);
376
+ }
377
+ if (authorization.kind === 'deny') {
378
+ const allowedReasons = new Set([
379
+ 'listener_session_inactive',
380
+ 'meeting_phase_closed',
381
+ 'capability_denied',
382
+ 'not_sink_owner',
383
+ 'output_policy_denied',
384
+ ]);
385
+ if (!allowedReasons.has(authorization.reason)) {
386
+ return errorResult(503, 'authorization_invalid_result', 'authorization denial reason is invalid', record);
387
+ }
388
+ return rejectNewAction(deps, record, rejectStatus(authorization.reason), authorization.reason, authorization.detail ?? `managed meeting action denied: ${authorization.reason}`, now);
389
+ }
390
+ if (authorization.kind === 'approval') {
391
+ const pending = markVcMeetingActionPendingApproval(deps.dataDir, actionRef(record), now);
392
+ if (pending.kind === 'conflict') {
393
+ return errorResult(500, 'approval_transition_failed', `could not persist approval state: ${pending.reason}`, record);
394
+ }
395
+ record = pending.record;
396
+ const claimed = claimVcMeetingApprovalCardAttempt(deps.dataDir, actionRef(record), now);
397
+ if (claimed.kind === 'existing')
398
+ return existingResult(claimed.record);
399
+ if (claimed.kind === 'conflict') {
400
+ return errorResult(500, 'approval_claim_failed', `could not claim approval presentation: ${claimed.reason}`, record);
401
+ }
402
+ record = claimed.record;
403
+ return {
404
+ status: 202,
405
+ body: {
406
+ ok: true,
407
+ kind: 'needsApproval',
408
+ action: record,
409
+ plan: {
410
+ actionId: record.actionId,
411
+ inputHash: record.inputHash,
412
+ providerKey: record.approvalCard.providerKey,
413
+ channel: request.channel,
414
+ content: request.content,
415
+ ...(request.fallbackText ? { fallbackText: request.fallbackText } : {}),
416
+ ...(request.reason ? { reason: request.reason } : {}),
417
+ },
418
+ },
419
+ };
420
+ }
421
+ const claimed = claimVcMeetingActionAttempt(deps.dataDir, actionRef(record), now);
422
+ if (claimed.kind === 'existing')
423
+ return existingResult(claimed.record);
424
+ if (claimed.kind === 'conflict') {
425
+ return errorResult(500, 'provider_claim_failed', `could not claim provider execution: ${claimed.reason}`, record);
426
+ }
427
+ record = claimed.record;
428
+ return {
429
+ status: 202,
430
+ body: { ok: true, kind: 'execute', action: record, plan: executionPlan(record) },
431
+ };
432
+ }
433
+ /**
434
+ * Resolve and execute a managed action from an explicit user IM turn.
435
+ *
436
+ * Unlike delivery-origin actions this path has no delivery receipt or
437
+ * dispatchAttempt: the durable identity is the authoritative membership
438
+ * projection plus `hash(receiverSessionId, larkMessageId)`. The receiver
439
+ * binding is checked before ledger lookup so a different session cannot use a
440
+ * guessed message id to inspect an action. Exact action replays still return
441
+ * their established lifecycle before current owner/member fencing, matching
442
+ * delivery-origin replay semantics.
443
+ */
444
+ export async function requestVcMeetingManagedImAction(raw, deps, now = Date.now()) {
445
+ const normalized = normalizeImActionRequest(raw);
446
+ if (!normalized.ok)
447
+ return normalized.result;
448
+ const request = normalized.request;
449
+ const { origin } = request;
450
+ if (origin.agentAppId !== deps.selfAgentAppId) {
451
+ return errorResult(409, 'wrong_agent', 'trusted IM action origin does not match this consumer daemon');
452
+ }
453
+ const memberKey = {
454
+ listenerAppId: origin.listenerAppId,
455
+ meetingId: origin.meetingId,
456
+ memberId: origin.memberId,
457
+ memberEpoch: origin.memberEpoch,
458
+ };
459
+ const historicalProjection = getVcMeetingMemberProjection(deps.dataDir, memberKey);
460
+ if (!historicalProjection) {
461
+ return errorResult(404, 'projection_not_found', 'IM turn membership projection was not found');
462
+ }
463
+ // Receiver and agent binding are authentication checks, not mutable policy
464
+ // fences, so they intentionally precede action replay.
465
+ if (historicalProjection.receiverSessionId !== origin.receiverSessionId) {
466
+ return errorResult(409, 'receiver_session_mismatch', 'IM turn is bound to a different receiver session');
467
+ }
468
+ if (historicalProjection.agentAppId !== origin.agentAppId
469
+ || historicalProjection.agentAppId !== deps.selfAgentAppId) {
470
+ return errorResult(409, 'wrong_agent', 'IM turn membership belongs to another consumer agent');
471
+ }
472
+ const sourceKey = deriveVcMeetingImTurnSourceKey(origin.receiverSessionId, origin.larkMessageId);
473
+ const actionIdentity = {
474
+ listenerAppId: origin.listenerAppId,
475
+ meetingId: origin.meetingId,
476
+ memberId: origin.memberId,
477
+ memberEpoch: origin.memberEpoch,
478
+ agentAppId: origin.agentAppId,
479
+ ownerGeneration: origin.sinkOwnerGeneration,
480
+ source: {
481
+ kind: 'im_turn',
482
+ key: sourceKey,
483
+ larkMessageId: origin.larkMessageId,
484
+ },
485
+ sink: request.sink,
486
+ actionSlot: 'primary',
487
+ canonicalInput: request.canonicalInput,
488
+ };
489
+ const proposedActionId = deriveVcMeetingActionId(actionIdentity);
490
+ const proposedInputHash = computeInputHash(request.canonicalInput);
491
+ const existing = findVcMeetingAction(deps.dataDir, {
492
+ listenerAppId: origin.listenerAppId,
493
+ meetingId: origin.meetingId,
494
+ }, proposedActionId);
495
+ if (existing) {
496
+ if (existing.inputHash !== proposedInputHash) {
497
+ return errorResult(409, 'action_input_mismatch', 'this IM message already has an action for the sink; treat it as handled and do not change content or slot', existing);
498
+ }
499
+ if (existing.agentAppId !== deps.selfAgentAppId) {
500
+ return errorResult(409, 'wrong_agent', 'existing action belongs to another consumer agent');
501
+ }
502
+ if (existing.status !== 'requested')
503
+ return imExistingResult(existing);
504
+ }
505
+ const begun = beginVcMeetingAction(deps.dataDir, actionIdentity, now);
506
+ if (begun.kind === 'conflict') {
507
+ if (begun.reason === 'input_mismatch') {
508
+ return errorResult(409, 'action_input_mismatch', 'this IM message already has an action for the sink; treat it as handled and do not change content or slot', begun.record);
509
+ }
510
+ return errorResult(400, `action_${begun.reason}`, begun.detail ?? 'action intent is invalid', begun.record);
511
+ }
512
+ let record = begun.record;
513
+ if (record.agentAppId !== deps.selfAgentAppId) {
514
+ return errorResult(409, 'wrong_agent', 'existing action belongs to another consumer agent');
515
+ }
516
+ if (begun.kind === 'existing' && record.status !== 'requested')
517
+ return imExistingResult(record);
518
+ const rejectFencing = (code, message) => rejectNewAction(deps, record, 409, code, message, now);
519
+ const current = currentProjection(deps.dataDir, historicalProjection);
520
+ if (current.maxEpoch !== origin.memberEpoch) {
521
+ return rejectFencing('stale_member_epoch', 'IM turn member epoch is no longer current');
522
+ }
523
+ if (!current.projection) {
524
+ return rejectFencing('projection_not_found', 'current membership projection was not found');
525
+ }
526
+ if (current.projection.status !== 'active') {
527
+ return rejectFencing(`membership_${current.projection.status}`, `membership is ${current.projection.status}`);
528
+ }
529
+ if (current.projection.receiverSessionId !== origin.receiverSessionId) {
530
+ return rejectFencing('receiver_session_changed', 'current membership uses a different receiver session');
531
+ }
532
+ if (current.projection.agentAppId !== deps.selfAgentAppId) {
533
+ return rejectFencing('wrong_agent', 'current membership belongs to another consumer agent');
534
+ }
535
+ if (current.projection.ownerEpoch !== origin.ownerEpoch) {
536
+ return rejectFencing('stale_owner_epoch', 'IM turn meeting owner epoch is no longer current');
537
+ }
538
+ if (current.projection.ownerBootId !== origin.ownerBootId) {
539
+ return rejectFencing('stale_owner_boot', 'IM turn meeting owner boot is no longer current');
540
+ }
541
+ if (!isPositiveSafeInteger(current.projection.sinkOwnerGeneration)) {
542
+ return rejectFencing('projection_policy_invalid', 'current membership has no valid sink owner generation');
543
+ }
544
+ if (record.ownerGeneration !== current.projection.sinkOwnerGeneration) {
545
+ return rejectFencing('stale_owner_generation', 'action authorization snapshot is no longer current');
546
+ }
547
+ let authorization;
548
+ try {
549
+ authorization = await deps.authorize({
550
+ request,
551
+ projection: current.projection,
552
+ action: record,
553
+ sink: request.sink,
554
+ });
555
+ }
556
+ catch (err) {
557
+ return errorResult(503, 'authorization_unavailable', err instanceof Error ? err.message : String(err), record);
558
+ }
559
+ if (!authorization || !['allow', 'approval', 'deny'].includes(authorization.kind)) {
560
+ return errorResult(503, 'authorization_invalid_result', 'authorization callback returned an invalid decision', record);
561
+ }
562
+ if (authorization.kind === 'deny') {
563
+ const allowedReasons = new Set([
564
+ 'listener_session_inactive',
565
+ 'meeting_phase_closed',
566
+ 'capability_denied',
567
+ 'not_sink_owner',
568
+ 'output_policy_denied',
569
+ ]);
570
+ if (!allowedReasons.has(authorization.reason)) {
571
+ return errorResult(503, 'authorization_invalid_result', 'authorization denial reason is invalid', record);
572
+ }
573
+ return rejectNewAction(deps, record, rejectStatus(authorization.reason), authorization.reason, authorization.detail ?? `managed meeting action denied: ${authorization.reason}`, now);
574
+ }
575
+ if (authorization.kind === 'approval') {
576
+ const pending = markVcMeetingActionPendingApproval(deps.dataDir, actionRef(record), now);
577
+ if (pending.kind === 'conflict') {
578
+ return errorResult(500, 'approval_transition_failed', `could not persist approval state: ${pending.reason}`, record);
579
+ }
580
+ record = pending.record;
581
+ const claimed = claimVcMeetingApprovalCardAttempt(deps.dataDir, actionRef(record), now);
582
+ if (claimed.kind === 'existing')
583
+ return imExistingResult(claimed.record);
584
+ if (claimed.kind === 'conflict') {
585
+ return errorResult(500, 'approval_claim_failed', `could not claim approval presentation: ${claimed.reason}`, record);
586
+ }
587
+ record = claimed.record;
588
+ return {
589
+ status: 202,
590
+ body: {
591
+ ok: true,
592
+ kind: 'needsApproval',
593
+ action: record,
594
+ plan: {
595
+ actionId: record.actionId,
596
+ inputHash: record.inputHash,
597
+ providerKey: record.approvalCard.providerKey,
598
+ sink: record.sink,
599
+ canonicalInput: structuredClone(record.canonicalInput),
600
+ ...(request.reason ? { reason: request.reason } : {}),
601
+ },
602
+ },
603
+ };
604
+ }
605
+ const claimed = claimVcMeetingActionAttempt(deps.dataDir, actionRef(record), now);
606
+ if (claimed.kind === 'existing')
607
+ return imExistingResult(claimed.record);
608
+ if (claimed.kind === 'conflict') {
609
+ return errorResult(500, 'provider_claim_failed', `could not claim provider execution: ${claimed.reason}`, record);
610
+ }
611
+ record = claimed.record;
612
+ return {
613
+ status: 202,
614
+ body: { ok: true, kind: 'execute', action: record, plan: genericExecutionPlan(record) },
615
+ };
616
+ }
617
+ /** Persist the provider terminal result after executing an `execute` plan. */
618
+ export function finishVcMeetingManagedActionProvider(dataDir, input, now = Date.now()) {
619
+ const { status, externalRefs, errorCode, ...ref } = input;
620
+ return finishVcMeetingAction(dataDir, ref, {
621
+ status,
622
+ ...(externalRefs ? { externalRefs } : {}),
623
+ ...(errorCode ? { errorCode } : {}),
624
+ }, now);
625
+ }
626
+ /** Persist the approval-card provider result after a `needsApproval` plan. */
627
+ export function finishVcMeetingManagedApprovalCard(dataDir, input, now = Date.now()) {
628
+ const { status, externalRefs, errorCode, ...ref } = input;
629
+ return finishVcMeetingApprovalCard(dataDir, ref, {
630
+ status,
631
+ ...(externalRefs ? { externalRefs } : {}),
632
+ ...(errorCode ? { errorCode } : {}),
633
+ }, now);
634
+ }
635
+ function approvalResolutionFromTransition(result) {
636
+ if (result.kind === 'conflict') {
637
+ return {
638
+ kind: 'conflict',
639
+ reason: result.reason,
640
+ ...(result.record ? { action: result.record } : {}),
641
+ };
642
+ }
643
+ return {
644
+ kind: result.kind === 'existing' ? 'existing' : 'resolved',
645
+ action: result.record,
646
+ };
647
+ }
648
+ function expireApprovalAfterFenceFailure(dataDir, ref, opts, errorCode, now) {
649
+ return approvalResolutionFromTransition(resolveVcMeetingActionApproval(dataDir, ref, 'expired', {
650
+ ...(opts.externalRefs ? { externalRefs: opts.externalRefs } : {}),
651
+ errorCode,
652
+ }, now));
653
+ }
654
+ function validateApprovalStructuralFence(dataDir, action) {
655
+ const historicalProjection = getVcMeetingMemberProjection(dataDir, {
656
+ listenerAppId: action.listenerAppId,
657
+ meetingId: action.meetingId,
658
+ memberId: action.memberId,
659
+ memberEpoch: action.memberEpoch,
660
+ });
661
+ if (!historicalProjection)
662
+ return { ok: false, errorCode: 'projection_not_found' };
663
+ const current = currentProjection(dataDir, historicalProjection);
664
+ if (current.maxEpoch !== action.memberEpoch) {
665
+ return { ok: false, errorCode: 'stale_member_epoch' };
666
+ }
667
+ if (!current.projection)
668
+ return { ok: false, errorCode: 'projection_not_found' };
669
+ if (current.projection.status !== 'active') {
670
+ return { ok: false, errorCode: `membership_${current.projection.status}` };
671
+ }
672
+ if (current.projection.agentAppId !== action.agentAppId) {
673
+ return { ok: false, errorCode: 'wrong_agent' };
674
+ }
675
+ if (!isPositiveSafeInteger(current.projection.sinkOwnerGeneration)) {
676
+ return { ok: false, errorCode: 'projection_policy_invalid' };
677
+ }
678
+ if (current.projection.sinkOwnerGeneration !== action.ownerGeneration) {
679
+ return { ok: false, errorCode: 'stale_owner_generation' };
680
+ }
681
+ return { ok: true, projection: current.projection };
682
+ }
683
+ /**
684
+ * Apply a human approval decision. Approval write and provider claim are both
685
+ * durable before an execution plan is returned.
686
+ */
687
+ export async function resolveVcMeetingManagedActionApproval(dataDir, ref, decision, opts = {}, now = Date.now()) {
688
+ if (decision === 'approved') {
689
+ const action = findVcMeetingAction(dataDir, {
690
+ listenerAppId: ref.listenerAppId,
691
+ meetingId: ref.meetingId,
692
+ }, ref.actionId);
693
+ if (!action)
694
+ return { kind: 'conflict', reason: 'not_found' };
695
+ if (action.inputHash !== ref.inputHash) {
696
+ return { kind: 'conflict', reason: 'input_mismatch', action };
697
+ }
698
+ // Replays after the write-ahead claim or a terminal result disclose the
699
+ // established lifecycle without consulting mutable current authority.
700
+ if (action.status === 'attempting' || isVcMeetingActionTerminal(action.status)) {
701
+ return { kind: 'existing', action };
702
+ }
703
+ if (action.status !== 'pendingApproval' && action.status !== 'approved') {
704
+ return { kind: 'conflict', reason: 'invalid_transition', action };
705
+ }
706
+ const beforeAuthorization = validateApprovalStructuralFence(dataDir, action);
707
+ if (!beforeAuthorization.ok) {
708
+ return expireApprovalAfterFenceFailure(dataDir, ref, opts, beforeAuthorization.errorCode, now);
709
+ }
710
+ if (!opts.revalidate) {
711
+ return { kind: 'conflict', reason: 'approval_revalidation_required', action };
712
+ }
713
+ let authorization;
714
+ try {
715
+ authorization = await opts.revalidate({
716
+ projection: beforeAuthorization.projection,
717
+ action,
718
+ sink: action.sink,
719
+ });
720
+ }
721
+ catch {
722
+ return { kind: 'conflict', reason: 'authorization_unavailable', action };
723
+ }
724
+ if (!authorization || !['allow', 'approval', 'deny'].includes(authorization.kind)) {
725
+ return { kind: 'conflict', reason: 'authorization_invalid_result', action };
726
+ }
727
+ if (authorization.kind === 'deny') {
728
+ return expireApprovalAfterFenceFailure(dataDir, ref, opts, authorization.reason, now);
729
+ }
730
+ // The live phase hook may be asynchronous. Re-read cross-process member
731
+ // fences after it resolves so a concurrent remove/re-add or owner transfer
732
+ // cannot win the await window and then be followed by a stale claim.
733
+ const beforeClaim = validateApprovalStructuralFence(dataDir, action);
734
+ if (!beforeClaim.ok) {
735
+ return expireApprovalAfterFenceFailure(dataDir, ref, opts, beforeClaim.errorCode, now);
736
+ }
737
+ const claimed = approveAndClaimVcMeetingAction(dataDir, ref, {
738
+ ...(opts.externalRefs ? { externalRefs: opts.externalRefs } : {}),
739
+ }, now);
740
+ if (claimed.kind === 'conflict') {
741
+ return { kind: 'conflict', reason: claimed.reason, ...(claimed.record ? { action: claimed.record } : {}) };
742
+ }
743
+ if (claimed.kind === 'existing')
744
+ return { kind: 'existing', action: claimed.record };
745
+ return { kind: 'execute', action: claimed.record, plan: executionPlan(claimed.record) };
746
+ }
747
+ return approvalResolutionFromTransition(resolveVcMeetingActionApproval(dataDir, ref, decision, {
748
+ ...(opts.externalRefs ? { externalRefs: opts.externalRefs } : {}),
749
+ ...(opts.errorCode ? { errorCode: opts.errorCode } : {}),
750
+ }, now));
751
+ }
752
+ /** Useful to callers deciding whether an existing result is final for display. */
753
+ export function isVcMeetingManagedActionTerminal(record) {
754
+ return isVcMeetingActionTerminal(record.status);
755
+ }
756
+ //# sourceMappingURL=vc-meeting-action-gate.js.map