rivetkit 2.1.4 → 2.1.6-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 (333) hide show
  1. package/dist/browser/client.d.ts +593 -588
  2. package/dist/browser/client.js +215 -35
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +109 -10
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/inspector.tar.gz +0 -0
  7. package/dist/tsup/actor/errors.cjs +2 -2
  8. package/dist/tsup/actor/errors.js +1 -1
  9. package/dist/tsup/{actor-router-consts-D29T1Z-K.d.cts → actor-router-consts-DU-1IdQj.d.cts} +1 -1
  10. package/dist/tsup/{actor-router-consts-D29T1Z-K.d.ts → actor-router-consts-DU-1IdQj.d.ts} +1 -1
  11. package/dist/tsup/chunk-2ELYUO6C.cjs +112 -0
  12. package/dist/tsup/chunk-2ELYUO6C.cjs.map +1 -0
  13. package/dist/tsup/chunk-2LY7RW3Y.cjs +2316 -0
  14. package/dist/tsup/chunk-2LY7RW3Y.cjs.map +1 -0
  15. package/dist/tsup/{chunk-L47L3ZWJ.cjs → chunk-6G7ZNM27.cjs} +11 -6
  16. package/dist/tsup/chunk-6G7ZNM27.cjs.map +1 -0
  17. package/dist/tsup/{chunk-LK36OGGO.cjs → chunk-A4KEUCB6.cjs} +84 -34
  18. package/dist/tsup/chunk-A4KEUCB6.cjs.map +1 -0
  19. package/dist/tsup/{chunk-7HTNH26M.js → chunk-AKUJ5OTO.js} +11 -6
  20. package/dist/tsup/chunk-AKUJ5OTO.js.map +1 -0
  21. package/dist/tsup/{chunk-ANKZ2FS6.js → chunk-C22JYHVT.js} +77 -27
  22. package/dist/tsup/chunk-C22JYHVT.js.map +1 -0
  23. package/dist/tsup/chunk-C4EB42ET.js +1459 -0
  24. package/dist/tsup/chunk-C4EB42ET.js.map +1 -0
  25. package/dist/tsup/chunk-CGGGBIDP.cjs +1459 -0
  26. package/dist/tsup/chunk-CGGGBIDP.cjs.map +1 -0
  27. package/dist/tsup/chunk-CMQPDBBR.cjs +1486 -0
  28. package/dist/tsup/chunk-CMQPDBBR.cjs.map +1 -0
  29. package/dist/tsup/{chunk-AQD4CBZ2.cjs → chunk-DH6UINWA.cjs} +4 -4
  30. package/dist/tsup/{chunk-AQD4CBZ2.cjs.map → chunk-DH6UINWA.cjs.map} +1 -1
  31. package/dist/tsup/chunk-DK46YYCJ.js +1486 -0
  32. package/dist/tsup/chunk-DK46YYCJ.js.map +1 -0
  33. package/dist/tsup/chunk-EGWXXBZV.js +2316 -0
  34. package/dist/tsup/chunk-EGWXXBZV.js.map +1 -0
  35. package/dist/tsup/{chunk-HBYEYBIC.js → chunk-EONWXYMN.js} +2 -2
  36. package/dist/tsup/{chunk-N4KRDJ56.js → chunk-GFGRBYO2.js} +35 -6
  37. package/dist/tsup/chunk-GFGRBYO2.js.map +1 -0
  38. package/dist/tsup/{chunk-TEUL4UYN.cjs → chunk-GUHXWPGB.cjs} +1515 -1479
  39. package/dist/tsup/chunk-GUHXWPGB.cjs.map +1 -0
  40. package/dist/tsup/{chunk-3B6PCYJB.cjs → chunk-HNE2AK6C.cjs} +2375 -3713
  41. package/dist/tsup/chunk-HNE2AK6C.cjs.map +1 -0
  42. package/dist/tsup/{chunk-5UEFNG7P.js → chunk-I5I6OALK.js} +2 -2
  43. package/dist/tsup/chunk-IHQAF2HV.cjs +23 -0
  44. package/dist/tsup/chunk-IHQAF2HV.cjs.map +1 -0
  45. package/dist/tsup/{chunk-UWAGLDT6.cjs → chunk-JJNZQDUN.cjs} +667 -2517
  46. package/dist/tsup/chunk-JJNZQDUN.cjs.map +1 -0
  47. package/dist/tsup/{chunk-M6H4XIF4.js → chunk-JJSPHLJN.js} +219 -287
  48. package/dist/tsup/chunk-JJSPHLJN.js.map +1 -0
  49. package/dist/tsup/chunk-JRKPV5NJ.js +481 -0
  50. package/dist/tsup/chunk-JRKPV5NJ.js.map +1 -0
  51. package/dist/tsup/{chunk-VKVNIQRQ.js → chunk-K7MVU5SI.js} +36 -41
  52. package/dist/tsup/chunk-K7MVU5SI.js.map +1 -0
  53. package/dist/tsup/{chunk-KJSYAUOM.js → chunk-MLK3GY6P.js} +43 -27
  54. package/dist/tsup/chunk-MLK3GY6P.js.map +1 -0
  55. package/dist/tsup/{chunk-4KSHPFXF.cjs → chunk-MPLMTJY5.cjs} +123 -23
  56. package/dist/tsup/chunk-MPLMTJY5.cjs.map +1 -0
  57. package/dist/tsup/{chunk-UDMRZR6A.js → chunk-PQWI44WD.js} +1755 -3093
  58. package/dist/tsup/chunk-PQWI44WD.js.map +1 -0
  59. package/dist/tsup/{chunk-SR3KQE7Q.cjs → chunk-SQFCIDCG.cjs} +35 -6
  60. package/dist/tsup/chunk-SQFCIDCG.cjs.map +1 -0
  61. package/dist/tsup/{chunk-3GTO6H3E.js → chunk-SVHJSM2E.js} +110 -24
  62. package/dist/tsup/chunk-SVHJSM2E.js.map +1 -0
  63. package/dist/tsup/chunk-T5KYKM6R.js +49 -0
  64. package/dist/tsup/chunk-T5KYKM6R.js.map +1 -0
  65. package/dist/tsup/{chunk-GXRVSSVD.cjs → chunk-TJ7DKW6F.cjs} +123 -37
  66. package/dist/tsup/chunk-TJ7DKW6F.cjs.map +1 -0
  67. package/dist/tsup/chunk-UQZRMTM3.js +23 -0
  68. package/dist/tsup/chunk-UQZRMTM3.js.map +1 -0
  69. package/dist/tsup/{chunk-QPADHLDU.cjs → chunk-V3JSZR5P.cjs} +3 -3
  70. package/dist/tsup/{chunk-QPADHLDU.cjs.map → chunk-V3JSZR5P.cjs.map} +1 -1
  71. package/dist/tsup/{chunk-HKOSZKKZ.cjs → chunk-VBR35EQF.cjs} +271 -339
  72. package/dist/tsup/chunk-VBR35EQF.cjs.map +1 -0
  73. package/dist/tsup/{chunk-DZXDUGLL.js → chunk-VWYO36X4.js} +117 -17
  74. package/dist/tsup/chunk-VWYO36X4.js.map +1 -0
  75. package/dist/tsup/{chunk-I6PL6QIY.js → chunk-WW27B6DM.js} +1452 -1416
  76. package/dist/tsup/chunk-WW27B6DM.js.map +1 -0
  77. package/dist/tsup/chunk-YAE3MEJM.cjs +49 -0
  78. package/dist/tsup/chunk-YAE3MEJM.cjs.map +1 -0
  79. package/dist/tsup/{chunk-KTWY3K6Z.js → chunk-YGYGANCA.js} +473 -2323
  80. package/dist/tsup/chunk-YGYGANCA.js.map +1 -0
  81. package/dist/tsup/chunk-YZJWZBY5.cjs +481 -0
  82. package/dist/tsup/chunk-YZJWZBY5.cjs.map +1 -0
  83. package/dist/tsup/{chunk-ZFY5J2EP.cjs → chunk-ZZLJ5TSM.cjs} +39 -44
  84. package/dist/tsup/chunk-ZZLJ5TSM.cjs.map +1 -0
  85. package/dist/tsup/client/mod.cjs +10 -7
  86. package/dist/tsup/client/mod.cjs.map +1 -1
  87. package/dist/tsup/client/mod.d.cts +6 -6
  88. package/dist/tsup/client/mod.d.ts +6 -6
  89. package/dist/tsup/client/mod.js +11 -8
  90. package/dist/tsup/common/log.cjs +3 -3
  91. package/dist/tsup/common/log.js +2 -2
  92. package/dist/tsup/common/websocket.cjs +4 -4
  93. package/dist/tsup/common/websocket.js +3 -3
  94. package/dist/tsup/{config-Qj-zLJPc.d.ts → config-C2Wwnc69.d.ts} +142 -208
  95. package/dist/tsup/{config-BiNoIHRs.d.ts → config-DROwzBLT.d.cts} +82 -6
  96. package/dist/tsup/{config-BiNoIHRs.d.cts → config-DROwzBLT.d.ts} +82 -6
  97. package/dist/tsup/{config-iPj5l1bL.d.cts → config-ehT-_3BB.d.cts} +142 -208
  98. package/dist/tsup/{context-DzvH1PBK.d.cts → context-DGMJuAyc.d.ts} +16 -3
  99. package/dist/tsup/{context-CQCMuHND.d.ts → context-Dpp2RJbW.d.cts} +16 -3
  100. package/dist/tsup/db/drizzle/mod.cjs +3 -3
  101. package/dist/tsup/db/drizzle/mod.d.cts +1 -1
  102. package/dist/tsup/db/drizzle/mod.d.ts +1 -1
  103. package/dist/tsup/db/drizzle/mod.js +2 -2
  104. package/dist/tsup/db/mod.cjs +3 -3
  105. package/dist/tsup/db/mod.d.cts +1 -1
  106. package/dist/tsup/db/mod.d.ts +1 -1
  107. package/dist/tsup/db/mod.js +2 -2
  108. package/dist/tsup/{driver-Jo8v-kbU.d.ts → driver-CYZP9QYo.d.ts} +1 -1
  109. package/dist/tsup/{driver-iV8J-WMv.d.cts → driver-CoTFpipv.d.cts} +1 -1
  110. package/dist/tsup/driver-helpers/mod.cjs +7 -5
  111. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  112. package/dist/tsup/driver-helpers/mod.d.cts +17 -18
  113. package/dist/tsup/driver-helpers/mod.d.ts +17 -18
  114. package/dist/tsup/driver-helpers/mod.js +11 -9
  115. package/dist/tsup/driver-test-suite/mod.cjs +1275 -228
  116. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  117. package/dist/tsup/driver-test-suite/mod.d.cts +6 -5
  118. package/dist/tsup/driver-test-suite/mod.d.ts +6 -5
  119. package/dist/tsup/driver-test-suite/mod.js +1581 -534
  120. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  121. package/dist/tsup/inspector/mod.cjs +4 -4
  122. package/dist/tsup/inspector/mod.js +3 -3
  123. package/dist/tsup/mod.cjs +15 -9
  124. package/dist/tsup/mod.cjs.map +1 -1
  125. package/dist/tsup/mod.d.cts +9 -9
  126. package/dist/tsup/mod.d.ts +9 -9
  127. package/dist/tsup/mod.js +19 -13
  128. package/dist/tsup/sandbox/client.cjs +28 -0
  129. package/dist/tsup/sandbox/client.cjs.map +1 -0
  130. package/dist/tsup/sandbox/client.d.cts +88 -0
  131. package/dist/tsup/sandbox/client.d.ts +88 -0
  132. package/dist/tsup/sandbox/client.js +28 -0
  133. package/dist/tsup/sandbox/client.js.map +1 -0
  134. package/dist/tsup/sandbox/index.cjs +761 -0
  135. package/dist/tsup/sandbox/index.cjs.map +1 -0
  136. package/dist/tsup/sandbox/index.d.cts +120 -0
  137. package/dist/tsup/sandbox/index.d.ts +120 -0
  138. package/dist/tsup/sandbox/index.js +761 -0
  139. package/dist/tsup/sandbox/index.js.map +1 -0
  140. package/dist/tsup/sandbox/providers/computesdk.cjs +3 -0
  141. package/dist/tsup/sandbox/providers/computesdk.cjs.map +1 -0
  142. package/dist/tsup/sandbox/providers/computesdk.d.cts +7 -0
  143. package/dist/tsup/sandbox/providers/computesdk.d.ts +7 -0
  144. package/dist/tsup/sandbox/providers/computesdk.js +3 -0
  145. package/dist/tsup/sandbox/providers/computesdk.js.map +1 -0
  146. package/dist/tsup/sandbox/providers/daytona.cjs +3 -0
  147. package/dist/tsup/sandbox/providers/daytona.cjs.map +1 -0
  148. package/dist/tsup/sandbox/providers/daytona.d.cts +1 -0
  149. package/dist/tsup/sandbox/providers/daytona.d.ts +1 -0
  150. package/dist/tsup/sandbox/providers/daytona.js +3 -0
  151. package/dist/tsup/sandbox/providers/daytona.js.map +1 -0
  152. package/dist/tsup/sandbox/providers/docker.cjs +3 -0
  153. package/dist/tsup/sandbox/providers/docker.cjs.map +1 -0
  154. package/dist/tsup/sandbox/providers/docker.d.cts +1 -0
  155. package/dist/tsup/sandbox/providers/docker.d.ts +1 -0
  156. package/dist/tsup/sandbox/providers/docker.js +3 -0
  157. package/dist/tsup/sandbox/providers/docker.js.map +1 -0
  158. package/dist/tsup/sandbox/providers/e2b.cjs +3 -0
  159. package/dist/tsup/sandbox/providers/e2b.cjs.map +1 -0
  160. package/dist/tsup/sandbox/providers/e2b.d.cts +1 -0
  161. package/dist/tsup/sandbox/providers/e2b.d.ts +1 -0
  162. package/dist/tsup/sandbox/providers/e2b.js +3 -0
  163. package/dist/tsup/sandbox/providers/e2b.js.map +1 -0
  164. package/dist/tsup/sandbox/providers/local.cjs +3 -0
  165. package/dist/tsup/sandbox/providers/local.cjs.map +1 -0
  166. package/dist/tsup/sandbox/providers/local.d.cts +1 -0
  167. package/dist/tsup/sandbox/providers/local.d.ts +1 -0
  168. package/dist/tsup/sandbox/providers/local.js +3 -0
  169. package/dist/tsup/sandbox/providers/local.js.map +1 -0
  170. package/dist/tsup/sandbox/providers/modal.cjs +3 -0
  171. package/dist/tsup/sandbox/providers/modal.cjs.map +1 -0
  172. package/dist/tsup/sandbox/providers/modal.d.cts +1 -0
  173. package/dist/tsup/sandbox/providers/modal.d.ts +1 -0
  174. package/dist/tsup/sandbox/providers/modal.js +3 -0
  175. package/dist/tsup/sandbox/providers/modal.js.map +1 -0
  176. package/dist/tsup/sandbox/providers/vercel.cjs +3 -0
  177. package/dist/tsup/sandbox/providers/vercel.cjs.map +1 -0
  178. package/dist/tsup/sandbox/providers/vercel.d.cts +1 -0
  179. package/dist/tsup/sandbox/providers/vercel.d.ts +1 -0
  180. package/dist/tsup/sandbox/providers/vercel.js +3 -0
  181. package/dist/tsup/sandbox/providers/vercel.js.map +1 -0
  182. package/dist/tsup/serve-test-suite/mod.cjs +451 -327
  183. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  184. package/dist/tsup/serve-test-suite/mod.js +362 -238
  185. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  186. package/dist/tsup/test/mod.cjs +17 -14
  187. package/dist/tsup/test/mod.cjs.map +1 -1
  188. package/dist/tsup/test/mod.d.cts +4 -4
  189. package/dist/tsup/test/mod.d.ts +4 -4
  190. package/dist/tsup/test/mod.js +14 -11
  191. package/dist/tsup/test/mod.js.map +1 -1
  192. package/dist/tsup/utils.cjs +3 -3
  193. package/dist/tsup/utils.js +2 -2
  194. package/dist/tsup/workflow/mod.cjs +6 -6
  195. package/dist/tsup/workflow/mod.d.cts +13 -9
  196. package/dist/tsup/workflow/mod.d.ts +13 -9
  197. package/dist/tsup/workflow/mod.js +5 -5
  198. package/package.json +113 -14
  199. package/src/actor/config.ts +94 -88
  200. package/src/actor/conn/drivers/websocket.ts +2 -1
  201. package/src/actor/contexts/base/actor.ts +27 -4
  202. package/src/actor/database.ts +6 -1
  203. package/src/actor/driver.ts +27 -8
  204. package/src/actor/errors.ts +10 -5
  205. package/src/actor/instance/connection-manager.ts +4 -3
  206. package/src/actor/instance/kv.ts +52 -9
  207. package/src/actor/instance/mod.ts +135 -84
  208. package/src/actor/instance/queue-manager.ts +2 -5
  209. package/src/actor/instance/queue.ts +31 -29
  210. package/src/actor/instance/state-manager.ts +7 -1
  211. package/src/actor/instance/traces-driver.ts +34 -36
  212. package/src/actor/metrics.ts +137 -0
  213. package/src/actor/protocol/old.ts +9 -12
  214. package/src/actor/router-websocket-endpoints.ts +12 -6
  215. package/src/actor/router.ts +46 -9
  216. package/src/actor/schema.ts +14 -22
  217. package/src/client/actor-common.ts +65 -0
  218. package/src/client/actor-conn.ts +71 -9
  219. package/src/client/actor-handle.ts +22 -5
  220. package/src/client/client.ts +32 -6
  221. package/src/client/config.ts +18 -21
  222. package/src/client/mod.ts +1 -0
  223. package/src/client/queue.ts +8 -6
  224. package/src/common/inline-websocket-adapter.ts +8 -2
  225. package/src/common/router.ts +1 -4
  226. package/src/common/utils.ts +2 -5
  227. package/src/db/config.ts +10 -5
  228. package/src/db/drizzle/mod.ts +51 -41
  229. package/src/db/mod.ts +54 -29
  230. package/src/db/shared.ts +42 -8
  231. package/src/driver-helpers/mod.ts +2 -1
  232. package/src/driver-helpers/sqlite-pool.ts +42 -0
  233. package/src/driver-helpers/utils.ts +0 -20
  234. package/src/driver-test-suite/mod.ts +11 -1
  235. package/src/driver-test-suite/tests/access-control.ts +19 -12
  236. package/src/driver-test-suite/tests/action-features.ts +20 -8
  237. package/src/driver-test-suite/tests/actor-conn.ts +94 -8
  238. package/src/driver-test-suite/tests/actor-db-kv-stats.ts +282 -0
  239. package/src/driver-test-suite/tests/actor-db-raw.ts +6 -2
  240. package/src/driver-test-suite/tests/actor-db.ts +101 -31
  241. package/src/driver-test-suite/tests/actor-inspector.ts +174 -32
  242. package/src/driver-test-suite/tests/actor-kv.ts +79 -33
  243. package/src/driver-test-suite/tests/actor-lifecycle.ts +4 -12
  244. package/src/driver-test-suite/tests/actor-queue.ts +125 -17
  245. package/src/driver-test-suite/tests/actor-run.ts +59 -55
  246. package/src/driver-test-suite/tests/actor-sandbox.ts +78 -0
  247. package/src/driver-test-suite/tests/actor-schedule.ts +1 -4
  248. package/src/driver-test-suite/tests/actor-sleep.ts +111 -0
  249. package/src/driver-test-suite/tests/actor-workflow.ts +387 -3
  250. package/src/driver-test-suite/tests/conn-error-serialization.ts +3 -1
  251. package/src/driver-test-suite/tests/raw-websocket.ts +5 -1
  252. package/src/drivers/default.ts +1 -3
  253. package/src/drivers/engine/actor-driver.ts +94 -21
  254. package/src/drivers/engine/config.ts +4 -12
  255. package/src/drivers/engine/mod.ts +1 -5
  256. package/src/drivers/file-system/actor.ts +43 -8
  257. package/src/drivers/file-system/global-state.ts +180 -64
  258. package/src/drivers/file-system/kv-limits.ts +1 -1
  259. package/src/drivers/file-system/sqlite-runtime.ts +13 -4
  260. package/src/engine-process/mod.ts +5 -1
  261. package/src/inspector/actor-inspector.ts +47 -21
  262. package/src/inspector/config.ts +1 -4
  263. package/src/inspector/mod.browser.ts +2 -2
  264. package/src/inspector/mod.ts +4 -1
  265. package/src/inspector/serve-ui.ts +0 -1
  266. package/src/inspector/workflow-history-json.ts +309 -0
  267. package/src/manager/gateway.ts +6 -2
  268. package/src/manager/router.ts +3 -3
  269. package/src/registry/config/index.ts +65 -12
  270. package/src/registry/config/runner.ts +19 -4
  271. package/src/registry/index.ts +42 -89
  272. package/src/sandbox/actor/db.ts +36 -0
  273. package/src/sandbox/actor/index.ts +476 -0
  274. package/src/sandbox/actor/session.ts +350 -0
  275. package/src/sandbox/actor.test.ts +36 -0
  276. package/src/sandbox/client.test.ts +484 -0
  277. package/src/sandbox/client.ts +707 -0
  278. package/src/sandbox/config.ts +151 -0
  279. package/src/sandbox/index.ts +41 -0
  280. package/src/sandbox/providers/computesdk.ts +1 -0
  281. package/src/sandbox/providers/daytona.ts +1 -0
  282. package/src/sandbox/providers/docker.ts +1 -0
  283. package/src/sandbox/providers/e2b.ts +1 -0
  284. package/src/sandbox/providers/local.ts +1 -0
  285. package/src/sandbox/providers/modal.ts +1 -0
  286. package/src/sandbox/providers/vercel.ts +1 -0
  287. package/src/sandbox/session-persist-driver.ts +180 -0
  288. package/src/sandbox/types.ts +138 -0
  289. package/src/serverless/configure.ts +5 -3
  290. package/src/serverless/router.test.ts +17 -9
  291. package/src/serverless/router.ts +20 -13
  292. package/src/test/mod.ts +3 -4
  293. package/src/utils/endpoint-parser.test.ts +6 -2
  294. package/src/utils/endpoint-parser.ts +6 -2
  295. package/src/utils/env-vars.ts +0 -2
  296. package/src/utils/node.ts +1 -1
  297. package/src/utils/serve.ts +10 -5
  298. package/src/utils.ts +6 -1
  299. package/src/workflow/constants.ts +1 -2
  300. package/src/workflow/context.ts +42 -9
  301. package/src/workflow/driver.ts +57 -23
  302. package/src/workflow/inspector.ts +7 -13
  303. package/src/workflow/mod.ts +91 -4
  304. package/dist/tsup/chunk-3B6PCYJB.cjs.map +0 -1
  305. package/dist/tsup/chunk-3GTO6H3E.js.map +0 -1
  306. package/dist/tsup/chunk-4KSHPFXF.cjs.map +0 -1
  307. package/dist/tsup/chunk-6LJAZ5R4.cjs +0 -96
  308. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +0 -1
  309. package/dist/tsup/chunk-7HTNH26M.js.map +0 -1
  310. package/dist/tsup/chunk-ANKZ2FS6.js.map +0 -1
  311. package/dist/tsup/chunk-DZXDUGLL.js.map +0 -1
  312. package/dist/tsup/chunk-GXRVSSVD.cjs.map +0 -1
  313. package/dist/tsup/chunk-H5TSEPN4.cjs +0 -645
  314. package/dist/tsup/chunk-H5TSEPN4.cjs.map +0 -1
  315. package/dist/tsup/chunk-HKOSZKKZ.cjs.map +0 -1
  316. package/dist/tsup/chunk-I6PL6QIY.js.map +0 -1
  317. package/dist/tsup/chunk-KJSYAUOM.js.map +0 -1
  318. package/dist/tsup/chunk-KTWY3K6Z.js.map +0 -1
  319. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +0 -1
  320. package/dist/tsup/chunk-LK36OGGO.cjs.map +0 -1
  321. package/dist/tsup/chunk-M6H4XIF4.js.map +0 -1
  322. package/dist/tsup/chunk-N4KRDJ56.js.map +0 -1
  323. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +0 -1
  324. package/dist/tsup/chunk-TEFYRRAK.js +0 -645
  325. package/dist/tsup/chunk-TEFYRRAK.js.map +0 -1
  326. package/dist/tsup/chunk-TEUL4UYN.cjs.map +0 -1
  327. package/dist/tsup/chunk-UDMRZR6A.js.map +0 -1
  328. package/dist/tsup/chunk-UWAGLDT6.cjs.map +0 -1
  329. package/dist/tsup/chunk-VKVNIQRQ.js.map +0 -1
  330. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +0 -1
  331. package/src/db/sqlite-vfs.ts +0 -12
  332. /package/dist/tsup/{chunk-HBYEYBIC.js.map → chunk-EONWXYMN.js.map} +0 -0
  333. /package/dist/tsup/{chunk-5UEFNG7P.js.map → chunk-I5I6OALK.js.map} +0 -0
