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
@@ -1,7 +1,16 @@
1
- import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
2
- import { dirname, join } from 'node:path';
3
- import { randomUUID } from 'node:crypto';
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync } from 'node:fs';
2
+ import { basename, dirname, join } from 'node:path';
3
+ import { createHash, randomUUID } from 'node:crypto';
4
+ import { withFileLockSync } from '../utils/file-lock.js';
4
5
  import { logger } from '../utils/logger.js';
6
+ import { normalizeVcMeetingProfileInstructions } from './vc-meeting-profile-instructions.js';
7
+ const RUNTIME_SCHEMA_VERSION = 3;
8
+ export const VC_MEETING_RUNTIME_LEGACY_PROFILE_ID = 'legacy-generalist';
9
+ export const VC_MEETING_RUNTIME_LEGACY_MEMBER_ID = 'meeting_assistant';
10
+ export const VC_MEETING_RUNTIME_LEGACY_ROLE = 'meeting_assistant';
11
+ export const VC_MEETING_RUNTIME_LEGACY_PROFILE_HASH = `sha256:${createHash('sha256')
12
+ .update(JSON.stringify({ role: VC_MEETING_RUNTIME_LEGACY_ROLE, filter: 'all' }), 'utf8')
13
+ .digest('hex')}`;
5
14
  const FILE_NAME = 'vc-meeting-runtime-sessions.json';
6
15
  const ENDED_TOMBSTONE_FILE_NAME = 'vc-meeting-ended-tombstones.json';
7
16
  const DEFAULT_TTL_MS = 24 * 60 * 60 * 1000;
