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,240 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import type { DriverTestConfig } from "../mod";
3
+ import { setupDriverTest } from "../utils";
4
+
5
+ export function runRequestAccessTests(driverTestConfig: DriverTestConfig) {
6
+ describe("Request Access in Lifecycle Hooks", () => {
7
+ test("should have access to request object in onBeforeConnect and createConnState", async (c) => {
8
+ const { client } = await setupDriverTest(c, driverTestConfig);
9
+
10
+ // Create actor with request tracking enabled
11
+ const handle = client.requestAccessActor.getOrCreate(
12
+ ["test-request"],
13
+ {
14
+ params: { trackRequest: true },
15
+ },
16
+ );
17
+ const connection = handle.connect();
18
+
19
+ // Get request info that was captured in onBeforeConnect
20
+ const requestInfo = await connection.getRequestInfo();
21
+
22
+ // Verify request was accessible in HTTP mode, but not in inline mode
23
+ if (driverTestConfig.clientType === "http") {
24
+ // Check onBeforeConnect
25
+ expect(requestInfo.onBeforeConnect.hasRequest).toBe(true);
26
+ expect(requestInfo.onBeforeConnect.requestUrl).toBeDefined();
27
+ expect(requestInfo.onBeforeConnect.requestMethod).toBeDefined();
28
+ expect(
29
+ requestInfo.onBeforeConnect.requestHeaders,
30
+ ).toBeDefined();
31
+
32
+ // Check createConnState
33
+ expect(requestInfo.createConnState.hasRequest).toBe(true);
34
+ expect(requestInfo.createConnState.requestUrl).toBeDefined();
35
+ expect(requestInfo.createConnState.requestMethod).toBeDefined();
36
+ expect(
37
+ requestInfo.createConnState.requestHeaders,
38
+ ).toBeDefined();
39
+ } else {
40
+ // Inline client may or may not have request object depending on the driver
41
+ //
42
+ // e.g.
43
+ // - File system does not have a request for inline requests
44
+ // - Rivet Engine proxies the request so it has access to the request object
45
+ }
46
+
47
+ // Clean up
48
+ await connection.dispose();
49
+ });
50
+
51
+ test("should not have request when trackRequest is false", async (c) => {
52
+ const { client } = await setupDriverTest(c, driverTestConfig);
53
+
54
+ // Create actor without request tracking
55
+ const handle = client.requestAccessActor.getOrCreate(
56
+ ["test-no-request"],
57
+ {
58
+ params: { trackRequest: false },
59
+ },
60
+ );
61
+ const connection = handle.connect();
62
+
63
+ // Get request info
64
+ const requestInfo = await connection.getRequestInfo();
65
+
66
+ // Verify request was not tracked
67
+ expect(requestInfo.onBeforeConnect.hasRequest).toBe(false);
68
+ expect(requestInfo.onBeforeConnect.requestUrl).toBeNull();
69
+ expect(requestInfo.onBeforeConnect.requestMethod).toBeNull();
70
+ expect(
71
+ Object.keys(requestInfo.onBeforeConnect.requestHeaders),
72
+ ).toHaveLength(0);
73
+
74
+ expect(requestInfo.createConnState.hasRequest).toBe(false);
75
+ expect(requestInfo.createConnState.requestUrl).toBeNull();
76
+ expect(requestInfo.createConnState.requestMethod).toBeNull();
77
+ expect(
78
+ Object.keys(requestInfo.createConnState.requestHeaders),
79
+ ).toHaveLength(0);
80
+
81
+ // Clean up
82
+ await connection.dispose();
83
+ });
84
+
85
+ test("should capture request headers and method", async (c) => {
86
+ const { client } = await setupDriverTest(c, driverTestConfig);
87
+
88
+ // Create actor and connect with request tracking
89
+ const handle = client.requestAccessActor.getOrCreate(
90
+ ["test-headers"],
91
+ {
92
+ params: { trackRequest: true },
93
+ },
94
+ );
95
+ const connection = handle.connect();
96
+
97
+ // Get request info
98
+ const requestInfo = await connection.getRequestInfo();
99
+
100
+ if (driverTestConfig.clientType === "http") {
101
+ // Verify request details were captured in both hooks
102
+ expect(requestInfo.onBeforeConnect.hasRequest).toBe(true);
103
+ expect(requestInfo.onBeforeConnect.requestMethod).toBeTruthy();
104
+ expect(requestInfo.onBeforeConnect.requestUrl).toBeTruthy();
105
+ expect(requestInfo.onBeforeConnect.requestHeaders).toBeTruthy();
106
+ expect(typeof requestInfo.onBeforeConnect.requestHeaders).toBe(
107
+ "object",
108
+ );
109
+
110
+ expect(requestInfo.createConnState.hasRequest).toBe(true);
111
+ expect(requestInfo.createConnState.requestMethod).toBeTruthy();
112
+ expect(requestInfo.createConnState.requestUrl).toBeTruthy();
113
+ expect(requestInfo.createConnState.requestHeaders).toBeTruthy();
114
+ expect(typeof requestInfo.createConnState.requestHeaders).toBe(
115
+ "object",
116
+ );
117
+ } else {
118
+ // Inline client may or may not have request object depending on the driver
119
+ //
120
+ // See "should have access to request object in onBeforeConnect and createConnState"
121
+ }
122
+
123
+ // Clean up
124
+ await connection.dispose();
125
+ });
126
+
127
+ // TODO: re-expose this once we can have actor queries on the gateway
128
+ // test("should have access to request object in onRequest", async (c) => {
129
+ // const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
130
+ //
131
+ // // Create actor
132
+ // const handle = client.requestAccessActor.getOrCreate(["test-fetch"]);
133
+ //
134
+ // // Make a raw HTTP request to the actor
135
+ // await handle.resolve(); // Ensure actor is created
136
+ //
137
+ // const actorQuery = {
138
+ // getOrCreateForKey: {
139
+ // name: "requestAccessActor",
140
+ // key: ["test-fetch"],
141
+ // },
142
+ // };
143
+ //
144
+ // const url = `${endpoint}/registry/actors/request/test-path`;
145
+ // const response = await fetch(url, {
146
+ // method: "POST",
147
+ // headers: {
148
+ // "Content-Type": "application/json",
149
+ // "X-Test-Header": "test-value",
150
+ // "X-RivetKit-Query": JSON.stringify(actorQuery),
151
+ // },
152
+ // body: JSON.stringify({ test: "data" }),
153
+ // });
154
+ //
155
+ // if (!response.ok) {
156
+ // const errorText = await response.text();
157
+ // console.error(
158
+ // `HTTP request failed: ${response.status} ${response.statusText}`,
159
+ // errorText,
160
+ // );
161
+ // }
162
+ //
163
+ // expect(response.ok).toBe(true);
164
+ // const data = await response.json();
165
+ //
166
+ // // Verify request info from onRequest
167
+ // expect((data as any).hasRequest).toBe(true);
168
+ // expect((data as any).requestUrl).toContain("/test-path");
169
+ // expect((data as any).requestMethod).toBe("POST");
170
+ // expect((data as any).requestHeaders).toBeDefined();
171
+ // expect((data as any).requestHeaders["content-type"]).toBe(
172
+ // "application/json",
173
+ // );
174
+ // expect((data as any).requestHeaders["x-test-header"]).toBe("test-value");
175
+ // });
176
+
177
+ // test("should have access to request object in onWebSocket", async (c) => {
178
+ // const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
179
+ //
180
+ // // Only test in environments that support WebSocket
181
+ // if (typeof WebSocket !== "undefined") {
182
+ // // Create actor
183
+ // const handle = client.requestAccessActor.getOrCreate([
184
+ // "test-websocket",
185
+ // ]);
186
+ // await handle.resolve(); // Ensure actor is created
187
+ //
188
+ // const actorQuery = {
189
+ // getOrCreateForKey: {
190
+ // name: "requestAccessActor",
191
+ // key: ["test-websocket"],
192
+ // },
193
+ // };
194
+ //
195
+ // // Encode query as WebSocket subprotocol
196
+ // const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
197
+ //
198
+ // // Create raw WebSocket connection
199
+ // const wsUrl = endpoint
200
+ // .replace("http://", "ws://")
201
+ // .replace("https://", "wss://");
202
+ // const ws = new WebSocket(
203
+ // `${wsUrl}/registry/actors/websocket/test-path`,
204
+ // [
205
+ // queryProtocol,
206
+ // "rivetkit", // Required protocol
207
+ // ],
208
+ // );
209
+ //
210
+ // // Wait for connection and first message
211
+ // await new Promise<void>((resolve, reject) => {
212
+ // ws.onopen = () => {
213
+ // // Connection established
214
+ // };
215
+ //
216
+ // ws.onmessage = (event) => {
217
+ // try {
218
+ // const data = JSON.parse(event.data);
219
+ //
220
+ // // Verify request info from onWebSocket
221
+ // expect(data.hasRequest).toBe(true);
222
+ // expect(data.requestUrl).toContain("/test-path");
223
+ // expect(data.requestMethod).toBe("GET");
224
+ // expect(data.requestHeaders).toBeDefined();
225
+ //
226
+ // ws.close();
227
+ // resolve();
228
+ // } catch (error) {
229
+ // reject(error);
230
+ // }
231
+ // };
232
+ //
233
+ // ws.onerror = (error) => {
234
+ // reject(error);
235
+ // };
236
+ // });
237
+ // }
238
+ // });
239
+ });
240
+ }
@@ -0,0 +1,80 @@
1
+ import { type TestContext, vi } from "vitest";
2
+ import { assertUnreachable } from "@/actor/utils";
3
+ import { type Client, createClient } from "@/client/mod";
4
+ import { createClientWithDriver } from "@/mod";
5
+ import type { registry } from "../../fixtures/driver-test-suite/registry";
6
+ import { logger } from "./log";
7
+ import type { DriverTestConfig } from "./mod";
8
+ import { createTestInlineClientDriver } from "./test-inline-client-driver";
9
+ import { ClientConfigSchema } from "@/client/config";
10
+
11
+ export const FAKE_TIME = new Date("2024-01-01T00:00:00.000Z");
12
+
13
+ // Must use `TestContext` since global hooks do not work when running concurrently
14
+ export async function setupDriverTest(
15
+ c: TestContext,
16
+ driverTestConfig: DriverTestConfig,
17
+ ): Promise<{
18
+ client: Client<typeof registry>;
19
+ endpoint: string;
20
+ }> {
21
+ if (!driverTestConfig.useRealTimers) {
22
+ vi.useFakeTimers();
23
+ vi.setSystemTime(FAKE_TIME);
24
+ }
25
+
26
+ // Build drivers
27
+ const { endpoint, namespace, runnerName, cleanup } =
28
+ await driverTestConfig.start();
29
+
30
+ let client: Client<typeof registry>;
31
+ if (driverTestConfig.clientType === "http") {
32
+ // Create client
33
+ client = createClient<typeof registry>({
34
+ endpoint,
35
+ namespace,
36
+ runnerName,
37
+ encoding: driverTestConfig.encoding,
38
+ // Disable metadata lookup to prevent redirect to the wrong port.
39
+ // Each test starts a new server on a dynamic port, but the
40
+ // registry's publicEndpoint defaults to port 6420.
41
+ disableMetadataLookup: true,
42
+ });
43
+ } else if (driverTestConfig.clientType === "inline") {
44
+ // Use inline client from driver
45
+ const encoding = driverTestConfig.encoding ?? "bare";
46
+ const managerDriver = createTestInlineClientDriver(endpoint, encoding);
47
+ const runConfig = ClientConfigSchema.parse({
48
+ encoding: encoding,
49
+ });
50
+ client = createClientWithDriver(managerDriver, runConfig);
51
+ } else {
52
+ assertUnreachable(driverTestConfig.clientType);
53
+ }
54
+
55
+ c.onTestFinished(async () => {
56
+ if (!driverTestConfig.HACK_skipCleanupNet) {
57
+ await client.dispose();
58
+ }
59
+
60
+ logger().info("cleaning up test");
61
+ await cleanup();
62
+ });
63
+
64
+ return {
65
+ client,
66
+ endpoint,
67
+ };
68
+ }
69
+
70
+ export async function waitFor(
71
+ driverTestConfig: DriverTestConfig,
72
+ ms: number,
73
+ ): Promise<void> {
74
+ if (driverTestConfig.useRealTimers) {
75
+ return new Promise((resolve) => setTimeout(resolve, ms));
76
+ } else {
77
+ vi.advanceTimersByTime(ms);
78
+ return Promise.resolve();
79
+ }
80
+ }
@@ -0,0 +1,38 @@
1
+ import { UserError } from "@/actor/errors";
2
+ import { loggerWithoutContext } from "@/actor/log";
3
+ import { createEngineDriver } from "@/drivers/engine/mod";
4
+ import { createFileSystemOrMemoryDriver } from "@/drivers/file-system/mod";
5
+ import { DriverConfig, RegistryConfig } from "@/registry/config";
6
+
7
+ /**
8
+ * Chooses the appropriate driver based on the run configuration.
9
+ */
10
+ export function chooseDefaultDriver(
11
+ config: RegistryConfig,
12
+ ): DriverConfig {
13
+ if (config.endpoint && config.driver) {
14
+ throw new UserError(
15
+ "Cannot specify both 'endpoint' and 'driver' in configuration",
16
+ );
17
+ }
18
+
19
+ if (config.driver) {
20
+ return config.driver;
21
+ }
22
+
23
+ if (config.endpoint || config.token) {
24
+ loggerWithoutContext().debug({
25
+ msg: "using rivet engine driver",
26
+ endpoint: config.endpoint,
27
+ });
28
+ return createEngineDriver();
29
+ }
30
+
31
+ loggerWithoutContext().debug({
32
+ msg: "using default file system driver",
33
+ storagePath: config.storagePath,
34
+ });
35
+ return createFileSystemOrMemoryDriver(true, {
36
+ path: config.storagePath,
37
+ });
38
+ }