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,312 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { ActorError } from "@/client/mod";
3
+ import type { DriverTestConfig } from "../mod";
4
+ import { setupDriverTest } from "../utils";
5
+
6
+ export function runActorHandleTests(driverTestConfig: DriverTestConfig) {
7
+ describe("Actor Handle Tests", () => {
8
+ describe("Access Methods", () => {
9
+ test("should use .get() to access a actor", async (c) => {
10
+ const { client } = await setupDriverTest(c, driverTestConfig);
11
+
12
+ // Create actor first
13
+ await client.counter.create(["test-get-handle"]);
14
+
15
+ // Access using get
16
+ const handle = client.counter.get(["test-get-handle"]);
17
+
18
+ // Verify Action works
19
+ const count = await handle.increment(5);
20
+ expect(count).toBe(5);
21
+
22
+ const retrievedCount = await handle.getCount();
23
+ expect(retrievedCount).toBe(5);
24
+ });
25
+
26
+ test("should use .getForId() to access a actor by ID", async (c) => {
27
+ const { client } = await setupDriverTest(c, driverTestConfig);
28
+
29
+ // Create a actor first to get its ID
30
+ const handle = client.counter.getOrCreate([
31
+ "test-get-for-id-handle",
32
+ ]);
33
+ await handle.increment(3);
34
+ const actorId = await handle.resolve();
35
+
36
+ // Access using getForId
37
+ const idHandle = client.counter.getForId(actorId);
38
+
39
+ // Verify Action works and state is preserved
40
+ const count = await idHandle.getCount();
41
+ expect(count).toBe(3);
42
+
43
+ const newCount = await idHandle.increment(4);
44
+ expect(newCount).toBe(7);
45
+ });
46
+
47
+ test("should use .getOrCreate() to access or create a actor", async (c) => {
48
+ const { client } = await setupDriverTest(c, driverTestConfig);
49
+
50
+ // Access using getOrCreate - should create the actor
51
+ const handle = client.counter.getOrCreate([
52
+ "test-get-or-create-handle",
53
+ ]);
54
+
55
+ // Verify Action works
56
+ const count = await handle.increment(7);
57
+ expect(count).toBe(7);
58
+
59
+ // Get the same actor again - should retrieve existing actor
60
+ const sameHandle = client.counter.getOrCreate([
61
+ "test-get-or-create-handle",
62
+ ]);
63
+ const retrievedCount = await sameHandle.getCount();
64
+ expect(retrievedCount).toBe(7);
65
+ });
66
+
67
+ test("should use (await create()) to create and return a handle", async (c) => {
68
+ const { client } = await setupDriverTest(c, driverTestConfig);
69
+
70
+ // Create actor and get handle
71
+ const handle = await client.counter.create([
72
+ "test-create-handle",
73
+ ]);
74
+
75
+ // Verify Action works
76
+ const count = await handle.increment(9);
77
+ expect(count).toBe(9);
78
+
79
+ const retrievedCount = await handle.getCount();
80
+ expect(retrievedCount).toBe(9);
81
+ });
82
+
83
+ test("errors when calling create twice with the same key", async (c) => {
84
+ const { client } = await setupDriverTest(c, driverTestConfig);
85
+
86
+ const key = ["duplicate-create-handle", crypto.randomUUID()];
87
+
88
+ // First create should succeed
89
+ await client.counter.create(key);
90
+
91
+ // Second create with same key should throw ActorAlreadyExists
92
+ try {
93
+ await client.counter.create(key);
94
+ expect.fail("did not error on duplicate create");
95
+ } catch (err) {
96
+ expect((err as ActorError).group).toBe("actor");
97
+ expect((err as ActorError).code).toBe("duplicate_key");
98
+ }
99
+ });
100
+
101
+ test(".get().resolve() errors for non-existent actor", async (c) => {
102
+ const { client } = await setupDriverTest(c, driverTestConfig);
103
+
104
+ const missingId = `nonexistent-${crypto.randomUUID()}`;
105
+
106
+ try {
107
+ await client.counter.get([missingId]).resolve();
108
+ expect.fail(
109
+ "did not error for get().resolve() on missing actor",
110
+ );
111
+ } catch (err) {
112
+ expect((err as ActorError).group).toBe("actor");
113
+ expect((err as ActorError).code).toBe("not_found");
114
+ }
115
+ });
116
+ });
117
+
118
+ describe("Action Functionality", () => {
119
+ test("should call actions directly on the handle", async (c) => {
120
+ const { client } = await setupDriverTest(c, driverTestConfig);
121
+
122
+ const handle = client.counter.getOrCreate([
123
+ "test-action-handle",
124
+ ]);
125
+
126
+ // Call multiple actions in sequence
127
+ const count1 = await handle.increment(3);
128
+ expect(count1).toBe(3);
129
+
130
+ const count2 = await handle.increment(5);
131
+ expect(count2).toBe(8);
132
+
133
+ const retrievedCount = await handle.getCount();
134
+ expect(retrievedCount).toBe(8);
135
+ });
136
+
137
+ test("should handle independent handles to the same actor", async (c) => {
138
+ const { client } = await setupDriverTest(c, driverTestConfig);
139
+
140
+ // Create two handles to the same actor
141
+ const handle1 = client.counter.getOrCreate([
142
+ "test-multiple-handles",
143
+ ]);
144
+ const handle2 = client.counter.get(["test-multiple-handles"]);
145
+
146
+ // Call actions on both handles
147
+ await handle1.increment(3);
148
+ const count = await handle2.getCount();
149
+
150
+ // Verify both handles access the same state
151
+ expect(count).toBe(3);
152
+
153
+ const finalCount = await handle2.increment(4);
154
+ expect(finalCount).toBe(7);
155
+
156
+ const checkCount = await handle1.getCount();
157
+ expect(checkCount).toBe(7);
158
+ });
159
+
160
+ test("should resolve a actor's ID", async (c) => {
161
+ const { client } = await setupDriverTest(c, driverTestConfig);
162
+
163
+ const handle = client.counter.getOrCreate(["test-resolve-id"]);
164
+
165
+ // Call an action to ensure actor exists
166
+ await handle.increment(1);
167
+
168
+ // Resolve the ID
169
+ const actorId = await handle.resolve();
170
+
171
+ // Verify we got a valid ID (string)
172
+ expect(typeof actorId).toBe("string");
173
+ expect(actorId).not.toBe("");
174
+
175
+ // Verify we can use this ID to get the actor
176
+ const idHandle = client.counter.getForId(actorId);
177
+ const count = await idHandle.getCount();
178
+ expect(count).toBe(1);
179
+ });
180
+ });
181
+
182
+ describe("Lifecycle Hooks", () => {
183
+ test("should trigger lifecycle hooks on actor creation", async (c) => {
184
+ const { client } = await setupDriverTest(c, driverTestConfig);
185
+
186
+ // Get or create a new actor - this should trigger onWake
187
+ const handle = client.counterWithLifecycle.getOrCreate([
188
+ "test-lifecycle-handle",
189
+ ]);
190
+
191
+ // Verify onWake was triggered
192
+ const initialEvents = await handle.getEvents();
193
+ expect(initialEvents).toContain("onWake");
194
+
195
+ // Create a separate handle to the same actor
196
+ const sameHandle = client.counterWithLifecycle.getOrCreate([
197
+ "test-lifecycle-handle",
198
+ ]);
199
+
200
+ // Verify events still include onWake but don't duplicate it
201
+ // (onWake should only be called once when the actor is first created)
202
+ const events = await sameHandle.getEvents();
203
+ expect(events).toContain("onWake");
204
+ expect(events.filter((e) => e === "onWake").length).toBe(1);
205
+ });
206
+
207
+ test("should trigger lifecycle hooks for each Action call", async (c) => {
208
+ const { client } = await setupDriverTest(c, driverTestConfig);
209
+
210
+ // Create a normal handle to view events
211
+ const viewHandle = client.counterWithLifecycle.getOrCreate([
212
+ "test-lifecycle-action",
213
+ ]);
214
+
215
+ // Initial state should only have onWake
216
+ const initialEvents = await viewHandle.getEvents();
217
+ expect(initialEvents).toContain("onWake");
218
+ expect(initialEvents).not.toContain("onBeforeConnect");
219
+ expect(initialEvents).not.toContain("onConnect");
220
+ expect(initialEvents).not.toContain("onDisconnect");
221
+
222
+ // Create a handle with trackLifecycle enabled for testing Action calls
223
+ const trackingHandle = client.counterWithLifecycle.getOrCreate(
224
+ ["test-lifecycle-action"],
225
+ { params: { trackLifecycle: true } },
226
+ );
227
+
228
+ // Make an Action call
229
+ await trackingHandle.increment(5);
230
+
231
+ // Check that it triggered the lifecycle hooks
232
+ const eventsAfterAction = await viewHandle.getEvents();
233
+
234
+ // Should have onBeforeConnect, onConnect, and onDisconnect for the Action call
235
+ expect(eventsAfterAction).toContain("onBeforeConnect");
236
+ expect(eventsAfterAction).toContain("onConnect");
237
+ expect(eventsAfterAction).toContain("onDisconnect");
238
+
239
+ // Each should have count 1
240
+ expect(
241
+ eventsAfterAction.filter((e) => e === "onBeforeConnect")
242
+ .length,
243
+ ).toBe(1);
244
+ expect(
245
+ eventsAfterAction.filter((e) => e === "onConnect").length,
246
+ ).toBe(1);
247
+ expect(
248
+ eventsAfterAction.filter((e) => e === "onDisconnect")
249
+ .length,
250
+ ).toBe(1);
251
+
252
+ // Make another Action call
253
+ await trackingHandle.increment(10);
254
+
255
+ // Check that it triggered another set of lifecycle hooks
256
+ const eventsAfterSecondAction = await viewHandle.getEvents();
257
+
258
+ // Each hook should now have count 2
259
+ expect(
260
+ eventsAfterSecondAction.filter(
261
+ (e) => e === "onBeforeConnect",
262
+ ).length,
263
+ ).toBe(2);
264
+ expect(
265
+ eventsAfterSecondAction.filter((e) => e === "onConnect")
266
+ .length,
267
+ ).toBe(2);
268
+ expect(
269
+ eventsAfterSecondAction.filter((e) => e === "onDisconnect")
270
+ .length,
271
+ ).toBe(2);
272
+ });
273
+
274
+ test("should trigger lifecycle hooks for each Action call across multiple handles", async (c) => {
275
+ const { client } = await setupDriverTest(c, driverTestConfig);
276
+
277
+ // Create a normal handle to view events
278
+ const viewHandle = client.counterWithLifecycle.getOrCreate([
279
+ "test-lifecycle-multi-handle",
280
+ ]);
281
+
282
+ // Create two tracking handles to the same actor
283
+ const trackingHandle1 = client.counterWithLifecycle.getOrCreate(
284
+ ["test-lifecycle-multi-handle"],
285
+ { params: { trackLifecycle: true } },
286
+ );
287
+
288
+ const trackingHandle2 = client.counterWithLifecycle.getOrCreate(
289
+ ["test-lifecycle-multi-handle"],
290
+ { params: { trackLifecycle: true } },
291
+ );
292
+
293
+ // Make Action calls on both handles
294
+ await trackingHandle1.increment(5);
295
+ await trackingHandle2.increment(10);
296
+
297
+ // Check lifecycle hooks
298
+ const events = await viewHandle.getEvents();
299
+
300
+ // Should have 1 onWake, 2 each of onBeforeConnect, onConnect, and onDisconnect
301
+ expect(events.filter((e) => e === "onWake").length).toBe(1);
302
+ expect(
303
+ events.filter((e) => e === "onBeforeConnect").length,
304
+ ).toBe(2);
305
+ expect(events.filter((e) => e === "onConnect").length).toBe(2);
306
+ expect(events.filter((e) => e === "onDisconnect").length).toBe(
307
+ 2,
308
+ );
309
+ });
310
+ });
311
+ });
312
+ }
@@ -0,0 +1,163 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { DriverTestConfig } from "../mod";
3
+ import { setupDriverTest } from "../utils";
4
+
5
+ export function runActorInlineClientTests(driverTestConfig: DriverTestConfig) {
6
+ describe("Actor Inline Client Tests", () => {
7
+ describe("Stateless Client Calls", () => {
8
+ test("should make stateless calls to other actors", async (c) => {
9
+ const { client } = await setupDriverTest(c, driverTestConfig);
10
+
11
+ // Create the inline client actor
12
+ const inlineClientHandle = client.inlineClientActor.getOrCreate(
13
+ ["inline-client-test"],
14
+ );
15
+
16
+ // Test calling counter.increment via inline client
17
+ const result = await inlineClientHandle.callCounterIncrement(5);
18
+ expect(result).toBe(5);
19
+
20
+ // Verify the counter state was actually updated
21
+ const counterState = await inlineClientHandle.getCounterState();
22
+ expect(counterState).toBe(5);
23
+
24
+ // Check that messages were logged
25
+ const messages = await inlineClientHandle.getMessages();
26
+ expect(messages).toHaveLength(2);
27
+ expect(messages[0]).toContain(
28
+ "Called counter.increment(5), result: 5",
29
+ );
30
+ expect(messages[1]).toContain("Got counter state: 5");
31
+ });
32
+
33
+ test("should handle multiple stateless calls", async (c) => {
34
+ const { client } = await setupDriverTest(c, driverTestConfig);
35
+
36
+ // Create the inline client actor
37
+ const inlineClientHandle = client.inlineClientActor.getOrCreate(
38
+ ["inline-client-multi"],
39
+ );
40
+
41
+ // Clear any existing messages
42
+ await inlineClientHandle.clearMessages();
43
+
44
+ // Make multiple calls
45
+ const result1 =
46
+ await inlineClientHandle.callCounterIncrement(3);
47
+ const result2 =
48
+ await inlineClientHandle.callCounterIncrement(7);
49
+ const finalState = await inlineClientHandle.getCounterState();
50
+
51
+ expect(result1).toBe(3);
52
+ expect(result2).toBe(10); // 3 + 7
53
+ expect(finalState).toBe(10);
54
+
55
+ // Check messages
56
+ const messages = await inlineClientHandle.getMessages();
57
+ expect(messages).toHaveLength(3);
58
+ expect(messages[0]).toContain(
59
+ "Called counter.increment(3), result: 3",
60
+ );
61
+ expect(messages[1]).toContain(
62
+ "Called counter.increment(7), result: 10",
63
+ );
64
+ expect(messages[2]).toContain("Got counter state: 10");
65
+ });
66
+ });
67
+
68
+ describe("Stateful Client Calls", () => {
69
+ test("should connect to other actors and receive events", async (c) => {
70
+ const { client } = await setupDriverTest(c, driverTestConfig);
71
+
72
+ // Create the inline client actor
73
+ const inlineClientHandle = client.inlineClientActor.getOrCreate(
74
+ ["inline-client-stateful"],
75
+ );
76
+
77
+ // Clear any existing messages
78
+ await inlineClientHandle.clearMessages();
79
+
80
+ // Test stateful connection with events
81
+ const result =
82
+ await inlineClientHandle.connectToCounterAndIncrement(4);
83
+
84
+ expect(result.result1).toBe(4);
85
+ expect(result.result2).toBe(12); // 4 + 8
86
+ expect(result.events).toEqual([4, 12]); // Should have received both events
87
+
88
+ // Check that message was logged
89
+ const messages = await inlineClientHandle.getMessages();
90
+ expect(messages).toHaveLength(1);
91
+ expect(messages[0]).toContain(
92
+ "Connected to counter, incremented by 4 and 8",
93
+ );
94
+ expect(messages[0]).toContain("results: 4, 12");
95
+ expect(messages[0]).toContain("events: [4,12]");
96
+ });
97
+
98
+ test("should handle stateful connection independently", async (c) => {
99
+ const { client } = await setupDriverTest(c, driverTestConfig);
100
+
101
+ // Create the inline client actor
102
+ const inlineClientHandle = client.inlineClientActor.getOrCreate(
103
+ ["inline-client-independent"],
104
+ );
105
+
106
+ // Clear any existing messages
107
+ await inlineClientHandle.clearMessages();
108
+
109
+ // Test with different increment values
110
+ const result =
111
+ await inlineClientHandle.connectToCounterAndIncrement(2);
112
+
113
+ expect(result.result1).toBe(2);
114
+ expect(result.result2).toBe(6); // 2 + 4
115
+ expect(result.events).toEqual([2, 6]);
116
+
117
+ // Verify the state is independent from previous tests
118
+ const messages = await inlineClientHandle.getMessages();
119
+ expect(messages).toHaveLength(1);
120
+ expect(messages[0]).toContain(
121
+ "Connected to counter, incremented by 2 and 4",
122
+ );
123
+ });
124
+ });
125
+
126
+ describe("Mixed Client Usage", () => {
127
+ test("should handle both stateless and stateful calls", async (c) => {
128
+ const { client } = await setupDriverTest(c, driverTestConfig);
129
+
130
+ // Create the inline client actor
131
+ const inlineClientHandle = client.inlineClientActor.getOrCreate(
132
+ ["inline-client-mixed"],
133
+ );
134
+
135
+ // Clear any existing messages
136
+ await inlineClientHandle.clearMessages();
137
+
138
+ // Start with stateless calls
139
+ await inlineClientHandle.callCounterIncrement(1);
140
+ const statelessResult =
141
+ await inlineClientHandle.getCounterState();
142
+ expect(statelessResult).toBe(1);
143
+
144
+ // Then do stateful call
145
+ const statefulResult =
146
+ await inlineClientHandle.connectToCounterAndIncrement(3);
147
+ expect(statefulResult.result1).toBe(3);
148
+ expect(statefulResult.result2).toBe(9); // 3 + 6
149
+
150
+ // Check all messages were logged
151
+ const messages = await inlineClientHandle.getMessages();
152
+ expect(messages).toHaveLength(3);
153
+ expect(messages[0]).toContain(
154
+ "Called counter.increment(1), result: 1",
155
+ );
156
+ expect(messages[1]).toContain("Got counter state: 1");
157
+ expect(messages[2]).toContain(
158
+ "Connected to counter, incremented by 3 and 6",
159
+ );
160
+ });
161
+ });
162
+ });
163
+ }