@@ -1,37 +1,25 @@
1
1
  import {
2
- ActorDefinition,
3
- createActorRouter,
4
2
  createFileSystemOrMemoryDriver,
5
3
  ensureDirectoryExists,
6
- getStoragePath,
4
+ getStoragePath
5
+ } from "./chunk-EGWXXBZV.js";
6
+ import {
7
+ createActorRouter,
7
8
  lookupInRegistry
8
- } from "./chunk-KTWY3K6Z.js";
9
+ } from "./chunk-YGYGANCA.js";
9
10
  import {
10
- ClientConfigSchemaBase,
11
11
  RemoteManagerDriver,
12
12
  convertRegistryConfigToClientConfig,
13
- createClient,
14
13
  createClientWithDriver,
15
14
  getDatacenters,
16
15
  getEndpoint,
17
- transformClientConfig,
18
16
  updateRunnerConfig
19
- } from "./chunk-I6PL6QIY.js";
17
+ } from "./chunk-WW27B6DM.js";
20
18
  import {
21
- CONN_STATE_MANAGER_SYMBOL,
22
- ENGINE_ENDPOINT,
23
- ENGINE_PORT,
24
- InspectorConfigSchema,
25
- PATH_CONNECT,
26
- PATH_INSPECTOR_CONNECT,
27
- PATH_WEBSOCKET_BASE,
28
- PATH_WEBSOCKET_PREFIX,
29
- RegistryConfigSchema,
30
- buildActorNames,
19
+ SqliteVfsPoolManager,
31
20
  buildManagerRouter,
32
21
  createRouter,
33
22
  crossPlatformServe,
34
- deserializeActorKey,
35
23
  findFreePort,
36
24
  getInitialActorKvState,
37
25
  getNodeChildProcess,
@@ -40,55 +28,49 @@ import {
40
28
  getNodeFsSync,
41
29
  getNodePath,
42
30
  getNodeStream,
31
+ importNodeDependencies,
32
+ loadRuntimeServeStatic,
33
+ logger
34
+ } from "./chunk-C4EB42ET.js";
35
+ import {
36
+ CONN_STATE_MANAGER_SYMBOL,
37
+ ENGINE_ENDPOINT,
38
+ ENGINE_PORT,
39
+ PATH_CONNECT,
40
+ PATH_INSPECTOR_CONNECT,
41
+ PATH_WEBSOCKET_BASE,
42
+ PATH_WEBSOCKET_PREFIX,
43
+ RegistryConfigSchema,
44
+ buildActorNames,
45
+ deserializeActorKey,
43
46
  getValueLength,
44
47
  handleHealthRequest,
45
48
  handleMetadataRequest,
46
- importNodeDependencies,
47
- logger,
48
49
  parseWebSocketProtocols,
49
50
  routeWebSocket,
50
51
  truncateRawWebSocketPathPrefix
51
- } from "./chunk-UDMRZR6A.js";
52
+ } from "./chunk-PQWI44WD.js";
52
53
  import {
53
- ActorConfigSchema,
54
54
  KEYS,
55
- event,
56
- loggerWithoutContext,
57
- queue
58
- } from "./chunk-ANKZ2FS6.js";
55
+ loggerWithoutContext
56
+ } from "./chunk-C22JYHVT.js";
59
57
  import {
60
- LogLevelSchema,
61
58
  VERSION,
62
59
  configureBaseLogger,
63
60
  configureDefaultLogger,
64
61
  detectRuntime,
65
62
  getLogger,
66
- getNodeEnv,
67
- getRivetRunEngine,
68
- getRivetRunEngineVersion,
69
- getRivetRunnerKey,
70
- getRivetRunnerKind,
71
- getRivetToken,
72
- isDev,
73
63
  package_default,
74
64
  promiseWithResolvers,
75
65
  setLongTimeout,
76
66
  stringifyError
77
- } from "./chunk-DZXDUGLL.js";
67
+ } from "./chunk-VWYO36X4.js";
78
68
  import {
79
69
  EndpointMismatch,
80
70
  InvalidRequest,
81
71
  NamespaceMismatch,
82
72
  UserError
83
- } from "./chunk-7HTNH26M.js";
84
-
85
- // src/actor/mod.ts
86
- function actor(input) {
87
- const config = ActorConfigSchema.parse(input);
88
- return new ActorDefinition(config);
89
- }
90
- var event2 = event;
91
- var queue2 = queue;
73
+ } from "./chunk-AKUJ5OTO.js";
92
74
 
