rivetkit 2.0.2 → 2.0.4-rc.1

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 (403) hide show
  1. package/README.md +3 -5
  2. package/dist/browser/client.d.ts +2485 -0
  3. package/dist/browser/client.js +5182 -0
  4. package/dist/browser/client.js.map +1 -0
  5. package/dist/browser/inspector/client.d.ts +130 -0
  6. package/dist/browser/inspector/client.js +2854 -0
  7. package/dist/browser/inspector/client.js.map +1 -0
  8. package/dist/browser/v3-DnYObHH3.d.ts +279 -0
  9. package/dist/inspector.tar.gz +0 -0
  10. package/dist/schemas/actor-inspector/v1.ts +784 -0
  11. package/dist/schemas/actor-inspector/v2.ts +796 -0
  12. package/dist/schemas/actor-inspector/v3.ts +899 -0
  13. package/dist/schemas/actor-persist/v1.ts +225 -0
  14. package/dist/schemas/actor-persist/v2.ts +268 -0
  15. package/dist/schemas/actor-persist/v3.ts +280 -0
  16. package/dist/schemas/actor-persist/v4.ts +406 -0
  17. package/dist/schemas/client-protocol/v1.ts +441 -0
  18. package/dist/schemas/client-protocol/v2.ts +438 -0
  19. package/dist/schemas/client-protocol/v3.ts +554 -0
  20. package/dist/schemas/file-system-driver/v1.ts +108 -0
  21. package/dist/schemas/file-system-driver/v2.ts +142 -0
  22. package/dist/schemas/file-system-driver/v3.ts +167 -0
  23. package/dist/schemas/persist/v1.ts +781 -0
  24. package/dist/schemas/transport/v1.ts +697 -0
  25. package/dist/tsup/actor/errors.cjs +106 -0
  26. package/dist/tsup/actor/errors.cjs.map +1 -0
  27. package/dist/tsup/actor/errors.d.cts +188 -0
  28. package/dist/tsup/actor/errors.d.ts +188 -0
  29. package/dist/tsup/actor/errors.js +106 -0
  30. package/dist/tsup/actor/errors.js.map +1 -0
  31. package/dist/tsup/actor-router-consts-D29T1Z-K.d.cts +24 -0
  32. package/dist/tsup/actor-router-consts-D29T1Z-K.d.ts +24 -0
  33. package/dist/tsup/chunk-325TLXJT.js +1060 -0
  34. package/dist/tsup/chunk-325TLXJT.js.map +1 -0
  35. package/dist/tsup/chunk-424PT5DM.js +23 -0
  36. package/dist/tsup/chunk-424PT5DM.js.map +1 -0
  37. package/dist/tsup/chunk-4JVIG3SS.cjs +6289 -0
  38. package/dist/tsup/chunk-4JVIG3SS.cjs.map +1 -0
  39. package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
  40. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
  41. package/dist/tsup/chunk-6XU3FMCB.cjs +534 -0
  42. package/dist/tsup/chunk-6XU3FMCB.cjs.map +1 -0
  43. package/dist/tsup/chunk-7HTNH26M.js +509 -0
  44. package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
  45. package/dist/tsup/chunk-AUVH72RE.cjs +5977 -0
  46. package/dist/tsup/chunk-AUVH72RE.cjs.map +1 -0
  47. package/dist/tsup/chunk-D4BYUPNQ.js +645 -0
  48. package/dist/tsup/chunk-D4BYUPNQ.js.map +1 -0
  49. package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
  50. package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
  51. package/dist/tsup/chunk-HHXX2VRM.js +6289 -0
  52. package/dist/tsup/chunk-HHXX2VRM.js.map +1 -0
  53. package/dist/tsup/chunk-JEAEA2PB.js +49 -0
  54. package/dist/tsup/chunk-JEAEA2PB.js.map +1 -0
  55. package/dist/tsup/chunk-JYSEG3VF.cjs +642 -0
  56. package/dist/tsup/chunk-JYSEG3VF.cjs.map +1 -0
  57. package/dist/tsup/chunk-K6DGYILQ.js +2657 -0
  58. package/dist/tsup/chunk-K6DGYILQ.js.map +1 -0
  59. package/dist/tsup/chunk-KJSYAUOM.js +96 -0
  60. package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
  61. package/dist/tsup/chunk-L47L3ZWJ.cjs +509 -0
  62. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
  63. package/dist/tsup/chunk-LXUQ667X.js +2006 -0
  64. package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
  65. package/dist/tsup/chunk-MXNPAB5W.js +5977 -0
  66. package/dist/tsup/chunk-MXNPAB5W.js.map +1 -0
  67. package/dist/tsup/chunk-N4KRDJ56.js +72 -0
  68. package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
  69. package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
  70. package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
  71. package/dist/tsup/chunk-PQZHDKRW.cjs +1060 -0
  72. package/dist/tsup/chunk-PQZHDKRW.cjs.map +1 -0
  73. package/dist/tsup/chunk-PVOE6BU7.cjs +1050 -0
  74. package/dist/tsup/chunk-PVOE6BU7.cjs.map +1 -0
  75. package/dist/tsup/chunk-Q4UD2GA4.cjs +1810 -0
  76. package/dist/tsup/chunk-Q4UD2GA4.cjs.map +1 -0
  77. package/dist/tsup/chunk-QUD664YZ.js +1810 -0
  78. package/dist/tsup/chunk-QUD664YZ.js.map +1 -0
  79. package/dist/tsup/chunk-RTOCTWME.js +1050 -0
  80. package/dist/tsup/chunk-RTOCTWME.js.map +1 -0
  81. package/dist/tsup/chunk-SAZZ4SB2.cjs +2657 -0
  82. package/dist/tsup/chunk-SAZZ4SB2.cjs.map +1 -0
  83. package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
  84. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
  85. package/dist/tsup/chunk-V2GHLYC6.cjs +49 -0
  86. package/dist/tsup/chunk-V2GHLYC6.cjs.map +1 -0
  87. package/dist/tsup/chunk-V3WG7XTW.cjs +645 -0
  88. package/dist/tsup/chunk-V3WG7XTW.cjs.map +1 -0
  89. package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
  90. package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
  91. package/dist/tsup/chunk-WMPW7JYC.js +642 -0
  92. package/dist/tsup/chunk-WMPW7JYC.js.map +1 -0
  93. package/dist/tsup/chunk-Z7HNQ2WF.js +534 -0
  94. package/dist/tsup/chunk-Z7HNQ2WF.js.map +1 -0
  95. package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
  96. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
  97. package/dist/tsup/client/mod.cjs +33 -0
  98. package/dist/tsup/client/mod.cjs.map +1 -0
  99. package/dist/tsup/client/mod.d.cts +64 -0
  100. package/dist/tsup/client/mod.d.ts +64 -0
  101. package/dist/tsup/client/mod.js +33 -0
  102. package/dist/tsup/client/mod.js.map +1 -0
  103. package/dist/tsup/common/log.cjs +21 -0
  104. package/dist/tsup/common/log.cjs.map +1 -0
  105. package/dist/tsup/common/log.d.cts +34 -0
  106. package/dist/tsup/common/log.d.ts +34 -0
  107. package/dist/tsup/common/log.js +21 -0
  108. package/dist/tsup/common/log.js.map +1 -0
  109. package/dist/tsup/common/websocket.cjs +10 -0
  110. package/dist/tsup/common/websocket.cjs.map +1 -0
  111. package/dist/tsup/common/websocket.d.cts +3 -0
  112. package/dist/tsup/common/websocket.d.ts +3 -0
  113. package/dist/tsup/common/websocket.js +10 -0
  114. package/dist/tsup/common/websocket.js.map +1 -0
  115. package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
  116. package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
  117. package/dist/tsup/config-P3XujgRr.d.ts +2594 -0
  118. package/dist/tsup/config-_gfywqqI.d.cts +2594 -0
  119. package/dist/tsup/context-Bxd8Cx4H.d.cts +75 -0
  120. package/dist/tsup/context-uNA4TRn3.d.ts +75 -0
  121. package/dist/tsup/db/drizzle/mod.cjs +49 -0
  122. package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
  123. package/dist/tsup/db/drizzle/mod.d.cts +17 -0
  124. package/dist/tsup/db/drizzle/mod.d.ts +17 -0
  125. package/dist/tsup/db/drizzle/mod.js +49 -0
  126. package/dist/tsup/db/drizzle/mod.js.map +1 -0
  127. package/dist/tsup/db/mod.cjs +9 -0
  128. package/dist/tsup/db/mod.cjs.map +1 -0
  129. package/dist/tsup/db/mod.d.cts +9 -0
  130. package/dist/tsup/db/mod.d.ts +9 -0
  131. package/dist/tsup/db/mod.js +9 -0
  132. package/dist/tsup/db/mod.js.map +1 -0
  133. package/dist/tsup/driver-BcLvZcKl.d.cts +13 -0
  134. package/dist/tsup/driver-CPGHKXyh.d.ts +13 -0
  135. package/dist/tsup/driver-helpers/mod.cjs +53 -0
  136. package/dist/tsup/driver-helpers/mod.cjs.map +1 -0
  137. package/dist/tsup/driver-helpers/mod.d.cts +47 -0
  138. package/dist/tsup/driver-helpers/mod.d.ts +47 -0
  139. package/dist/tsup/driver-helpers/mod.js +53 -0
  140. package/dist/tsup/driver-helpers/mod.js.map +1 -0
  141. package/dist/tsup/driver-test-suite/mod.cjs +4974 -0
  142. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -0
  143. package/dist/tsup/driver-test-suite/mod.d.cts +73 -0
  144. package/dist/tsup/driver-test-suite/mod.d.ts +73 -0
  145. package/dist/tsup/driver-test-suite/mod.js +4974 -0
  146. package/dist/tsup/driver-test-suite/mod.js.map +1 -0
  147. package/dist/tsup/inspector/mod.cjs +164 -0
  148. package/dist/tsup/inspector/mod.cjs.map +1 -0
  149. package/dist/tsup/inspector/mod.d.cts +130 -0
  150. package/dist/tsup/inspector/mod.d.ts +130 -0
  151. package/dist/tsup/inspector/mod.js +164 -0
  152. package/dist/tsup/inspector/mod.js.map +1 -0
  153. package/dist/tsup/keys-CydblqMh.d.cts +13 -0
  154. package/dist/tsup/keys-CydblqMh.d.ts +13 -0
  155. package/dist/tsup/mod.cjs +82 -0
  156. package/dist/tsup/mod.cjs.map +1 -0
  157. package/dist/tsup/mod.d.cts +126 -0
  158. package/dist/tsup/mod.d.ts +126 -0
  159. package/dist/tsup/mod.js +82 -0
  160. package/dist/tsup/mod.js.map +1 -0
  161. package/dist/tsup/serve-test-suite/mod.cjs +2601 -0
  162. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -0
  163. package/dist/tsup/serve-test-suite/mod.d.cts +9 -0
  164. package/dist/tsup/serve-test-suite/mod.d.ts +9 -0
  165. package/dist/tsup/serve-test-suite/mod.js +2601 -0
  166. package/dist/tsup/serve-test-suite/mod.js.map +1 -0
  167. package/dist/tsup/test/mod.cjs +90 -0
  168. package/dist/tsup/test/mod.cjs.map +1 -0
  169. package/dist/tsup/test/mod.d.cts +26 -0
  170. package/dist/tsup/test/mod.d.ts +26 -0
  171. package/dist/tsup/test/mod.js +90 -0
  172. package/dist/tsup/test/mod.js.map +1 -0
  173. package/dist/tsup/utils-fwx3o3K9.d.cts +18 -0
  174. package/dist/tsup/utils-fwx3o3K9.d.ts +18 -0
  175. package/dist/tsup/utils.cjs +43 -0
  176. package/dist/tsup/utils.cjs.map +1 -0
  177. package/dist/tsup/utils.d.cts +148 -0
  178. package/dist/tsup/utils.d.ts +148 -0
  179. package/dist/tsup/utils.js +43 -0
  180. package/dist/tsup/utils.js.map +1 -0
  181. package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
  182. package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
  183. package/dist/tsup/workflow/mod.cjs +16 -0
  184. package/dist/tsup/workflow/mod.cjs.map +1 -0
  185. package/dist/tsup/workflow/mod.d.cts +25 -0
  186. package/dist/tsup/workflow/mod.d.ts +25 -0
  187. package/dist/tsup/workflow/mod.js +16 -0
  188. package/dist/tsup/workflow/mod.js.map +1 -0
  189. package/package.json +293 -5
  190. package/src/actor/config.ts +1221 -0
  191. package/src/actor/conn/driver.ts +61 -0
  192. package/src/actor/conn/drivers/http.ts +17 -0
  193. package/src/actor/conn/drivers/raw-request.ts +24 -0
  194. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  195. package/src/actor/conn/drivers/websocket.ts +144 -0
  196. package/src/actor/conn/mod.ts +288 -0
  197. package/src/actor/conn/persisted.ts +81 -0
  198. package/src/actor/conn/state-manager.ts +196 -0
  199. package/src/actor/contexts/action.ts +47 -0
  200. package/src/actor/contexts/base/actor.ts +347 -0
  201. package/src/actor/contexts/base/conn-init.ts +68 -0
  202. package/src/actor/contexts/base/conn.ts +73 -0
  203. package/src/actor/contexts/before-action-response.ts +42 -0
  204. package/src/actor/contexts/before-connect.ts +31 -0
  205. package/src/actor/contexts/connect.ts +42 -0
  206. package/src/actor/contexts/create-conn-state.ts +32 -0
  207. package/src/actor/contexts/create-vars.ts +39 -0
  208. package/src/actor/contexts/create.ts +39 -0
  209. package/src/actor/contexts/destroy.ts +42 -0
  210. package/src/actor/contexts/disconnect.ts +43 -0
  211. package/src/actor/contexts/index.ts +33 -0
  212. package/src/actor/contexts/request.ts +80 -0
  213. package/src/actor/contexts/run.ts +47 -0
  214. package/src/actor/contexts/sleep.ts +42 -0
  215. package/src/actor/contexts/state-change.ts +42 -0
  216. package/src/actor/contexts/wake.ts +42 -0
  217. package/src/actor/contexts/websocket.ts +80 -0
  218. package/src/actor/database.ts +13 -0
  219. package/src/actor/definition.ts +64 -0
  220. package/src/actor/driver.ts +114 -0
  221. package/src/actor/errors.ts +556 -0
  222. package/src/actor/instance/connection-manager.ts +574 -0
  223. package/src/actor/instance/event-manager.ts +314 -0
  224. package/src/actor/instance/keys.ts +146 -0
  225. package/src/actor/instance/kv.ts +241 -0
  226. package/src/actor/instance/mod.ts +1658 -0
  227. package/src/actor/instance/persisted.ts +67 -0
  228. package/src/actor/instance/queue-manager.ts +603 -0
  229. package/src/actor/instance/queue.ts +345 -0
  230. package/src/actor/instance/schedule-manager.ts +392 -0
  231. package/src/actor/instance/state-manager.ts +542 -0
  232. package/src/actor/instance/traces-driver.ts +128 -0
  233. package/src/actor/keys.test.ts +275 -0
  234. package/src/actor/keys.ts +89 -0
  235. package/src/actor/log.ts +6 -0
  236. package/src/actor/mod.ts +110 -0
  237. package/src/actor/protocol/old.ts +416 -0
  238. package/src/actor/protocol/serde.ts +222 -0
  239. package/src/actor/router-endpoints.ts +400 -0
  240. package/src/actor/router-websocket-endpoints.test.ts +54 -0
  241. package/src/actor/router-websocket-endpoints.ts +405 -0
  242. package/src/actor/router.ts +380 -0
  243. package/src/actor/schedule.ts +17 -0
  244. package/src/actor/schema.ts +291 -0
  245. package/src/actor/utils.test.ts +48 -0
  246. package/src/actor/utils.ts +158 -0
  247. package/src/client/actor-common.ts +32 -0
  248. package/src/client/actor-conn.ts +1262 -0
  249. package/src/client/actor-handle.ts +344 -0
  250. package/src/client/actor-query.ts +112 -0
  251. package/src/client/client.ts +558 -0
  252. package/src/client/config.ts +151 -0
  253. package/src/client/errors.ts +76 -0
  254. package/src/client/log.ts +5 -0
  255. package/src/client/mod.browser.ts +2 -0
  256. package/src/client/mod.ts +70 -0
  257. package/src/client/queue.ts +146 -0
  258. package/src/client/raw-utils.ts +149 -0
  259. package/src/client/test.ts +44 -0
  260. package/src/client/utils.ts +252 -0
  261. package/src/common/actor-router-consts.ts +59 -0
  262. package/src/common/cors.ts +57 -0
  263. package/src/common/eventsource-interface.ts +47 -0
  264. package/src/common/eventsource.ts +44 -0
  265. package/src/common/inline-websocket-adapter.ts +154 -0
  266. package/src/common/log-levels.ts +27 -0
  267. package/src/common/log.ts +229 -0
  268. package/src/common/logfmt.ts +221 -0
  269. package/src/common/network.ts +2 -0
  270. package/src/common/router.ts +174 -0
  271. package/src/common/utils.ts +339 -0
  272. package/src/common/websocket-interface.ts +7 -0
  273. package/src/common/websocket.ts +43 -0
  274. package/src/db/config.ts +100 -0
  275. package/src/db/drizzle/mod.ts +226 -0
  276. package/src/db/drizzle/sqlite-core.ts +22 -0
  277. package/src/db/mod.ts +125 -0
  278. package/src/db/shared.ts +92 -0
  279. package/src/db/sqlite-vfs.ts +12 -0
  280. package/src/devtools-loader/index.ts +33 -0
  281. package/src/devtools-loader/log.ts +5 -0
  282. package/src/driver-helpers/mod.ts +33 -0
  283. package/src/driver-helpers/utils.ts +54 -0
  284. package/src/driver-test-suite/log.ts +5 -0
  285. package/src/driver-test-suite/mod.ts +293 -0
  286. package/src/driver-test-suite/test-inline-client-driver.ts +307 -0
  287. package/src/driver-test-suite/tests/access-control.ts +218 -0
  288. package/src/driver-test-suite/tests/action-features.ts +203 -0
  289. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +152 -0
  290. package/src/driver-test-suite/tests/actor-conn-state.ts +300 -0
  291. package/src/driver-test-suite/tests/actor-conn.ts +596 -0
  292. package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
  293. package/src/driver-test-suite/tests/actor-db.ts +477 -0
  294. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  295. package/src/driver-test-suite/tests/actor-driver.ts +18 -0
  296. package/src/driver-test-suite/tests/actor-error-handling.ts +150 -0
  297. package/src/driver-test-suite/tests/actor-handle.ts +312 -0
  298. package/src/driver-test-suite/tests/actor-inline-client.ts +163 -0
  299. package/src/driver-test-suite/tests/actor-inspector.ts +264 -0
  300. package/src/driver-test-suite/tests/actor-kv.ts +65 -0
  301. package/src/driver-test-suite/tests/actor-metadata.ts +116 -0
  302. package/src/driver-test-suite/tests/actor-onstatechange.ts +95 -0
  303. package/src/driver-test-suite/tests/actor-queue.ts +325 -0
  304. package/src/driver-test-suite/tests/actor-run.ts +181 -0
  305. package/src/driver-test-suite/tests/actor-schedule.ts +97 -0
  306. package/src/driver-test-suite/tests/actor-sleep.ts +415 -0
  307. package/src/driver-test-suite/tests/actor-state.ts +54 -0
  308. package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
  309. package/src/driver-test-suite/tests/actor-vars.ts +97 -0
  310. package/src/driver-test-suite/tests/actor-workflow.ts +118 -0
  311. package/src/driver-test-suite/tests/manager-driver.ts +388 -0
  312. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -0
  313. package/src/driver-test-suite/tests/raw-http-request-properties.ts +454 -0
  314. package/src/driver-test-suite/tests/raw-http.ts +359 -0
  315. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -0
  316. package/src/driver-test-suite/tests/raw-websocket.ts +513 -0
  317. package/src/driver-test-suite/tests/request-access.ts +240 -0
  318. package/src/driver-test-suite/utils.ts +80 -0
  319. package/src/drivers/default.ts +38 -0
  320. package/src/drivers/engine/actor-driver.ts +1027 -0
  321. package/src/drivers/engine/config.ts +43 -0
  322. package/src/drivers/engine/log.ts +5 -0
  323. package/src/drivers/engine/mod.ts +36 -0
  324. package/src/drivers/file-system/actor.ts +102 -0
  325. package/src/drivers/file-system/global-state.ts +1445 -0
  326. package/src/drivers/file-system/kv-limits.ts +70 -0
  327. package/src/drivers/file-system/log.ts +5 -0
  328. package/src/drivers/file-system/manager.ts +300 -0
  329. package/src/drivers/file-system/mod.ts +78 -0
  330. package/src/drivers/file-system/sqlite-runtime.ts +210 -0
  331. package/src/drivers/file-system/utils.ts +125 -0
  332. package/src/engine-process/constants.ts +2 -0
  333. package/src/engine-process/log.ts +5 -0
  334. package/src/engine-process/mod.ts +464 -0
  335. package/src/globals.d.ts +35 -0
  336. package/src/inspector/actor-inspector.ts +352 -0
  337. package/src/inspector/config.ts +49 -0
  338. package/src/inspector/handler.ts +273 -0
  339. package/src/inspector/log.ts +5 -0
  340. package/src/inspector/mod.browser.ts +8 -0
  341. package/src/inspector/mod.ts +4 -0
  342. package/src/inspector/serve-ui.ts +40 -0
  343. package/src/inspector/transport.ts +18 -0
  344. package/src/inspector/utils.ts +32 -0
  345. package/src/manager/driver.ts +106 -0
  346. package/src/manager/gateway.ts +668 -0
  347. package/src/manager/log.ts +5 -0
  348. package/src/manager/mod.ts +2 -0
  349. package/src/manager/protocol/mod.ts +22 -0
  350. package/src/manager/protocol/query.ts +85 -0
  351. package/src/manager/router-schema.ts +22 -0
  352. package/src/manager/router.ts +660 -0
  353. package/src/manager-api/actors.ts +83 -0
  354. package/src/manager-api/common.ts +4 -0
  355. package/src/mod.ts +24 -0
  356. package/src/registry/config/driver.ts +21 -0
  357. package/src/registry/config/index.ts +510 -0
  358. package/src/registry/config/legacy-runner.ts +157 -0
  359. package/src/registry/config/runner.ts +21 -0
  360. package/src/registry/config/serverless.ts +94 -0
  361. package/src/registry/index.ts +194 -0
  362. package/src/registry/log.ts +5 -0
  363. package/src/remote-manager-driver/actor-http-client.ts +84 -0
  364. package/src/remote-manager-driver/actor-websocket-client.ts +81 -0
  365. package/src/remote-manager-driver/api-endpoints.ts +159 -0
  366. package/src/remote-manager-driver/api-utils.ts +69 -0
  367. package/src/remote-manager-driver/log.ts +5 -0
  368. package/src/remote-manager-driver/metadata.ts +64 -0
  369. package/src/remote-manager-driver/mod.ts +414 -0
  370. package/src/remote-manager-driver/ws-proxy.ts +189 -0
  371. package/src/schemas/actor-inspector/mod.ts +1 -0
  372. package/src/schemas/actor-inspector/versioned.ts +233 -0
  373. package/src/schemas/actor-persist/mod.ts +1 -0
  374. package/src/schemas/actor-persist/versioned.ts +217 -0
  375. package/src/schemas/client-protocol/mod.ts +1 -0
  376. package/src/schemas/client-protocol/versioned.ts +330 -0
  377. package/src/schemas/client-protocol-zod/mod.ts +118 -0
  378. package/src/schemas/file-system-driver/mod.ts +1 -0
  379. package/src/schemas/file-system-driver/versioned.ts +135 -0
  380. package/src/schemas/persist/mod.ts +1 -0
  381. package/src/schemas/transport/mod.ts +1 -0
  382. package/src/serde.ts +138 -0
  383. package/src/serve-test-suite/mod.ts +148 -0
  384. package/src/serverless/configure.ts +82 -0
  385. package/src/serverless/log.ts +5 -0
  386. package/src/serverless/router.test.ts +299 -0
  387. package/src/serverless/router.ts +215 -0
  388. package/src/test/log.ts +5 -0
  389. package/src/test/mod.ts +99 -0
  390. package/src/utils/crypto.ts +24 -0
  391. package/src/utils/endpoint-parser.test.ts +202 -0
  392. package/src/utils/endpoint-parser.ts +124 -0
  393. package/src/utils/env-vars.ts +78 -0
  394. package/src/utils/node.ts +178 -0
  395. package/src/utils/router.ts +83 -0
  396. package/src/utils/serve.ts +212 -0
  397. package/src/utils.test.ts +34 -0
  398. package/src/utils.ts +437 -0
  399. package/src/workflow/constants.ts +2 -0
  400. package/src/workflow/context.ts +597 -0
  401. package/src/workflow/driver.ts +194 -0
  402. package/src/workflow/inspector.ts +268 -0
  403. package/src/workflow/mod.ts +128 -0
