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,294 @@
1
+ import { describe, expect, test, vi } from "vitest";
2
+ import type { ActorError } from "@/client/mod";
3
+ import type { DriverTestConfig } from "../mod";
4
+ import { setupDriverTest } from "../utils";
5
+
6
+ export function runActorDestroyTests(driverTestConfig: DriverTestConfig) {
7
+ describe("Actor Destroy Tests", () => {
8
+ test("actor destroy clears state (without connect)", async (c) => {
9
+ const { client } = await setupDriverTest(c, driverTestConfig);
10
+
11
+ const actorKey = "test-destroy-without-connect";
12
+
13
+ // Get destroy observer
14
+ const observer = client.destroyObserver.getOrCreate(["observer"]);
15
+ await observer.reset();
16
+
17
+ // Create actor
18
+ const destroyActor = client.destroyActor.getOrCreate([actorKey]);
19
+
20
+ // Update state and save immediately
21
+ await destroyActor.setValue(42);
22
+
23
+ // Verify state was saved
24
+ const value = await destroyActor.getValue();
25
+ expect(value).toBe(42);
26
+
27
+ // Get actor ID before destroying
28
+ const actorId = await destroyActor.resolve();
29
+
30
+ // Destroy the actor
31
+ await destroyActor.destroy();
32
+
33
+ // Wait until the observer confirms the actor was destroyed
34
+ await vi.waitFor(async () => {
35
+ const wasDestroyed = await observer.wasDestroyed(actorKey);
36
+ expect(wasDestroyed, "actor onDestroy not called").toBeTruthy();
37
+ });
38
+
39
+ // Wait until the actor is fully cleaned up (getForId returns error)
40
+ await vi.waitFor(async () => {
41
+ let actorRunning = false;
42
+ try {
43
+ await client.destroyActor.getForId(actorId).getValue();
44
+ actorRunning = true;
45
+ } catch (err) {
46
+ expect((err as ActorError).group).toBe("actor");
47
+ expect((err as ActorError).code).toBe("not_found");
48
+ }
49
+
50
+ expect(actorRunning, "actor still running").toBeFalsy();
51
+ });
52
+
53
+ // Verify actor no longer exists via getForId
54
+ let existsById = false;
55
+ try {
56
+ await client.destroyActor.getForId(actorId).getValue();
57
+ existsById = true;
58
+ } catch (err) {
59
+ expect((err as ActorError).group).toBe("actor");
60
+ expect((err as ActorError).code).toBe("not_found");
61
+ }
62
+ expect(
63
+ existsById,
64
+ "actor should not exist after destroy",
65
+ ).toBeFalsy();
66
+
67
+ // Verify actor no longer exists via get
68
+ let existsByKey = false;
69
+ try {
70
+ await client.destroyActor
71
+ .get(["test-destroy-without-connect"])
72
+ .resolve();
73
+ existsByKey = true;
74
+ } catch (err) {
75
+ expect((err as ActorError).group).toBe("actor");
76
+ expect((err as ActorError).code).toBe("not_found");
77
+ }
78
+ expect(
79
+ existsByKey,
80
+ "actor should not exist after destroy",
81
+ ).toBeFalsy();
82
+
83
+ // Create new actor with same key using getOrCreate
84
+ const newActor = client.destroyActor.getOrCreate([
85
+ "test-destroy-without-connect",
86
+ ]);
87
+
88
+ // Verify state is fresh (default value, not the old value)
89
+ const newValue = await newActor.getValue();
90
+ expect(newValue).toBe(0);
91
+ });
92
+
93
+ test("actor destroy clears state (with connect)", async (c) => {
94
+ const { client } = await setupDriverTest(c, driverTestConfig);
95
+
96
+ const actorKey = "test-destroy-with-connect";
97
+
98
+ // Get destroy observer
99
+ const observer = client.destroyObserver.getOrCreate(["observer"]);
100
+ await observer.reset();
101
+
102
+ // Create actor handle
103
+ const destroyActorHandle = client.destroyActor.getOrCreate([
104
+ actorKey,
105
+ ]);
106
+
107
+ // Get actor ID before destroying
108
+ const actorId = await destroyActorHandle.resolve();
109
+
110
+ // Create persistent connection
111
+ const destroyActor = destroyActorHandle.connect();
112
+
113
+ // Update state and save immediately
114
+ await destroyActor.setValue(99);
115
+
116
+ // Verify state was saved
117
+ const value = await destroyActor.getValue();
118
+ expect(value).toBe(99);
119
+
120
+ // Destroy the actor
121
+ await destroyActor.destroy();
122
+
123
+ // Dispose the connection
124
+ await destroyActor.dispose();
125
+
126
+ // Wait until the observer confirms the actor was destroyed
127
+ await vi.waitFor(async () => {
128
+ const wasDestroyed = await observer.wasDestroyed(actorKey);
129
+ expect(wasDestroyed, "actor onDestroy not called").toBeTruthy();
130
+ });
131
+
132
+ // Wait until the actor is fully cleaned up (getForId returns error)
133
+ await vi.waitFor(async () => {
134
+ let actorRunning = false;
135
+ try {
136
+ await client.destroyActor.getForId(actorId).getValue();
137
+ actorRunning = true;
138
+ } catch (err) {
139
+ expect((err as ActorError).group).toBe("actor");
140
+ expect((err as ActorError).code).toBe("not_found");
141
+ }
142
+
143
+ expect(actorRunning, "actor still running").toBeFalsy();
144
+ });
145
+
146
+ // Verify actor no longer exists via getForId
147
+ let existsById = false;
148
+ try {
149
+ await client.destroyActor.getForId(actorId).getValue();
150
+ existsById = true;
151
+ } catch (err) {
152
+ expect((err as ActorError).group).toBe("actor");
153
+ expect((err as ActorError).code).toBe("not_found");
154
+ }
155
+ expect(
156
+ existsById,
157
+ "actor should not exist after destroy",
158
+ ).toBeFalsy();
159
+
160
+ // Verify actor no longer exists via get
161
+ let existsByKey = false;
162
+ try {
163
+ await client.destroyActor
164
+ .get(["test-destroy-with-connect"])
165
+ .resolve();
166
+ existsByKey = true;
167
+ } catch (err) {
168
+ expect((err as ActorError).group).toBe("actor");
169
+ expect((err as ActorError).code).toBe("not_found");
170
+ }
171
+ expect(
172
+ existsByKey,
173
+ "actor should not exist after destroy",
174
+ ).toBeFalsy();
175
+
176
+ // Create new actor with same key using getOrCreate
177
+ const newActor = client.destroyActor.getOrCreate([
178
+ "test-destroy-with-connect",
179
+ ]);
180
+
181
+ // Verify state is fresh (default value, not the old value)
182
+ const newValue = await newActor.getValue();
183
+ expect(newValue).toBe(0);
184
+ });
185
+
186
+ test("actor destroy allows recreation via getOrCreate with resolve", async (c) => {
187
+ const { client } = await setupDriverTest(c, driverTestConfig);
188
+
189
+ const actorKey = "test-destroy-getorcreate-resolve";
190
+
191
+ // Get destroy observer
192
+ const observer = client.destroyObserver.getOrCreate(["observer"]);
193
+ await observer.reset();
194
+
195
+ // Create actor
196
+ const destroyActor = client.destroyActor.getOrCreate([actorKey]);
197
+
198
+ // Update state and save immediately
199
+ await destroyActor.setValue(123);
200
+
201
+ // Verify state was saved
202
+ const value = await destroyActor.getValue();
203
+ expect(value).toBe(123);
204
+
205
+ // Get actor ID before destroying
206
+ const actorId = await destroyActor.resolve();
207
+
208
+ // Destroy the actor
209
+ await destroyActor.destroy();
210
+
211
+ // Wait until the observer confirms the actor was destroyed
212
+ await vi.waitFor(async () => {
213
+ const wasDestroyed = await observer.wasDestroyed(actorKey);
214
+ expect(wasDestroyed, "actor onDestroy not called").toBeTruthy();
215
+ });
216
+
217
+ // Wait until the actor is fully cleaned up
218
+ await vi.waitFor(async () => {
219
+ let actorRunning = false;
220
+ try {
221
+ await client.destroyActor.getForId(actorId).getValue();
222
+ actorRunning = true;
223
+ } catch (err) {
224
+ expect((err as ActorError).group).toBe("actor");
225
+ expect((err as ActorError).code).toBe("not_found");
226
+ }
227
+
228
+ expect(actorRunning, "actor still running").toBeFalsy();
229
+ });
230
+
231
+ // Recreate using getOrCreate with resolve
232
+ const newHandle = client.destroyActor.getOrCreate([actorKey]);
233
+ const newActorId = await newHandle.resolve();
234
+
235
+ // Verify state is fresh (default value, not the old value)
236
+ const newValue = await newHandle.getValue();
237
+ expect(newValue).toBe(0);
238
+ });
239
+
240
+ test("actor destroy allows recreation via create", async (c) => {
241
+ const { client } = await setupDriverTest(c, driverTestConfig);
242
+
243
+ const actorKey = "test-destroy-create";
244
+
245
+ // Get destroy observer
246
+ const observer = client.destroyObserver.getOrCreate(["observer"]);
247
+ await observer.reset();
248
+
249
+ // Create actor using create()
250
+ const initialHandle = await client.destroyActor.create([actorKey]);
251
+
252
+ // Update state and save immediately
253
+ await initialHandle.setValue(456);
254
+
255
+ // Verify state was saved
256
+ const value = await initialHandle.getValue();
257
+ expect(value).toBe(456);
258
+
259
+ // Get actor ID before destroying
260
+ const actorId = await initialHandle.resolve();
261
+
262
+ // Destroy the actor
263
+ await initialHandle.destroy();
264
+
265
+ // Wait until the observer confirms the actor was destroyed
266
+ await vi.waitFor(async () => {
267
+ const wasDestroyed = await observer.wasDestroyed(actorKey);
268
+ expect(wasDestroyed, "actor onDestroy not called").toBeTruthy();
269
+ });
270
+
271
+ // Wait until the actor is fully cleaned up
272
+ await vi.waitFor(async () => {
273
+ let actorRunning = false;
274
+ try {
275
+ await client.destroyActor.getForId(actorId).getValue();
276
+ actorRunning = true;
277
+ } catch (err) {
278
+ expect((err as ActorError).group).toBe("actor");
279
+ expect((err as ActorError).code).toBe("not_found");
280
+ }
281
+
282
+ expect(actorRunning, "actor still running").toBeFalsy();
283
+ });
284
+
285
+ // Recreate using create()
286
+ const newHandle = await client.destroyActor.create([actorKey]);
287
+ const newActorId = await newHandle.resolve();
288
+
289
+ // Verify state is fresh (default value, not the old value)
290
+ const newValue = await newHandle.getValue();
291
+ expect(newValue).toBe(0);
292
+ });
293
+ });
294
+ }
@@ -0,0 +1,18 @@
1
+ import { describe } from "vitest";
2
+ import type { DriverTestConfig } from "../mod";
3
+ import { runActorScheduleTests } from "./actor-schedule";
4
+ import { runActorSleepTests } from "./actor-sleep";
5
+ import { runActorStateTests } from "./actor-state";
6
+
7
+ export function runActorDriverTests(driverTestConfig: DriverTestConfig) {
8
+ describe("Actor Driver Tests", () => {
9
+ // Run state persistence tests
10
+ runActorStateTests(driverTestConfig);
11
+
12
+ // Run scheduled alarms tests
13
+ runActorScheduleTests(driverTestConfig);
14
+
15
+ // Run actor sleep tests
16
+ runActorSleepTests(driverTestConfig);
17
+ });
18
+ }
@@ -0,0 +1,150 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import {
3
+ INTERNAL_ERROR_CODE,
4
+ INTERNAL_ERROR_DESCRIPTION,
5
+ } from "@/actor/errors";
6
+ import { assertUnreachable } from "@/actor/utils";
7
+ import type { DriverTestConfig } from "../mod";
8
+ import { setupDriverTest } from "../utils";
9
+
10
+ export function runActorErrorHandlingTests(driverTestConfig: DriverTestConfig) {
11
+ describe("Actor Error Handling Tests", () => {
12
+ describe("UserError Handling", () => {
13
+ test("should handle simple UserError with message", async (c) => {
14
+ const { client } = await setupDriverTest(c, driverTestConfig);
15
+
16
+ // Try to call an action that throws a simple UserError
17
+ const handle = client.errorHandlingActor.getOrCreate();
18
+
19
+ try {
20
+ await handle.throwSimpleError();
21
+ // If we get here, the test should fail
22
+ expect(true).toBe(false); // This should not be reached
23
+ } catch (error: any) {
24
+ // Verify the error properties
25
+ expect(error.message).toBe("Simple error message");
26
+ // Default code is "user_error" when not specified
27
+ expect(error.code).toBe("user_error");
28
+ // No metadata by default
29
+ expect(error.metadata).toBeUndefined();
30
+ }
31
+ });
32
+
33
+ test("should handle detailed UserError with code and metadata", async (c) => {
34
+ const { client } = await setupDriverTest(c, driverTestConfig);
35
+
36
+ // Try to call an action that throws a detailed UserError
37
+ const handle = client.errorHandlingActor.getOrCreate();
38
+
39
+ try {
40
+ await handle.throwDetailedError();
41
+ // If we get here, the test should fail
42
+ expect(true).toBe(false); // This should not be reached
43
+ } catch (error: any) {
44
+ // Verify the error properties
45
+ expect(error.message).toBe("Detailed error message");
46
+ expect(error.code).toBe("detailed_error");
47
+ expect(error.metadata).toBeDefined();
48
+ expect(error.metadata.reason).toBe("test");
49
+ expect(error.metadata.timestamp).toBeDefined();
50
+ }
51
+ });
52
+ });
53
+
54
+ describe("Internal Error Handling", () => {
55
+ test("should convert internal errors to safe format", async (c) => {
56
+ const { client } = await setupDriverTest(c, driverTestConfig);
57
+
58
+ // Try to call an action that throws an internal error
59
+ const handle = client.errorHandlingActor.getOrCreate();
60
+
61
+ try {
62
+ await handle.throwInternalError();
63
+ // If we get here, the test should fail
64
+ expect(true).toBe(false); // This should not be reached
65
+ } catch (error: any) {
66
+ // Verify the error is converted to a safe format
67
+ expect(error.code).toBe(INTERNAL_ERROR_CODE);
68
+ // Original error details should not be exposed
69
+ expect(error.message).toBe(INTERNAL_ERROR_DESCRIPTION);
70
+ }
71
+ });
72
+ });
73
+
74
+ // TODO: Does not work with fake timers
75
+ describe.skip("Action Timeout", () => {
76
+ test("should handle action timeouts with custom duration", async (c) => {
77
+ const { client } = await setupDriverTest(c, driverTestConfig);
78
+
79
+ // Call an action that should time out
80
+ const handle = client.errorHandlingActor.getOrCreate();
81
+
82
+ // This should throw a timeout error because errorHandlingActor has
83
+ // a 500ms timeout and this action tries to run for much longer
84
+ const timeoutPromise = handle.timeoutAction();
85
+
86
+ try {
87
+ await timeoutPromise;
88
+ // If we get here, the test failed - timeout didn't occur
89
+ expect(true).toBe(false); // This should not be reached
90
+ } catch (error: any) {
91
+ // Verify it's a timeout error
92
+ expect(error.message).toMatch(/timed out/i);
93
+ }
94
+ });
95
+
96
+ test("should successfully run actions within timeout", async (c) => {
97
+ const { client } = await setupDriverTest(c, driverTestConfig);
98
+
99
+ // Call an action with a delay shorter than the timeout
100
+ const handle = client.errorHandlingActor.getOrCreate();
101
+
102
+ // This should succeed because 200ms < 500ms timeout
103
+ const result = await handle.delayedAction(200);
104
+ expect(result).toBe("Completed after 200ms");
105
+ });
106
+
107
+ test("should respect different timeouts for different actors", async (c) => {
108
+ const { client } = await setupDriverTest(c, driverTestConfig);
109
+
110
+ // The following actors have different timeout settings:
111
+ // customTimeoutActor: 200ms timeout
112
+ // standardTimeoutActor: default timeout (much longer)
113
+
114
+ // This should fail - 300ms delay with 200ms timeout
115
+ try {
116
+ await client.customTimeoutActor.getOrCreate().slowAction();
117
+ // Should not reach here
118
+ expect(true).toBe(false);
119
+ } catch (error: any) {
120
+ expect(error.message).toMatch(/timed out/i);
121
+ }
122
+
123
+ // This should succeed - 50ms delay with 200ms timeout
124
+ const quickResult = await client.customTimeoutActor
125
+ .getOrCreate()
126
+ .quickAction();
127
+ expect(quickResult).toBe("Quick action completed");
128
+ });
129
+ });
130
+
131
+ describe("Error Recovery", () => {
132
+ test("should continue working after errors", async (c) => {
133
+ const { client } = await setupDriverTest(c, driverTestConfig);
134
+
135
+ const handle = client.errorHandlingActor.getOrCreate();
136
+
137
+ // Trigger an error
138
+ try {
139
+ await handle.throwSimpleError();
140
+ } catch (error) {
141
+ // Ignore error
142
+ }
143
+
144
+ // Actor should still work after error
145
+ const result = await handle.successfulAction();
146
+ expect(result).toBe("success");
147
+ });
148
+ });
149
+ });
150
+ }