93
75
  // src/drivers/engine/actor-driver.ts
94
76
  import { idToStr, Runner } from "@rivetkit/engine-runner";
@@ -114,8 +96,19 @@ var EngineActorDriver = class {
114
96
  #runner;
115
97
  #actors = /* @__PURE__ */ new Map();
116
98
  #actorRouter;
117
- #runnerStarted = promiseWithResolvers((reason) => logger2().warn({ msg: "unhandled runner started promise rejection", reason }));
118
- #runnerStopped = promiseWithResolvers((reason) => logger2().warn({ msg: "unhandled runner stopped promise rejection", reason }));
99
+ #sqlitePool;
100
+ #runnerStarted = promiseWithResolvers(
101
+ (reason) => logger2().warn({
102
+ msg: "unhandled runner started promise rejection",
103
+ reason
104
+ })
105
+ );
106
+ #runnerStopped = promiseWithResolvers(
107
+ (reason) => logger2().warn({
108
+ msg: "unhandled runner stopped promise rejection",
109
+ reason
110
+ })
111
+ );
119
112
  #isRunnerStopped = false;
120
113
  // HACK: Track actor stop intent locally since the runner protocol doesn't
121
114
  // pass the stop reason to onActorStop. This will be fixed when the runner
@@ -138,6 +131,7 @@ var EngineActorDriver = class {
138
131
  this.#config = config;
139
132
  this.#managerDriver = managerDriver;
140
133
  this.#inlineClient = inlineClient;
134
+ this.#sqlitePool = new SqliteVfsPoolManager(config);
141
135
  const token = config.token;
142
136
  this.#actorRouter = createActorRouter(
143
137
  config,
@@ -152,7 +146,6 @@ var EngineActorDriver = class {
152
146
  namespace: config.namespace,
153
147
  totalSlots: config.runner.totalSlots,
154
148
  runnerName: config.runner.runnerName,
155
- runnerKey: config.runner.runnerKey ?? crypto.randomUUID(),
156
149
  metadata: {
157
150
  rivetkit: { version: VERSION }
158
151
  },
@@ -173,7 +166,8 @@ var EngineActorDriver = class {
173
166
  },
174
167
  onActorStart: this.#runnerOnActorStart.bind(this),
175
168
  onActorStop: this.#runnerOnActorStop.bind(this),
176
- logger: getLogger("engine-runner")
169
+ logger: getLogger("engine-runner"),
170
+ debugLatencyMs: process.env._RIVET_DEBUG_LATENCY_MS ? Number.parseInt(process.env._RIVET_DEBUG_LATENCY_MS, 10) : void 0
177
171
  };
178
172
  this.#runner = new Runner(engineRunnerConfig);
179
173
  this.#runner.start();
@@ -199,8 +193,8 @@ var EngineActorDriver = class {
199
193
  getContext(actorId) {
200
194
  return {};
201
195
  }
202
- async setAlarm(actor2, timestamp) {
203
- const handler = this.#actors.get(actor2.id);
196
+ async setAlarm(actor, timestamp) {
197
+ const handler = this.#actors.get(actor.id);
204
198
  if (!handler) {
205
199
  logger2().warn({
206
200
  msg: "no handler for actor to set alarm"
@@ -213,10 +207,10 @@ var EngineActorDriver = class {
213
207
  }
214
208
  const delay = Math.max(0, timestamp - Date.now());
215
209
  handler.alarmTimeout = setLongTimeout(() => {
216
- actor2.onAlarm();
210
+ actor.onAlarm();
217
211
  handler.alarmTimeout = void 0;
218
212
  }, delay);
219
- this.#runner.setAlarm(actor2.id, timestamp);
213
+ this.#runner.setAlarm(actor.id, timestamp);
220
214
  }
221
215
  // No database overrides - will use KV-backed implementation from rivetkit/db
222
216
  // MARK: - Batch KV operations
@@ -229,6 +223,9 @@ var EngineActorDriver = class {
229
223
  async kvBatchDelete(actorId, keys) {
230
224
  await this.#runner.kvDelete(actorId, keys);
231
225
  }
226
+ async kvDeleteRange(actorId, start, end) {
227
+ await this.#runner.kvDeleteRange(actorId, start, end);
228
+ }
232
229
  async kvList(actorId) {
233
230
  const entries = await this.#runner.kvListPrefix(
234
231
  actorId,
@@ -243,8 +240,12 @@ var EngineActorDriver = class {
243
240
  });
244
241
  return keys;
245
242
  }
246
- async kvListPrefix(actorId, prefix) {
247
- const result = await this.#runner.kvListPrefix(actorId, prefix);
243
+ async kvListPrefix(actorId, prefix, options) {
244
+ const result = await this.#runner.kvListPrefix(
245
+ actorId,
246
+ prefix,
247
+ options
248
+ );
248
249
  logger2().info({
249
250
  msg: "kvListPrefix called",
250
251
  actorId,
@@ -254,11 +255,18 @@ var EngineActorDriver = class {
254
255
  });
255
256
  return result;
256
257
  }
258
+ async kvListRange(actorId, start, end, options) {
259
+ return await this.#runner.kvListRange(
260
+ actorId,
261
+ start,
262
+ end,
263
+ true,
264
+ options
265
+ );
266
+ }
257
267
  /** Creates a SQLite VFS instance for creating KV-backed databases */
258
- async createSqliteVfs() {
259
- const specifier = "@rivetkit/sqlite-vfs";
260
- const { SqliteVfs } = await import(specifier);
261
- return new SqliteVfs();
268
+ async createSqliteVfs(actorId) {
269
+ return await this.#sqlitePool.acquire(actorId);
262
270
  }
263
271
  // MARK: - Actor Lifecycle
264
272
  async loadActor(actorId) {
@@ -296,6 +304,7 @@ var EngineActorDriver = class {
296
304
  }
297
305
  await Promise.all(stopPromises);
298
306
  logger2().debug({ msg: "all actors stopped" });
307
+ await this.#sqlitePool.shutdown();
299
308
  try {
300
309
  await this.#runner.shutdown(immediate);
301
310
  } catch (error) {
@@ -371,7 +380,12 @@ var EngineActorDriver = class {
371
380
  let handler = this.#actors.get(actorId);
372
381
  if (!handler) {
373
382
  handler = {
374
- actorStartPromise: promiseWithResolvers((reason) => logger2().warn({ msg: "unhandled actor start promise rejection", reason }))
383
+ actorStartPromise: promiseWithResolvers(
384
+ (reason) => logger2().warn({
385
+ msg: "unhandled actor start promise rejection",
386
+ reason
387
+ })
388
+ )
375
389
  };
376
390
  this.#actors.set(actorId, handler);
377
391
  }
@@ -405,11 +419,17 @@ var EngineActorDriver = class {
405
419
  msg: "applying config limits from protocol",
406
420
  protocolMetadata
407
421
  });
408
- const stopThresholdMax = Math.max(Number(protocolMetadata.actorStopThreshold) - 1e3, 0);
422
+ const stopThresholdMax = Math.max(
423
+ Number(protocolMetadata.actorStopThreshold) - 1e3,
424
+ 0
425
+ );
409
426
  handler.actor.overrides.onSleepTimeout = stopThresholdMax;
410
427
  handler.actor.overrides.onDestroyTimeout = stopThresholdMax;
411
428
  if (protocolMetadata.serverlessDrainGracePeriod) {
412
- const drainMax = Math.max(Number(protocolMetadata.serverlessDrainGracePeriod) - 1e3, 0);
429
+ const drainMax = Math.max(
430
+ Number(protocolMetadata.serverlessDrainGracePeriod) - 1e3,
431
+ 0
432
+ );
413
433
  handler.actor.overrides.runStopTimeout = drainMax;
414
434
  handler.actor.overrides.waitUntilTimeout = drainMax;
415
435
  }
@@ -428,7 +448,9 @@ var EngineActorDriver = class {
428
448
  const error = innerError instanceof Error ? new Error(
429
449
  `Failed to start actor ${actorId}: ${innerError.message}`,
430
450
  { cause: innerError }
431
- ) : new Error(`Failed to start actor ${actorId}: ${String(innerError)}`);
451
+ ) : new Error(
452
+ `Failed to start actor ${actorId}: ${String(innerError)}`
453
+ );
432
454
  handler.actor = void 0;
433
455
  handler.actorStartError = error;
434
456
  (_a = handler.actorStartPromise) == null ? void 0 : _a.reject(error);
@@ -457,12 +479,20 @@ var EngineActorDriver = class {
457
479
  this.#actorStopIntent.delete(actorId);
458
480
  const handler = this.#actors.get(actorId);
459
481
  if (!handler) {
460
- logger2().debug({ msg: "no runner actor handler to stop", actorId, reason });
482
+ logger2().debug({
483
+ msg: "no runner actor handler to stop",
484
+ actorId,
485
+ reason
486
+ });
461
487
  return;
462
488
  }
463
489
  if (handler.actorStartPromise) {
464
490
  try {
465
- logger2().debug({ msg: "runner actor stopping before it started, waiting", actorId, generation });
491
+ logger2().debug({
492
+ msg: "runner actor stopping before it started, waiting",
493
+ actorId,
494
+ generation
495
+ });
466
496
  await handler.actorStartPromise.promise;
467
497
  } catch (err) {
468
498
  logger2().debug({
@@ -536,7 +566,7 @@ var EngineActorDriver = class {
536
566
  websocket.raw = websocket;
537
567
  const wsContext = new WSContext(websocket);
538
568
  const conn = wsHandler.conn;
539
- const actor2 = wsHandler.actor;
569
+ const actor = wsHandler.actor;
540
570
  const connStateManager = conn == null ? void 0 : conn[CONN_STATE_MANAGER_SYMBOL];
541
571
  logger2().debug({
542
572
  msg: "attaching websocket event listeners",
@@ -549,79 +579,79 @@ var EngineActorDriver = class {
549
579
  if (isRestoringHibernatable) {
550
580
  (_c = wsHandler.onRestore) == null ? void 0 : _c.call(wsHandler, wsContext);
551
581
  }
552
- websocket.addEventListener("open", (event3) => {
553
- wsHandler.onOpen(event3, wsContext);
582
+ websocket.addEventListener("open", (event) => {
583
+ wsHandler.onOpen(event, wsContext);
554
584
  });
555
- websocket.addEventListener("message", (event3) => {
585
+ websocket.addEventListener("message", (event) => {
556
586
  var _a2, _b2;
557
587
  logger2().debug({
558
588
  msg: "websocket message event listener triggered",
559
589
  connId: conn == null ? void 0 : conn.id,
560
- actorId: actor2 == null ? void 0 : actor2.id,
561
- messageIndex: event3.rivetMessageIndex,
590
+ actorId: actor == null ? void 0 : actor.id,
591
+ messageIndex: event.rivetMessageIndex,
562
592
  hasWsHandler: !!wsHandler,
563
593
  hasOnMessage: !!(wsHandler == null ? void 0 : wsHandler.onMessage),
564
- actorIsStopping: actor2 == null ? void 0 : actor2.isStopping,
594
+ actorIsStopping: actor == null ? void 0 : actor.isStopping,
565
595
  websocketType: (_a2 = websocket == null ? void 0 : websocket.constructor) == null ? void 0 : _a2.name,
566
596
  wsUniqueId: websocket.__rivet_ws_id,
567
- eventTargetWsId: (_b2 = event3.target) == null ? void 0 : _b2.__rivet_ws_id
597
+ eventTargetWsId: (_b2 = event.target) == null ? void 0 : _b2.__rivet_ws_id
568
598
  });
569
- if (actor2 == null ? void 0 : actor2.isStopping) {
599
+ if (actor == null ? void 0 : actor.isStopping) {
570
600
  logger2().debug({
571
601
  msg: "ignoring ws message, actor is stopping",
572
602
  connId: conn == null ? void 0 : conn.id,
573
- actorId: actor2 == null ? void 0 : actor2.id,
574
- messageIndex: event3.rivetMessageIndex
603
+ actorId: actor == null ? void 0 : actor.id,
604
+ messageIndex: event.rivetMessageIndex
575
605
  });
576
606
  return;
577
607
  }
578
608
  logger2().debug({
579
609
  msg: "calling wsHandler.onMessage",
580
610
  connId: conn == null ? void 0 : conn.id,
581
- messageIndex: event3.rivetMessageIndex
611
+ messageIndex: event.rivetMessageIndex
582
612
  });
583
- wsHandler.onMessage(event3, wsContext);
613
+ wsHandler.onMessage(event, wsContext);
584
614
  const hibernate = connStateManager == null ? void 0 : connStateManager.hibernatableData;
585
- if (hibernate && conn && actor2) {
615
+ if (hibernate && conn && actor) {
586
616
  invariant(
587
- typeof event3.rivetMessageIndex === "number",
617
+ typeof event.rivetMessageIndex === "number",
588
618
  "missing event.rivetMessageIndex"
589
619
  );
590
620
  const previousMsgIndex = hibernate.serverMessageIndex;
591
- hibernate.serverMessageIndex = event3.rivetMessageIndex;
621
+ hibernate.serverMessageIndex = event.rivetMessageIndex;
592
622
  logger2().info({
593
623
  msg: "persisting message index",
594
624
  connId: conn.id,
595
625
  previousMsgIndex,
596
- newMsgIndex: event3.rivetMessageIndex
626
+ newMsgIndex: event.rivetMessageIndex
597
627
  });
598
628
  const entry = this.#hwsMessageIndex.get(conn.id);
599
629
  if (entry) {
600
- const messageLength = getValueLength(event3.data);
630
+ const messageLength = getValueLength(event.data);
601
631
  entry.bufferedMessageSize += messageLength;
602
632
  if (entry.bufferedMessageSize >= CONN_BUFFERED_MESSAGE_SIZE_THRESHOLD) {
603
633
  entry.bufferedMessageSize = 0;
604
634
  entry.pendingAckFromBufferSize = true;
605
- actor2.stateManager.saveState({
635
+ actor.stateManager.saveState({
606
636
  immediate: true
607
637
  });
608
638
  } else {
609
- actor2.stateManager.saveState({
639
+ actor.stateManager.saveState({
610
640
  maxWait: CONN_MESSAGE_ACK_DEADLINE
611
641
  });
612
642
  }
613
643
  } else {
614
- actor2.stateManager.saveState({
644
+ actor.stateManager.saveState({
615
645
  maxWait: CONN_MESSAGE_ACK_DEADLINE
616
646
  });
617
647
  }
618
648
  }
619
649
  });
620
- websocket.addEventListener("close", (event3) => {
621
- wsHandler.onClose(event3, wsContext);
650
+ websocket.addEventListener("close", (event) => {
651
+ wsHandler.onClose(event, wsContext);
622
652
  });
623
- websocket.addEventListener("error", (event3) => {
624
- wsHandler.onError(event3, wsContext);
653
+ websocket.addEventListener("error", (event) => {
654
+ wsHandler.onError(event, wsContext);
625
655
  });
626
656
  if (isRestoringHibernatable) {
627
657
  logger2().info({
@@ -710,8 +740,8 @@ var EngineActorDriver = class {
710
740
  }
711
741
  }
712
742
  async #hwsLoadAll(actorId) {
713
- const actor2 = await this.loadActor(actorId);
714
- return actor2.conns.values().map((conn) => {
743
+ const actor = await this.loadActor(actorId);
744
+ return actor.conns.values().map((conn) => {
715
745
  const connStateManager = conn[CONN_STATE_MANAGER_SYMBOL];
716
746
  const hibernatable = connStateManager.hibernatableData;
717
747
  if (!hibernatable) return void 0;
@@ -725,15 +755,15 @@ var EngineActorDriver = class {
725
755
  };
726
756
  }).filter((x) => x !== void 0).toArray();
727
757
  }
728
- async onBeforeActorStart(actor2) {
758
+ async onBeforeActorStart(actor) {
729
759
  var _a;
730
- const handler = this.#actors.get(actor2.id);
760
+ const handler = this.#actors.get(actor.id);
731
761
  invariant(handler, "missing actor handler in onBeforeActorReady");
732
762
  handler.actorStartError = void 0;
733
763
  (_a = handler.actorStartPromise) == null ? void 0 : _a.resolve();
734
764
  handler.actorStartPromise = void 0;
735
- const metaEntries = await this.#hwsLoadAll(actor2.id);
736
- await this.#runner.restoreHibernatingRequests(actor2.id, metaEntries);
765
+ const metaEntries = await this.#hwsLoadAll(actor.id);
766
+ await this.#runner.restoreHibernatingRequests(actor.id, metaEntries);
737
767
  }
738
768
  onCreateConn(conn) {
739
769
  const hibernatable = conn[CONN_STATE_MANAGER_SYMBOL].hibernatableData;
@@ -795,27 +825,6 @@ var EngineActorDriver = class {
795
825
  }
796
826
  };
797
827
 
798
- // src/drivers/engine/config.ts
799
- import { z } from "zod/v4";
800
- var EngineConfigSchemaBase = ClientConfigSchemaBase.extend({
801
- /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
802
- runnerKey: z.string().optional().transform((val) => val ?? getRivetRunnerKey()),
803
- /** How many actors this runner can run. */
804
- totalSlots: z.number().default(1e5)
805
- });
806
- var EngineConfigSchemaTransformed = EngineConfigSchemaBase.transform(
807
- (config, ctx) => transformEngineConfig(config, ctx)
808
- );
809
- var EngineConfigSchema = EngineConfigSchemaTransformed.default(
810
- () => EngineConfigSchemaTransformed.parse({})
811
- );
812
- function transformEngineConfig(config, ctx) {
813
- return {
814
- ...transformClientConfig(config, ctx),
815
- runnerKey: config.runnerKey
816
- };
817
- }
818
-
819
828
  // src/drivers/engine/mod.ts
820
829
  function createEngineDriver() {
821
830
  return {
@@ -826,111 +835,12 @@ function createEngineDriver() {
826
835
  return new RemoteManagerDriver(clientConfig);
827
836
  },
828
837
  actor: (config, managerDriver, inlineClient) => {
829
- return new EngineActorDriver(
830
- config,
831
- managerDriver,
832
- inlineClient
833
- );
838
+ return new EngineActorDriver(config, managerDriver, inlineClient);
834
839
  },
835
840
  autoStartActorDriver: true
836
841
  };
837
842
  }
838
843
 
839
- // src/registry/config/legacy-runner.ts
840
- import { z as z2 } from "zod/v4";
841
- var LegacyDriverConfigSchema = z2.object({
842
- /** Machine-readable name to identify this driver by. */
843
- name: z2.string(),
844
- manager: z2.custom(),
845
- actor: z2.custom()
846
- });
847
- var LegacyRunnerConfigSchemaUnmerged = z2.object({
848
- driver: LegacyDriverConfigSchema.optional(),
849
- /** @experimental */
850
- maxIncomingMessageSize: z2.number().optional().default(65536),
851
- /** @experimental */
852
- maxOutgoingMessageSize: z2.number().optional().default(1048576),
853
- /** @experimental */
854
- inspector: InspectorConfigSchema,
855
- /** @experimental */
856
- disableDefaultServer: z2.boolean().optional().default(false),
857
- /** @experimental */
858
- defaultServerPort: z2.number().default(6420),
859
- /** @experimental */
860
- runEngine: z2.boolean().optional().default(() => getRivetRunEngine()),
861
- /** @experimental */
862
- runEngineVersion: z2.string().optional().default(() => getRivetRunEngineVersion() ?? VERSION),
863
- /** @experimental */
864
- overrideServerAddress: z2.string().optional(),
865
- /** @experimental */
866
- disableActorDriver: z2.boolean().optional().default(false),
867
- /**
868
- * @experimental
869
- *
870
- * Whether to run runners normally or have them managed
871
- * serverlessly (by the Rivet Engine for example).
872
- */
873
- runnerKind: z2.enum(["serverless", "normal"]).optional().default(
874
- () => getRivetRunnerKind() === "serverless" ? "serverless" : "normal"
875
- ),
876
- totalSlots: z2.number().optional(),
877
- /**
878
- * @experimental
879
- *
880
- * Base path for the router. This is used to prefix all routes.
881
- * For example, if the base path is `/api`, then the route `/actors` will be
882
- * available at `/api/actors`.
883
- */
884
- basePath: z2.string().optional().default("/"),
885
- /**
886
- * @experimental
887
- *
888
- * Disable welcome message.
889
- * */
890
- noWelcome: z2.boolean().optional().default(false),
891
- /**
892
- * @experimental
893
- * */
894
- logging: z2.object({
895
- baseLogger: z2.custom().optional(),
896
- level: LogLevelSchema.optional()
897
- }).optional().default(() => ({})),
898
- /**
899
- * @experimental
900
- *
901
- * Automatically configure serverless runners in the engine.
902
- * Can only be used when runnerKind is "serverless".
903
- * If true, uses default configuration. Can also provide custom configuration.
904
- */
905
- autoConfigureServerless: z2.union([
906
- z2.boolean(),
907
- z2.object({
908
- url: z2.string().optional(),
909
- headers: z2.record(z2.string(), z2.string()).optional(),
910
- maxRunners: z2.number().optional(),
911
- minRunners: z2.number().optional(),
912
- requestLifespan: z2.number().optional(),
913
- runnersMargin: z2.number().optional(),
914
- slotsPerRunner: z2.number().optional(),
915
- metadata: z2.record(z2.string(), z2.unknown()).optional()
916
- })
917
- ]).optional(),
918
- // This is a function to allow for lazy configuration of upgradeWebSocket on the
919
- // fly. This is required since the dependencies that upgradeWebSocket
920
- // (specifically Node.js) can sometimes only be specified after the router is
921
- // created or must be imported async using `await import(...)`
922
- getUpgradeWebSocket: z2.custom().optional(),
923
- /** @experimental */
924
- token: z2.string().optional().transform((v) => v || getRivetToken())
925
- }).merge(EngineConfigSchemaBase);
926
- var LegacyRunnerConfigSchemaTransformed = LegacyRunnerConfigSchemaUnmerged.transform((config, ctx) => ({
927
- ...config,
928
- ...transformEngineConfig(config, ctx)
929
- }));
930
- var LegacyRunnerConfigSchema = LegacyRunnerConfigSchemaTransformed.default(
931
- () => LegacyRunnerConfigSchemaTransformed.parse({})
932
- );
933
-
934
844
  // runtime/index.ts
935
845
  import invariant4 from "invariant";
936
846
 
@@ -1087,7 +997,9 @@ async function ensureEngineProcess(options) {
1087
997
  issues: "https://github.com/rivet-dev/rivetkit/issues",
1088
998
  support: "https://rivet.dev/discord"
1089
999
  });
1090
- } else if (stderrOutput.includes("Rivet Engine has been rolled back to a previous version")) {
1000
+ } else if (stderrOutput.includes(
1001
+ "Rivet Engine has been rolled back to a previous version"
1002
+ )) {
1091
1003
  logger3().error({
1092
1004
  msg: "rivet engine version downgrade detected",
1093
1005
  hint: `You attempted to downgrade the RivetKit version in development. To fix this, nuke the database by running: '${binaryPath}' database nuke --yes`,
@@ -1154,8 +1066,8 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1154
1066
  `failed to download rivet engine binary from ${downloadUrl}: ${response.status} ${response.statusText}`
1155
1067
  );
1156
1068
  }
1157
- const crypto2 = getNodeCrypto();
1158
- const tempPath = `${binaryPath}.${crypto2.randomUUID()}.tmp`;
1069
+ const crypto = getNodeCrypto();
1070
+ const tempPath = `${binaryPath}.${crypto.randomUUID()}.tmp`;
1159
1071
  const startTime = Date.now();
1160
1072
  logger3().debug({
1161
1073
  msg: "starting binary download",
@@ -1372,7 +1284,7 @@ async function configureServerlessRunner(config) {
1372
1284
  serverless: {
1373
1285
  url: customConfig.url,
1374
1286
  headers: customConfig.headers ?? {},
1375
- max_runners: customConfig.maxRunners ?? 1e3,
1287
+ max_runners: customConfig.maxRunners ?? 1e5,
1376
1288
  min_runners: customConfig.minRunners ?? 0,
1377
1289
  request_lifespan: customConfig.requestLifespan ?? 15 * 60,
1378
1290
  runners_margin: customConfig.runnersMargin ?? 0,
@@ -1405,19 +1317,19 @@ async function configureServerlessRunner(config) {
1405
1317
  import invariant3 from "invariant";
1406
1318
 
1407
1319
  // src/manager/router-schema.ts
1408
- import { z as z3 } from "zod/v4";
1409
- var ServerlessStartHeadersSchema = z3.object({
1410
- endpoint: z3.string({
1320
+ import { z } from "zod/v4";
1321
+ var ServerlessStartHeadersSchema = z.object({
1322
+ endpoint: z.string({
1411
1323
  error: "x-rivet-endpoint header is required"
1412
1324
  }),
1413
- token: z3.string({ error: "x-rivet-token header must be a string" }).optional(),
1414
- totalSlots: z3.coerce.number({
1325
+ token: z.string({ error: "x-rivet-token header must be a string" }).optional(),
1326
+ totalSlots: z.coerce.number({
1415
1327
  error: "x-rivet-total-slots header must be a number"
1416
1328
  }).int({ error: "x-rivet-total-slots header must be an integer" }).gte(1, { error: "x-rivet-total-slots header must be positive" }),
1417
- runnerName: z3.string({
1329
+ runnerName: z.string({
1418
1330
  error: "x-rivet-runner-name header is required"
1419
1331
  }),
1420
- namespace: z3.string({
1332
+ namespace: z.string({
1421
1333
  error: "x-rivet-namespace-name header is required"
1422
1334
  })
1423
1335
  });
@@ -1460,25 +1372,33 @@ function buildServerlessRouter(driverConfig, config) {
1460
1372
  throw new NamespaceMismatch(config.namespace, namespace);
1461
1373
  }
1462
1374
  }
1463
- const newConfig = {
1375
+ const sharedConfig = {
1464
1376
  ...config,
1465
1377
  endpoint,
1466
1378
  namespace,
1467
- token,
1468
1379
  runner: {
1469
1380
  ...config.runner,
1470
1381
  totalSlots,
1471
- runnerName,
1472
- // Not supported on serverless
1473
- runnerKey: void 0
1382
+ runnerName
1474
1383
  }
1475
1384
  };
1385
+ const runnerConfig = {
1386
+ ...sharedConfig,
1387
+ token
1388
+ };
1389
+ const clientConfig = {
1390
+ ...sharedConfig,
1391
+ // Preserve the configured application token for actor-to-actor
1392
+ // calls. The start token is only needed for the runner
1393
+ // connection and may not have gateway permissions.
1394
+ token: config.token ?? token
1395
+ };
1476
1396
  const managerDriver = new RemoteManagerDriver(
1477
- convertRegistryConfigToClientConfig(newConfig)
1397
+ convertRegistryConfigToClientConfig(clientConfig)
1478
1398
  );
1479
1399
  const client = createClientWithDriver(managerDriver);
1480
1400
  const actorDriver = driverConfig.actor(
1481
- newConfig,
1401
+ runnerConfig,
1482
1402
  managerDriver,
1483
1403
  client
1484
1404
  );
@@ -1618,13 +1538,40 @@ var Runtime = class _Runtime {
1618
1538
  config.serverless.publicEndpoint = config.publicEndpoint;
1619
1539
  }
1620
1540
  config.managerPort = managerPort;
1541
+ let serverApp = managerRouter;
1542
+ if (config.publicDir) {
1543
+ let dirExists = false;
1544
+ try {
1545
+ const fsSync = getNodeFsSync();
1546
+ dirExists = fsSync.existsSync(config.publicDir);
1547
+ } catch {
1548
+ }
1549
+ if (dirExists) {
1550
+ const { Hono } = await import("hono");
1551
+ const serveStaticFn = await loadRuntimeServeStatic(serveRuntime);
1552
+ const wrapper = new Hono();
1553
+ wrapper.use(
1554
+ "*",
1555
+ serveStaticFn({ root: `./${config.publicDir}` })
1556
+ );
1557
+ wrapper.route("/", managerRouter);
1558
+ serverApp = wrapper;
1559
+ }
1560
+ }
1621
1561
  const out = await crossPlatformServe(
1622
1562
  config,
1623
1563
  managerPort,
1624
- managerRouter,
1564
+ serverApp,
1625
1565
  serveRuntime
1626
1566
  );
1627
1567
  upgradeWebSocket = out.upgradeWebSocket;
1568
+ if (out.closeServer && process.env.NODE_ENV !== "production") {
1569
+ const shutdown = () => {
1570
+ out.closeServer();
1571
+ };
1572
+ process.on("SIGTERM", shutdown);
1573
+ process.on("SIGINT", shutdown);
1574
+ }
1628
1575
  }
1629
1576
  const runtime = new _Runtime(
1630
1577
  registry,
@@ -1685,6 +1632,15 @@ var Runtime = class _Runtime {
1685
1632
  if (this.#startKind === "serverless" && this.#config.publicEndpoint) {
1686
1633
  logLine("Client", this.#config.publicEndpoint);
1687
1634
  }
1635
+ if (this.#config.publicDir) {
1636
+ try {
1637
+ const fsSync = getNodeFsSync();
1638
+ if (fsSync.existsSync(this.#config.publicDir)) {
1639
+ logLine("Static", `./${this.#config.publicDir}`);
1640
+ }
1641
+ } catch {
1642
+ }
1643
+ }
1688
1644
  if (inspectorUrl && this.#config.inspector.enabled) {
1689
1645
  logLine("Inspector", inspectorUrl);
1690
1646
  }
@@ -1721,11 +1677,12 @@ var Registry = class {
1721
1677
  #runtimePromise;
1722
1678
  constructor(config) {
1723
1679
  this.#config = config;
1724
- if (getNodeEnv() !== "test") {
1725
- setTimeout(() => {
1680
+ setTimeout(() => {
1681
+ const parsedConfig = this.parseConfig();
1682
+ if (parsedConfig.serverless.spawnEngine || parsedConfig.serveManager) {
1726
1683
  this.#ensureRuntime();
1727
- }, 0);
1728
- }
1684
+ }
1685
+ }, 0);
1729
1686
  }
1730
1687
  /** Creates runtime if not already created. Idempotent. */
1731
1688
  #ensureRuntime() {
@@ -1769,55 +1726,33 @@ var Registry = class {
1769
1726
  startRunner() {
1770
1727
  this.#ensureRuntime().then((runtime) => runtime.startRunner());
1771
1728
  }
1772
- // MARK: Legacy
1773
1729
  /**
1774
- * Runs the registry for a server.
1730
+ * Starts the server, serving both the actor API and static files.
1775
1731
  *
1776
- * @deprecated Use {@link Registry.startRunner} for long-running servers or {@link Registry.handler} for serverless deployments.
1732
+ * This is the simplest way to run RivetKit. It starts a local manager
1733
+ * server, serves static files from the configured `publicDir` (default
1734
+ * `"public"`), and starts the actor runner.
1735
+ *
1736
+ * When an endpoint is configured (via config or RIVET_ENDPOINT env var),
1737
+ * operates in serverless mode connected to the remote engine instead.
1738
+ *
1739
+ * @example
1740
+ * ```ts
1741
+ * const registry = setup({ use: { counter } });
1742
+ * registry.start();
1743
+ * ```
1777
1744
  */
1778
- start(inputConfig) {
1779
- const config = LegacyRunnerConfigSchema.parse(inputConfig);
1780
- if (config.autoConfigureServerless && config.runnerKind !== "serverless") {
1781
- throw new Error(
1782
- "autoConfigureServerless can only be configured when runnerKind is 'serverless'"
1783
- );
1745
+ start() {
1746
+ if (this.#config.publicDir === void 0) {
1747
+ this.#config.publicDir = "public";
1784
1748
  }
1785
- const isDevEnv = isDev();
1786
- if (isDevEnv && config.runnerKind === "serverless") {
1787
- if ((inputConfig == null ? void 0 : inputConfig.runEngine) === void 0) config.runEngine = true;
1788
- if ((inputConfig == null ? void 0 : inputConfig.autoConfigureServerless) === void 0)
1789
- config.autoConfigureServerless = true;
1790
- }
1791
- if (config.runnerKind === "serverless") {
1792
- return this.#legacyStartServerless(config, inputConfig);
1793
- } else {
1794
- return this.#legacyStartNormal(config);
1749
+ if (this.#config.serveManager === void 0) {
1750
+ const hasEndpoint = !!(this.#config.endpoint || typeof process !== "undefined" && (process.env.RIVET_ENGINE || process.env.RIVET_ENDPOINT));
1751
+ if (!hasEndpoint) {
1752
+ this.#config.serveManager = true;
1753
+ }
1795
1754
  }
1796
- }
1797
- #legacyStartServerless(config, _inputConfig) {
1798
- const client = createClient({
1799
- endpoint: config.endpoint,
1800
- token: config.token,
1801
- namespace: config.namespace,
1802
- headers: config.headers
1803
- });
1804
- return {
1805
- client,
1806
- fetch: this.handler.bind(this)
1807
- };
1808
- }
1809
- #legacyStartNormal(config) {
1810
1755
  this.#ensureRuntime().then((runtime) => runtime.startRunner());
1811
- const client = createClient({
1812
- endpoint: config.endpoint,
1813
- token: config.token,
1814
- namespace: config.namespace,
1815
- headers: config.headers
1816
- });
1817
- return {
1818
- client,
1819
- fetch: this.handler.bind(this)
1820
- };
1821
1756
  }
1822
1757
  };
1823
1758
  function setup(input) {
@@ -1825,11 +1760,8 @@ function setup(input) {
1825
1760
  }
1826
1761
 
1827
1762
  export {
1828
- actor,
1829
- event2 as event,
1830
- queue2 as queue,
1831
1763
  createEngineDriver,
1832
1764
  Registry,
1833
1765
  setup
1834
1766
  };
1835
- //# sourceMappingURL=chunk-M6H4XIF4.js.map
1767
+ //# sourceMappingURL=chunk-JJSPHLJN.js.map