@@ -0,0 +1,49 @@
1
+ import {
2
+ getLogger
3
+ } from "./chunk-325TLXJT.js";
4
+
5
+ // src/client/log.ts
6
+ function logger() {
7
+ return getLogger("actor-client");
8
+ }
9
+
10
+ // src/common/websocket.ts
11
+ var webSocketPromise = null;
12
+ async function importWebSocket() {
13
+ if (webSocketPromise !== null) {
14
+ return webSocketPromise;
15
+ }
16
+ webSocketPromise = (async () => {
17
+ let _WebSocket;
18
+ if (typeof WebSocket !== "undefined") {
19
+ _WebSocket = WebSocket;
20
+ } else {
21
+ try {
22
+ const moduleName = "ws";
23
+ const ws = await import(
24
+ /* webpackIgnore: true */
25
+ moduleName
26
+ );
27
+ _WebSocket = ws.default;
28
+ logger().debug("using websocket from npm");
29
+ } catch {
30
+ _WebSocket = class MockWebSocket {
31
+ constructor() {
32
+ throw new Error(
33
+ 'WebSocket support requires installing the "ws" peer dependency.'
34
+ );
35
+ }
36
+ };
37
+ logger().debug("using mock websocket");
38
+ }
39
+ }
40
+ return _WebSocket;
41
+ })();
42
+ return webSocketPromise;
43
+ }
44
+
45
+ export {
46
+ logger,
47
+ importWebSocket
48
+ };
49
+ //# sourceMappingURL=chunk-JEAEA2PB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/log.ts","../../src/common/websocket.ts"],"sourcesContent":["import { getLogger } from \"@/common/log\";\n\nexport function logger() {\n\treturn getLogger(\"actor-client\");\n}\n","import { logger } from \"@/client/log\";\n\n// Global singleton promise that will be reused for subsequent calls\nlet webSocketPromise: Promise<typeof WebSocket> | null = null;\n\nexport async function importWebSocket(): Promise<typeof WebSocket> {\n\t// Return existing promise if we already started loading\n\tif (webSocketPromise !== null) {\n\t\treturn webSocketPromise;\n\t}\n\n\t// Create and store the promise\n\twebSocketPromise = (async () => {\n\t\tlet _WebSocket: typeof WebSocket;\n\n\t\tif (typeof WebSocket !== \"undefined\") {\n\t\t\t// Browser environment\n\t\t\t_WebSocket = WebSocket as unknown as typeof WebSocket;\n\t\t} else {\n\t\t\t// Node.js environment\n\t\t\ttry {\n\t\t\t\tconst moduleName = \"ws\";\n\t\t\t\tconst ws = await import(/* webpackIgnore: true */ moduleName);\n\t\t\t\t_WebSocket = ws.default as unknown as typeof WebSocket;\n\t\t\t\tlogger().debug(\"using websocket from npm\");\n\t\t\t} catch {\n\t\t\t\t// WS not available\n\t\t\t\t_WebSocket = class MockWebSocket {\n\t\t\t\t\tconstructor() {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'WebSocket support requires installing the \"ws\" peer dependency.',\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} as unknown as typeof WebSocket;\n\t\t\t\tlogger().debug(\"using mock websocket\");\n\t\t\t}\n\t\t}\n\n\t\treturn _WebSocket;\n\t})();\n\n\treturn webSocketPromise;\n}\n"],"mappings":";;;;;AAEO,SAAS,SAAS;AACxB,SAAO,UAAU,cAAc;AAChC;;;ACDA,IAAI,mBAAqD;AAEzD,eAAsB,kBAA6C;AAElE,MAAI,qBAAqB,MAAM;AAC9B,WAAO;AAAA,EACR;AAGA,sBAAoB,YAAY;AAC/B,QAAI;AAEJ,QAAI,OAAO,cAAc,aAAa;AAErC,mBAAa;AAAA,IACd,OAAO;AAEN,UAAI;AACH,cAAM,aAAa;AACnB,cAAM,KAAK,MAAM;AAAA;AAAA,UAAiC;AAAA;AAClD,qBAAa,GAAG;AAChB,eAAO,EAAE,MAAM,0BAA0B;AAAA,MAC1C,QAAQ;AAEP,qBAAa,MAAM,cAAc;AAAA,UAChC,cAAc;AACb,kBAAM,IAAI;AAAA,cACT;AAAA,YACD;AAAA,UACD;AAAA,QACD;AACA,eAAO,EAAE,MAAM,sBAAsB;AAAA,MACtC;AAAA,IACD;AAEA,WAAO;AAAA,EACR,GAAG;AAEH,SAAO;AACR;","names":[]}
@@ -0,0 +1,642 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class;
2
+
3
+ var _chunk6XU3FMCBcjs = require('./chunk-6XU3FMCB.cjs');
4
+
5
+
6
+
7
+
8
+
9
+ var _chunkPVOE6BU7cjs = require('./chunk-PVOE6BU7.cjs');
10
+
11
+
12
+
13
+
14
+ var _chunkPQZHDKRWcjs = require('./chunk-PQZHDKRW.cjs');
15
+
16
+ // src/workflow/mod.ts
17
+ var _workflowengine = require('@rivetkit/workflow-engine');
18
+ var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
19
+
20
+ // src/workflow/constants.ts
21
+ var WORKFLOW_GUARD_KV_KEY = "__rivet_actor_workflow_guard_triggered";
22
+
23
+ // src/workflow/context.ts
24
+ var ActorWorkflowContext = class _ActorWorkflowContext {
25
+ #inner;
26
+ #runCtx;
27
+ #actorAccessDepth = 0;
28
+ #allowActorAccess = false;
29
+ #guardViolation = false;
30
+ constructor(inner, runCtx) {
31
+ this.#inner = inner;
32
+ this.#runCtx = runCtx;
33
+ }
34
+ get workflowId() {
35
+ return this.#inner.workflowId;
36
+ }
37
+ get abortSignal() {
38
+ return this.#inner.abortSignal;
39
+ }
40
+ get queue() {
41
+ const self = this;
42
+ async function next(name, opts) {
43
+ const message = await self.#inner.queue.next(name, opts);
44
+ return self.#toActorQueueMessage(message);
45
+ }
46
+ async function nextBatch(name, opts) {
47
+ const messages = await self.#inner.queue.nextBatch(name, opts);
48
+ return messages.map((message) => self.#toActorQueueMessage(message));
49
+ }
50
+ async function send(name, body) {
51
+ self.#ensureActorAccess("queue.send");
52
+ await self.#runCtx.queue.send(name, body);
53
+ }
54
+ return {
55
+ next,
56
+ nextBatch,
57
+ send
58
+ };
59
+ }
60
+ async step(nameOrConfig, run) {
61
+ if (typeof nameOrConfig === "string") {
62
+ if (!run) {
63
+ throw new Error("Step run function missing");
64
+ }
65
+ return await this.#wrapActive(
66
+ () => this.#inner.step(nameOrConfig, () => this.#withActorAccess(run))
67
+ );
68
+ }
69
+ const stepConfig = nameOrConfig;
70
+ const config = {
71
+ ...stepConfig,
72
+ run: () => this.#withActorAccess(stepConfig.run)
73
+ };
74
+ return await this.#wrapActive(() => this.#inner.step(config));
75
+ }
76
+ async loop(nameOrConfig, run) {
77
+ if (typeof nameOrConfig === "string") {
78
+ if (!run) {
79
+ throw new Error("Loop run function missing");
80
+ }
81
+ return await this.#wrapActive(
82
+ () => this.#inner.loop(
83
+ nameOrConfig,
84
+ async (ctx) => run(this.#createChildContext(ctx))
85
+ )
86
+ );
87
+ }
88
+ const wrapped = {
89
+ ...nameOrConfig,
90
+ run: async (ctx, state) => nameOrConfig.run(this.#createChildContext(ctx), state)
91
+ };
92
+ return await this.#wrapActive(() => this.#inner.loop(wrapped));
93
+ }
94
+ sleep(name, durationMs) {
95
+ return this.#inner.sleep(name, durationMs);
96
+ }
97
+ sleepUntil(name, timestampMs) {
98
+ return this.#inner.sleepUntil(name, timestampMs);
99
+ }
100
+ async rollbackCheckpoint(name) {
101
+ await this.#wrapActive(() => this.#inner.rollbackCheckpoint(name));
102
+ }
103
+ async join(name, branches) {
104
+ const wrappedBranches = Object.fromEntries(
105
+ Object.entries(branches).map(([key, branch]) => [
106
+ key,
107
+ {
108
+ run: async (ctx) => branch.run(this.#createChildContext(ctx))
109
+ }
110
+ ])
111
+ );
112
+ return await this.#wrapActive(
113
+ () => this.#inner.join(name, wrappedBranches)
114
+ );
115
+ }
116
+ async race(name, branches) {
117
+ const wrappedBranches = branches.map((branch) => ({
118
+ name: branch.name,
119
+ run: (ctx) => branch.run(this.#createChildContext(ctx))
120
+ }));
121
+ return await this.#wrapActive(
122
+ () => this.#inner.race(name, wrappedBranches)
123
+ );
124
+ }
125
+ async removed(name, originalType) {
126
+ await this.#wrapActive(() => this.#inner.removed(name, originalType));
127
+ }
128
+ isEvicted() {
129
+ return this.#inner.isEvicted();
130
+ }
131
+ get state() {
132
+ this.#ensureActorAccess("state");
133
+ return this.#runCtx.state;
134
+ }
135
+ get vars() {
136
+ this.#ensureActorAccess("vars");
137
+ return this.#runCtx.vars;
138
+ }
139
+ client() {
140
+ this.#ensureActorAccess("client");
141
+ return this.#runCtx.client();
142
+ }
143
+ get db() {
144
+ this.#ensureActorAccess("db");
145
+ return this.#runCtx.db;
146
+ }
147
+ get log() {
148
+ return this.#runCtx.log;
149
+ }
150
+ keepAwake(promise) {
151
+ this.#ensureActorAccess("keepAwake");
152
+ return this.#runCtx.keepAwake(promise);
153
+ }
154
+ waitUntil(promise) {
155
+ this.#ensureActorAccess("waitUntil");
156
+ this.#runCtx.waitUntil(promise);
157
+ }
158
+ get actorId() {
159
+ return this.#runCtx.actorId;
160
+ }
161
+ broadcast(name, ...args) {
162
+ this.#ensureActorAccess("broadcast");
163
+ this.#runCtx.broadcast(
164
+ name,
165
+ ...args
166
+ );
167
+ }
168
+ #toActorQueueMessage(message) {
169
+ let id;
170
+ try {
171
+ id = BigInt(message.id);
172
+ } catch (e) {
173
+ throw new Error(`Invalid queue message id "${message.id}"`);
174
+ }
175
+ return {
176
+ id,
177
+ name: message.name,
178
+ body: message.body,
179
+ createdAt: message.createdAt,
180
+ ...message.complete ? { complete: message.complete } : {}
181
+ };
182
+ }
183
+ async #wrapActive(run) {
184
+ return await this.#runCtx.keepAwake(run());
185
+ }
186
+ async #withActorAccess(run) {
187
+ this.#actorAccessDepth++;
188
+ if (this.#actorAccessDepth === 1) {
189
+ this.#allowActorAccess = true;
190
+ }
191
+ try {
192
+ return await run();
193
+ } finally {
194
+ this.#actorAccessDepth--;
195
+ if (this.#actorAccessDepth === 0) {
196
+ this.#allowActorAccess = false;
197
+ }
198
+ }
199
+ }
200
+ #ensureActorAccess(feature) {
201
+ if (!this.#allowActorAccess) {
202
+ this.#guardViolation = true;
203
+ this.#markGuardTriggered();
204
+ throw new Error(
205
+ `${feature} is only available inside workflow steps`
206
+ );
207
+ }
208
+ }
209
+ consumeGuardViolation() {
210
+ const violated = this.#guardViolation;
211
+ this.#guardViolation = false;
212
+ return violated;
213
+ }
214
+ #markGuardTriggered() {
215
+ try {
216
+ const state = this.#runCtx.state;
217
+ if (state && typeof state === "object" && "guardTriggered" in state) {
218
+ state.guardTriggered = true;
219
+ }
220
+ } catch (e2) {
221
+ }
222
+ this.#runCtx.waitUntil(
223
+ (async () => {
224
+ try {
225
+ await this.#runCtx.kv.put(WORKFLOW_GUARD_KV_KEY, "true");
226
+ } catch (error) {
227
+ this.#runCtx.log.error({
228
+ msg: "failed to persist workflow guard flag",
229
+ error
230
+ });
231
+ }
232
+ })()
233
+ );
234
+ }
235
+ #createChildContext(ctx) {
236
+ return new _ActorWorkflowContext(ctx, this.#runCtx);
237
+ }
238
+ };
239
+
240
+ // src/workflow/driver.ts
241
+ var WORKFLOW_STORAGE_PREFIX = _chunkPVOE6BU7cjs.workflowStoragePrefix.call(void 0, );
242
+ function stripWorkflowKey(prefixed) {
243
+ return prefixed.slice(WORKFLOW_STORAGE_PREFIX.length);
244
+ }
245
+ var ActorWorkflowMessageDriver = class {
246
+ #actor;
247
+ #runCtx;
248
+ constructor(actor, runCtx) {
249
+ this.#actor = actor;
250
+ this.#runCtx = runCtx;
251
+ }
252
+ async addMessage(message) {
253
+ await this.#runCtx.keepAwake(
254
+ this.#actor.queueManager.enqueue(message.name, message.data)
255
+ );
256
+ }
257
+ async receiveMessages(opts) {
258
+ const messages = await this.#runCtx.keepAwake(
259
+ this.#actor.queueManager.receive(
260
+ opts.names && opts.names.length > 0 ? [...opts.names] : void 0,
261
+ opts.count,
262
+ 0,
263
+ void 0,
264
+ opts.completable
265
+ )
266
+ );
267
+ return messages.map((message) => ({
268
+ id: message.id.toString(),
269
+ name: message.name,
270
+ data: message.body,
271
+ sentAt: message.createdAt,
272
+ ...opts.completable ? {
273
+ complete: async (response) => {
274
+ await this.#runCtx.keepAwake(
275
+ this.#actor.queueManager.completeMessage(
276
+ message,
277
+ response
278
+ )
279
+ );
280
+ }
281
+ } : {}
282
+ }));
283
+ }
284
+ async completeMessage(messageId, response) {
285
+ let parsedId;
286
+ try {
287
+ parsedId = BigInt(messageId);
288
+ } catch (e3) {
289
+ return;
290
+ }
291
+ await this.#runCtx.keepAwake(
292
+ this.#actor.queueManager.completeMessageById(parsedId, response)
293
+ );
294
+ }
295
+ };
296
+ var ActorWorkflowDriver = (_class = class {
297
+ __init() {this.workerPollInterval = 100}
298
+
299
+ #actor;
300
+ #runCtx;
301
+ constructor(actor, runCtx) {;_class.prototype.__init.call(this);
302
+ this.#actor = actor;
303
+ this.#runCtx = runCtx;
304
+ this.messageDriver = new ActorWorkflowMessageDriver(actor, runCtx);
305
+ }
306
+ async get(key) {
307
+ const [value] = await this.#runCtx.keepAwake(
308
+ this.#actor.driver.kvBatchGet(this.#actor.id, [
309
+ _chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, key)
310
+ ])
311
+ );
312
+ return _nullishCoalesce(value, () => ( null));
313
+ }
314
+ async set(key, value) {
315
+ await this.#runCtx.keepAwake(
316
+ this.#actor.driver.kvBatchPut(this.#actor.id, [
317
+ [_chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, key), value]
318
+ ])
319
+ );
320
+ }
321
+ async delete(key) {
322
+ await this.#runCtx.keepAwake(
323
+ this.#actor.driver.kvBatchDelete(this.#actor.id, [
324
+ _chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, key)
325
+ ])
326
+ );
327
+ }
328
+ async deletePrefix(prefix) {
329
+ const entries = await this.#runCtx.keepAwake(
330
+ this.#actor.driver.kvListPrefix(
331
+ this.#actor.id,
332
+ _chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, prefix)
333
+ )
334
+ );
335
+ if (entries.length === 0) {
336
+ return;
337
+ }
338
+ await this.#runCtx.keepAwake(
339
+ this.#actor.driver.kvBatchDelete(
340
+ this.#actor.id,
341
+ entries.map(([key]) => key)
342
+ )
343
+ );
344
+ }
345
+ async list(prefix) {
346
+ const entries = await this.#runCtx.keepAwake(
347
+ this.#actor.driver.kvListPrefix(
348
+ this.#actor.id,
349
+ _chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, prefix)
350
+ )
351
+ );
352
+ return entries.map(([key, value]) => ({
353
+ key: stripWorkflowKey(key),
354
+ value
355
+ }));
356
+ }
357
+ async batch(writes) {
358
+ if (writes.length === 0) return;
359
+ await this.#runCtx.keepAwake(
360
+ Promise.all([
361
+ this.#actor.driver.kvBatchPut(
362
+ this.#actor.id,
363
+ writes.map(({ key, value }) => [_chunkPVOE6BU7cjs.makeWorkflowKey.call(void 0, key), value])
364
+ ),
365
+ this.#actor.stateManager.saveState({
366
+ immediate: true,
367
+ allowStoppingState: true
368
+ })
369
+ ])
370
+ );
371
+ }
372
+ async setAlarm(_workflowId, wakeAt) {
373
+ await this.#runCtx.keepAwake(
374
+ this.#actor.driver.setAlarm(this.#actor, wakeAt)
375
+ );
376
+ }
377
+ async clearAlarm(_workflowId) {
378
+ return;
379
+ }
380
+ waitForMessages(messageNames, abortSignal) {
381
+ return this.#actor.queueManager.waitForNames(
382
+ messageNames.length > 0 ? messageNames : void 0,
383
+ abortSignal
384
+ );
385
+ }
386
+ }, _class);
387
+
388
+ // src/workflow/inspector.ts
389
+ var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
390
+ var _nanoevents = require('nanoevents');
391
+ function createWorkflowInspectorAdapter() {
392
+ const emitter = _nanoevents.createNanoEvents.call(void 0, );
393
+ let history = null;
394
+ const adapter = {
395
+ getHistory: () => history,
396
+ onHistoryUpdated: (listener) => emitter.on("updated", listener)
397
+ };
398
+ const update = (snapshot) => {
399
+ const transportHistory = toWorkflowHistory(snapshot);
400
+ const next = _chunk6XU3FMCBcjs.encodeWorkflowHistoryTransport.call(void 0, transportHistory);
401
+ history = next;
402
+ emitter.emit("updated", next);
403
+ };
404
+ return { adapter, update };
405
+ }
406
+ function encodeCbor(value) {
407
+ return _chunkPQZHDKRWcjs.bufferToArrayBuffer.call(void 0, cbor.encode(value));
408
+ }
409
+ function encodeOptionalCbor(value) {
410
+ if (value === void 0) {
411
+ return null;
412
+ }
413
+ return encodeCbor(value);
414
+ }
415
+ function toU64(value) {
416
+ return BigInt(Math.max(0, Math.floor(value)));
417
+ }
418
+ function toWorkflowLocation(location) {
419
+ return location.map((segment) => {
420
+ if (typeof segment === "number") {
421
+ return { tag: "WorkflowNameIndex", val: segment };
422
+ }
423
+ return {
424
+ tag: "WorkflowLoopIterationMarker",
425
+ val: {
426
+ loop: segment.loop,
427
+ iteration: segment.iteration
428
+ }
429
+ };
430
+ });
431
+ }
432
+ function toWorkflowEntryKind(kind) {
433
+ switch (kind.type) {
434
+ case "step":
435
+ return {
436
+ tag: "WorkflowStepEntry",
437
+ val: {
438
+ output: encodeOptionalCbor(kind.data.output),
439
+ error: _nullishCoalesce(kind.data.error, () => ( null))
440
+ }
441
+ };
442
+ case "loop":
443
+ return {
444
+ tag: "WorkflowLoopEntry",
445
+ val: {
446
+ state: encodeCbor(kind.data.state),
447
+ iteration: kind.data.iteration,
448
+ output: encodeOptionalCbor(kind.data.output)
449
+ }
450
+ };
451
+ case "sleep":
452
+ return {
453
+ tag: "WorkflowSleepEntry",
454
+ val: {
455
+ deadline: toU64(kind.data.deadline),
456
+ state: toWorkflowSleepState(kind.data.state)
457
+ }
458
+ };
459
+ case "message":
460
+ return {
461
+ tag: "WorkflowMessageEntry",
462
+ val: {
463
+ name: kind.data.name,
464
+ messageData: encodeCbor(kind.data.data)
465
+ }
466
+ };
467
+ case "rollback_checkpoint":
468
+ return {
469
+ tag: "WorkflowRollbackCheckpointEntry",
470
+ val: { name: kind.data.name }
471
+ };
472
+ case "join":
473
+ return {
474
+ tag: "WorkflowJoinEntry",
475
+ val: { branches: toWorkflowBranchStatusMap(kind.data.branches) }
476
+ };
477
+ case "race":
478
+ return {
479
+ tag: "WorkflowRaceEntry",
480
+ val: {
481
+ winner: _nullishCoalesce(kind.data.winner, () => ( null)),
482
+ branches: toWorkflowBranchStatusMap(kind.data.branches)
483
+ }
484
+ };
485
+ case "removed":
486
+ return {
487
+ tag: "WorkflowRemovedEntry",
488
+ val: {
489
+ originalType: kind.data.originalType,
490
+ originalName: _nullishCoalesce(kind.data.originalName, () => ( null))
491
+ }
492
+ };
493
+ default:
494
+ _chunkPQZHDKRWcjs.assertUnreachable.call(void 0, kind);
495
+ }
496
+ }
497
+ function toWorkflowEntry(entry) {
498
+ return {
499
+ id: entry.id,
500
+ location: toWorkflowLocation(entry.location),
501
+ kind: toWorkflowEntryKind(entry.kind)
502
+ };
503
+ }
504
+ function toWorkflowEntryStatus(status) {
505
+ switch (status) {
506
+ case "pending":
507
+ return "PENDING" /* PENDING */;
508
+ case "running":
509
+ return "RUNNING" /* RUNNING */;
510
+ case "completed":
511
+ return "COMPLETED" /* COMPLETED */;
512
+ case "failed":
513
+ return "FAILED" /* FAILED */;
514
+ case "exhausted":
515
+ return "EXHAUSTED" /* EXHAUSTED */;
516
+ default:
517
+ _chunkPQZHDKRWcjs.assertUnreachable.call(void 0, status);
518
+ }
519
+ }
520
+ function toWorkflowSleepState(state) {
521
+ switch (state) {
522
+ case "pending":
523
+ return "PENDING" /* PENDING */;
524
+ case "completed":
525
+ return "COMPLETED" /* COMPLETED */;
526
+ case "interrupted":
527
+ return "INTERRUPTED" /* INTERRUPTED */;
528
+ default:
529
+ _chunkPQZHDKRWcjs.assertUnreachable.call(void 0, state);
530
+ }
531
+ }
532
+ function toWorkflowBranchStatusType(status) {
533
+ switch (status) {
534
+ case "pending":
535
+ return "PENDING" /* PENDING */;
536
+ case "running":
537
+ return "RUNNING" /* RUNNING */;
538
+ case "completed":
539
+ return "COMPLETED" /* COMPLETED */;
540
+ case "failed":
541
+ return "FAILED" /* FAILED */;
542
+ case "cancelled":
543
+ return "CANCELLED" /* CANCELLED */;
544
+ default:
545
+ _chunkPQZHDKRWcjs.assertUnreachable.call(void 0, status);
546
+ }
547
+ }
548
+ function toWorkflowBranchStatus(status) {
549
+ return {
550
+ status: toWorkflowBranchStatusType(status.status),
551
+ output: encodeOptionalCbor(status.output),
552
+ error: _nullishCoalesce(status.error, () => ( null))
553
+ };
554
+ }
555
+ function toWorkflowBranchStatusMap(branches) {
556
+ return new Map(
557
+ Object.entries(branches).map(([name, status]) => [
558
+ name,
559
+ toWorkflowBranchStatus(status)
560
+ ])
561
+ );
562
+ }
563
+ function toWorkflowEntryMetadata(metadata) {
564
+ return {
565
+ status: toWorkflowEntryStatus(metadata.status),
566
+ error: _nullishCoalesce(metadata.error, () => ( null)),
567
+ attempts: metadata.attempts,
568
+ lastAttemptAt: toU64(metadata.lastAttemptAt),
569
+ createdAt: toU64(metadata.createdAt),
570
+ completedAt: metadata.completedAt === void 0 ? null : toU64(metadata.completedAt),
571
+ rollbackCompletedAt: metadata.rollbackCompletedAt === void 0 ? null : toU64(metadata.rollbackCompletedAt),
572
+ rollbackError: _nullishCoalesce(metadata.rollbackError, () => ( null))
573
+ };
574
+ }
575
+ function toWorkflowHistory(snapshot) {
576
+ const entryMetadata = /* @__PURE__ */ new Map();
577
+ for (const [id, metadata] of snapshot.entryMetadata) {
578
+ entryMetadata.set(id, toWorkflowEntryMetadata(metadata));
579
+ }
580
+ return {
581
+ nameRegistry: snapshot.nameRegistry,
582
+ entries: snapshot.entries.map((entry) => toWorkflowEntry(entry)),
583
+ entryMetadata
584
+ };
585
+ }
586
+
587
+ // src/workflow/mod.ts
588
+
589
+ function workflow(fn) {
590
+ const workflowInspector = createWorkflowInspectorAdapter();
591
+ async function run(runCtx) {
592
+ const actor = runCtx[_chunkPVOE6BU7cjs.ACTOR_CONTEXT_INTERNAL_SYMBOL];
593
+ _invariant2.default.call(void 0, actor, "workflow() requires an actor instance");
594
+ const driver = new ActorWorkflowDriver(actor, runCtx);
595
+ const handle = _workflowengine.runWorkflow.call(void 0,
596
+ actor.id,
597
+ async (ctx) => await fn(new ActorWorkflowContext(ctx, runCtx)),
598
+ void 0,
599
+ driver,
600
+ {
601
+ mode: "live",
602
+ logger: runCtx.log,
603
+ onHistoryUpdated: workflowInspector.update
604
+ }
605
+ );
606
+ const onAbort = () => {
607
+ handle.evict();
608
+ };
609
+ if (runCtx.abortSignal.aborted) {
610
+ onAbort();
611
+ } else {
612
+ runCtx.abortSignal.addEventListener("abort", onAbort, {
613
+ once: true
614
+ });
615
+ }
616
+ try {
617
+ await handle.result;
618
+ } catch (error) {
619
+ runCtx.log.error({
620
+ msg: "workflow run failed",
621
+ error: _chunkPQZHDKRWcjs.stringifyError.call(void 0, error)
622
+ });
623
+ throw error;
624
+ } finally {
625
+ runCtx.abortSignal.removeEventListener("abort", onAbort);
626
+ }
627
+ }
628
+ const runWithConfig = run;
629
+ runWithConfig[_chunkPVOE6BU7cjs.RUN_FUNCTION_CONFIG_SYMBOL] = {
630
+ icon: "diagram-project",
631
+ inspector: { workflow: workflowInspector.adapter }
632
+ };
633
+ return runWithConfig;
634
+ }
635
+
636
+
637
+
638
+
639
+
640
+
641
+ exports.WORKFLOW_GUARD_KV_KEY = WORKFLOW_GUARD_KV_KEY; exports.ActorWorkflowContext = ActorWorkflowContext; exports.workflow = workflow; exports.Loop = _workflowengine.Loop;
642
+ //# sourceMappingURL=chunk-JYSEG3VF.cjs.map