@@ -22,24 +31,72 @@ function listenerAgentIndexKey(listenerChatId, selectedAgentAppId) {
22
31
  function invalidateListenerAgentIndex() {
23
32
  listenerAgentIndexCache = undefined;
24
33
  }
34
+ function ensureLockParent(fp) {
35
+ const dir = dirname(fp);
36
+ if (!existsSync(dir))
37
+ mkdirSync(dir, { recursive: true });
38
+ }
39
+ function isRecord(value) {
40
+ return !!value && typeof value === 'object' && !Array.isArray(value);
41
+ }
42
+ function assertNoQuarantinedEvidence(fp, label) {
43
+ const prefix = `${basename(fp)}.corrupt.`;
44
+ let quarantined = false;
45
+ try {
46
+ quarantined = readdirSync(dirname(fp)).some(name => name.startsWith(prefix));
47
+ }
48
+ catch {
49
+ // A genuinely absent directory/store is initializable.
50
+ }
51
+ if (quarantined) {
52
+ throw new Error(`vc meeting ${label} store has quarantined evidence for ${fp}`);
53
+ }
54
+ }
55
+ function quarantineCorruptStore(fp, label, err) {
56
+ const aside = `${fp}.corrupt.${Date.now()}.${process.pid}`;
57
+ try {
58
+ renameSync(fp, aside);
59
+ }
60
+ catch { /* another process may already have quarantined it */ }
61
+ invalidateListenerAgentIndex();
62
+ logger.warn(`[vc-meeting-runtime-store] corrupt ${label} store at ${fp}, moved aside to ${aside}: `
63
+ + `${err instanceof Error ? err.message : String(err)}`);
64
+ throw new Error(`vc meeting ${label} store is corrupt: ${aside}`);
65
+ }
25
66
  function readStore(dataDir) {
26
67
  const fp = filePath(dataDir);
27
- if (!existsSync(fp))
68
+ if (!existsSync(fp)) {
69
+ assertNoQuarantinedEvidence(fp, 'runtime session');
28
70
  return {};
71
+ }
29
72
  try {
30
73
  const raw = JSON.parse(readFileSync(fp, 'utf-8'));
31
- const out = {};
74
+ if (!isRecord(raw))
75
+ throw new Error('store root must be an object');
76
+ const out = Object.create(null);
32
77
  for (const [key, value] of Object.entries(raw)) {
33
78
  const record = normalizeRecord(value);
34
- if (record)
35
- out[key] = record;
79
+ if (!record)
80
+ throw new Error(`invalid runtime session record at ${key}`);
81
+ if (key !== sessionKey(record.larkAppId, record.meeting.id)) {
82
+ throw new Error(`runtime session key mismatch at ${key}`);
83
+ }
84
+ out[key] = record;
36
85
  }
37
86
  return out;
38
87
  }
39
88
  catch (err) {
40
- logger.warn(`[vc-meeting-runtime-store] failed to read ${fp}: ${err instanceof Error ? err.message : String(err)}`);
89
+ return quarantineCorruptStore(fp, 'runtime session', err);
90
+ }
91
+ }
92
+ function readStoreForAccess(dataDir) {
93
+ const fp = filePath(dataDir);
94
+ if (!existsSync(fp)) {
95
+ assertNoQuarantinedEvidence(fp, 'runtime session');
41
96
  return {};
42
97
  }
98
+ ensureLockParent(fp);
99
+ return withFileLockSync(fp, () => readStore(dataDir));
43
100
  }
44
101
  function writeStore(dataDir, store) {
45
102
  const fp = filePath(dataDir);
@@ -53,22 +110,38 @@ function writeStore(dataDir, store) {
53
110
  }
54
111
  function readEndedTombstoneStore(dataDir) {
55
112
  const fp = endedTombstoneFilePath(dataDir);
56
- if (!existsSync(fp))
113
+ if (!existsSync(fp)) {
114
+ assertNoQuarantinedEvidence(fp, 'ended tombstone');
57
115
  return {};
116
+ }
58
117
  try {
59
118
  const raw = JSON.parse(readFileSync(fp, 'utf-8'));
60
- const out = {};
119
+ if (!isRecord(raw))
120
+ throw new Error('store root must be an object');
121
+ const out = Object.create(null);
61
122
  for (const [key, value] of Object.entries(raw)) {
62
123
  const record = normalizeEndedTombstoneRecord(value);
63
- if (record)
64
- out[key] = record;
124
+ if (!record)
125
+ throw new Error(`invalid ended tombstone record at ${key}`);
126
+ if (key !== sessionKey(record.larkAppId, record.meetingId)) {
127
+ throw new Error(`ended tombstone key mismatch at ${key}`);
128
+ }
129
+ out[key] = record;
65
130
  }
66
131
  return out;
67
132
  }
68
133
  catch (err) {
69
- logger.warn(`[vc-meeting-runtime-store] failed to read ${fp}: ${err instanceof Error ? err.message : String(err)}`);
134
+ return quarantineCorruptStore(fp, 'ended tombstone', err);
135
+ }
136
+ }
137
+ function readEndedTombstoneStoreForAccess(dataDir) {
138
+ const fp = endedTombstoneFilePath(dataDir);
139
+ if (!existsSync(fp)) {
140
+ assertNoQuarantinedEvidence(fp, 'ended tombstone');
70
141
  return {};
71
142
  }
143
+ ensureLockParent(fp);
144
+ return withFileLockSync(fp, () => readEndedTombstoneStore(dataDir));
72
145
  }
73
146
  function writeEndedTombstoneStore(dataDir, store) {
74
147
  const fp = endedTombstoneFilePath(dataDir);
@@ -79,10 +152,298 @@ function writeEndedTombstoneStore(dataDir, store) {
79
152
  writeFileSync(tmp, JSON.stringify(store, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
80
153
  renameSync(tmp, fp);
81
154
  }
155
+ const SAFE_RUNTIME_ID_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
156
+ const RESERVED_RUNTIME_IDS = new Set(['__proto__', 'prototype', 'constructor']);
157
+ const RUNTIME_ACTIVITY_TYPES = [
158
+ 'participant_joined',
159
+ 'participant_left',
160
+ 'chat_received',
161
+ 'transcript_received',
162
+ 'magic_share_started',
163
+ 'magic_share_ended',
164
+ ];
165
+ const RUNTIME_OWNED_SINKS = ['meeting_text', 'meeting_voice'];
166
+ const RUNTIME_LISTENER_OUTPUT_CAPABILITY = 'listener.output.request';
167
+ const DELIVERY_PROFILE_HASH_RE = /^sha256:[0-9a-f]{64}$/;
168
+ function isSafeRuntimeId(value) {
169
+ return typeof value === 'string'
170
+ && SAFE_RUNTIME_ID_RE.test(value)
171
+ && !RESERVED_RUNTIME_IDS.has(value);
172
+ }
173
+ function normalizeUniqueStringList(value) {
174
+ if (!Array.isArray(value))
175
+ return undefined;
176
+ const out = [];
177
+ const seen = new Set();
178
+ for (const item of value) {
179
+ if (typeof item !== 'string' || !item.trim())
180
+ return undefined;
181
+ const normalized = item.trim();
182
+ if (seen.has(normalized))
183
+ continue;
184
+ seen.add(normalized);
185
+ out.push(normalized);
186
+ }
187
+ return out;
188
+ }
189
+ function normalizeSelectedAgentFilter(value) {
190
+ if (value === undefined)
191
+ return { ok: true };
192
+ if (!value || typeof value !== 'object' || Array.isArray(value))
193
+ return { ok: false };
194
+ const filter = value;
195
+ if (Object.keys(filter).some(key => key !== 'activityTypes'))
196
+ return { ok: false };
197
+ if (filter.activityTypes === undefined)
198
+ return { ok: true };
199
+ const activityTypes = normalizeUniqueStringList(filter.activityTypes);
200
+ if (!activityTypes
201
+ || activityTypes.some(type => !RUNTIME_ACTIVITY_TYPES.includes(type))) {
202
+ return { ok: false };
203
+ }
204
+ return activityTypes.length > 0
205
+ ? { ok: true, filter: { activityTypes: activityTypes } }
206
+ : { ok: true };
207
+ }
208
+ function normalizeSelectedAgent(value) {
209
+ if (!value || typeof value !== 'object' || Array.isArray(value))
210
+ return { ok: false };
211
+ const agent = value;
212
+ const allowedKeys = new Set([
213
+ 'profileId',
214
+ 'memberId',
215
+ 'agentAppId',
216
+ 'label',
217
+ 'role',
218
+ 'instructions',
219
+ 'status',
220
+ 'activationError',
221
+ 'filter',
222
+ 'responseMode',
223
+ 'capabilities',
224
+ 'ownedSinks',
225
+ 'deliveryProfileHash',
226
+ ]);
227
+ if (Object.keys(agent).some(key => !allowedKeys.has(key)))
228
+ return { ok: false };
229
+ if (!isSafeRuntimeId(agent.profileId) || !isSafeRuntimeId(agent.memberId))
230
+ return { ok: false };
231
+ if (typeof agent.agentAppId !== 'string' || !agent.agentAppId.trim())
232
+ return { ok: false };
233
+ if (typeof agent.role !== 'string' || !agent.role.trim())
234
+ return { ok: false };
235
+ const normalizedInstructions = normalizeVcMeetingProfileInstructions(agent.instructions);
236
+ if (!normalizedInstructions.ok)
237
+ return { ok: false };
238
+ if (agent.label !== undefined && (typeof agent.label !== 'string' || !agent.label.trim()))
239
+ return { ok: false };
240
+ if (agent.activationError !== undefined
241
+ && (typeof agent.activationError !== 'string' || !agent.activationError.trim()))
242
+ return { ok: false };
243
+ if (!['activating', 'active', 'failed', 'paused'].includes(agent.status))
244
+ return { ok: false };
245
+ if (agent.responseMode !== 'silent' && agent.responseMode !== 'listener_thread')
246
+ return { ok: false };
247
+ const capabilities = normalizeUniqueStringList(agent.capabilities);
248
+ const ownedSinks = normalizeUniqueStringList(agent.ownedSinks);
249
+ if (!capabilities || !ownedSinks)
250
+ return { ok: false };
251
+ if (ownedSinks.some(sink => !RUNTIME_OWNED_SINKS.includes(sink)))
252
+ return { ok: false };
253
+ if (ownedSinks.length > 0 && !capabilities.includes('meeting.output.request'))
254
+ return { ok: false };
255
+ const filter = normalizeSelectedAgentFilter(agent.filter);
256
+ if (!filter.ok)
257
+ return { ok: false };
258
+ if (agent.deliveryProfileHash !== undefined
259
+ && (typeof agent.deliveryProfileHash !== 'string'
260
+ || !DELIVERY_PROFILE_HASH_RE.test(agent.deliveryProfileHash)))
261
+ return { ok: false };
262
+ return {
263
+ ok: true,
264
+ agent: {
265
+ profileId: agent.profileId,
266
+ memberId: agent.memberId,
267
+ agentAppId: agent.agentAppId.trim(),
268
+ ...(typeof agent.label === 'string' ? { label: agent.label.trim() } : {}),
269
+ role: agent.role.trim(),
270
+ ...(normalizedInstructions.instructions
271
+ ? { instructions: normalizedInstructions.instructions }
272
+ : {}),
273
+ status: agent.status,
274
+ ...(typeof agent.activationError === 'string'
275
+ ? { activationError: agent.activationError.trim().slice(0, 500) }
276
+ : {}),
277
+ ...(filter.filter ? { filter: filter.filter } : {}),
278
+ responseMode: agent.responseMode,
279
+ capabilities,
280
+ ownedSinks: ownedSinks,
281
+ ...(typeof agent.deliveryProfileHash === 'string'
282
+ ? { deliveryProfileHash: agent.deliveryProfileHash }
283
+ : {}),
284
+ },
285
+ };
286
+ }
287
+ function normalizeSelectedAgents(value) {
288
+ if (!Array.isArray(value))
289
+ return { ok: false };
290
+ const agents = [];
291
+ const profileIds = new Set();
292
+ const memberIds = new Set();
293
+ const agentAppIds = new Set();
294
+ const ownedSinks = new Set();
295
+ let listenerThreadMemberId;
296
+ for (const item of value) {
297
+ const normalized = normalizeSelectedAgent(item);
298
+ if (!normalized.ok)
299
+ return { ok: false };
300
+ const agent = normalized.agent;
301
+ if (profileIds.has(agent.profileId)
302
+ || memberIds.has(agent.memberId)
303
+ || agentAppIds.has(agent.agentAppId))
304
+ return { ok: false };
305
+ profileIds.add(agent.profileId);
306
+ memberIds.add(agent.memberId);
307
+ agentAppIds.add(agent.agentAppId);
308
+ for (const sink of agent.ownedSinks) {
309
+ if (ownedSinks.has(sink))
310
+ return { ok: false };
311
+ ownedSinks.add(sink);
312
+ }
313
+ if (agent.responseMode === 'listener_thread') {
314
+ if (listenerThreadMemberId)
315
+ return { ok: false };
316
+ listenerThreadMemberId = agent.memberId;
317
+ }
318
+ agents.push(agent);
319
+ }
320
+ const legacySingleton = agents.length === 1
321
+ && agents[0]?.profileId === VC_MEETING_RUNTIME_LEGACY_PROFILE_ID
322
+ && agents[0].memberId === VC_MEETING_RUNTIME_LEGACY_MEMBER_ID
323
+ && agents[0].role === VC_MEETING_RUNTIME_LEGACY_ROLE;
324
+ for (const agent of agents) {
325
+ if (agent.responseMode === 'listener_thread'
326
+ && !legacySingleton
327
+ && !agent.capabilities.includes(RUNTIME_LISTENER_OUTPUT_CAPABILITY))
328
+ return { ok: false };
329
+ }
330
+ return { ok: true, agents };
331
+ }
332
+ function legacySelectedAgent(value) {
333
+ if (typeof value.selectedAgentAppId !== 'string' || !value.selectedAgentAppId.trim())
334
+ return undefined;
335
+ return {
336
+ profileId: VC_MEETING_RUNTIME_LEGACY_PROFILE_ID,
337
+ memberId: VC_MEETING_RUNTIME_LEGACY_MEMBER_ID,
338
+ agentAppId: value.selectedAgentAppId.trim(),
339
+ ...(typeof value.selectedAgentLabel === 'string' && value.selectedAgentLabel.trim()
340
+ ? { label: value.selectedAgentLabel.trim() }
341
+ : {}),
342
+ role: VC_MEETING_RUNTIME_LEGACY_ROLE,
343
+ status: value.consumerPaused === true ? 'paused' : 'active',
344
+ responseMode: 'listener_thread',
345
+ capabilities: ['meeting.read', 'meeting.output.request'],
346
+ ownedSinks: ['meeting_text', 'meeting_voice'],
347
+ deliveryProfileHash: VC_MEETING_RUNTIME_LEGACY_PROFILE_HASH,
348
+ };
349
+ }
350
+ function singularSelectionAliases(selectedAgents) {
351
+ if (selectedAgents.length !== 1)
352
+ return {};
353
+ const selected = selectedAgents[0];
354
+ return {
355
+ selectedAgentAppId: selected.agentAppId,
356
+ ...(selected.label ? { selectedAgentLabel: selected.label } : {}),
357
+ // The legacy boolean cannot represent activating/failed. Fail closed so a
358
+ // P0 reader never mistakes a non-active v2 member for an injectable one.
359
+ consumerPaused: selected.status !== 'active',
360
+ };
361
+ }
362
+ function isValidStoredTimestamp(value) {
363
+ return typeof value === 'number' && Number.isFinite(value) && value >= 0;
364
+ }
365
+ function hasOwnField(record, key) {
366
+ return Object.prototype.hasOwnProperty.call(record, key);
367
+ }
368
+ function isCanonicalStoredIdList(value) {
369
+ if (!Array.isArray(value))
370
+ return false;
371
+ const normalized = normalizeIdList(value);
372
+ return normalized.length === value.length
373
+ && normalized.every((id, index) => id === value[index]);
374
+ }
375
+ function hasValidCurrentOptionalFields(r) {
376
+ if (hasOwnField(r, 'consumerMode')
377
+ && r.consumerMode !== 'pending'
378
+ && r.consumerMode !== 'listenOnly'
379
+ && r.consumerMode !== 'agent')
380
+ return false;
381
+ if (hasOwnField(r, 'consumerClosePhase')
382
+ && r.consumerClosePhase !== 'data_closing'
383
+ && r.consumerClosePhase !== 'finalizing')
384
+ return false;
385
+ if (hasOwnField(r, 'textOutputPolicy') && !isOutputPolicy(r.textOutputPolicy))
386
+ return false;
387
+ if (hasOwnField(r, 'voiceOutputPolicy') && !isOutputPolicy(r.voiceOutputPolicy))
388
+ return false;
389
+ for (const key of [
390
+ 'consumerFinalizationDeadlineAt',
391
+ 'consumerCloseResolutionDeadlineAt',
392
+ 'consumerSelectionExpiresAt',
393
+ 'listenerPresenceChangedAtMs',
394
+ ]) {
395
+ if (hasOwnField(r, key) && !isValidStoredTimestamp(r[key]))
396
+ return false;
397
+ }
398
+ if (hasOwnField(r, 'syncIntervalMs')
399
+ && (typeof r.syncIntervalMs !== 'number'
400
+ || !Number.isFinite(r.syncIntervalMs)
401
+ || r.syncIntervalMs <= 0))
402
+ return false;
403
+ if (hasOwnField(r, 'listenerPresenceStale') && typeof r.listenerPresenceStale !== 'boolean')
404
+ return false;
405
+ if (hasOwnField(r, 'listenerPresenceGeneration')
406
+ && (typeof r.listenerPresenceGeneration !== 'number'
407
+ || !Number.isInteger(r.listenerPresenceGeneration)
408
+ || r.listenerPresenceGeneration < 0))
409
+ return false;
410
+ for (const key of [
411
+ 'attentionTargetOpenId',
412
+ 'consumerCardMessageId',
413
+ 'listenerRejoinNonce',
414
+ 'listenerRejoinCardMessageId',
415
+ ]) {
416
+ if (hasOwnField(r, key) && (typeof r[key] !== 'string' || !r[key].trim()))
417
+ return false;
418
+ }
419
+ for (const key of ['temporaryInstructionOpenIds', 'temporaryInstructionUnionIds']) {
420
+ if (hasOwnField(r, key) && !isCanonicalStoredIdList(r[key]))
421
+ return false;
422
+ }
423
+ return true;
424
+ }
425
+ function hasValidCurrentMeetingFields(meeting) {
426
+ for (const key of ['meetingNo', 'topic']) {
427
+ if (hasOwnField(meeting, key)
428
+ && (typeof meeting[key] !== 'string' || !meeting[key].trim()))
429
+ return false;
430
+ }
431
+ return true;
432
+ }
82
433
  function normalizeRecord(value) {
83
434
  if (!value || typeof value !== 'object' || Array.isArray(value))
84
435
  return undefined;
85
436
  const r = value;
437
+ if (r.schemaVersion !== undefined
438
+ && r.schemaVersion !== 1
439
+ && r.schemaVersion !== 2
440
+ && r.schemaVersion !== RUNTIME_SCHEMA_VERSION) {
441
+ return undefined;
442
+ }
443
+ // Records written before schemaVersion was introduced have the v1 shape.
444
+ // Only that legacy shape may recover selection from the singular aliases;
445
+ // v2/v3 selectedAgents is authoritative and therefore required.
446
+ const sourceSchemaVersion = r.schemaVersion ?? 1;
86
447
  const meeting = r.meeting;
87
448
  if (!meeting || typeof meeting !== 'object' || Array.isArray(meeting))
88
449
  return undefined;
@@ -93,12 +454,36 @@ function normalizeRecord(value) {
93
454
  return undefined;
94
455
  if (typeof r.listenerChatId !== 'string' || !r.listenerChatId.trim())
95
456
  return undefined;
96
- const createdAt = typeof r.createdAt === 'number' && Number.isFinite(r.createdAt) ? r.createdAt : Date.now();
97
- const updatedAt = typeof r.updatedAt === 'number' && Number.isFinite(r.updatedAt) ? r.updatedAt : createdAt;
98
- const expiresAt = typeof r.expiresAt === 'number' && Number.isFinite(r.expiresAt)
457
+ if (sourceSchemaVersion === RUNTIME_SCHEMA_VERSION
458
+ && (!isValidStoredTimestamp(r.createdAt)
459
+ || !isValidStoredTimestamp(r.updatedAt)
460
+ || !isValidStoredTimestamp(r.expiresAt)
461
+ || !hasValidCurrentMeetingFields(m)
462
+ || !hasValidCurrentOptionalFields(r))) {
463
+ return undefined;
464
+ }
465
+ const createdAt = isValidStoredTimestamp(r.createdAt) ? r.createdAt : Date.now();
466
+ const updatedAt = isValidStoredTimestamp(r.updatedAt) ? r.updatedAt : createdAt;
467
+ const expiresAt = isValidStoredTimestamp(r.expiresAt)
99
468
  ? r.expiresAt
100
469
  : updatedAt + DEFAULT_TTL_MS;
470
+ let selectedAgents;
471
+ if (Object.prototype.hasOwnProperty.call(r, 'selectedAgents')) {
472
+ const normalized = normalizeSelectedAgents(r.selectedAgents);
473
+ if (!normalized.ok)
474
+ return undefined;
475
+ selectedAgents = normalized.agents;
476
+ }
477
+ else if (sourceSchemaVersion === 1) {
478
+ const legacy = legacySelectedAgent(r);
479
+ selectedAgents = legacy ? [legacy] : [];
480
+ }
481
+ else {
482
+ return undefined;
483
+ }
484
+ const singularAliases = singularSelectionAliases(selectedAgents);
101
485
  return {
486
+ schemaVersion: RUNTIME_SCHEMA_VERSION,
102
487
  larkAppId: r.larkAppId.trim(),
103
488
  meeting: {
104
489
  id: m.id.trim(),
@@ -112,13 +497,21 @@ function normalizeRecord(value) {
112
497
  ...(r.consumerMode === 'pending' || r.consumerMode === 'listenOnly' || r.consumerMode === 'agent'
113
498
  ? { consumerMode: r.consumerMode }
114
499
  : {}),
115
- ...(typeof r.selectedAgentAppId === 'string' && r.selectedAgentAppId.trim()
116
- ? { selectedAgentAppId: r.selectedAgentAppId.trim() }
500
+ selectedAgents,
501
+ ...singularAliases,
502
+ ...(r.consumerClosePhase === 'data_closing' || r.consumerClosePhase === 'finalizing'
503
+ ? { consumerClosePhase: r.consumerClosePhase }
117
504
  : {}),
118
- ...(typeof r.selectedAgentLabel === 'string' && r.selectedAgentLabel.trim()
119
- ? { selectedAgentLabel: r.selectedAgentLabel.trim() }
505
+ ...(typeof r.consumerFinalizationDeadlineAt === 'number'
506
+ && Number.isFinite(r.consumerFinalizationDeadlineAt)
507
+ && r.consumerFinalizationDeadlineAt >= 0
508
+ ? { consumerFinalizationDeadlineAt: r.consumerFinalizationDeadlineAt }
509
+ : {}),
510
+ ...(typeof r.consumerCloseResolutionDeadlineAt === 'number'
511
+ && Number.isFinite(r.consumerCloseResolutionDeadlineAt)
512
+ && r.consumerCloseResolutionDeadlineAt >= 0
513
+ ? { consumerCloseResolutionDeadlineAt: r.consumerCloseResolutionDeadlineAt }
120
514
  : {}),
121
- ...(typeof r.consumerPaused === 'boolean' ? { consumerPaused: r.consumerPaused } : {}),
122
515
  ...(isOutputPolicy(r.textOutputPolicy) ? { textOutputPolicy: r.textOutputPolicy } : {}),
123
516
  ...(isOutputPolicy(r.voiceOutputPolicy) ? { voiceOutputPolicy: r.voiceOutputPolicy } : {}),
124
517
  ...(typeof r.syncIntervalMs === 'number' && Number.isFinite(r.syncIntervalMs) && r.syncIntervalMs > 0
@@ -130,6 +523,23 @@ function normalizeRecord(value) {
130
523
  ...(typeof r.consumerCardMessageId === 'string' && r.consumerCardMessageId.trim()
131
524
  ? { consumerCardMessageId: r.consumerCardMessageId.trim() }
132
525
  : {}),
526
+ ...(r.listenerPresenceStale === true ? { listenerPresenceStale: true } : {}),
527
+ ...(typeof r.listenerPresenceChangedAtMs === 'number'
528
+ && Number.isFinite(r.listenerPresenceChangedAtMs)
529
+ && r.listenerPresenceChangedAtMs >= 0
530
+ ? { listenerPresenceChangedAtMs: r.listenerPresenceChangedAtMs }
531
+ : {}),
532
+ ...(typeof r.listenerPresenceGeneration === 'number'
533
+ && Number.isInteger(r.listenerPresenceGeneration)
534
+ && r.listenerPresenceGeneration >= 0
535
+ ? { listenerPresenceGeneration: r.listenerPresenceGeneration }
536
+ : {}),
537
+ ...(typeof r.listenerRejoinNonce === 'string' && r.listenerRejoinNonce.trim()
538
+ ? { listenerRejoinNonce: r.listenerRejoinNonce.trim() }
539
+ : {}),
540
+ ...(typeof r.listenerRejoinCardMessageId === 'string' && r.listenerRejoinCardMessageId.trim()
541
+ ? { listenerRejoinCardMessageId: r.listenerRejoinCardMessageId.trim() }
542
+ : {}),
133
543
  ...(Array.isArray(r.temporaryInstructionOpenIds)
134
544
  ? { temporaryInstructionOpenIds: normalizeIdList(r.temporaryInstructionOpenIds) }
135
545
  : {}),
@@ -149,15 +559,13 @@ function normalizeEndedTombstoneRecord(value) {
149
559
  return undefined;
150
560
  if (typeof r.meetingId !== 'string' || !r.meetingId.trim())
151
561
  return undefined;
152
- const endedAt = typeof r.endedAt === 'number' && Number.isFinite(r.endedAt) ? r.endedAt : Date.now();
153
- const expiresAt = typeof r.expiresAt === 'number' && Number.isFinite(r.expiresAt)
154
- ? r.expiresAt
155
- : endedAt + DEFAULT_ENDED_TOMBSTONE_TTL_MS;
562
+ if (!isValidStoredTimestamp(r.endedAt) || !isValidStoredTimestamp(r.expiresAt))
563
+ return undefined;
156
564
  return {
157
565
  larkAppId: r.larkAppId.trim(),
158
566
  meetingId: r.meetingId.trim(),
159
- endedAt,
160
- expiresAt,
567
+ endedAt: r.endedAt,
568
+ expiresAt: r.expiresAt,
161
569
  };
162
570
  }
163
571
  function isOutputPolicy(value) {
@@ -178,7 +586,7 @@ function normalizeIdList(value) {
178
586
  return out;
179
587
  }
180
588
  export function listVcMeetingRuntimeSessions(dataDir, larkAppId, now = Date.now()) {
181
- const store = readStore(dataDir);
589
+ const store = readStoreForAccess(dataDir);
182
590
  const out = [];
183
591
  for (const record of Object.values(store)) {
184
592
  if (record.expiresAt <= now)
@@ -189,23 +597,27 @@ export function listVcMeetingRuntimeSessions(dataDir, larkAppId, now = Date.now(
189
597
  return out;
190
598
  }
191
599
  export function pruneExpiredVcMeetingRuntimeSessions(dataDir, now = Date.now()) {
192
- const store = readStore(dataDir);
193
- let removed = 0;
194
- for (const [key, record] of Object.entries(store)) {
195
- if (record.expiresAt > now)
196
- continue;
197
- delete store[key];
198
- removed += 1;
199
- }
200
- if (removed > 0)
201
- writeStore(dataDir, store);
202
- return removed;
600
+ const fp = filePath(dataDir);
601
+ ensureLockParent(fp);
602
+ return withFileLockSync(fp, () => {
603
+ const store = readStore(dataDir);
604
+ let removed = 0;
605
+ for (const [key, record] of Object.entries(store)) {
606
+ if (record.expiresAt > now)
607
+ continue;
608
+ delete store[key];
609
+ removed += 1;
610
+ }
611
+ if (removed > 0)
612
+ writeStore(dataDir, store);
613
+ return removed;
614
+ });
203
615
  }
204
- export function findVcMeetingRuntimeSessionByListenerAndAgent(dataDir, input, now = Date.now()) {
616
+ export function listVcMeetingRuntimeSessionsByListenerAndAgent(dataDir, input, now = Date.now()) {
205
617
  const listenerChatId = input.listenerChatId.trim();
206
- const selectedAgentAppId = input.selectedAgentAppId.trim();
207
- if (!listenerChatId || !selectedAgentAppId)
208
- return undefined;
618
+ const agentAppId = input.agentAppId.trim();
619
+ if (!listenerChatId || !agentAppId)
620
+ return [];
209
621
  const fp = filePath(dataDir);
210
622
  let stats;
211
623
  try {
@@ -213,7 +625,8 @@ export function findVcMeetingRuntimeSessionByListenerAndAgent(dataDir, input, no
213
625
  }
214
626
  catch {
215
627
  invalidateListenerAgentIndex();
216
- return undefined;
628
+ assertNoQuarantinedEvidence(fp, 'runtime session');
629
+ return [];
217
630
  }
218
631
  const cached = listenerAgentIndexCache;
219
632
  let byListenerAgent;
@@ -226,18 +639,25 @@ export function findVcMeetingRuntimeSessionByListenerAndAgent(dataDir, input, no
226
639
  byListenerAgent = cached.byListenerAgent;
227
640
  }
228
641
  else {
229
- const store = readStore(dataDir);
642
+ const store = readStoreForAccess(dataDir);
230
643
  byListenerAgent = new Map();
231
644
  for (const record of Object.values(store)) {
232
- if (record.consumerMode === 'agent'
233
- && record.selectedAgentAppId
234
- && record.consumerPaused !== true) {
235
- const key = listenerAgentIndexKey(record.listenerChatId, record.selectedAgentAppId);
236
- const prior = byListenerAgent.get(key);
237
- if (!prior || record.updatedAt > prior.updatedAt)
238
- byListenerAgent.set(key, record);
645
+ if (record.consumerMode !== 'agent')
646
+ continue;
647
+ for (const selected of record.selectedAgents) {
648
+ if (selected.status !== 'active')
649
+ continue;
650
+ const key = listenerAgentIndexKey(record.listenerChatId, selected.agentAppId);
651
+ const matches = byListenerAgent.get(key) ?? [];
652
+ matches.push(record);
653
+ byListenerAgent.set(key, matches);
239
654
  }
240
655
  }
656
+ for (const matches of byListenerAgent.values()) {
657
+ matches.sort((a, b) => b.updatedAt - a.updatedAt
658
+ || a.larkAppId.localeCompare(b.larkAppId)
659
+ || a.meeting.id.localeCompare(b.meeting.id));
660
+ }
241
661
  listenerAgentIndexCache = {
242
662
  fp,
243
663
  ino: stats.ino,
@@ -247,77 +667,134 @@ export function findVcMeetingRuntimeSessionByListenerAndAgent(dataDir, input, no
247
667
  byListenerAgent,
248
668
  };
249
669
  }
250
- const record = byListenerAgent.get(listenerAgentIndexKey(listenerChatId, selectedAgentAppId));
251
- if (!record)
252
- return undefined;
253
- if (record.expiresAt <= now) {
670
+ const matches = byListenerAgent.get(listenerAgentIndexKey(listenerChatId, agentAppId)) ?? [];
671
+ const active = matches.filter(record => record.expiresAt > now);
672
+ if (active.length !== matches.length) {
254
673
  invalidateListenerAgentIndex();
255
- return undefined;
256
674
  }
257
- return record;
675
+ return active;
676
+ }
677
+ /**
678
+ * @deprecated P0 compatibility wrapper. It preserves the historical
679
+ * latest-updated match until daemon routing is migrated to the list API.
680
+ */
681
+ export function findVcMeetingRuntimeSessionByListenerAndAgent(dataDir, input, now = Date.now()) {
682
+ return listVcMeetingRuntimeSessionsByListenerAndAgent(dataDir, {
683
+ listenerChatId: input.listenerChatId,
684
+ agentAppId: input.selectedAgentAppId,
685
+ }, now)[0];
258
686
  }
259
687
  export function recordVcMeetingRuntimeSession(dataDir, input, now = Date.now()) {
260
- if (!input.larkAppId.trim() || !input.meeting.id.trim() || !input.listenerChatId.trim())
688
+ const larkAppId = input.larkAppId.trim();
689
+ const meetingId = input.meeting.id.trim();
690
+ const listenerChatId = input.listenerChatId.trim();
691
+ if (!larkAppId || !meetingId || !listenerChatId)
261
692
  return;
262
- const store = readStore(dataDir);
263
- const key = sessionKey(input.larkAppId, input.meeting.id);
264
- const prior = store[key];
265
- store[key] = {
266
- larkAppId: input.larkAppId,
267
- meeting: {
268
- id: input.meeting.id,
269
- ...(input.meeting.meetingNo ? { meetingNo: input.meeting.meetingNo } : {}),
270
- ...(input.meeting.topic ? { topic: input.meeting.topic } : {}),
271
- },
272
- listenerChatId: input.listenerChatId,
273
- ...(input.attentionTargetOpenId ? { attentionTargetOpenId: input.attentionTargetOpenId } : {}),
274
- ...(input.consumerMode ? { consumerMode: input.consumerMode } : {}),
275
- ...(input.selectedAgentAppId ? { selectedAgentAppId: input.selectedAgentAppId } : {}),
276
- ...(input.selectedAgentLabel ? { selectedAgentLabel: input.selectedAgentLabel } : {}),
277
- ...(input.consumerPaused !== undefined ? { consumerPaused: input.consumerPaused } : {}),
278
- ...(input.textOutputPolicy ? { textOutputPolicy: input.textOutputPolicy } : {}),
279
- ...(input.voiceOutputPolicy ? { voiceOutputPolicy: input.voiceOutputPolicy } : {}),
280
- ...(input.syncIntervalMs !== undefined ? { syncIntervalMs: input.syncIntervalMs } : {}),
281
- ...(input.consumerSelectionExpiresAt !== undefined ? { consumerSelectionExpiresAt: input.consumerSelectionExpiresAt } : {}),
282
- ...(input.consumerCardMessageId ? { consumerCardMessageId: input.consumerCardMessageId } : {}),
283
- ...(input.temporaryInstructionOpenIds !== undefined
284
- ? { temporaryInstructionOpenIds: normalizeIdList(input.temporaryInstructionOpenIds) }
285
- : {}),
286
- ...(input.temporaryInstructionUnionIds !== undefined
287
- ? { temporaryInstructionUnionIds: normalizeIdList(input.temporaryInstructionUnionIds) }
288
- : {}),
289
- createdAt: prior?.createdAt ?? now,
290
- updatedAt: now,
291
- expiresAt: now + DEFAULT_TTL_MS,
292
- };
293
- writeStore(dataDir, store);
693
+ const fp = filePath(dataDir);
694
+ ensureLockParent(fp);
695
+ withFileLockSync(fp, () => {
696
+ const store = readStore(dataDir);
697
+ const key = sessionKey(larkAppId, meetingId);
698
+ const prior = store[key];
699
+ let selectedAgents;
700
+ if (input.selectedAgents !== undefined) {
701
+ const normalized = normalizeSelectedAgents(input.selectedAgents);
702
+ if (!normalized.ok)
703
+ throw new Error('invalid vc meeting runtime selectedAgents');
704
+ selectedAgents = normalized.agents;
705
+ }
706
+ else {
707
+ const legacy = legacySelectedAgent({
708
+ selectedAgentAppId: input.selectedAgentAppId,
709
+ selectedAgentLabel: input.selectedAgentLabel,
710
+ consumerPaused: input.consumerPaused,
711
+ });
712
+ selectedAgents = legacy ? [legacy] : [];
713
+ }
714
+ const singularAliases = singularSelectionAliases(selectedAgents);
715
+ store[key] = {
716
+ schemaVersion: RUNTIME_SCHEMA_VERSION,
717
+ larkAppId,
718
+ meeting: {
719
+ id: meetingId,
720
+ ...(input.meeting.meetingNo ? { meetingNo: input.meeting.meetingNo } : {}),
721
+ ...(input.meeting.topic ? { topic: input.meeting.topic } : {}),
722
+ },
723
+ listenerChatId,
724
+ ...(input.attentionTargetOpenId ? { attentionTargetOpenId: input.attentionTargetOpenId } : {}),
725
+ ...(input.consumerMode ? { consumerMode: input.consumerMode } : {}),
726
+ selectedAgents,
727
+ ...singularAliases,
728
+ ...(input.consumerClosePhase ? { consumerClosePhase: input.consumerClosePhase } : {}),
729
+ ...(input.consumerFinalizationDeadlineAt !== undefined
730
+ ? { consumerFinalizationDeadlineAt: input.consumerFinalizationDeadlineAt }
731
+ : {}),
732
+ ...(input.consumerCloseResolutionDeadlineAt !== undefined
733
+ ? { consumerCloseResolutionDeadlineAt: input.consumerCloseResolutionDeadlineAt }
734
+ : {}),
735
+ ...(input.textOutputPolicy ? { textOutputPolicy: input.textOutputPolicy } : {}),
736
+ ...(input.voiceOutputPolicy ? { voiceOutputPolicy: input.voiceOutputPolicy } : {}),
737
+ ...(input.syncIntervalMs !== undefined ? { syncIntervalMs: input.syncIntervalMs } : {}),
738
+ ...(input.consumerSelectionExpiresAt !== undefined ? { consumerSelectionExpiresAt: input.consumerSelectionExpiresAt } : {}),
739
+ ...(input.consumerCardMessageId ? { consumerCardMessageId: input.consumerCardMessageId } : {}),
740
+ ...(input.listenerPresenceStale === true ? { listenerPresenceStale: true } : {}),
741
+ ...(input.listenerPresenceChangedAtMs !== undefined
742
+ ? { listenerPresenceChangedAtMs: input.listenerPresenceChangedAtMs }
743
+ : {}),
744
+ ...(input.listenerPresenceGeneration !== undefined
745
+ ? { listenerPresenceGeneration: input.listenerPresenceGeneration }
746
+ : {}),
747
+ ...(input.listenerRejoinNonce ? { listenerRejoinNonce: input.listenerRejoinNonce } : {}),
748
+ ...(input.listenerRejoinCardMessageId
749
+ ? { listenerRejoinCardMessageId: input.listenerRejoinCardMessageId }
750
+ : {}),
751
+ ...(input.temporaryInstructionOpenIds !== undefined
752
+ ? { temporaryInstructionOpenIds: normalizeIdList(input.temporaryInstructionOpenIds) }
753
+ : {}),
754
+ ...(input.temporaryInstructionUnionIds !== undefined
755
+ ? { temporaryInstructionUnionIds: normalizeIdList(input.temporaryInstructionUnionIds) }
756
+ : {}),
757
+ createdAt: prior?.createdAt ?? now,
758
+ updatedAt: now,
759
+ expiresAt: now + DEFAULT_TTL_MS,
760
+ };
761
+ writeStore(dataDir, store);
762
+ });
294
763
  }
295
764
  export function removeVcMeetingRuntimeSession(dataDir, larkAppId, meetingId) {
296
- const store = readStore(dataDir);
297
- const key = sessionKey(larkAppId, meetingId);
298
- if (!store[key])
299
- return;
300
- delete store[key];
301
- writeStore(dataDir, store);
765
+ const fp = filePath(dataDir);
766
+ ensureLockParent(fp);
767
+ withFileLockSync(fp, () => {
768
+ const store = readStore(dataDir);
769
+ const key = sessionKey(larkAppId, meetingId);
770
+ if (!store[key])
771
+ return;
772
+ delete store[key];
773
+ writeStore(dataDir, store);
774
+ });
302
775
  }
303
776
  export function recordVcMeetingEndedTombstone(dataDir, input, now = Date.now(), ttlMs = DEFAULT_ENDED_TOMBSTONE_TTL_MS) {
304
777
  const larkAppId = input.larkAppId.trim();
305
778
  const meetingId = input.meetingId.trim();
306
779
  if (!larkAppId || !meetingId)
307
780
  return;
308
- const store = readEndedTombstoneStore(dataDir);
309
- const key = sessionKey(larkAppId, meetingId);
310
- store[key] = {
311
- larkAppId,
312
- meetingId,
313
- endedAt: now,
314
- expiresAt: now + ttlMs,
315
- };
316
- for (const [itemKey, record] of Object.entries(store)) {
317
- if (record.expiresAt <= now)
318
- delete store[itemKey];
319
- }
320
- writeEndedTombstoneStore(dataDir, store);
781
+ const fp = endedTombstoneFilePath(dataDir);
782
+ ensureLockParent(fp);
783
+ withFileLockSync(fp, () => {
784
+ const store = readEndedTombstoneStore(dataDir);
785
+ const key = sessionKey(larkAppId, meetingId);
786
+ store[key] = {
787
+ larkAppId,
788
+ meetingId,
789
+ endedAt: now,
790
+ expiresAt: now + ttlMs,
791
+ };
792
+ for (const [itemKey, record] of Object.entries(store)) {
793
+ if (record.expiresAt <= now)
794
+ delete store[itemKey];
795
+ }
796
+ writeEndedTombstoneStore(dataDir, store);
797
+ });
321
798
  }
322
799
  export function hasVcMeetingEndedTombstone(dataDir, larkAppId, meetingId, now = Date.now()) {
323
800
  const normalizedLarkAppId = larkAppId.trim();
@@ -325,15 +802,27 @@ export function hasVcMeetingEndedTombstone(dataDir, larkAppId, meetingId, now =
325
802
  if (!normalizedLarkAppId || !normalizedMeetingId)
326
803
  return false;
327
804
  const key = sessionKey(normalizedLarkAppId, normalizedMeetingId);
328
- const store = readEndedTombstoneStore(dataDir);
805
+ const store = readEndedTombstoneStoreForAccess(dataDir);
329
806
  const record = store[key];
330
807
  if (!record)
331
808
  return false;
332
- if (record.expiresAt <= now) {
333
- delete store[key];
334
- writeEndedTombstoneStore(dataDir, store);
809
+ if (record.expiresAt > now)
810
+ return true;
811
+ // Expiry cleanup is a read-modify-write. Re-read under the shared file lock
812
+ // so we cannot delete a concurrently refreshed tombstone or overwrite a
813
+ // different daemon's newly appended meeting record.
814
+ const fp = endedTombstoneFilePath(dataDir);
815
+ ensureLockParent(fp);
816
+ return withFileLockSync(fp, () => {
817
+ const currentStore = readEndedTombstoneStore(dataDir);
818
+ const current = currentStore[key];
819
+ if (!current)
820
+ return false;
821
+ if (current.expiresAt > now)
822
+ return true;
823
+ delete currentStore[key];
824
+ writeEndedTombstoneStore(dataDir, currentStore);
335
825
  return false;
336
- }
337
- return true;
826
+ });
338
827
  }
339
828
  //# sourceMappingURL=vc-meeting-runtime-store.js.map