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,196 @@
1
+ import type { HibernatingWebSocketMetadata } from "@rivetkit/engine-runner";
2
+ import onChange from "@rivetkit/on-change";
3
+ import * as cbor from "cbor-x";
4
+ import invariant from "invariant";
5
+ import { isCborSerializable } from "@/common/utils";
6
+ import * as errors from "../errors";
7
+ import { assertUnreachable } from "../utils";
8
+ import { CONN_ACTOR_SYMBOL, type Conn } from "./mod";
9
+ import type { PersistedConn } from "./persisted";
10
+
11
+ /** Pick a subset of persisted data used to represent ephemeral connections */
12
+ export type EphemeralConn<CP, CS> = Pick<
13
+ PersistedConn<CP, CS>,
14
+ "id" | "parameters" | "state"
15
+ >;
16
+
17
+ export type ConnDataInput<CP, CS> =
18
+ | { ephemeral: EphemeralConn<CP, CS> }
19
+ | { hibernatable: PersistedConn<CP, CS> };
20
+
21
+ export type ConnData<CP, CS> =
22
+ | {
23
+ ephemeral: {
24
+ /** In-memory data representing this connection */
25
+ data: EphemeralConn<CP, CS>;
26
+ };
27
+ }
28
+ | {
29
+ hibernatable: {
30
+ /** Persisted data with on-change proxy */
31
+ data: PersistedConn<CP, CS>;
32
+ /** Raw persisted data without proxy */
33
+ dataRaw: PersistedConn<CP, CS>;
34
+ };
35
+ };
36
+
37
+ /**
38
+ * Manages connection state persistence, proxying, and change tracking.
39
+ * Handles automatic state change detection for connection-specific state.
40
+ */
41
+ export class StateManager<CP, CS> {
42
+ #conn: Conn<any, CP, CS, any, any, any, any, any>;
43
+
44
+ /**
45
+ * Data representing this connection.
46
+ *
47
+ * This is stored as a struct for both ephemeral and hibernatable conns in
48
+ * order to keep the separation clear between the two.
49
+ */
50
+ #data!: ConnData<CP, CS>;
51
+
52
+ constructor(
53
+ conn: Conn<any, CP, CS, any, any, any, any, any>,
54
+ data: ConnDataInput<CP, CS>,
55
+ ) {
56
+ this.#conn = conn;
57
+
58
+ if ("ephemeral" in data) {
59
+ this.#data = { ephemeral: { data: data.ephemeral } };
60
+ } else if ("hibernatable" in data) {
61
+ // Listen for changes to the object
62
+ const persistRaw = data.hibernatable;
63
+ const persist = onChange(
64
+ persistRaw,
65
+ (
66
+ path: string,
67
+ value: any,
68
+ _previousValue: any,
69
+ _applyData: any,
70
+ ) => {
71
+ this.#handleChange(path, value);
72
+ },
73
+ { ignoreDetached: true },
74
+ );
75
+ this.#data = {
76
+ hibernatable: { data: persist, dataRaw: persistRaw },
77
+ };
78
+ } else {
79
+ assertUnreachable(data);
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Returns the ephemeral or persisted data for this connectioned.
85
+ *
86
+ * This property is used to be able to treat both memory & persist conns
87
+ * identical by looking up the correct underlying data structure.
88
+ */
89
+ get ephemeralData(): EphemeralConn<CP, CS> {
90
+ if ("hibernatable" in this.#data) {
91
+ return this.#data.hibernatable.data;
92
+ } else if ("ephemeral" in this.#data) {
93
+ return this.#data.ephemeral.data;
94
+ } else {
95
+ return assertUnreachable(this.#data);
96
+ }
97
+ }
98
+
99
+ get hibernatableData(): PersistedConn<CP, CS> | undefined {
100
+ if ("hibernatable" in this.#data) {
101
+ return this.#data.hibernatable.data;
102
+ } else {
103
+ return undefined;
104
+ }
105
+ }
106
+
107
+ hibernatableDataOrError(): PersistedConn<CP, CS> {
108
+ const hibernatable = this.hibernatableData;
109
+ invariant(hibernatable, "missing hibernatable data");
110
+ return hibernatable;
111
+ }
112
+
113
+ get hibernatableDataRaw(): PersistedConn<CP, CS> | undefined {
114
+ if ("hibernatable" in this.#data) {
115
+ return this.#data.hibernatable.dataRaw;
116
+ } else {
117
+ return undefined;
118
+ }
119
+ }
120
+
121
+ get stateEnabled(): boolean {
122
+ return this.#conn[CONN_ACTOR_SYMBOL].connStateEnabled;
123
+ }
124
+
125
+ get state(): CS {
126
+ this.#validateStateEnabled();
127
+ const state = this.ephemeralData.state;
128
+ if (!state) throw new Error("state should exists");
129
+ return state;
130
+ }
131
+
132
+ set state(value: CS) {
133
+ this.#validateStateEnabled();
134
+ this.ephemeralData.state = value;
135
+ }
136
+
137
+ #validateStateEnabled() {
138
+ if (!this.#conn[CONN_ACTOR_SYMBOL].connStateEnabled) {
139
+ throw new errors.ConnStateNotEnabled();
140
+ }
141
+ }
142
+
143
+ #handleChange(path: string, value: any) {
144
+ // NOTE: This will only be called for hibernatable conns since only
145
+ // hibernatable conns have the on-change proxy
146
+
147
+ // Validate CBOR serializability for state changes
148
+ if (path.startsWith("state")) {
149
+ let invalidPath = "";
150
+ if (
151
+ !isCborSerializable(
152
+ value,
153
+ (invalidPathPart: string) => {
154
+ invalidPath = invalidPathPart;
155
+ },
156
+ "",
157
+ )
158
+ ) {
159
+ throw new errors.InvalidStateType({
160
+ path: path + (invalidPath ? `.${invalidPath}` : ""),
161
+ });
162
+ }
163
+ }
164
+
165
+ this.#conn[CONN_ACTOR_SYMBOL].rLog.debug({
166
+ msg: "conn onChange triggered",
167
+ connId: this.#conn.id,
168
+ path,
169
+ });
170
+
171
+ // Notify actor that this connection has changed
172
+ this.#conn[
173
+ CONN_ACTOR_SYMBOL
174
+ ].connectionManager.markConnWithPersistChanged(this.#conn);
175
+ }
176
+
177
+ addSubscription({ eventName }: { eventName: string }) {
178
+ const hibernatable = this.hibernatableData;
179
+ if (!hibernatable) return;
180
+ hibernatable.subscriptions.push({
181
+ eventName,
182
+ });
183
+ }
184
+
185
+ removeSubscription({ eventName }: { eventName: string }) {
186
+ const hibernatable = this.hibernatableData;
187
+ if (!hibernatable) return;
188
+ const subIdx = hibernatable.subscriptions.findIndex(
189
+ (s) => s.eventName === eventName,
190
+ );
191
+ if (subIdx !== -1) {
192
+ hibernatable.subscriptions.splice(subIdx, 1);
193
+ }
194
+ return subIdx !== -1;
195
+ }
196
+ }
@@ -0,0 +1,47 @@
1
+ import type { Conn } from "../conn/mod";
2
+ import type { AnyDatabaseProvider } from "../database";
3
+ import type { ActorDefinition, AnyActorDefinition } from "../definition";
4
+ import type { ActorInstance } from "../instance/mod";
5
+ import type { EventSchemaConfig, QueueSchemaConfig } from "../schema";
6
+ import { ConnContext } from "./base/conn";
7
+
8
+ /**
9
+ * Context for a remote procedure call.
10
+ */
11
+ export class ActionContext<
12
+ TState,
13
+ TConnParams,
14
+ TConnState,
15
+ TVars,
16
+ TInput,
17
+ TDatabase extends AnyDatabaseProvider,
18
+ TEvents extends EventSchemaConfig = Record<never, never>,
19
+ TQueues extends QueueSchemaConfig = Record<never, never>,
20
+ > extends ConnContext<
21
+ TState,
22
+ TConnParams,
23
+ TConnState,
24
+ TVars,
25
+ TInput,
26
+ TDatabase,
27
+ TEvents,
28
+ TQueues
29
+ > {}
30
+
31
+ /**
32
+ * Extracts the ActionContext type from an ActorDefinition.
33
+ */
34
+ export type ActionContextOf<AD extends AnyActorDefinition> =
35
+ AD extends ActorDefinition<
36
+ infer S,
37
+ infer CP,
38
+ infer CS,
39
+ infer V,
40
+ infer I,
41
+ infer DB extends AnyDatabaseProvider,
42
+ infer E extends EventSchemaConfig,
43
+ infer Q extends QueueSchemaConfig,
44
+ any
45
+ >
46
+ ? ActionContext<S, CP, CS, V, I, DB, E, Q>
47
+ : never;
@@ -0,0 +1,347 @@
1
+ import type { ActorKey } from "@/actor/mod";
2
+ import type { Client } from "@/client/client";
3
+ import type { Logger } from "@/common/log";
4
+ import type { Registry } from "@/registry";
5
+ import type { Conn, ConnId } from "../../conn/mod";
6
+ import type { AnyDatabaseProvider, InferDatabaseClient } from "../../database";
7
+ import type { ActorDefinition, AnyActorDefinition } from "../../definition";
8
+ import * as errors from "../../errors";
9
+ import { ActorKv } from "../../instance/kv";
10
+ import type {
11
+ ActorInstance,
12
+ AnyActorInstance,
13
+ SaveStateOptions,
14
+ } from "../../instance/mod";
15
+ import { ActorQueue } from "../../instance/queue";
16
+ import type { Schedule } from "../../schedule";
17
+ import {
18
+ type EventSchemaConfig,
19
+ type InferEventArgs,
20
+ type InferSchemaMap,
21
+ type QueueSchemaConfig,
22
+ hasSchemaConfigKey,
23
+ validateSchemaSync,
24
+ } from "../../schema";
25
+
26
+ export const ACTOR_CONTEXT_INTERNAL_SYMBOL = Symbol.for(
27
+ "rivetkit.actorContextInternal",
28
+ );
29
+
30
+ /**
31
+ * ActorContext class that provides access to actor methods and state
32
+ */
33
+ export class ActorContext<
34
+ TState,
35
+ TConnParams,
36
+ TConnState,
37
+ TVars,
38
+ TInput,
39
+ TDatabase extends AnyDatabaseProvider,
40
+ TEvents extends EventSchemaConfig = Record<never, never>,
41
+ TQueues extends QueueSchemaConfig = Record<never, never>,
42
+ > {
43
+ [ACTOR_CONTEXT_INTERNAL_SYMBOL]!: AnyActorInstance;
44
+ #actor: ActorInstance<
45
+ TState,
46
+ TConnParams,
47
+ TConnState,
48
+ TVars,
49
+ TInput,
50
+ TDatabase,
51
+ TEvents,
52
+ TQueues
53
+ >;
54
+ #kv: ActorKv | undefined;
55
+ #queue:
56
+ | ActorQueue<
57
+ TState,
58
+ TConnParams,
59
+ TConnState,
60
+ TVars,
61
+ TInput,
62
+ TDatabase,
63
+ TEvents,
64
+ TQueues
65
+ >
66
+ | undefined;
67
+
68
+ constructor(
69
+ actor: ActorInstance<
70
+ TState,
71
+ TConnParams,
72
+ TConnState,
73
+ TVars,
74
+ TInput,
75
+ TDatabase,
76
+ TEvents,
77
+ TQueues
78
+ >,
79
+ ) {
80
+ this.#actor = actor;
81
+ this[ACTOR_CONTEXT_INTERNAL_SYMBOL] = actor as AnyActorInstance;
82
+ }
83
+
84
+ /**
85
+ * Gets the KV storage interface.
86
+ */
87
+ get kv(): ActorKv {
88
+ if (!this.#kv) {
89
+ this.#kv = new ActorKv(this.#actor.driver, this.#actor.id);
90
+ }
91
+ return this.#kv;
92
+ }
93
+
94
+ /**
95
+ * Get the actor state
96
+ *
97
+ * @remarks
98
+ * This property is not available in `createState` since the state hasn't been created yet.
99
+ */
100
+ get state(): TState extends never ? never : TState {
101
+ return this.#actor.state as TState extends never ? never : TState;
102
+ }
103
+
104
+ /**
105
+ * Get the actor variables
106
+ *
107
+ * @remarks
108
+ * This property is not available in `createVars` since the variables haven't been created yet.
109
+ * Variables are only available if you define `vars` or `createVars` in your actor config.
110
+ */
111
+ get vars(): TVars extends never ? never : TVars {
112
+ return this.#actor.vars as TVars extends never ? never : TVars;
113
+ }
114
+
115
+ /**
116
+ * Broadcasts an event to all connected clients.
117
+ * @param name - The name of the event.
118
+ * @param args - The arguments to send with the event.
119
+ */
120
+ broadcast<K extends keyof TEvents & string>(
121
+ name: K,
122
+ ...args: InferEventArgs<InferSchemaMap<TEvents>[K]>
123
+ ): void;
124
+ broadcast(
125
+ name: keyof TEvents extends never ? string : never,
126
+ ...args: Array<unknown>
127
+ ): void;
128
+ broadcast(name: string, ...args: Array<unknown>): void {
129
+ if (
130
+ this.#actor.config.events !== undefined &&
131
+ !hasSchemaConfigKey(this.#actor.config.events, name)
132
+ ) {
133
+ this.#actor.rLog.warn({
134
+ msg: "broadcasting event not defined in actor events config",
135
+ eventName: name,
136
+ });
137
+ }
138
+
139
+ const payload = args.length === 1 ? args[0] : args;
140
+ const result = validateSchemaSync(
141
+ this.#actor.config.events,
142
+ name as keyof TEvents & string,
143
+ payload,
144
+ );
145
+ if (!result.success) {
146
+ throw new errors.EventPayloadInvalid(name, result.issues);
147
+ }
148
+ if (args.length === 1) {
149
+ this.#actor.eventManager.broadcast(name, result.data);
150
+ return;
151
+ }
152
+ if (Array.isArray(result.data)) {
153
+ this.#actor.eventManager.broadcast(
154
+ name,
155
+ ...(result.data as unknown[]),
156
+ );
157
+ return;
158
+ }
159
+ this.#actor.eventManager.broadcast(name, ...args);
160
+ }
161
+
162
+ /**
163
+ * Gets the logger instance.
164
+ */
165
+ get log(): Logger {
166
+ return this.#actor.log;
167
+ }
168
+
169
+ /**
170
+ * Access to queue receive helpers.
171
+ */
172
+ get queue(): ActorQueue<
173
+ TState,
174
+ TConnParams,
175
+ TConnState,
176
+ TVars,
177
+ TInput,
178
+ TDatabase,
179
+ TEvents,
180
+ TQueues
181
+ > {
182
+ if (!this.#queue) {
183
+ this.#queue = new ActorQueue(
184
+ this.#actor.queueManager,
185
+ this.#actor.abortSignal,
186
+ );
187
+ }
188
+ return this.#queue;
189
+ }
190
+
191
+ /**
192
+ * Gets actor ID.
193
+ */
194
+ get actorId(): string {
195
+ return this.#actor.id;
196
+ }
197
+
198
+ /**
199
+ * Gets the actor name.
200
+ */
201
+ get name(): string {
202
+ return this.#actor.name;
203
+ }
204
+
205
+ /**
206
+ * Gets the actor key.
207
+ */
208
+ get key(): ActorKey {
209
+ return this.#actor.key;
210
+ }
211
+
212
+ /**
213
+ * Gets the region.
214
+ */
215
+ get region(): string {
216
+ return this.#actor.region;
217
+ }
218
+
219
+ /**
220
+ * Gets the scheduler.
221
+ */
222
+ get schedule(): Schedule {
223
+ return this.#actor.schedule;
224
+ }
225
+
226
+ /**
227
+ * Gets the map of connections.
228
+ */
229
+ get conns(): Map<
230
+ ConnId,
231
+ Conn<
232
+ TState,
233
+ TConnParams,
234
+ TConnState,
235
+ TVars,
236
+ TInput,
237
+ TDatabase,
238
+ TEvents,
239
+ TQueues
240
+ >
241
+ > {
242
+ return this.#actor.conns;
243
+ }
244
+
245
+ /**
246
+ * Returns the client for the given registry.
247
+ */
248
+ client<R extends Registry<any>>(): Client<R> {
249
+ return this.#actor.inlineClient as Client<R>;
250
+ }
251
+
252
+ /**
253
+ * Gets the database.
254
+ *
255
+ * @experimental
256
+ * @remarks
257
+ * This property is only available if you define a `db` provider in your actor config.
258
+ * @throws {DatabaseNotEnabled} If the database is not enabled.
259
+ */
260
+ get db(): TDatabase extends never ? never : InferDatabaseClient<TDatabase> {
261
+ return this.#actor.db as TDatabase extends never
262
+ ? never
263
+ : InferDatabaseClient<TDatabase>;
264
+ }
265
+
266
+ /**
267
+ * Forces the state to get saved.
268
+ *
269
+ * @param opts - Options for saving the state.
270
+ */
271
+ async saveState(opts: SaveStateOptions): Promise<void> {
272
+ return this.#actor.stateManager.saveState(opts);
273
+ }
274
+
275
+ /**
276
+ * Prevents the actor from sleeping until promise is complete.
277
+ */
278
+ waitUntil(promise: Promise<void>): void {
279
+ this.#actor.waitUntil(promise);
280
+ }
281
+
282
+ /**
283
+ * Prevents the actor from sleeping while the given promise is running.
284
+ *
285
+ * Use this when performing async operations in the `run` handler or other
286
+ * background contexts where you need to ensure the actor stays awake.
287
+ *
288
+ * Returns the resolved value and resets the sleep timer on completion.
289
+ * Errors are propagated to the caller.
290
+ */
291
+ keepAwake<T>(promise: Promise<T>): Promise<T> {
292
+ return this.#actor.keepAwake(promise);
293
+ }
294
+
295
+ /**
296
+ * AbortSignal that fires when the actor is stopping.
297
+ */
298
+ get abortSignal(): AbortSignal {
299
+ return this.#actor.abortSignal;
300
+ }
301
+
302
+ /**
303
+ * True when the actor is stopping.
304
+ *
305
+ * Alias for `c.abortSignal.aborted`.
306
+ */
307
+ get aborted(): boolean {
308
+ return this.#actor.abortSignal.aborted;
309
+ }
310
+
311
+ /**
312
+ * Forces the actor to sleep.
313
+ *
314
+ * Not supported on all drivers.
315
+ *
316
+ * @experimental
317
+ */
318
+ sleep() {
319
+ this.#actor.startSleep();
320
+ }
321
+
322
+ /**
323
+ * Forces the actor to destroy.
324
+ *
325
+ * This will return immediately, then call `onStop` and `onDestroy`.
326
+ *
327
+ * @experimental
328
+ */
329
+ destroy() {
330
+ this.#actor.startDestroy();
331
+ }
332
+ }
333
+
334
+ export type ActorContextOf<AD extends AnyActorDefinition> =
335
+ AD extends ActorDefinition<
336
+ infer S,
337
+ infer CP,
338
+ infer CS,
339
+ infer V,
340
+ infer I,
341
+ infer DB extends AnyDatabaseProvider,
342
+ infer E extends EventSchemaConfig,
343
+ infer Q extends QueueSchemaConfig,
344
+ any
345
+ >
346
+ ? ActorContext<S, CP, CS, V, I, DB, E, Q>
347
+ : never;
@@ -0,0 +1,68 @@
1
+ import type { AnyDatabaseProvider } from "../../database";
2
+ import type { ActorDefinition, AnyActorDefinition } from "../../definition";
3
+ import type { ActorInstance } from "../../instance/mod";
4
+ import type { EventSchemaConfig, QueueSchemaConfig } from "../../schema";
5
+ import { ActorContext } from "./actor";
6
+
7
+ /**
8
+ * Base context for connection initialization handlers.
9
+ * Extends ActorContext with request-specific functionality for connection lifecycle events.
10
+ */
11
+ export abstract class ConnInitContext<
12
+ TState,
13
+ TVars,
14
+ TInput,
15
+ TDatabase extends AnyDatabaseProvider,
16
+ TEvents extends EventSchemaConfig = Record<never, never>,
17
+ TQueues extends QueueSchemaConfig = Record<never, never>,
18
+ > extends ActorContext<
19
+ TState,
20
+ never,
21
+ never,
22
+ TVars,
23
+ TInput,
24
+ TDatabase,
25
+ TEvents,
26
+ TQueues
27
+ > {
28
+ /**
29
+ * The incoming request that initiated the connection.
30
+ * May be undefined for connections initiated without a direct HTTP request.
31
+ */
32
+ public readonly request: Request | undefined;
33
+
34
+ /**
35
+ * @internal
36
+ */
37
+ constructor(
38
+ actor: ActorInstance<
39
+ TState,
40
+ any,
41
+ any,
42
+ TVars,
43
+ TInput,
44
+ TDatabase,
45
+ TEvents,
46
+ TQueues
47
+ >,
48
+ request: Request | undefined,
49
+ ) {
50
+ super(actor as any);
51
+ this.request = request;
52
+ }
53
+ }
54
+
55
+ export type ConnInitContextOf<AD extends AnyActorDefinition> =
56
+ AD extends ActorDefinition<
57
+ infer S,
58
+ any,
59
+ any,
60
+ infer V,
61
+ infer I,
62
+ infer DB extends AnyDatabaseProvider,
63
+ infer E extends EventSchemaConfig,
64
+ infer Q extends QueueSchemaConfig,
65
+ any
66
+ >
67
+ ? ConnInitContext<S, V, I, DB, E, Q>
68
+ : never;