rivetkit 2.1.5 → 2.1.6-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 (333) hide show
  1. package/dist/browser/client.d.ts +593 -588
  2. package/dist/browser/client.js +215 -35
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +109 -10
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/inspector.tar.gz +0 -0
  7. package/dist/tsup/actor/errors.cjs +2 -2
  8. package/dist/tsup/actor/errors.js +1 -1
  9. package/dist/tsup/{actor-router-consts-D29T1Z-K.d.cts → actor-router-consts-DU-1IdQj.d.cts} +1 -1
  10. package/dist/tsup/{actor-router-consts-D29T1Z-K.d.ts → actor-router-consts-DU-1IdQj.d.ts} +1 -1
  11. package/dist/tsup/chunk-2ELYUO6C.cjs +112 -0
  12. package/dist/tsup/chunk-2ELYUO6C.cjs.map +1 -0
  13. package/dist/tsup/chunk-2LY7RW3Y.cjs +2316 -0
  14. package/dist/tsup/chunk-2LY7RW3Y.cjs.map +1 -0
  15. package/dist/tsup/{chunk-L47L3ZWJ.cjs → chunk-6G7ZNM27.cjs} +11 -6
  16. package/dist/tsup/chunk-6G7ZNM27.cjs.map +1 -0
  17. package/dist/tsup/{chunk-PB5AEMKQ.cjs → chunk-A4KEUCB6.cjs} +84 -34
  18. package/dist/tsup/chunk-A4KEUCB6.cjs.map +1 -0
  19. package/dist/tsup/{chunk-7HTNH26M.js → chunk-AKUJ5OTO.js} +11 -6
  20. package/dist/tsup/chunk-AKUJ5OTO.js.map +1 -0
  21. package/dist/tsup/{chunk-TADUYCHF.js → chunk-C22JYHVT.js} +77 -27
  22. package/dist/tsup/chunk-C22JYHVT.js.map +1 -0
  23. package/dist/tsup/chunk-C4EB42ET.js +1459 -0
  24. package/dist/tsup/chunk-C4EB42ET.js.map +1 -0
  25. package/dist/tsup/chunk-CGGGBIDP.cjs +1459 -0
  26. package/dist/tsup/chunk-CGGGBIDP.cjs.map +1 -0
  27. package/dist/tsup/chunk-CMQPDBBR.cjs +1486 -0
  28. package/dist/tsup/chunk-CMQPDBBR.cjs.map +1 -0
  29. package/dist/tsup/{chunk-GQGRQDRL.cjs → chunk-DH6UINWA.cjs} +4 -4
  30. package/dist/tsup/{chunk-GQGRQDRL.cjs.map → chunk-DH6UINWA.cjs.map} +1 -1
  31. package/dist/tsup/chunk-DK46YYCJ.js +1486 -0
  32. package/dist/tsup/chunk-DK46YYCJ.js.map +1 -0
  33. package/dist/tsup/chunk-EGWXXBZV.js +2316 -0
  34. package/dist/tsup/chunk-EGWXXBZV.js.map +1 -0
  35. package/dist/tsup/{chunk-S662Y6ZU.js → chunk-EONWXYMN.js} +2 -2
  36. package/dist/tsup/{chunk-N4KRDJ56.js → chunk-GFGRBYO2.js} +35 -6
  37. package/dist/tsup/chunk-GFGRBYO2.js.map +1 -0
  38. package/dist/tsup/{chunk-IIJNPVPQ.cjs → chunk-GUHXWPGB.cjs} +1515 -1479
  39. package/dist/tsup/chunk-GUHXWPGB.cjs.map +1 -0
  40. package/dist/tsup/{chunk-TI5PXQGG.cjs → chunk-HNE2AK6C.cjs} +2375 -3713
  41. package/dist/tsup/chunk-HNE2AK6C.cjs.map +1 -0
  42. package/dist/tsup/{chunk-2OK7S6QF.js → chunk-I5I6OALK.js} +2 -2
  43. package/dist/tsup/chunk-IHQAF2HV.cjs +23 -0
  44. package/dist/tsup/chunk-IHQAF2HV.cjs.map +1 -0
  45. package/dist/tsup/{chunk-U5SMSA27.cjs → chunk-JJNZQDUN.cjs} +667 -2517
  46. package/dist/tsup/chunk-JJNZQDUN.cjs.map +1 -0
  47. package/dist/tsup/{chunk-ZPWOYQHN.js → chunk-JJSPHLJN.js} +219 -287
  48. package/dist/tsup/chunk-JJSPHLJN.js.map +1 -0
  49. package/dist/tsup/chunk-JRKPV5NJ.js +481 -0
  50. package/dist/tsup/chunk-JRKPV5NJ.js.map +1 -0
  51. package/dist/tsup/{chunk-VKVNIQRQ.js → chunk-K7MVU5SI.js} +36 -41
  52. package/dist/tsup/chunk-K7MVU5SI.js.map +1 -0
  53. package/dist/tsup/{chunk-KJSYAUOM.js → chunk-MLK3GY6P.js} +43 -27
  54. package/dist/tsup/chunk-MLK3GY6P.js.map +1 -0
  55. package/dist/tsup/{chunk-HYPIHCDT.cjs → chunk-MPLMTJY5.cjs} +123 -23
  56. package/dist/tsup/chunk-MPLMTJY5.cjs.map +1 -0
  57. package/dist/tsup/{chunk-MIX2KB6U.js → chunk-PQWI44WD.js} +1755 -3093
  58. package/dist/tsup/chunk-PQWI44WD.js.map +1 -0
  59. package/dist/tsup/{chunk-SR3KQE7Q.cjs → chunk-SQFCIDCG.cjs} +35 -6
  60. package/dist/tsup/chunk-SQFCIDCG.cjs.map +1 -0
  61. package/dist/tsup/{chunk-WY2SHWXQ.js → chunk-SVHJSM2E.js} +110 -24
  62. package/dist/tsup/chunk-SVHJSM2E.js.map +1 -0
  63. package/dist/tsup/chunk-T5KYKM6R.js +49 -0
  64. package/dist/tsup/chunk-T5KYKM6R.js.map +1 -0
  65. package/dist/tsup/{chunk-7WF2QSIC.cjs → chunk-TJ7DKW6F.cjs} +123 -37
  66. package/dist/tsup/chunk-TJ7DKW6F.cjs.map +1 -0
  67. package/dist/tsup/chunk-UQZRMTM3.js +23 -0
  68. package/dist/tsup/chunk-UQZRMTM3.js.map +1 -0
  69. package/dist/tsup/{chunk-JC6BEPE7.cjs → chunk-V3JSZR5P.cjs} +3 -3
  70. package/dist/tsup/{chunk-JC6BEPE7.cjs.map → chunk-V3JSZR5P.cjs.map} +1 -1
  71. package/dist/tsup/{chunk-OAXJWGMU.cjs → chunk-VBR35EQF.cjs} +271 -339
  72. package/dist/tsup/chunk-VBR35EQF.cjs.map +1 -0
  73. package/dist/tsup/{chunk-EIATSBYZ.js → chunk-VWYO36X4.js} +117 -17
  74. package/dist/tsup/chunk-VWYO36X4.js.map +1 -0
  75. package/dist/tsup/{chunk-JPXO2H55.js → chunk-WW27B6DM.js} +1452 -1416
  76. package/dist/tsup/chunk-WW27B6DM.js.map +1 -0
  77. package/dist/tsup/chunk-YAE3MEJM.cjs +49 -0
  78. package/dist/tsup/chunk-YAE3MEJM.cjs.map +1 -0
  79. package/dist/tsup/{chunk-SRIM3GHD.js → chunk-YGYGANCA.js} +473 -2323
  80. package/dist/tsup/chunk-YGYGANCA.js.map +1 -0
  81. package/dist/tsup/chunk-YZJWZBY5.cjs +481 -0
  82. package/dist/tsup/chunk-YZJWZBY5.cjs.map +1 -0
  83. package/dist/tsup/{chunk-ZFY5J2EP.cjs → chunk-ZZLJ5TSM.cjs} +39 -44
  84. package/dist/tsup/chunk-ZZLJ5TSM.cjs.map +1 -0
  85. package/dist/tsup/client/mod.cjs +10 -7
  86. package/dist/tsup/client/mod.cjs.map +1 -1
  87. package/dist/tsup/client/mod.d.cts +6 -6
  88. package/dist/tsup/client/mod.d.ts +6 -6
  89. package/dist/tsup/client/mod.js +11 -8
  90. package/dist/tsup/common/log.cjs +3 -3
  91. package/dist/tsup/common/log.js +2 -2
  92. package/dist/tsup/common/websocket.cjs +4 -4
  93. package/dist/tsup/common/websocket.js +3 -3
  94. package/dist/tsup/{config-Qj-zLJPc.d.ts → config-C2Wwnc69.d.ts} +142 -208
  95. package/dist/tsup/{config-BiNoIHRs.d.ts → config-DROwzBLT.d.cts} +82 -6
  96. package/dist/tsup/{config-BiNoIHRs.d.cts → config-DROwzBLT.d.ts} +82 -6
  97. package/dist/tsup/{config-iPj5l1bL.d.cts → config-ehT-_3BB.d.cts} +142 -208
  98. package/dist/tsup/{context-DzvH1PBK.d.cts → context-DGMJuAyc.d.ts} +16 -3
  99. package/dist/tsup/{context-CQCMuHND.d.ts → context-Dpp2RJbW.d.cts} +16 -3
  100. package/dist/tsup/db/drizzle/mod.cjs +3 -3
  101. package/dist/tsup/db/drizzle/mod.d.cts +1 -1
  102. package/dist/tsup/db/drizzle/mod.d.ts +1 -1
  103. package/dist/tsup/db/drizzle/mod.js +2 -2
  104. package/dist/tsup/db/mod.cjs +3 -3
  105. package/dist/tsup/db/mod.d.cts +1 -1
  106. package/dist/tsup/db/mod.d.ts +1 -1
  107. package/dist/tsup/db/mod.js +2 -2
  108. package/dist/tsup/{driver-Jo8v-kbU.d.ts → driver-CYZP9QYo.d.ts} +1 -1
  109. package/dist/tsup/{driver-iV8J-WMv.d.cts → driver-CoTFpipv.d.cts} +1 -1
  110. package/dist/tsup/driver-helpers/mod.cjs +7 -5
  111. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  112. package/dist/tsup/driver-helpers/mod.d.cts +17 -18
  113. package/dist/tsup/driver-helpers/mod.d.ts +17 -18
  114. package/dist/tsup/driver-helpers/mod.js +11 -9
  115. package/dist/tsup/driver-test-suite/mod.cjs +1275 -228
  116. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  117. package/dist/tsup/driver-test-suite/mod.d.cts +6 -5
  118. package/dist/tsup/driver-test-suite/mod.d.ts +6 -5
  119. package/dist/tsup/driver-test-suite/mod.js +1581 -534
  120. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  121. package/dist/tsup/inspector/mod.cjs +4 -4
  122. package/dist/tsup/inspector/mod.js +3 -3
  123. package/dist/tsup/mod.cjs +15 -9
  124. package/dist/tsup/mod.cjs.map +1 -1
  125. package/dist/tsup/mod.d.cts +9 -9
  126. package/dist/tsup/mod.d.ts +9 -9
  127. package/dist/tsup/mod.js +19 -13
  128. package/dist/tsup/sandbox/client.cjs +28 -0
  129. package/dist/tsup/sandbox/client.cjs.map +1 -0
  130. package/dist/tsup/sandbox/client.d.cts +88 -0
  131. package/dist/tsup/sandbox/client.d.ts +88 -0
  132. package/dist/tsup/sandbox/client.js +28 -0
  133. package/dist/tsup/sandbox/client.js.map +1 -0
  134. package/dist/tsup/sandbox/index.cjs +761 -0
  135. package/dist/tsup/sandbox/index.cjs.map +1 -0
  136. package/dist/tsup/sandbox/index.d.cts +120 -0
  137. package/dist/tsup/sandbox/index.d.ts +120 -0
  138. package/dist/tsup/sandbox/index.js +761 -0
  139. package/dist/tsup/sandbox/index.js.map +1 -0
  140. package/dist/tsup/sandbox/providers/computesdk.cjs +3 -0
  141. package/dist/tsup/sandbox/providers/computesdk.cjs.map +1 -0
  142. package/dist/tsup/sandbox/providers/computesdk.d.cts +7 -0
  143. package/dist/tsup/sandbox/providers/computesdk.d.ts +7 -0
  144. package/dist/tsup/sandbox/providers/computesdk.js +3 -0
  145. package/dist/tsup/sandbox/providers/computesdk.js.map +1 -0
  146. package/dist/tsup/sandbox/providers/daytona.cjs +3 -0
  147. package/dist/tsup/sandbox/providers/daytona.cjs.map +1 -0
  148. package/dist/tsup/sandbox/providers/daytona.d.cts +1 -0
  149. package/dist/tsup/sandbox/providers/daytona.d.ts +1 -0
  150. package/dist/tsup/sandbox/providers/daytona.js +3 -0
  151. package/dist/tsup/sandbox/providers/daytona.js.map +1 -0
  152. package/dist/tsup/sandbox/providers/docker.cjs +3 -0
  153. package/dist/tsup/sandbox/providers/docker.cjs.map +1 -0
  154. package/dist/tsup/sandbox/providers/docker.d.cts +1 -0
  155. package/dist/tsup/sandbox/providers/docker.d.ts +1 -0
  156. package/dist/tsup/sandbox/providers/docker.js +3 -0
  157. package/dist/tsup/sandbox/providers/docker.js.map +1 -0
  158. package/dist/tsup/sandbox/providers/e2b.cjs +3 -0
  159. package/dist/tsup/sandbox/providers/e2b.cjs.map +1 -0
  160. package/dist/tsup/sandbox/providers/e2b.d.cts +1 -0
  161. package/dist/tsup/sandbox/providers/e2b.d.ts +1 -0
  162. package/dist/tsup/sandbox/providers/e2b.js +3 -0
  163. package/dist/tsup/sandbox/providers/e2b.js.map +1 -0
  164. package/dist/tsup/sandbox/providers/local.cjs +3 -0
  165. package/dist/tsup/sandbox/providers/local.cjs.map +1 -0
  166. package/dist/tsup/sandbox/providers/local.d.cts +1 -0
  167. package/dist/tsup/sandbox/providers/local.d.ts +1 -0
  168. package/dist/tsup/sandbox/providers/local.js +3 -0
  169. package/dist/tsup/sandbox/providers/local.js.map +1 -0
  170. package/dist/tsup/sandbox/providers/modal.cjs +3 -0
  171. package/dist/tsup/sandbox/providers/modal.cjs.map +1 -0
  172. package/dist/tsup/sandbox/providers/modal.d.cts +1 -0
  173. package/dist/tsup/sandbox/providers/modal.d.ts +1 -0
  174. package/dist/tsup/sandbox/providers/modal.js +3 -0
  175. package/dist/tsup/sandbox/providers/modal.js.map +1 -0
  176. package/dist/tsup/sandbox/providers/vercel.cjs +3 -0
  177. package/dist/tsup/sandbox/providers/vercel.cjs.map +1 -0
  178. package/dist/tsup/sandbox/providers/vercel.d.cts +1 -0
  179. package/dist/tsup/sandbox/providers/vercel.d.ts +1 -0
  180. package/dist/tsup/sandbox/providers/vercel.js +3 -0
  181. package/dist/tsup/sandbox/providers/vercel.js.map +1 -0
  182. package/dist/tsup/serve-test-suite/mod.cjs +451 -327
  183. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  184. package/dist/tsup/serve-test-suite/mod.js +362 -238
  185. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  186. package/dist/tsup/test/mod.cjs +17 -14
  187. package/dist/tsup/test/mod.cjs.map +1 -1
  188. package/dist/tsup/test/mod.d.cts +4 -4
  189. package/dist/tsup/test/mod.d.ts +4 -4
  190. package/dist/tsup/test/mod.js +14 -11
  191. package/dist/tsup/test/mod.js.map +1 -1
  192. package/dist/tsup/utils.cjs +3 -3
  193. package/dist/tsup/utils.js +2 -2
  194. package/dist/tsup/workflow/mod.cjs +6 -6
  195. package/dist/tsup/workflow/mod.d.cts +13 -9
  196. package/dist/tsup/workflow/mod.d.ts +13 -9
  197. package/dist/tsup/workflow/mod.js +5 -5
  198. package/package.json +114 -15
  199. package/src/actor/config.ts +94 -88
  200. package/src/actor/conn/drivers/websocket.ts +2 -1
  201. package/src/actor/contexts/base/actor.ts +27 -4
  202. package/src/actor/database.ts +6 -1
  203. package/src/actor/driver.ts +27 -8
  204. package/src/actor/errors.ts +10 -5
  205. package/src/actor/instance/connection-manager.ts +4 -3
  206. package/src/actor/instance/kv.ts +52 -9
  207. package/src/actor/instance/mod.ts +135 -84
  208. package/src/actor/instance/queue-manager.ts +2 -5
  209. package/src/actor/instance/queue.ts +31 -29
  210. package/src/actor/instance/state-manager.ts +7 -1
  211. package/src/actor/instance/traces-driver.ts +34 -36
  212. package/src/actor/metrics.ts +137 -0
  213. package/src/actor/protocol/old.ts +9 -12
  214. package/src/actor/router-websocket-endpoints.ts +12 -6
  215. package/src/actor/router.ts +46 -9
  216. package/src/actor/schema.ts +14 -22
  217. package/src/client/actor-common.ts +65 -0
  218. package/src/client/actor-conn.ts +71 -9
  219. package/src/client/actor-handle.ts +22 -5
  220. package/src/client/client.ts +32 -6
  221. package/src/client/config.ts +18 -21
  222. package/src/client/mod.ts +1 -0
  223. package/src/client/queue.ts +8 -6
  224. package/src/common/inline-websocket-adapter.ts +8 -2
  225. package/src/common/router.ts +1 -4
  226. package/src/common/utils.ts +2 -5
  227. package/src/db/config.ts +10 -5
  228. package/src/db/drizzle/mod.ts +51 -41
  229. package/src/db/mod.ts +54 -29
  230. package/src/db/shared.ts +42 -8
  231. package/src/driver-helpers/mod.ts +2 -1
  232. package/src/driver-helpers/sqlite-pool.ts +42 -0
  233. package/src/driver-helpers/utils.ts +0 -20
  234. package/src/driver-test-suite/mod.ts +11 -1
  235. package/src/driver-test-suite/tests/access-control.ts +19 -12
  236. package/src/driver-test-suite/tests/action-features.ts +20 -8
  237. package/src/driver-test-suite/tests/actor-conn.ts +94 -8
  238. package/src/driver-test-suite/tests/actor-db-kv-stats.ts +282 -0
  239. package/src/driver-test-suite/tests/actor-db-raw.ts +6 -2
  240. package/src/driver-test-suite/tests/actor-db.ts +101 -31
  241. package/src/driver-test-suite/tests/actor-inspector.ts +174 -32
  242. package/src/driver-test-suite/tests/actor-kv.ts +79 -33
  243. package/src/driver-test-suite/tests/actor-lifecycle.ts +4 -12
  244. package/src/driver-test-suite/tests/actor-queue.ts +125 -17
  245. package/src/driver-test-suite/tests/actor-run.ts +59 -55
  246. package/src/driver-test-suite/tests/actor-sandbox.ts +78 -0
  247. package/src/driver-test-suite/tests/actor-schedule.ts +1 -4
  248. package/src/driver-test-suite/tests/actor-sleep.ts +111 -0
  249. package/src/driver-test-suite/tests/actor-workflow.ts +387 -3
  250. package/src/driver-test-suite/tests/conn-error-serialization.ts +3 -1
  251. package/src/driver-test-suite/tests/raw-websocket.ts +5 -1
  252. package/src/drivers/default.ts +1 -3
  253. package/src/drivers/engine/actor-driver.ts +94 -21
  254. package/src/drivers/engine/config.ts +4 -12
  255. package/src/drivers/engine/mod.ts +1 -5
  256. package/src/drivers/file-system/actor.ts +43 -8
  257. package/src/drivers/file-system/global-state.ts +180 -64
  258. package/src/drivers/file-system/kv-limits.ts +1 -1
  259. package/src/drivers/file-system/sqlite-runtime.ts +13 -4
  260. package/src/engine-process/mod.ts +5 -1
  261. package/src/inspector/actor-inspector.ts +47 -21
  262. package/src/inspector/config.ts +1 -4
  263. package/src/inspector/mod.browser.ts +2 -2
  264. package/src/inspector/mod.ts +4 -1
  265. package/src/inspector/serve-ui.ts +0 -1
  266. package/src/inspector/workflow-history-json.ts +309 -0
  267. package/src/manager/gateway.ts +6 -2
  268. package/src/manager/router.ts +3 -3
  269. package/src/registry/config/index.ts +65 -12
  270. package/src/registry/config/runner.ts +19 -4
  271. package/src/registry/index.ts +42 -89
  272. package/src/sandbox/actor/db.ts +36 -0
  273. package/src/sandbox/actor/index.ts +476 -0
  274. package/src/sandbox/actor/session.ts +350 -0
  275. package/src/sandbox/actor.test.ts +36 -0
  276. package/src/sandbox/client.test.ts +484 -0
  277. package/src/sandbox/client.ts +707 -0
  278. package/src/sandbox/config.ts +151 -0
  279. package/src/sandbox/index.ts +41 -0
  280. package/src/sandbox/providers/computesdk.ts +1 -0
  281. package/src/sandbox/providers/daytona.ts +1 -0
  282. package/src/sandbox/providers/docker.ts +1 -0
  283. package/src/sandbox/providers/e2b.ts +1 -0
  284. package/src/sandbox/providers/local.ts +1 -0
  285. package/src/sandbox/providers/modal.ts +1 -0
  286. package/src/sandbox/providers/vercel.ts +1 -0
  287. package/src/sandbox/session-persist-driver.ts +180 -0
  288. package/src/sandbox/types.ts +138 -0
  289. package/src/serverless/configure.ts +5 -3
  290. package/src/serverless/router.test.ts +17 -9
  291. package/src/serverless/router.ts +20 -13
  292. package/src/test/mod.ts +3 -4
  293. package/src/utils/endpoint-parser.test.ts +6 -2
  294. package/src/utils/endpoint-parser.ts +6 -2
  295. package/src/utils/env-vars.ts +0 -2
  296. package/src/utils/node.ts +1 -1
  297. package/src/utils/serve.ts +10 -5
  298. package/src/utils.ts +6 -1
  299. package/src/workflow/constants.ts +1 -2
  300. package/src/workflow/context.ts +42 -9
  301. package/src/workflow/driver.ts +57 -23
  302. package/src/workflow/inspector.ts +7 -13
  303. package/src/workflow/mod.ts +91 -4
  304. package/dist/tsup/chunk-6LJAZ5R4.cjs +0 -96
  305. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +0 -1
  306. package/dist/tsup/chunk-7HTNH26M.js.map +0 -1
  307. package/dist/tsup/chunk-7WF2QSIC.cjs.map +0 -1
  308. package/dist/tsup/chunk-D2SPAJVT.cjs +0 -645
  309. package/dist/tsup/chunk-D2SPAJVT.cjs.map +0 -1
  310. package/dist/tsup/chunk-EIATSBYZ.js.map +0 -1
  311. package/dist/tsup/chunk-HYPIHCDT.cjs.map +0 -1
  312. package/dist/tsup/chunk-IIJNPVPQ.cjs.map +0 -1
  313. package/dist/tsup/chunk-JPXO2H55.js.map +0 -1
  314. package/dist/tsup/chunk-KJSYAUOM.js.map +0 -1
  315. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +0 -1
  316. package/dist/tsup/chunk-MIX2KB6U.js.map +0 -1
  317. package/dist/tsup/chunk-N4KRDJ56.js.map +0 -1
  318. package/dist/tsup/chunk-OAXJWGMU.cjs.map +0 -1
  319. package/dist/tsup/chunk-PB5AEMKQ.cjs.map +0 -1
  320. package/dist/tsup/chunk-R5OQUSLN.js +0 -645
  321. package/dist/tsup/chunk-R5OQUSLN.js.map +0 -1
  322. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +0 -1
  323. package/dist/tsup/chunk-SRIM3GHD.js.map +0 -1
  324. package/dist/tsup/chunk-TADUYCHF.js.map +0 -1
  325. package/dist/tsup/chunk-TI5PXQGG.cjs.map +0 -1
  326. package/dist/tsup/chunk-U5SMSA27.cjs.map +0 -1
  327. package/dist/tsup/chunk-VKVNIQRQ.js.map +0 -1
  328. package/dist/tsup/chunk-WY2SHWXQ.js.map +0 -1
  329. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +0 -1
  330. package/dist/tsup/chunk-ZPWOYQHN.js.map +0 -1
  331. package/src/db/sqlite-vfs.ts +0 -12
  332. /package/dist/tsup/{chunk-S662Y6ZU.js.map → chunk-EONWXYMN.js.map} +0 -0
  333. /package/dist/tsup/{chunk-2OK7S6QF.js.map → chunk-I5I6OALK.js.map} +0 -0
