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,76 @@
1
+ export class ActorClientError extends Error {}
2
+
3
+ export class InternalError extends ActorClientError {}
4
+
5
+ export class ManagerError extends ActorClientError {
6
+ constructor(error: string, opts?: ErrorOptions) {
7
+ super(`Manager error: ${error}`, opts);
8
+ }
9
+ }
10
+
11
+ export class MalformedResponseMessage extends ActorClientError {
12
+ constructor(cause?: unknown) {
13
+ super(`Malformed response message: ${cause}`, { cause });
14
+ }
15
+ }
16
+
17
+ export class ActorError extends ActorClientError {
18
+ __type = "ActorError";
19
+
20
+ constructor(
21
+ public readonly group: string,
22
+ public readonly code: string,
23
+ message: string,
24
+ public readonly metadata?: unknown,
25
+ ) {
26
+ super(message);
27
+ }
28
+ }
29
+
30
+ export class HttpRequestError extends ActorClientError {
31
+ constructor(message: string, opts?: { cause?: unknown }) {
32
+ super(`HTTP request error: ${message}`, { cause: opts?.cause });
33
+ }
34
+ }
35
+
36
+ export class ActorConnDisposed extends ActorClientError {
37
+ constructor() {
38
+ super("Attempting to interact with a disposed actor connection.");
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Checks if an error code indicates a scheduling error that may have more details.
44
+ */
45
+ export function isSchedulingError(group: string, code: string): boolean {
46
+ return (
47
+ group === "guard" &&
48
+ (code === "actor_ready_timeout" || code === "actor_runner_failed")
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Error thrown when actor scheduling fails.
54
+ * Provides detailed information about why the actor failed to start.
55
+ */
56
+ export class ActorSchedulingError extends ActorError {
57
+ public readonly actorId: string;
58
+ public readonly details: unknown;
59
+
60
+ constructor(
61
+ group: string,
62
+ code: string,
63
+ actorId: string,
64
+ details: unknown,
65
+ ) {
66
+ super(
67
+ group,
68
+ code,
69
+ `Actor failed to start (${actorId}): ${JSON.stringify(details)}`,
70
+ { actorId, details },
71
+ );
72
+ this.name = "ActorSchedulingError";
73
+ this.actorId = actorId;
74
+ this.details = details;
75
+ }
76
+ }
@@ -0,0 +1,5 @@
1
+ import { getLogger } from "@/common/log";
2
+
3
+ export function logger() {
4
+ return getLogger("actor-client");
5
+ }
@@ -0,0 +1,2 @@
1
+ // Browser-safe client exports (all client functionality is browser-compatible)
2
+ export * from "./mod";
@@ -0,0 +1,70 @@
1
+ import { injectDevtools } from "@/devtools-loader";
2
+ import type { Registry } from "@/registry";
3
+ import { RemoteManagerDriver } from "@/remote-manager-driver/mod";
4
+ import {
5
+ type Client,
6
+ type ClientConfigInput,
7
+ createClientWithDriver,
8
+ } from "./client";
9
+ import { ClientConfigSchema } from "./config";
10
+
11
+ export type { ActorDefinition, AnyActorDefinition } from "@/actor/definition";
12
+ export type { Encoding } from "@/actor/protocol/serde";
13
+ export {
14
+ ActorClientError,
15
+ ActorConnDisposed,
16
+ ActorError,
17
+ InternalError,
18
+ MalformedResponseMessage,
19
+ ManagerError,
20
+ } from "@/client/errors";
21
+ export type { CreateRequest } from "@/manager/protocol/query";
22
+ export { KEYS as KV_KEYS } from "../actor/instance/keys";
23
+ export type { ActorActionFunction } from "./actor-common";
24
+ export type {
25
+ ActorConn,
26
+ ActorConnStatus,
27
+ ConnectionStateCallback,
28
+ EventUnsubscribe,
29
+ StatusChangeCallback,
30
+ } from "./actor-conn";
31
+ export { ActorConnRaw } from "./actor-conn";
32
+ export type { ActorHandle } from "./actor-handle";
33
+ export { ActorHandleRaw } from "./actor-handle";
34
+ export type {
35
+ ActorAccessor,
36
+ Client,
37
+ ClientRaw,
38
+ CreateOptions,
39
+ ExtractActorsFromRegistry,
40
+ ExtractRegistryFromClient,
41
+ GetOptions,
42
+ GetWithIdOptions,
43
+ QueryOptions,
44
+ Region,
45
+ } from "./client";
46
+
47
+ /**
48
+ * Creates a client with the actor accessor proxy.
49
+ */
50
+ export function createClient<A extends Registry<any>>(
51
+ endpointOrConfig?: string | ClientConfigInput,
52
+ ): Client<A> {
53
+ // Parse config
54
+ const configInput =
55
+ endpointOrConfig === undefined
56
+ ? {}
57
+ : typeof endpointOrConfig === "string"
58
+ ? { endpoint: endpointOrConfig }
59
+ : endpointOrConfig;
60
+ const config = ClientConfigSchema.parse(configInput);
61
+
62
+ // Create client
63
+ const driver = new RemoteManagerDriver(config);
64
+
65
+ if (config.devtools) {
66
+ injectDevtools(config);
67
+ }
68
+
69
+ return createClientWithDriver<A>(driver, config);
70
+ }
@@ -0,0 +1,146 @@
1
+ import * as cbor from "cbor-x";
2
+ import type { Encoding } from "@/actor/protocol/serde";
3
+ import { HEADER_CONN_PARAMS, HEADER_ENCODING } from "@/driver-helpers/mod";
4
+ import type * as protocol from "@/schemas/client-protocol/mod";
5
+ import {
6
+ CURRENT_VERSION as CLIENT_PROTOCOL_CURRENT_VERSION,
7
+ HTTP_QUEUE_SEND_REQUEST_VERSIONED,
8
+ HTTP_QUEUE_SEND_RESPONSE_VERSIONED,
9
+ } from "@/schemas/client-protocol/versioned";
10
+ import {
11
+ type HttpQueueSendRequest as HttpQueueSendRequestJson,
12
+ HttpQueueSendRequestSchema,
13
+ type HttpQueueSendResponse as HttpQueueSendResponseJson,
14
+ HttpQueueSendResponseSchema,
15
+ } from "@/schemas/client-protocol-zod/mod";
16
+ import { bufferToArrayBuffer } from "@/utils";
17
+ import { sendHttpRequest } from "./utils";
18
+
19
+ export interface QueueSender {
20
+ send(
21
+ name: string,
22
+ body: unknown,
23
+ options: QueueSendWaitOptions,
24
+ ): Promise<QueueSendResult>;
25
+ send(
26
+ name: string,
27
+ body: unknown,
28
+ options?: QueueSendNoWaitOptions,
29
+ ): Promise<void>;
30
+ }
31
+
32
+ export interface QueueSendWaitOptions {
33
+ wait: true;
34
+ timeout?: number;
35
+ signal?: AbortSignal;
36
+ }
37
+
38
+ export interface QueueSendNoWaitOptions {
39
+ wait?: false;
40
+ timeout?: never;
41
+ signal?: AbortSignal;
42
+ }
43
+
44
+ export type QueueSendOptions = QueueSendWaitOptions | QueueSendNoWaitOptions;
45
+
46
+ export interface QueueSendResult {
47
+ status: "completed" | "timedOut";
48
+ response?: unknown;
49
+ }
50
+
51
+ interface QueueSenderOptions {
52
+ encoding: Encoding;
53
+ params: unknown;
54
+ customFetch: (request: Request) => Promise<Response>;
55
+ }
56
+
57
+ export function createQueueSender(senderOptions: QueueSenderOptions): QueueSender {
58
+ async function send(
59
+ name: string,
60
+ body: unknown,
61
+ options: QueueSendWaitOptions,
62
+ ): Promise<QueueSendResult>;
63
+ async function send(
64
+ name: string,
65
+ body: unknown,
66
+ options?: QueueSendNoWaitOptions,
67
+ ): Promise<void>;
68
+ async function send(
69
+ name: string,
70
+ body: unknown,
71
+ options?: QueueSendOptions,
72
+ ): Promise<QueueSendResult | void> {
73
+ const wait = options?.wait ?? false;
74
+ const timeout = options?.timeout;
75
+
76
+ const result = await sendHttpRequest<
77
+ protocol.HttpQueueSendRequest,
78
+ protocol.HttpQueueSendResponse,
79
+ HttpQueueSendRequestJson,
80
+ HttpQueueSendResponseJson,
81
+ { body: unknown; wait?: boolean; timeout?: number; name?: string },
82
+ QueueSendResult
83
+ >({
84
+ url: `http://actor/queue/${encodeURIComponent(name)}`,
85
+ method: "POST",
86
+ headers: {
87
+ [HEADER_ENCODING]: senderOptions.encoding,
88
+ ...(senderOptions.params !== undefined
89
+ ? {
90
+ [HEADER_CONN_PARAMS]: JSON.stringify(
91
+ senderOptions.params,
92
+ ),
93
+ }
94
+ : {}),
95
+ },
96
+ body: { body, wait, timeout },
97
+ encoding: senderOptions.encoding,
98
+ customFetch: senderOptions.customFetch,
99
+ signal: options?.signal,
100
+ requestVersion: CLIENT_PROTOCOL_CURRENT_VERSION,
101
+ requestVersionedDataHandler: HTTP_QUEUE_SEND_REQUEST_VERSIONED,
102
+ responseVersion: CLIENT_PROTOCOL_CURRENT_VERSION,
103
+ responseVersionedDataHandler:
104
+ HTTP_QUEUE_SEND_RESPONSE_VERSIONED,
105
+ requestZodSchema: HttpQueueSendRequestSchema,
106
+ responseZodSchema: HttpQueueSendResponseSchema,
107
+ requestToJson: (value): HttpQueueSendRequestJson => ({
108
+ ...value,
109
+ name,
110
+ }),
111
+ requestToBare: (value): protocol.HttpQueueSendRequest => ({
112
+ name: value.name ?? name,
113
+ body: bufferToArrayBuffer(cbor.encode(value.body)),
114
+ wait: value.wait ?? false,
115
+ timeout: value.timeout !== undefined ? BigInt(value.timeout) : null,
116
+ }),
117
+ responseFromJson: (json): QueueSendResult => {
118
+ if (json.response === undefined) {
119
+ return { status: json.status as "completed" | "timedOut" };
120
+ }
121
+ return {
122
+ status: json.status as "completed" | "timedOut",
123
+ response: json.response,
124
+ };
125
+ },
126
+ responseFromBare: (bare): QueueSendResult => {
127
+ if (bare.response === null || bare.response === undefined) {
128
+ return { status: bare.status as "completed" | "timedOut" };
129
+ }
130
+ return {
131
+ status: bare.status as "completed" | "timedOut",
132
+ response: cbor.decode(new Uint8Array(bare.response)),
133
+ };
134
+ },
135
+ });
136
+
137
+ if (wait) {
138
+ return result;
139
+ }
140
+ return;
141
+ }
142
+
143
+ return {
144
+ send,
145
+ };
146
+ }
@@ -0,0 +1,149 @@
1
+ import invariant from "invariant";
2
+ import { PATH_WEBSOCKET_PREFIX } from "@/common/actor-router-consts";
3
+ import { deconstructError } from "@/common/utils";
4
+ import { HEADER_CONN_PARAMS, type ManagerDriver } from "@/driver-helpers/mod";
5
+ import type { ActorQuery } from "@/manager/protocol/query";
6
+ import { queryActor } from "./actor-query";
7
+ import { ActorError } from "./errors";
8
+ import { logger } from "./log";
9
+
10
+ /**
11
+ * Shared implementation for raw HTTP fetch requests
12
+ */
13
+ export async function rawHttpFetch(
14
+ driver: ManagerDriver,
15
+ actorQuery: ActorQuery,
16
+ params: unknown,
17
+ input: string | URL | Request,
18
+ init?: RequestInit,
19
+ ): Promise<Response> {
20
+ // Extract path and merge init options
21
+ let path: string;
22
+ let mergedInit: RequestInit = init || {};
23
+
24
+ if (typeof input === "string") {
25
+ path = input;
26
+ } else if (input instanceof URL) {
27
+ path = input.pathname + input.search;
28
+ } else if (input instanceof Request) {
29
+ // Extract path from Request URL
30
+ const url = new URL(input.url);
31
+ path = url.pathname + url.search;
32
+ // Merge Request properties with init
33
+ const requestHeaders = new Headers(input.headers);
34
+ const initHeaders = new Headers(init?.headers || {});
35
+
36
+ // Merge headers - init headers override request headers
37
+ const mergedHeaders = new Headers(requestHeaders);
38
+ initHeaders.forEach((value, key) => {
39
+ mergedHeaders.set(key, value);
40
+ });
41
+
42
+ mergedInit = {
43
+ method: input.method,
44
+ body: input.body,
45
+ mode: input.mode,
46
+ credentials: input.credentials,
47
+ redirect: input.redirect,
48
+ referrer: input.referrer,
49
+ referrerPolicy: input.referrerPolicy,
50
+ integrity: input.integrity,
51
+ keepalive: input.keepalive,
52
+ signal: input.signal,
53
+ ...mergedInit, // init overrides Request properties
54
+ headers: mergedHeaders, // headers must be set after spread to ensure proper merge
55
+ };
56
+ // Add duplex if body is present
57
+ if (mergedInit.body) {
58
+ (mergedInit as any).duplex = "half";
59
+ }
60
+ } else {
61
+ throw new TypeError("Invalid input type for fetch");
62
+ }
63
+
64
+ try {
65
+ // Get the actor ID
66
+ const { actorId } = await queryActor(undefined, actorQuery, driver);
67
+ logger().debug({ msg: "found actor for raw http", actorId });
68
+ invariant(actorId, "Missing actor ID");
69
+
70
+ // Build the URL with normalized path
71
+ const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
72
+ const url = new URL(`http://actor/request/${normalizedPath}`);
73
+
74
+ // Forward conn params if provided
75
+ const proxyRequestHeaders = new Headers(mergedInit.headers);
76
+ if (params) {
77
+ proxyRequestHeaders.set(HEADER_CONN_PARAMS, JSON.stringify(params));
78
+ }
79
+
80
+ // Forward the request to the actor
81
+ const proxyRequest = new Request(url, {
82
+ ...mergedInit,
83
+ headers: proxyRequestHeaders,
84
+ });
85
+
86
+ return driver.sendRequest(actorId, proxyRequest);
87
+ } catch (err) {
88
+ // Standardize to ClientActorError instead of the native backend error
89
+ const { group, code, message, metadata } = deconstructError(
90
+ err,
91
+ logger(),
92
+ {},
93
+ true,
94
+ );
95
+ throw new ActorError(group, code, message, metadata);
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Shared implementation for raw WebSocket connections
101
+ */
102
+ export async function rawWebSocket(
103
+ driver: ManagerDriver,
104
+ actorQuery: ActorQuery,
105
+ params: unknown,
106
+ path?: string,
107
+ // TODO: Supportp rotocols
108
+ protocols?: string | string[],
109
+ ): Promise<any> {
110
+ // TODO: Do we need encoding in rawWebSocket?
111
+ const encoding = "bare";
112
+
113
+ // Get the actor ID
114
+ const { actorId } = await queryActor(undefined, actorQuery, driver);
115
+ logger().debug({ msg: "found actor for action", actorId });
116
+ invariant(actorId, "Missing actor ID");
117
+
118
+ // Parse path and query parameters
119
+ let pathPortion = "";
120
+ let queryPortion = "";
121
+ if (path) {
122
+ const queryIndex = path.indexOf("?");
123
+ if (queryIndex !== -1) {
124
+ pathPortion = path.substring(0, queryIndex);
125
+ queryPortion = path.substring(queryIndex); // includes the '?'
126
+ } else {
127
+ pathPortion = path;
128
+ }
129
+ // Remove leading slash if present
130
+ if (pathPortion.startsWith("/")) {
131
+ pathPortion = pathPortion.slice(1);
132
+ }
133
+ }
134
+
135
+ const fullPath = `${PATH_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
136
+
137
+ logger().debug({
138
+ msg: "opening websocket",
139
+ actorId,
140
+ encoding,
141
+ path: fullPath,
142
+ });
143
+
144
+ // Open WebSocket
145
+ const ws = await driver.openWebSocket(fullPath, actorId, encoding, params);
146
+
147
+ // Node & browser WebSocket types are incompatible
148
+ return ws as any;
149
+ }
@@ -0,0 +1,44 @@
1
+ //import { exec as execCallback } from "node:child_process";
2
+ //import { setupLogging } from "@/common//log";
3
+ //import type { ClientOptions } from "./client";
4
+ //import { InternalError } from "./errors";
5
+ //import { Client } from "./mod.ts";
6
+ //
7
+ ///**
8
+ // * Uses the Rivet CLI to read the manager endpoint to connect to. This allows
9
+ // * for writing tests that run locally without hardcoding the manager endpoint.
10
+ // */
11
+ //export async function readEndpointFromCli(): Promise<string> {
12
+ // // Read endpoint
13
+ // const cliPath = process.env.RIVET_CLI_PATH ?? "rivet";
14
+ //
15
+ // try {
16
+ // const { stdout, stderr } = await new Promise<{
17
+ // stdout: string;
18
+ // stderr: string;
19
+ // }>((resolve, reject) => {
20
+ // execCallback(`${cliPath} manager endpoint`, (error, stdout, stderr) => {
21
+ // if (error) reject(error);
22
+ // else resolve({ stdout, stderr });
23
+ // });
24
+ // });
25
+ //
26
+ // if (stderr) {
27
+ // throw new Error(stderr);
28
+ // }
29
+ //
30
+ // // Decode output
31
+ // return stdout.trim();
32
+ // } catch (error) {
33
+ // throw new InternalError(`Read endpoint failed: ${error}`);
34
+ // }
35
+ //}
36
+ //
37
+ //export class TestClient extends Client {
38
+ // public constructor(opts?: ClientOptions) {
39
+ // // Setup logging automatically
40
+ // setupLogging();
41
+ //
42
+ // super(readEndpointFromCli(), opts);
43
+ // }
44
+ //}