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,392 @@
1
+ import * as cbor from "cbor-x";
2
+ import {
3
+ bufferToArrayBuffer,
4
+ SinglePromiseQueue,
5
+ stringifyError,
6
+ } from "@/utils";
7
+ import type { AnyDatabaseProvider } from "../database";
8
+ import type { ActorDriver } from "../driver";
9
+ import type { EventSchemaConfig, QueueSchemaConfig } from "../schema";
10
+ import type { ActorInstance } from "./mod";
11
+ import type { PersistedScheduleEvent } from "./persisted";
12
+
13
+ /**
14
+ * Manages scheduled events and alarms for actor instances.
15
+ * Handles event scheduling, alarm triggers, and automatic event execution.
16
+ */
17
+ export class ScheduleManager<
18
+ S,
19
+ CP,
20
+ CS,
21
+ V,
22
+ I,
23
+ DB extends AnyDatabaseProvider,
24
+ E extends EventSchemaConfig = Record<never, never>,
25
+ Q extends QueueSchemaConfig = Record<never, never>,
26
+ > {
27
+ #actor: ActorInstance<S, CP, CS, V, I, DB, E, Q>;
28
+ #actorDriver: ActorDriver;
29
+ #alarmWriteQueue = new SinglePromiseQueue();
30
+ #config: any; // ActorConfig type
31
+ #persist: any; // Reference to PersistedActor
32
+
33
+ constructor(
34
+ actor: ActorInstance<S, CP, CS, V, I, DB, E, Q>,
35
+ actorDriver: ActorDriver,
36
+ config: any,
37
+ ) {
38
+ this.#actor = actor;
39
+ this.#actorDriver = actorDriver;
40
+ this.#config = config;
41
+ }
42
+
43
+ // MARK: - Public API
44
+
45
+ /**
46
+ * Sets the persist object reference.
47
+ * Called after StateManager initializes the persist proxy.
48
+ */
49
+ setPersist(persist: any) {
50
+ this.#persist = persist;
51
+ }
52
+
53
+ /**
54
+ * Schedules an event to be executed at a specific timestamp.
55
+ *
56
+ * @param timestamp - Unix timestamp in milliseconds when the event should fire
57
+ * @param action - The name of the action to execute
58
+ * @param args - Arguments to pass to the action
59
+ */
60
+ async scheduleEvent(
61
+ timestamp: number,
62
+ action: string,
63
+ args: unknown[],
64
+ ): Promise<void> {
65
+ const newEvent: PersistedScheduleEvent = {
66
+ eventId: crypto.randomUUID(),
67
+ timestamp,
68
+ action,
69
+ args: bufferToArrayBuffer(cbor.encode(args)),
70
+ };
71
+
72
+ this.#actor.emitTraceEvent("schedule.created", {
73
+ "rivet.schedule.event_id": newEvent.eventId,
74
+ "rivet.schedule.action": newEvent.action,
75
+ "rivet.schedule.timestamp_ms": newEvent.timestamp,
76
+ });
77
+
78
+ await this.#scheduleEventInner(newEvent);
79
+ }
80
+
81
+ /**
82
+ * Triggers any pending alarms that are due.
83
+ * This method is idempotent and safe to call multiple times.
84
+ */
85
+ async onAlarm(): Promise<void> {
86
+ const now = Date.now();
87
+ this.#actor.log.debug({
88
+ msg: "alarm triggered",
89
+ now,
90
+ events: this.#persist?.scheduledEvents?.length || 0,
91
+ });
92
+
93
+ if (!this.#persist?.scheduledEvents) {
94
+ this.#actor.rLog.debug({ msg: "no scheduled events" });
95
+ return;
96
+ }
97
+
98
+ // Find events that are due
99
+ const dueIndex = this.#persist.scheduledEvents.findIndex(
100
+ (x: PersistedScheduleEvent) => x.timestamp <= now,
101
+ );
102
+
103
+ if (dueIndex === -1) {
104
+ // No events are due yet
105
+ this.#actor.rLog.debug({ msg: "no events are due yet" });
106
+
107
+ // Reschedule alarm for next event if any exist
108
+ if (this.#persist.scheduledEvents.length > 0) {
109
+ const nextTs = this.#persist.scheduledEvents[0].timestamp;
110
+ this.#actor.log.debug({
111
+ msg: "alarm fired early, rescheduling for next event",
112
+ now,
113
+ nextTs,
114
+ delta: nextTs - now,
115
+ });
116
+ await this.#queueSetAlarm(nextTs);
117
+ }
118
+ return;
119
+ }
120
+
121
+ // Remove and process due events
122
+ const dueEvents = this.#persist.scheduledEvents.splice(0, dueIndex + 1);
123
+ this.#actor.log.debug({
124
+ msg: "running events",
125
+ count: dueEvents.length,
126
+ });
127
+
128
+ // Schedule next alarm if more events remain
129
+ if (this.#persist.scheduledEvents.length > 0) {
130
+ const nextTs = this.#persist.scheduledEvents[0].timestamp;
131
+ this.#actor.log.info({
132
+ msg: "setting next alarm",
133
+ nextTs,
134
+ remainingEvents: this.#persist.scheduledEvents.length,
135
+ });
136
+ await this.#queueSetAlarm(nextTs);
137
+ }
138
+
139
+ // Execute due events
140
+ await this.#executeDueEvents(dueEvents);
141
+ }
142
+
143
+ /**
144
+ * Initializes alarms on actor startup.
145
+ * Sets the alarm for the next scheduled event if any exist.
146
+ */
147
+ async initializeAlarms(): Promise<void> {
148
+ if (this.#persist?.scheduledEvents?.length > 0) {
149
+ await this.#queueSetAlarm(
150
+ this.#persist.scheduledEvents[0].timestamp,
151
+ );
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Waits for any pending alarm write operations to complete.
157
+ */
158
+ async waitForPendingAlarmWrites(): Promise<void> {
159
+ if (this.#alarmWriteQueue.runningDrainLoop) {
160
+ await this.#alarmWriteQueue.runningDrainLoop;
161
+ }
162
+ }
163
+
164
+ /**
165
+ * Gets statistics about scheduled events.
166
+ */
167
+ getScheduleStats(): {
168
+ totalEvents: number;
169
+ nextEventTime: number | null;
170
+ overdueCount: number;
171
+ } {
172
+ if (!this.#persist?.scheduledEvents) {
173
+ return {
174
+ totalEvents: 0,
175
+ nextEventTime: null,
176
+ overdueCount: 0,
177
+ };
178
+ }
179
+
180
+ const now = Date.now();
181
+ const events = this.#persist.scheduledEvents;
182
+
183
+ return {
184
+ totalEvents: events.length,
185
+ nextEventTime: events.length > 0 ? events[0].timestamp : null,
186
+ overdueCount: events.filter(
187
+ (e: PersistedScheduleEvent) => e.timestamp <= now,
188
+ ).length,
189
+ };
190
+ }
191
+
192
+ /**
193
+ * Cancels a scheduled event by its ID.
194
+ *
195
+ * @param eventId - The ID of the event to cancel
196
+ * @returns True if the event was found and cancelled
197
+ */
198
+ async cancelEvent(eventId: string): Promise<boolean> {
199
+ if (!this.#persist?.scheduledEvents) {
200
+ return false;
201
+ }
202
+
203
+ const index = this.#persist.scheduledEvents.findIndex(
204
+ (e: PersistedScheduleEvent) => e.eventId === eventId,
205
+ );
206
+
207
+ if (index === -1) {
208
+ return false;
209
+ }
210
+
211
+ // Remove the event
212
+ const wasFirst = index === 0;
213
+ this.#persist.scheduledEvents.splice(index, 1);
214
+
215
+ // If we removed the first event, update the alarm
216
+ if (wasFirst && this.#persist.scheduledEvents.length > 0) {
217
+ await this.#queueSetAlarm(
218
+ this.#persist.scheduledEvents[0].timestamp,
219
+ );
220
+ }
221
+
222
+ this.#actor.log.info({
223
+ msg: "cancelled scheduled event",
224
+ eventId,
225
+ remainingEvents: this.#persist.scheduledEvents.length,
226
+ });
227
+
228
+ return true;
229
+ }
230
+
231
+ // MARK: - Private Helpers
232
+
233
+ async #scheduleEventInner(newEvent: PersistedScheduleEvent): Promise<void> {
234
+ this.#actor.log.info({
235
+ msg: "scheduling event",
236
+ eventId: newEvent.eventId,
237
+ timestamp: newEvent.timestamp,
238
+ action: newEvent.action,
239
+ });
240
+
241
+ if (!this.#persist?.scheduledEvents) {
242
+ throw new Error("Persist not initialized");
243
+ }
244
+
245
+ // Find insertion point (events are sorted by timestamp)
246
+ const insertIndex = this.#persist.scheduledEvents.findIndex(
247
+ (x: PersistedScheduleEvent) => x.timestamp > newEvent.timestamp,
248
+ );
249
+
250
+ if (insertIndex === -1) {
251
+ // Add to end
252
+ this.#persist.scheduledEvents.push(newEvent);
253
+ } else {
254
+ // Insert at correct position
255
+ this.#persist.scheduledEvents.splice(insertIndex, 0, newEvent);
256
+ }
257
+
258
+ // Update alarm if this is the newest event
259
+ if (insertIndex === 0 || this.#persist.scheduledEvents.length === 1) {
260
+ this.#actor.log.info({
261
+ msg: "setting alarm for new event",
262
+ timestamp: newEvent.timestamp,
263
+ eventCount: this.#persist.scheduledEvents.length,
264
+ });
265
+ await this.#queueSetAlarm(newEvent.timestamp);
266
+ }
267
+ }
268
+
269
+ async #executeDueEvents(events: PersistedScheduleEvent[]): Promise<void> {
270
+ for (const event of events) {
271
+ const span = this.#actor.startTraceSpan(
272
+ `actor.action.${event.action}`,
273
+ {
274
+ "rivet.action.name": event.action,
275
+ "rivet.action.scheduled": true,
276
+ "rivet.schedule.event_id": event.eventId,
277
+ "rivet.schedule.timestamp_ms": event.timestamp,
278
+ },
279
+ );
280
+ try {
281
+ this.#actor.emitTraceEvent(
282
+ "schedule.triggered",
283
+ {
284
+ "rivet.schedule.event_id": event.eventId,
285
+ "rivet.schedule.action": event.action,
286
+ "rivet.schedule.timestamp_ms": event.timestamp,
287
+ },
288
+ span,
289
+ );
290
+ this.#actor.log.info({
291
+ msg: "executing scheduled event",
292
+ eventId: event.eventId,
293
+ timestamp: event.timestamp,
294
+ action: event.action,
295
+ });
296
+
297
+ // Look up the action function
298
+ const actions = this.#config.actions ?? {};
299
+ const fn = actions[event.action];
300
+
301
+ if (!fn) {
302
+ throw new Error(
303
+ `Missing action for scheduled event: ${event.action}`,
304
+ );
305
+ }
306
+
307
+ if (typeof fn !== "function") {
308
+ throw new Error(
309
+ `Scheduled event action ${event.action} is not a function (got ${typeof fn})`,
310
+ );
311
+ }
312
+
313
+ // Decode arguments and execute
314
+ const args = event.args
315
+ ? cbor.decode(new Uint8Array(event.args))
316
+ : [];
317
+
318
+ const result = this.#actor.traces.withSpan(span, () =>
319
+ fn.call(undefined, this.#actor.actorContext, ...args),
320
+ );
321
+
322
+ // Handle async actions
323
+ if (result instanceof Promise) {
324
+ await result;
325
+ }
326
+
327
+ this.#actor.endTraceSpan(span, { code: "OK" });
328
+ this.#actor.log.debug({
329
+ msg: "scheduled event completed",
330
+ eventId: event.eventId,
331
+ action: event.action,
332
+ });
333
+ } catch (error) {
334
+ this.#actor.traces.setAttributes(span, {
335
+ "error.message": stringifyError(error),
336
+ "error.type":
337
+ error instanceof Error ? error.name : typeof error,
338
+ });
339
+ this.#actor.endTraceSpan(span, {
340
+ code: "ERROR",
341
+ message: stringifyError(error),
342
+ });
343
+ this.#actor.log.error({
344
+ msg: "error executing scheduled event",
345
+ error: stringifyError(error),
346
+ eventId: event.eventId,
347
+ timestamp: event.timestamp,
348
+ action: event.action,
349
+ });
350
+
351
+ // Continue processing other events even if one fails
352
+ }
353
+ }
354
+ }
355
+
356
+ async #queueSetAlarm(timestamp: number): Promise<void> {
357
+ await this.#alarmWriteQueue.enqueue(async () => {
358
+ await this.#actorDriver.setAlarm(this.#actor, timestamp);
359
+ });
360
+ }
361
+
362
+ /**
363
+ * Gets the next scheduled event, if any.
364
+ */
365
+ getNextEvent(): PersistedScheduleEvent | null {
366
+ if (
367
+ !this.#persist?.scheduledEvents ||
368
+ this.#persist.scheduledEvents.length === 0
369
+ ) {
370
+ return null;
371
+ }
372
+ return this.#persist.scheduledEvents[0];
373
+ }
374
+
375
+ /**
376
+ * Gets all scheduled events.
377
+ */
378
+ getAllEvents(): PersistedScheduleEvent[] {
379
+ return this.#persist?.scheduledEvents || [];
380
+ }
381
+
382
+ /**
383
+ * Clears all scheduled events.
384
+ * Use with caution - this removes all pending scheduled events.
385
+ */
386
+ clearAllEvents(): void {
387
+ if (this.#persist?.scheduledEvents) {
388
+ this.#persist.scheduledEvents = [];
389
+ this.#actor.log.warn({ msg: "cleared all scheduled events" });
390
+ }
391
+ }
392
+ }