@@ -0,0 +1,1486 @@
1
+ import {
2
+ WORKFLOW_GUARD_KV_KEY,
3
+ workflow
4
+ } from "./chunk-SVHJSM2E.js";
5
+ import {
6
+ actor,
7
+ event,
8
+ queue
9
+ } from "./chunk-UQZRMTM3.js";
10
+ import {
11
+ db
12
+ } from "./chunk-MLK3GY6P.js";
13
+ import {
14
+ getLogger,
15
+ promiseWithResolvers
16
+ } from "./chunk-VWYO36X4.js";
17
+
18
+ // src/driver-test-suite/log.ts
19
+ function logger() {
20
+ return getLogger("test-suite");
21
+ }
22
+
23
+ // fixtures/driver-test-suite/hibernation.ts
24
+ var HIBERNATION_SLEEP_TIMEOUT = 500;
25
+ var hibernationActor = actor({
26
+ state: {
27
+ sleepCount: 0,
28
+ wakeCount: 0
29
+ },
30
+ createConnState: (c) => {
31
+ return {
32
+ count: 0,
33
+ connectCount: 0,
34
+ disconnectCount: 0
35
+ };
36
+ },
37
+ onWake: (c) => {
38
+ c.state.wakeCount += 1;
39
+ },
40
+ onSleep: (c) => {
41
+ c.state.sleepCount += 1;
42
+ },
43
+ onConnect: (c, conn) => {
44
+ conn.state.connectCount += 1;
45
+ },
46
+ onDisconnect: (c, conn) => {
47
+ conn.state.disconnectCount += 1;
48
+ },
49
+ actions: {
50
+ // Basic RPC that returns a simple value
51
+ ping: (c) => {
52
+ return "pong";
53
+ },
54
+ // Increment the connection's count
55
+ connIncrement: (c) => {
56
+ c.conn.state.count += 1;
57
+ return c.conn.state.count;
58
+ },
59
+ // Get the connection's count
60
+ getConnCount: (c) => {
61
+ return c.conn.state.count;
62
+ },
63
+ // Get the connection's lifecycle counts
64
+ getConnLifecycleCounts: (c) => {
65
+ return {
66
+ connectCount: c.conn.state.connectCount,
67
+ disconnectCount: c.conn.state.disconnectCount
68
+ };
69
+ },
70
+ // Get all connection IDs
71
+ getConnectionIds: (c) => {
72
+ return c.conns.entries().map((x) => x[0]).toArray();
73
+ },
74
+ // Get actor sleep/wake counts
75
+ getActorCounts: (c) => {
76
+ return {
77
+ sleepCount: c.state.sleepCount,
78
+ wakeCount: c.state.wakeCount
79
+ };
80
+ },
81
+ // Trigger sleep
82
+ triggerSleep: (c) => {
83
+ c.sleep();
84
+ }
85
+ },
86
+ options: {
87
+ sleepTimeout: HIBERNATION_SLEEP_TIMEOUT
88
+ }
89
+ });
90
+
91
+ // fixtures/driver-test-suite/sleep.ts
92
+ var SLEEP_TIMEOUT = 1e3;
93
+ var sleep = actor({
94
+ state: { startCount: 0, sleepCount: 0 },
95
+ onWake: (c) => {
96
+ c.state.startCount += 1;
97
+ },
98
+ onSleep: (c) => {
99
+ c.state.sleepCount += 1;
100
+ },
101
+ actions: {
102
+ triggerSleep: (c) => {
103
+ c.sleep();
104
+ },
105
+ getCounts: (c) => {
106
+ return {
107
+ startCount: c.state.startCount,
108
+ sleepCount: c.state.sleepCount
109
+ };
110
+ },
111
+ setAlarm: async (c, duration) => {
112
+ await c.schedule.after(duration, "onAlarm");
113
+ },
114
+ onAlarm: (c) => {
115
+ c.log.info("alarm called");
116
+ }
117
+ },
118
+ options: {
119
+ sleepTimeout: SLEEP_TIMEOUT
120
+ }
121
+ });
122
+ var sleepWithLongRpc = actor({
123
+ state: { startCount: 0, sleepCount: 0 },
124
+ createVars: () => ({}),
125
+ onWake: (c) => {
126
+ c.state.startCount += 1;
127
+ },
128
+ onSleep: (c) => {
129
+ c.state.sleepCount += 1;
130
+ },
131
+ actions: {
132
+ getCounts: (c) => {
133
+ return {
134
+ startCount: c.state.startCount,
135
+ sleepCount: c.state.sleepCount
136
+ };
137
+ },
138
+ longRunningRpc: async (c) => {
139
+ c.log.info("starting long running rpc");
140
+ c.vars.longRunningResolve = promiseWithResolvers(
141
+ (reason) => c.log.warn({
142
+ msg: "unhandled long running rpc rejection",
143
+ reason
144
+ })
145
+ );
146
+ c.broadcast("waiting");
147
+ await c.vars.longRunningResolve.promise;
148
+ c.log.info("finished long running rpc");
149
+ },
150
+ finishLongRunningRpc: (c) => {
151
+ var _a;
152
+ return (_a = c.vars.longRunningResolve) == null ? void 0 : _a.resolve();
153
+ }
154
+ },
155
+ options: {
156
+ sleepTimeout: SLEEP_TIMEOUT
157
+ }
158
+ });
159
+ var sleepWithWaitUntilMessage = actor({
160
+ state: {
161
+ startCount: 0,
162
+ sleepCount: 0,
163
+ waitUntilMessageCount: 0
164
+ },
165
+ events: {
166
+ sleeping: event()
167
+ },
168
+ onWake: (c) => {
169
+ c.state.startCount += 1;
170
+ },
171
+ onSleep: (c) => {
172
+ c.state.sleepCount += 1;
173
+ },
174
+ actions: {
175
+ triggerSleep: (c) => {
176
+ c.waitUntil(
177
+ new Promise((resolve) => {
178
+ setTimeout(() => {
179
+ c.state.waitUntilMessageCount += 1;
180
+ c.conn.send("sleeping", {
181
+ sleepCount: c.state.sleepCount,
182
+ startCount: c.state.startCount
183
+ });
184
+ resolve();
185
+ }, 10);
186
+ })
187
+ );
188
+ c.sleep();
189
+ },
190
+ getCounts: (c) => {
191
+ return {
192
+ startCount: c.state.startCount,
193
+ sleepCount: c.state.sleepCount,
194
+ waitUntilMessageCount: c.state.waitUntilMessageCount
195
+ };
196
+ }
197
+ },
198
+ options: {
199
+ sleepTimeout: SLEEP_TIMEOUT
200
+ }
201
+ });
202
+ var sleepWithRawHttp = actor({
203
+ state: { startCount: 0, sleepCount: 0, requestCount: 0 },
204
+ onWake: (c) => {
205
+ c.state.startCount += 1;
206
+ },
207
+ onSleep: (c) => {
208
+ c.state.sleepCount += 1;
209
+ },
210
+ onRequest: async (c, request) => {
211
+ c.state.requestCount += 1;
212
+ const url = new URL(request.url);
213
+ if (url.pathname === "/long-request") {
214
+ const duration = parseInt(
215
+ url.searchParams.get("duration") || "1000"
216
+ );
217
+ c.log.info({ msg: "starting long fetch request", duration });
218
+ await new Promise((resolve) => setTimeout(resolve, duration));
219
+ c.log.info("finished long fetch request");
220
+ return new Response(JSON.stringify({ completed: true }), {
221
+ headers: { "Content-Type": "application/json" }
222
+ });
223
+ }
224
+ return new Response("Not Found", { status: 404 });
225
+ },
226
+ actions: {
227
+ getCounts: (c) => {
228
+ return {
229
+ startCount: c.state.startCount,
230
+ sleepCount: c.state.sleepCount,
231
+ requestCount: c.state.requestCount
232
+ };
233
+ }
234
+ },
235
+ options: {
236
+ sleepTimeout: SLEEP_TIMEOUT
237
+ }
238
+ });
239
+ var sleepWithRawWebSocket = actor({
240
+ state: { startCount: 0, sleepCount: 0, connectionCount: 0 },
241
+ onWake: (c) => {
242
+ c.state.startCount += 1;
243
+ },
244
+ onSleep: (c) => {
245
+ c.state.sleepCount += 1;
246
+ },
247
+ onWebSocket: (c, websocket) => {
248
+ c.state.connectionCount += 1;
249
+ c.log.info({
250
+ msg: "websocket connected",
251
+ connectionCount: c.state.connectionCount
252
+ });
253
+ websocket.send(
254
+ JSON.stringify({
255
+ type: "connected",
256
+ connectionCount: c.state.connectionCount
257
+ })
258
+ );
259
+ websocket.addEventListener("message", (event2) => {
260
+ const data = event2.data;
261
+ if (typeof data === "string") {
262
+ try {
263
+ const parsed = JSON.parse(data);
264
+ if (parsed.type === "getCounts") {
265
+ websocket.send(
266
+ JSON.stringify({
267
+ type: "counts",
268
+ startCount: c.state.startCount,
269
+ sleepCount: c.state.sleepCount,
270
+ connectionCount: c.state.connectionCount
271
+ })
272
+ );
273
+ } else if (parsed.type === "keepAlive") {
274
+ websocket.send(JSON.stringify({ type: "ack" }));
275
+ }
276
+ } catch {
277
+ websocket.send(data);
278
+ }
279
+ }
280
+ });
281
+ websocket.addEventListener("close", () => {
282
+ c.state.connectionCount -= 1;
283
+ c.log.info({
284
+ msg: "websocket disconnected",
285
+ connectionCount: c.state.connectionCount
286
+ });
287
+ });
288
+ },
289
+ actions: {
290
+ getCounts: (c) => {
291
+ return {
292
+ startCount: c.state.startCount,
293
+ sleepCount: c.state.sleepCount,
294
+ connectionCount: c.state.connectionCount
295
+ };
296
+ }
297
+ },
298
+ options: {
299
+ sleepTimeout: SLEEP_TIMEOUT
300
+ }
301
+ });
302
+ var sleepWithNoSleepOption = actor({
303
+ state: { startCount: 0, sleepCount: 0 },
304
+ onWake: (c) => {
305
+ c.state.startCount += 1;
306
+ },
307
+ onSleep: (c) => {
308
+ c.state.sleepCount += 1;
309
+ },
310
+ actions: {
311
+ getCounts: (c) => {
312
+ return {
313
+ startCount: c.state.startCount,
314
+ sleepCount: c.state.sleepCount
315
+ };
316
+ }
317
+ },
318
+ options: {
319
+ sleepTimeout: SLEEP_TIMEOUT,
320
+ noSleep: true
321
+ }
322
+ });
323
+ var sleepWithPreventSleep = actor({
324
+ state: {
325
+ startCount: 0,
326
+ sleepCount: 0,
327
+ preventSleepOnWake: false
328
+ },
329
+ onWake: (c) => {
330
+ c.state.startCount += 1;
331
+ c.setPreventSleep(c.state.preventSleepOnWake);
332
+ },
333
+ onSleep: (c) => {
334
+ c.state.sleepCount += 1;
335
+ },
336
+ actions: {
337
+ triggerSleep: (c) => {
338
+ c.sleep();
339
+ },
340
+ getStatus: (c) => {
341
+ return {
342
+ startCount: c.state.startCount,
343
+ sleepCount: c.state.sleepCount,
344
+ preventSleep: c.preventSleep,
345
+ preventSleepOnWake: c.state.preventSleepOnWake
346
+ };
347
+ },
348
+ setPreventSleep: (c, prevent) => {
349
+ c.setPreventSleep(prevent);
350
+ return c.preventSleep;
351
+ },
352
+ setPreventSleepOnWake: (c, prevent) => {
353
+ c.state.preventSleepOnWake = prevent;
354
+ return c.state.preventSleepOnWake;
355
+ }
356
+ },
357
+ options: {
358
+ sleepTimeout: SLEEP_TIMEOUT
359
+ }
360
+ });
361
+
362
+ // fixtures/driver-test-suite/queue.ts
363
+ var queueSchemas = {
364
+ greeting: queue(),
365
+ self: queue(),
366
+ a: queue(),
367
+ b: queue(),
368
+ c: queue(),
369
+ one: queue(),
370
+ two: queue(),
371
+ missing: queue(),
372
+ abort: queue(),
373
+ tasks: queue(),
374
+ timeout: queue(),
375
+ nowait: queue(),
376
+ twice: queue()
377
+ };
378
+ var queueActor = actor({
379
+ state: {},
380
+ queues: queueSchemas,
381
+ actions: {
382
+ receiveOne: async (c, name, opts) => {
383
+ const message = await c.queue.next({
384
+ names: [name],
385
+ timeout: opts == null ? void 0 : opts.timeout
386
+ });
387
+ if (!message) {
388
+ return null;
389
+ }
390
+ return { name: message.name, body: message.body };
391
+ },
392
+ receiveMany: async (c, names, opts) => {
393
+ const messages = await c.queue.nextBatch({
394
+ names,
395
+ count: opts == null ? void 0 : opts.count,
396
+ timeout: opts == null ? void 0 : opts.timeout
397
+ });
398
+ return messages.map((message) => ({
399
+ name: message.name,
400
+ body: message.body
401
+ }));
402
+ },
403
+ receiveRequest: async (c, request) => {
404
+ const messages = await c.queue.nextBatch(request);
405
+ return messages.map((message) => ({
406
+ name: message.name,
407
+ body: message.body
408
+ }));
409
+ },
410
+ tryReceiveMany: async (c, request) => {
411
+ const messages = await c.queue.tryNextBatch(request);
412
+ return messages.map((message) => ({
413
+ name: message.name,
414
+ body: message.body
415
+ }));
416
+ },
417
+ receiveWithIterator: async (c, name) => {
418
+ for await (const message of c.queue.iter({ names: [name] })) {
419
+ return { name: message.name, body: message.body };
420
+ }
421
+ return null;
422
+ },
423
+ receiveWithAsyncIterator: async (c) => {
424
+ for await (const message of c.queue.iter()) {
425
+ return { name: message.name, body: message.body };
426
+ }
427
+ return null;
428
+ },
429
+ sendToSelf: async (c, name, body) => {
430
+ const client = c.client();
431
+ const handle = client.queueActor.getForId(c.actorId);
432
+ await handle.send(name, body);
433
+ return true;
434
+ },
435
+ waitForAbort: async (c) => {
436
+ setTimeout(() => {
437
+ c.destroy();
438
+ }, 10);
439
+ await c.queue.next({ names: ["abort"], timeout: 1e4 });
440
+ return true;
441
+ },
442
+ waitForSignalAbort: async (c) => {
443
+ const controller = new AbortController();
444
+ controller.abort();
445
+ try {
446
+ await c.queue.next({
447
+ names: ["abort"],
448
+ timeout: 1e4,
449
+ signal: controller.signal
450
+ });
451
+ return { ok: false };
452
+ } catch (error) {
453
+ const actorError = error;
454
+ return { group: actorError.group, code: actorError.code };
455
+ }
456
+ },
457
+ waitForActorAbortWithSignal: async (c) => {
458
+ const controller = new AbortController();
459
+ setTimeout(() => {
460
+ c.destroy();
461
+ }, 10);
462
+ try {
463
+ await c.queue.next({
464
+ names: ["abort"],
465
+ timeout: 1e4,
466
+ signal: controller.signal
467
+ });
468
+ return { ok: false };
469
+ } catch (error) {
470
+ const actorError = error;
471
+ return { group: actorError.group, code: actorError.code };
472
+ }
473
+ },
474
+ iterWithSignalAbort: async (c) => {
475
+ const controller = new AbortController();
476
+ controller.abort();
477
+ for await (const _message of c.queue.iter({
478
+ names: ["abort"],
479
+ signal: controller.signal
480
+ })) {
481
+ return { ok: false };
482
+ }
483
+ return { ok: true };
484
+ },
485
+ receiveAndComplete: async (c, name) => {
486
+ const message = await c.queue.next({
487
+ names: [name],
488
+ completable: true
489
+ });
490
+ if (!message) {
491
+ return null;
492
+ }
493
+ await message.complete({ echo: message.body });
494
+ return { name: message.name, body: message.body };
495
+ },
496
+ receiveWithoutComplete: async (c, name) => {
497
+ const message = await c.queue.next({
498
+ names: [name],
499
+ completable: true
500
+ });
501
+ if (!message) {
502
+ return null;
503
+ }
504
+ return { name: message.name, body: message.body };
505
+ },
506
+ receiveManualThenNextWithoutComplete: async (c, name) => {
507
+ const message = await c.queue.next({
508
+ names: [name],
509
+ completable: true
510
+ });
511
+ if (!message) {
512
+ return { ok: false, reason: "no_message" };
513
+ }
514
+ try {
515
+ await c.queue.next({ names: [name], timeout: 0 });
516
+ c.destroy();
517
+ return { ok: false, reason: "next_succeeded" };
518
+ } catch (error) {
519
+ c.destroy();
520
+ const actorError = error;
521
+ return { group: actorError.group, code: actorError.code };
522
+ }
523
+ },
524
+ receiveAndCompleteTwice: async (c, name) => {
525
+ const message = await c.queue.next({
526
+ names: [name],
527
+ completable: true
528
+ });
529
+ if (!message) {
530
+ return null;
531
+ }
532
+ await message.complete({ ok: true });
533
+ try {
534
+ await message.complete({ ok: true });
535
+ return { ok: false };
536
+ } catch (error) {
537
+ const actorError = error;
538
+ return { group: actorError.group, code: actorError.code };
539
+ }
540
+ },
541
+ receiveWithoutCompleteMethod: async (c, name) => {
542
+ const message = await c.queue.next({
543
+ names: [name],
544
+ completable: true
545
+ });
546
+ return {
547
+ hasComplete: message !== void 0 && typeof message.complete === "function"
548
+ };
549
+ }
550
+ }
551
+ });
552
+ var queueLimitedActor = actor({
553
+ state: {},
554
+ queues: {
555
+ message: queue(),
556
+ oversize: queue()
557
+ },
558
+ actions: {},
559
+ options: {
560
+ maxQueueSize: 1,
561
+ maxQueueMessageSize: 64
562
+ }
563
+ });
564
+ var MANY_QUEUE_NAMES = Array.from(
565
+ { length: 32 },
566
+ (_, i) => `cmd.${i}`
567
+ );
568
+ var manyQueueSchemas = Object.fromEntries(
569
+ MANY_QUEUE_NAMES.map((name) => [
570
+ name,
571
+ queue()
572
+ ])
573
+ );
574
+ var manyQueueChildActor = actor({
575
+ queues: manyQueueSchemas,
576
+ actions: {
577
+ ping: (c) => ({ label: c.state.label, pong: true }),
578
+ getSnapshot: (c) => c.state
579
+ },
580
+ createState: (_c, label) => ({
581
+ label,
582
+ started: false,
583
+ processed: []
584
+ }),
585
+ run: async (c) => {
586
+ c.state.started = true;
587
+ for await (const msg of c.queue.iter({
588
+ names: [...MANY_QUEUE_NAMES],
589
+ completable: true
590
+ })) {
591
+ c.state.processed.push(msg.name);
592
+ await msg.complete({
593
+ ok: true,
594
+ index: msg.body.index
595
+ });
596
+ }
597
+ }
598
+ });
599
+ var manyQueueActionParentActor = actor({
600
+ state: {
601
+ spawned: []
602
+ },
603
+ actions: {
604
+ spawnChild: async (c, key) => {
605
+ const client = c.client();
606
+ await client.manyQueueChildActor.getOrCreate([key], {
607
+ createWithInput: key
608
+ });
609
+ c.state.spawned.push(key);
610
+ return { key };
611
+ },
612
+ getSpawned: (c) => c.state.spawned
613
+ }
614
+ });
615
+ var manyQueueRunParentActor = actor({
616
+ state: {
617
+ spawned: []
618
+ },
619
+ queues: {
620
+ spawn: queue()
621
+ },
622
+ actions: {
623
+ queueSpawn: async (c, key) => {
624
+ await c.queue.send("spawn", { key });
625
+ return { queued: true };
626
+ },
627
+ getSpawned: (c) => c.state.spawned
628
+ },
629
+ run: async (c) => {
630
+ for await (const msg of c.queue.iter({
631
+ names: ["spawn"],
632
+ completable: true
633
+ })) {
634
+ const client = c.client();
635
+ await client.manyQueueChildActor.getOrCreate([msg.body.key], {
636
+ createWithInput: msg.body.key
637
+ });
638
+ c.state.spawned.push(msg.body.key);
639
+ await msg.complete({ ok: true });
640
+ }
641
+ }
642
+ });
643
+
644
+ // fixtures/driver-test-suite/run.ts
645
+ var RUN_SLEEP_TIMEOUT = 1e3;
646
+ var runWithTicks = actor({
647
+ state: {
648
+ tickCount: 0,
649
+ lastTickAt: 0,
650
+ runStarted: false,
651
+ runExited: false
652
+ },
653
+ run: async (c) => {
654
+ c.state.runStarted = true;
655
+ c.log.info("run handler started");
656
+ while (!c.aborted) {
657
+ c.state.tickCount += 1;
658
+ c.state.lastTickAt = Date.now();
659
+ c.log.info({ msg: "tick", tickCount: c.state.tickCount });
660
+ await new Promise((resolve) => {
661
+ const timeout = setTimeout(resolve, 50);
662
+ c.abortSignal.addEventListener(
663
+ "abort",
664
+ () => {
665
+ clearTimeout(timeout);
666
+ resolve();
667
+ },
668
+ { once: true }
669
+ );
670
+ });
671
+ }
672
+ c.state.runExited = true;
673
+ c.log.info("run handler exiting gracefully");
674
+ },
675
+ actions: {
676
+ getState: (c) => ({
677
+ tickCount: c.state.tickCount,
678
+ lastTickAt: c.state.lastTickAt,
679
+ runStarted: c.state.runStarted,
680
+ runExited: c.state.runExited
681
+ })
682
+ },
683
+ options: {
684
+ sleepTimeout: RUN_SLEEP_TIMEOUT,
685
+ runStopTimeout: 1e3
686
+ }
687
+ });
688
+ var runWithQueueConsumer = actor({
689
+ state: {
690
+ messagesReceived: [],
691
+ runStarted: false,
692
+ wakeCount: 0
693
+ },
694
+ onWake: (c) => {
695
+ c.state.wakeCount += 1;
696
+ },
697
+ run: async (c) => {
698
+ c.state.runStarted = true;
699
+ c.log.info("run handler started, waiting for messages");
700
+ while (!c.aborted) {
701
+ const message = await c.queue.next({ names: ["messages"] });
702
+ if (message) {
703
+ c.log.info({ msg: "received message", body: message.body });
704
+ c.state.messagesReceived.push({
705
+ name: message.name,
706
+ body: message.body
707
+ });
708
+ }
709
+ }
710
+ c.log.info("run handler exiting gracefully");
711
+ },
712
+ actions: {
713
+ getState: (c) => ({
714
+ messagesReceived: c.state.messagesReceived,
715
+ runStarted: c.state.runStarted,
716
+ wakeCount: c.state.wakeCount
717
+ }),
718
+ sendMessage: async (c, body) => {
719
+ const client = c.client();
720
+ const handle = client.runWithQueueConsumer.getForId(c.actorId);
721
+ await handle.send("messages", body);
722
+ return true;
723
+ }
724
+ },
725
+ options: {
726
+ sleepTimeout: RUN_SLEEP_TIMEOUT,
727
+ runStopTimeout: 1e3
728
+ }
729
+ });
730
+ var runWithEarlyExit = actor({
731
+ state: {
732
+ runStarted: false,
733
+ destroyCalled: false,
734
+ sleepCount: 0,
735
+ wakeCount: 0
736
+ },
737
+ onWake: (c) => {
738
+ c.state.wakeCount += 1;
739
+ },
740
+ onSleep: (c) => {
741
+ c.state.sleepCount += 1;
742
+ },
743
+ run: async (c) => {
744
+ c.state.runStarted = true;
745
+ c.log.info("run handler started, will exit after delay");
746
+ await new Promise((resolve) => setTimeout(resolve, 200));
747
+ c.log.info("run handler exiting early");
748
+ },
749
+ onDestroy: (c) => {
750
+ c.state.destroyCalled = true;
751
+ },
752
+ actions: {
753
+ getState: (c) => ({
754
+ runStarted: c.state.runStarted,
755
+ destroyCalled: c.state.destroyCalled,
756
+ sleepCount: c.state.sleepCount,
757
+ wakeCount: c.state.wakeCount
758
+ })
759
+ },
760
+ options: {
761
+ sleepTimeout: RUN_SLEEP_TIMEOUT
762
+ }
763
+ });
764
+ var runWithError = actor({
765
+ state: {
766
+ runStarted: false,
767
+ destroyCalled: false,
768
+ sleepCount: 0,
769
+ wakeCount: 0
770
+ },
771
+ onWake: (c) => {
772
+ c.state.wakeCount += 1;
773
+ },
774
+ onSleep: (c) => {
775
+ c.state.sleepCount += 1;
776
+ },
777
+ run: async (c) => {
778
+ c.state.runStarted = true;
779
+ c.log.info("run handler started, will throw error");
780
+ await new Promise((resolve) => setTimeout(resolve, 200));
781
+ throw new Error("intentional error in run handler");
782
+ },
783
+ onDestroy: (c) => {
784
+ c.state.destroyCalled = true;
785
+ },
786
+ actions: {
787
+ getState: (c) => ({
788
+ runStarted: c.state.runStarted,
789
+ destroyCalled: c.state.destroyCalled,
790
+ sleepCount: c.state.sleepCount,
791
+ wakeCount: c.state.wakeCount
792
+ })
793
+ },
794
+ options: {
795
+ sleepTimeout: RUN_SLEEP_TIMEOUT
796
+ }
797
+ });
798
+ var runWithoutHandler = actor({
799
+ state: {
800
+ wakeCount: 0
801
+ },
802
+ onWake: (c) => {
803
+ c.state.wakeCount += 1;
804
+ },
805
+ actions: {
806
+ getState: (c) => ({
807
+ wakeCount: c.state.wakeCount
808
+ })
809
+ },
810
+ options: {
811
+ sleepTimeout: RUN_SLEEP_TIMEOUT
812
+ }
813
+ });
814
+
815
+ // fixtures/driver-test-suite/workflow.ts
816
+ import { Loop } from "@rivetkit/workflow-engine";
817
+ var WORKFLOW_QUEUE_NAME = "workflow-default";
818
+ var WORKFLOW_NESTED_QUEUE_NAME = "workflow-nested";
819
+ var workflowCounterActor = actor({
820
+ state: {
821
+ runCount: 0,
822
+ guardTriggered: false,
823
+ history: []
824
+ },
825
+ run: workflow(async (ctx) => {
826
+ await ctx.loop("counter", async (loopCtx) => {
827
+ try {
828
+ loopCtx.state;
829
+ } catch {
830
+ }
831
+ await loopCtx.step("increment", async () => {
832
+ incrementWorkflowCounter(loopCtx);
833
+ });
834
+ await loopCtx.sleep("idle", 25);
835
+ return Loop.continue(void 0);
836
+ });
837
+ }),
838
+ actions: {
839
+ getState: async (c) => {
840
+ const guardFlag = await c.kv.get(WORKFLOW_GUARD_KV_KEY);
841
+ if (guardFlag === "true") {
842
+ c.state.guardTriggered = true;
843
+ }
844
+ return c.state;
845
+ }
846
+ },
847
+ options: {
848
+ sleepTimeout: 50
849
+ }
850
+ });
851
+ var workflowQueueActor = actor({
852
+ state: {
853
+ received: []
854
+ },
855
+ queues: {
856
+ [WORKFLOW_QUEUE_NAME]: queue()
857
+ },
858
+ run: workflow(async (ctx) => {
859
+ await ctx.loop("queue", async (loopCtx) => {
860
+ const message = await loopCtx.queue.next("queue-wait", {
861
+ names: [WORKFLOW_QUEUE_NAME],
862
+ completable: true
863
+ });
864
+ if (!message.complete) {
865
+ return Loop.continue(void 0);
866
+ }
867
+ const complete = message.complete;
868
+ await loopCtx.step("store-message", async () => {
869
+ await storeWorkflowQueueMessage(
870
+ loopCtx,
871
+ message.body,
872
+ complete
873
+ );
874
+ });
875
+ return Loop.continue(void 0);
876
+ });
877
+ }),
878
+ actions: {
879
+ getMessages: (c) => c.state.received,
880
+ sendAndWait: async (c, payload) => {
881
+ const client = c.client();
882
+ const handle = client.workflowQueueActor.getForId(c.actorId);
883
+ return await handle.send(WORKFLOW_QUEUE_NAME, payload, {
884
+ wait: true,
885
+ timeout: 1e3
886
+ });
887
+ }
888
+ }
889
+ });
890
+ var workflowNestedLoopActor = actor({
891
+ state: {
892
+ processed: []
893
+ },
894
+ queues: {
895
+ [WORKFLOW_NESTED_QUEUE_NAME]: queue()
896
+ },
897
+ run: workflow(async (ctx) => {
898
+ await ctx.loop("command-loop", async (loopCtx) => {
899
+ var _a;
900
+ const message = await loopCtx.queue.next("wait", {
901
+ names: [WORKFLOW_NESTED_QUEUE_NAME],
902
+ completable: true
903
+ });
904
+ let itemIndex = 0;
905
+ await loopCtx.loop("process-items", async (subLoopCtx) => {
906
+ const item = message.body.items[itemIndex];
907
+ if (item === void 0) {
908
+ return Loop.break(void 0);
909
+ }
910
+ await subLoopCtx.step(`process-item-${itemIndex}`, async () => {
911
+ subLoopCtx.state.processed.push(item);
912
+ });
913
+ itemIndex += 1;
914
+ return Loop.continue(void 0);
915
+ });
916
+ await ((_a = message.complete) == null ? void 0 : _a.call(message, { processed: message.body.items.length }));
917
+ return Loop.continue(void 0);
918
+ });
919
+ }),
920
+ actions: {
921
+ getState: (c) => c.state
922
+ },
923
+ options: {
924
+ sleepTimeout: 50
925
+ }
926
+ });
927
+ var workflowNestedJoinActor = actor({
928
+ state: {
929
+ processed: []
930
+ },
931
+ queues: {
932
+ [WORKFLOW_NESTED_QUEUE_NAME]: queue()
933
+ },
934
+ run: workflow(async (ctx) => {
935
+ await ctx.loop("command-loop", async (loopCtx) => {
936
+ var _a;
937
+ const message = await loopCtx.queue.next("wait", {
938
+ names: [WORKFLOW_NESTED_QUEUE_NAME],
939
+ completable: true
940
+ });
941
+ await loopCtx.join(
942
+ "process-items",
943
+ Object.fromEntries(
944
+ message.body.items.map((item, index) => [
945
+ `item-${index}`,
946
+ {
947
+ run: async (branchCtx) => await branchCtx.step(
948
+ `process-item-${index}`,
949
+ async () => {
950
+ branchCtx.state.processed.push(item);
951
+ return item;
952
+ }
953
+ )
954
+ }
955
+ ])
956
+ )
957
+ );
958
+ await ((_a = message.complete) == null ? void 0 : _a.call(message, { processed: message.body.items.length }));
959
+ return Loop.continue(void 0);
960
+ });
961
+ }),
962
+ actions: {
963
+ getState: (c) => c.state
964
+ },
965
+ options: {
966
+ sleepTimeout: 50
967
+ }
968
+ });
969
+ var workflowNestedRaceActor = actor({
970
+ state: {
971
+ processed: []
972
+ },
973
+ queues: {
974
+ [WORKFLOW_NESTED_QUEUE_NAME]: queue()
975
+ },
976
+ run: workflow(async (ctx) => {
977
+ await ctx.loop("command-loop", async (loopCtx) => {
978
+ var _a;
979
+ const message = await loopCtx.queue.next("wait", {
980
+ names: [WORKFLOW_NESTED_QUEUE_NAME],
981
+ completable: true
982
+ });
983
+ const item = message.body.items[0];
984
+ if (item !== void 0) {
985
+ await loopCtx.race("process-item", [
986
+ {
987
+ name: "fast",
988
+ run: async (raceCtx) => await raceCtx.step("process-fast", async () => {
989
+ raceCtx.state.processed.push(item);
990
+ return item;
991
+ })
992
+ },
993
+ {
994
+ name: "slow",
995
+ run: async (raceCtx) => {
996
+ await new Promise((resolve) => {
997
+ if (raceCtx.abortSignal.aborted) {
998
+ resolve();
999
+ return;
1000
+ }
1001
+ raceCtx.abortSignal.addEventListener(
1002
+ "abort",
1003
+ () => resolve(),
1004
+ { once: true }
1005
+ );
1006
+ });
1007
+ return "slow";
1008
+ }
1009
+ }
1010
+ ]);
1011
+ }
1012
+ await ((_a = message.complete) == null ? void 0 : _a.call(message, { processed: message.body.items.length }));
1013
+ return Loop.continue(void 0);
1014
+ });
1015
+ }),
1016
+ actions: {
1017
+ getState: (c) => c.state
1018
+ },
1019
+ options: {
1020
+ sleepTimeout: 50
1021
+ }
1022
+ });
1023
+ var workflowSpawnChildActor = actor({
1024
+ createState: (_c, input) => ({
1025
+ label: input ?? "",
1026
+ started: false,
1027
+ processed: []
1028
+ }),
1029
+ queues: {
1030
+ work: queue()
1031
+ },
1032
+ run: workflow(async (ctx) => {
1033
+ await ctx.step("mark-started", async () => {
1034
+ ctx.state.started = true;
1035
+ });
1036
+ await ctx.loop("cmd-loop", async (loopCtx) => {
1037
+ var _a;
1038
+ const message = await loopCtx.queue.next(
1039
+ "wait-cmd",
1040
+ {
1041
+ names: ["work"],
1042
+ completable: true
1043
+ }
1044
+ );
1045
+ await loopCtx.step("process-cmd", async () => {
1046
+ loopCtx.state.processed.push(message.body.task);
1047
+ });
1048
+ await ((_a = message.complete) == null ? void 0 : _a.call(message, { ok: true }));
1049
+ return Loop.continue(void 0);
1050
+ });
1051
+ }),
1052
+ actions: {
1053
+ getState: (c) => c.state
1054
+ },
1055
+ options: {
1056
+ sleepTimeout: 50
1057
+ }
1058
+ });
1059
+ var workflowSpawnParentActor = actor({
1060
+ state: {
1061
+ results: []
1062
+ },
1063
+ queues: {
1064
+ spawn: queue()
1065
+ },
1066
+ run: workflow(async (ctx) => {
1067
+ await ctx.loop("parent-loop", async (loopCtx) => {
1068
+ var _a;
1069
+ const message = await loopCtx.queue.next(
1070
+ "wait-parent",
1071
+ {
1072
+ names: ["spawn"],
1073
+ completable: true
1074
+ }
1075
+ );
1076
+ await loopCtx.step("spawn-child", async () => {
1077
+ try {
1078
+ const client = loopCtx.client();
1079
+ const handle = client.workflowSpawnChildActor.getOrCreate(
1080
+ [message.body.key],
1081
+ {
1082
+ createWithInput: message.body.key
1083
+ }
1084
+ );
1085
+ const result = await handle.send(
1086
+ "work",
1087
+ { task: "hello" },
1088
+ {
1089
+ wait: true,
1090
+ timeout: 500
1091
+ }
1092
+ );
1093
+ loopCtx.state.results.push({
1094
+ key: message.body.key,
1095
+ result,
1096
+ error: null
1097
+ });
1098
+ } catch (error) {
1099
+ loopCtx.state.results.push({
1100
+ key: message.body.key,
1101
+ result: null,
1102
+ error: error instanceof Error ? error.message : String(error)
1103
+ });
1104
+ }
1105
+ });
1106
+ await ((_a = message.complete) == null ? void 0 : _a.call(message, { ok: true }));
1107
+ return Loop.continue(void 0);
1108
+ });
1109
+ }),
1110
+ actions: {
1111
+ triggerSpawn: async (c, key) => {
1112
+ await c.queue.send("spawn", { key });
1113
+ return { queued: true };
1114
+ },
1115
+ getState: (c) => c.state
1116
+ },
1117
+ options: {
1118
+ sleepTimeout: 50
1119
+ }
1120
+ });
1121
+ var workflowAccessActor = actor({
1122
+ db: db({
1123
+ onMigrate: async (rawDb) => {
1124
+ await rawDb.execute(`
1125
+ CREATE TABLE IF NOT EXISTS workflow_access_log (
1126
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
1127
+ created_at INTEGER NOT NULL
1128
+ )
1129
+ `);
1130
+ }
1131
+ }),
1132
+ state: {
1133
+ outsideDbError: null,
1134
+ outsideClientError: null,
1135
+ insideDbCount: 0,
1136
+ insideClientAvailable: false
1137
+ },
1138
+ run: workflow(async (ctx) => {
1139
+ await ctx.loop("access", async (loopCtx) => {
1140
+ let outsideDbError = null;
1141
+ let outsideClientError = null;
1142
+ try {
1143
+ loopCtx.db;
1144
+ } catch (error) {
1145
+ outsideDbError = error instanceof Error ? error.message : String(error);
1146
+ }
1147
+ try {
1148
+ loopCtx.client();
1149
+ } catch (error) {
1150
+ outsideClientError = error instanceof Error ? error.message : String(error);
1151
+ }
1152
+ await loopCtx.step("access-step", async () => {
1153
+ await updateWorkflowAccessState(
1154
+ loopCtx,
1155
+ outsideDbError,
1156
+ outsideClientError
1157
+ );
1158
+ });
1159
+ await loopCtx.sleep("idle", 25);
1160
+ return Loop.continue(void 0);
1161
+ });
1162
+ }),
1163
+ actions: {
1164
+ getState: (c) => c.state
1165
+ }
1166
+ });
1167
+ var workflowSleepActor = actor({
1168
+ state: {
1169
+ ticks: 0
1170
+ },
1171
+ run: workflow(async (ctx) => {
1172
+ await ctx.loop("sleep", async (loopCtx) => {
1173
+ await loopCtx.step("tick", async () => {
1174
+ incrementWorkflowSleepTick(loopCtx);
1175
+ });
1176
+ await loopCtx.sleep("delay", 40);
1177
+ return Loop.continue(void 0);
1178
+ });
1179
+ }),
1180
+ actions: {
1181
+ getState: (c) => c.state
1182
+ },
1183
+ options: {
1184
+ sleepTimeout: 50
1185
+ }
1186
+ });
1187
+ var workflowStopTeardownActor = actor({
1188
+ state: {
1189
+ wakeAts: [],
1190
+ sleepAts: []
1191
+ },
1192
+ queues: {
1193
+ never: queue()
1194
+ },
1195
+ onWake: (c) => {
1196
+ c.state.wakeAts.push(Date.now());
1197
+ },
1198
+ onSleep: (c) => {
1199
+ c.state.sleepAts.push(Date.now());
1200
+ },
1201
+ run: workflow(async (ctx) => {
1202
+ await ctx.loop("wait-forever", async (loopCtx) => {
1203
+ await loopCtx.queue.next("wait-for-never", {
1204
+ names: ["never"]
1205
+ });
1206
+ return Loop.continue(void 0);
1207
+ });
1208
+ }),
1209
+ actions: {
1210
+ getTimeline: (c) => ({
1211
+ wakeAts: [...c.state.wakeAts],
1212
+ sleepAts: [...c.state.sleepAts]
1213
+ })
1214
+ },
1215
+ options: {
1216
+ sleepTimeout: 75,
1217
+ runStopTimeout: 2e3
1218
+ }
1219
+ });
1220
+ var workflowCompleteActor = actor({
1221
+ state: {
1222
+ startCount: 0,
1223
+ sleepCount: 0,
1224
+ runCount: 0
1225
+ },
1226
+ onWake: (c) => {
1227
+ c.state.startCount += 1;
1228
+ },
1229
+ onSleep: (c) => {
1230
+ c.state.sleepCount += 1;
1231
+ },
1232
+ run: workflow(async (ctx) => {
1233
+ await ctx.step("complete", async () => {
1234
+ ctx.state.runCount += 1;
1235
+ });
1236
+ }),
1237
+ actions: {
1238
+ getState: (c) => c.state
1239
+ },
1240
+ options: {
1241
+ sleepTimeout: 50
1242
+ }
1243
+ });
1244
+ var workflowDestroyActor = actor({
1245
+ onDestroy: async (c) => {
1246
+ const client = c.client();
1247
+ const observer = client.destroyObserver.getOrCreate(["observer"]);
1248
+ await observer.notifyDestroyed(c.key.join("/"));
1249
+ },
1250
+ run: workflow(async (ctx) => {
1251
+ await ctx.step("destroy", async () => {
1252
+ ctx.destroy();
1253
+ });
1254
+ })
1255
+ });
1256
+ var workflowFailedStepActor = actor({
1257
+ state: {
1258
+ startCount: 0,
1259
+ sleepCount: 0,
1260
+ runCount: 0
1261
+ },
1262
+ onWake: (c) => {
1263
+ c.state.startCount += 1;
1264
+ },
1265
+ onSleep: (c) => {
1266
+ c.state.sleepCount += 1;
1267
+ },
1268
+ run: workflow(async (ctx) => {
1269
+ await ctx.step({
1270
+ name: "fail",
1271
+ maxRetries: 1,
1272
+ run: async () => {
1273
+ ctx.state.runCount += 1;
1274
+ throw new Error("workflow step failed");
1275
+ }
1276
+ });
1277
+ }),
1278
+ actions: {
1279
+ getState: (c) => c.state
1280
+ },
1281
+ options: {
1282
+ sleepTimeout: 50
1283
+ }
1284
+ });
1285
+ var workflowErrorHookActor = actor({
1286
+ state: {
1287
+ attempts: 0,
1288
+ events: []
1289
+ },
1290
+ run: workflow(
1291
+ async (ctx) => {
1292
+ await ctx.step({
1293
+ name: "flaky",
1294
+ maxRetries: 2,
1295
+ retryBackoffBase: 1,
1296
+ retryBackoffMax: 1,
1297
+ run: async () => {
1298
+ ctx.state.attempts += 1;
1299
+ if (ctx.state.attempts === 1) {
1300
+ throw new Error("workflow hook failed");
1301
+ }
1302
+ }
1303
+ });
1304
+ await ctx.sleep("idle", 6e4);
1305
+ },
1306
+ {
1307
+ onError: (c, event2) => {
1308
+ c.state.events.push(event2);
1309
+ }
1310
+ }
1311
+ ),
1312
+ actions: {
1313
+ getErrorState: (c) => c.state
1314
+ }
1315
+ });
1316
+ var workflowErrorHookSleepActor = actor({
1317
+ state: {
1318
+ attempts: 0,
1319
+ wakeCount: 0,
1320
+ sleepCount: 0,
1321
+ events: []
1322
+ },
1323
+ onWake: (c) => {
1324
+ c.state.wakeCount += 1;
1325
+ },
1326
+ onSleep: (c) => {
1327
+ c.state.sleepCount += 1;
1328
+ },
1329
+ run: workflow(
1330
+ async (ctx) => {
1331
+ await ctx.step({
1332
+ name: "flaky",
1333
+ maxRetries: 2,
1334
+ retryBackoffBase: 1,
1335
+ retryBackoffMax: 1,
1336
+ run: async () => {
1337
+ ctx.state.attempts += 1;
1338
+ if (ctx.state.attempts === 1) {
1339
+ throw new Error("workflow hook failed");
1340
+ }
1341
+ }
1342
+ });
1343
+ await ctx.sleep("idle", 6e4);
1344
+ },
1345
+ {
1346
+ onError: (c, event2) => {
1347
+ c.state.events.push(event2);
1348
+ }
1349
+ }
1350
+ ),
1351
+ actions: {
1352
+ getErrorState: (c) => c.state,
1353
+ triggerSleep: (c) => {
1354
+ c.sleep();
1355
+ }
1356
+ }
1357
+ });
1358
+ var workflowErrorHookEffectsActor = actor({
1359
+ state: {
1360
+ attempts: 0,
1361
+ lastError: null,
1362
+ errorCount: 0
1363
+ },
1364
+ events: {
1365
+ workflowError: event()
1366
+ },
1367
+ queues: {
1368
+ start: queue(),
1369
+ errors: queue()
1370
+ },
1371
+ run: workflow(
1372
+ async (ctx) => {
1373
+ await ctx.queue.next("start", {
1374
+ names: ["start"]
1375
+ });
1376
+ await ctx.step({
1377
+ name: "flaky",
1378
+ maxRetries: 2,
1379
+ retryBackoffBase: 1,
1380
+ retryBackoffMax: 1,
1381
+ run: async () => {
1382
+ ctx.state.attempts += 1;
1383
+ if (ctx.state.attempts === 1) {
1384
+ throw new Error("workflow hook failed");
1385
+ }
1386
+ }
1387
+ });
1388
+ await ctx.sleep("idle", 6e4);
1389
+ },
1390
+ {
1391
+ onError: async (c, event2) => {
1392
+ c.state.lastError = event2;
1393
+ c.state.errorCount += 1;
1394
+ c.broadcast("workflowError", event2);
1395
+ await c.queue.send("errors", event2);
1396
+ }
1397
+ }
1398
+ ),
1399
+ actions: {
1400
+ getErrorState: (c) => c.state,
1401
+ startWorkflow: async (c) => {
1402
+ const client = c.client();
1403
+ const handle = client.workflowErrorHookEffectsActor.getForId(
1404
+ c.actorId
1405
+ );
1406
+ await handle.send("start", null);
1407
+ },
1408
+ receiveQueuedError: async (c) => {
1409
+ const message = await c.queue.next({
1410
+ names: ["errors"],
1411
+ timeout: 1e3
1412
+ });
1413
+ return (message == null ? void 0 : message.body) ?? null;
1414
+ }
1415
+ }
1416
+ });
1417
+ function incrementWorkflowCounter(ctx) {
1418
+ ctx.state.runCount += 1;
1419
+ ctx.state.history.push(ctx.state.runCount);
1420
+ }
1421
+ async function storeWorkflowQueueMessage(ctx, body, complete) {
1422
+ ctx.state.received.push(body);
1423
+ await complete({ echo: body });
1424
+ }
1425
+ async function updateWorkflowAccessState(ctx, outsideDbError, outsideClientError) {
1426
+ var _a;
1427
+ await ctx.db.execute(
1428
+ `INSERT INTO workflow_access_log (created_at) VALUES (${Date.now()})`
1429
+ );
1430
+ const counts = await ctx.db.execute(
1431
+ `SELECT COUNT(*) as count FROM workflow_access_log`
1432
+ );
1433
+ const client = ctx.client();
1434
+ ctx.state.outsideDbError = outsideDbError;
1435
+ ctx.state.outsideClientError = outsideClientError;
1436
+ ctx.state.insideDbCount = ((_a = counts[0]) == null ? void 0 : _a.count) ?? 0;
1437
+ ctx.state.insideClientAvailable = typeof client.workflowQueueActor.getForId === "function";
1438
+ }
1439
+ function incrementWorkflowSleepTick(ctx) {
1440
+ ctx.state.ticks += 1;
1441
+ }
1442
+
1443
+ export {
1444
+ logger,
1445
+ HIBERNATION_SLEEP_TIMEOUT,
1446
+ hibernationActor,
1447
+ SLEEP_TIMEOUT,
1448
+ sleep,
1449
+ sleepWithLongRpc,
1450
+ sleepWithWaitUntilMessage,
1451
+ sleepWithRawHttp,
1452
+ sleepWithRawWebSocket,
1453
+ sleepWithNoSleepOption,
1454
+ sleepWithPreventSleep,
1455
+ queueActor,
1456
+ queueLimitedActor,
1457
+ MANY_QUEUE_NAMES,
1458
+ manyQueueChildActor,
1459
+ manyQueueActionParentActor,
1460
+ manyQueueRunParentActor,
1461
+ RUN_SLEEP_TIMEOUT,
1462
+ runWithTicks,
1463
+ runWithQueueConsumer,
1464
+ runWithEarlyExit,
1465
+ runWithError,
1466
+ runWithoutHandler,
1467
+ WORKFLOW_QUEUE_NAME,
1468
+ WORKFLOW_NESTED_QUEUE_NAME,
1469
+ workflowCounterActor,
1470
+ workflowQueueActor,
1471
+ workflowNestedLoopActor,
1472
+ workflowNestedJoinActor,
1473
+ workflowNestedRaceActor,
1474
+ workflowSpawnChildActor,
1475
+ workflowSpawnParentActor,
1476
+ workflowAccessActor,
1477
+ workflowSleepActor,
1478
+ workflowStopTeardownActor,
1479
+ workflowCompleteActor,
1480
+ workflowDestroyActor,
1481
+ workflowFailedStepActor,
1482
+ workflowErrorHookActor,
1483
+ workflowErrorHookSleepActor,
1484
+ workflowErrorHookEffectsActor
1485
+ };
1486
+ //# sourceMappingURL=chunk-DK46YYCJ.js.map