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
@@ -0,0 +1,151 @@
1
+ import { z } from "zod/v4";
2
+ import type {
3
+ ActorContext,
4
+ BeforeConnectContext,
5
+ } from "@/actor/contexts";
6
+ import type { AnyDatabaseProvider } from "@/actor/database";
7
+ import type {
8
+ PermissionRequestListener,
9
+ SessionEventListener,
10
+ SandboxProvider,
11
+ } from "sandbox-agent";
12
+ import type {
13
+ SandboxActorVars,
14
+ SandboxActorState,
15
+ } from "./types";
16
+
17
+ const zFunction = <
18
+ T extends (...args: any[]) => any = (...args: unknown[]) => unknown,
19
+ >() => z.custom<T>((val) => typeof val === "function");
20
+
21
+ const SandboxProviderSchema = z.object({
22
+ name: z.string(),
23
+ create: zFunction<SandboxProvider["create"]>(),
24
+ destroy: zFunction<SandboxProvider["destroy"]>(),
25
+ getUrl: zFunction<NonNullable<SandboxProvider["getUrl"]>>().optional(),
26
+ getFetch: zFunction<NonNullable<SandboxProvider["getFetch"]>>().optional(),
27
+ ensureServer: zFunction<NonNullable<SandboxProvider["ensureServer"]>>().optional(),
28
+ });
29
+
30
+ export const SandboxActorOptionsSchema = z
31
+ .object({
32
+ // Log if the actor still thinks a turn is active but no new session event
33
+ // has arrived for this long.
34
+ warningAfterMs: z.number().nonnegative().default(30_000),
35
+ // Clear active-turn state after this timeout so a missing terminal event
36
+ // cannot keep the actor awake forever.
37
+ staleAfterMs: z.number().positive().default(5 * 60_000),
38
+ })
39
+ .strict()
40
+ .prefault(() => ({}))
41
+ .transform((value) => ({
42
+ ...value,
43
+ warningAfterMs: Math.min(value.warningAfterMs, value.staleAfterMs),
44
+ }));
45
+
46
+ export type SandboxActorOptions = z.input<typeof SandboxActorOptionsSchema>;
47
+ export type SandboxActorOptionsRuntime = z.infer<
48
+ typeof SandboxActorOptionsSchema
49
+ >;
50
+
51
+ // This schema validates the config at runtime. Generic callback types are
52
+ // defined separately below following the same pattern as ActorConfigSchema:
53
+ // infer from the schema, omit function keys, then intersect typed callbacks.
54
+ export const SandboxActorConfigSchema = z
55
+ .object({
56
+ provider: SandboxProviderSchema.optional(),
57
+ createProvider: zFunction().optional(),
58
+ persistRawEvents: z.boolean().optional(),
59
+ destroyActor: z.boolean().default(false),
60
+ options: SandboxActorOptionsSchema,
61
+ onBeforeConnect: zFunction().optional(),
62
+ onSessionEvent: zFunction().optional(),
63
+ onPermissionRequest: zFunction().optional(),
64
+ })
65
+ .strict()
66
+ .refine(
67
+ (data) =>
68
+ (data.provider !== undefined) !==
69
+ (data.createProvider !== undefined),
70
+ {
71
+ message:
72
+ "Sandbox actor config must define exactly one of 'provider' or 'createProvider'",
73
+ },
74
+ );
75
+
76
+ // --- Typed config types (generic callbacks overlaid on the Zod schema) ---
77
+
78
+ type SandboxActorContext<TConnParams> = ActorContext<
79
+ SandboxActorState,
80
+ TConnParams,
81
+ undefined,
82
+ SandboxActorVars,
83
+ undefined,
84
+ AnyDatabaseProvider
85
+ >;
86
+
87
+ interface SandboxActorConfigCallbacks<TConnParams> {
88
+ onBeforeConnect?: (
89
+ c: BeforeConnectContext<
90
+ SandboxActorState,
91
+ SandboxActorVars,
92
+ undefined,
93
+ AnyDatabaseProvider
94
+ >,
95
+ params: TConnParams,
96
+ ) => void | Promise<void>;
97
+ onSessionEvent?: (
98
+ c: SandboxActorContext<TConnParams>,
99
+ sessionId: string,
100
+ event: Parameters<SessionEventListener>[0],
101
+ ) => void | Promise<void>;
102
+ onPermissionRequest?: (
103
+ c: SandboxActorContext<TConnParams>,
104
+ sessionId: string,
105
+ request: Parameters<PermissionRequestListener>[0],
106
+ ) => void | Promise<void>;
107
+ }
108
+
109
+ type SandboxActorProviderConfig<TConnParams> =
110
+ | {
111
+ provider: SandboxProvider;
112
+ createProvider?: never;
113
+ }
114
+ | {
115
+ provider?: never;
116
+ createProvider: (
117
+ c: SandboxActorContext<TConnParams>,
118
+ ) => SandboxProvider | Promise<SandboxProvider>;
119
+ };
120
+
121
+ // Parsed config (after Zod defaults/transforms applied).
122
+ export type SandboxActorConfig<TConnParams = undefined> = Omit<
123
+ z.infer<typeof SandboxActorConfigSchema>,
124
+ | "provider"
125
+ | "createProvider"
126
+ | "onBeforeConnect"
127
+ | "onSessionEvent"
128
+ | "onPermissionRequest"
129
+ > &
130
+ SandboxActorConfigCallbacks<TConnParams> &
131
+ SandboxActorProviderConfig<TConnParams>;
132
+
133
+ // Input config (what users pass in before Zod transforms).
134
+ export type SandboxActorConfigInput<TConnParams = undefined> = Omit<
135
+ z.input<typeof SandboxActorConfigSchema>,
136
+ | "provider"
137
+ | "createProvider"
138
+ | "onBeforeConnect"
139
+ | "onSessionEvent"
140
+ | "onPermissionRequest"
141
+ > &
142
+ SandboxActorConfigCallbacks<TConnParams> &
143
+ SandboxActorProviderConfig<TConnParams>;
144
+
145
+ export type SandboxActorBeforeConnectContext<TConnParams = undefined> =
146
+ BeforeConnectContext<
147
+ SandboxActorState,
148
+ SandboxActorVars,
149
+ undefined,
150
+ AnyDatabaseProvider
151
+ >;
@@ -0,0 +1,41 @@
1
+ export { sandboxActor } from "./actor/index";
2
+ export * from "./client";
3
+ export {
4
+ type SandboxActorBeforeConnectContext,
5
+ type SandboxActorConfig,
6
+ type SandboxActorConfigInput,
7
+ type SandboxActorOptions,
8
+ type SandboxActorOptionsRuntime,
9
+ SandboxActorConfigSchema,
10
+ SandboxActorOptionsSchema,
11
+ } from "./config";
12
+ export {
13
+ type SandboxActionContext,
14
+ type SandboxActorActions,
15
+ type SandboxActorProvider,
16
+ type SandboxActorVars,
17
+ type SandboxActorRuntime,
18
+ type SandboxActorState,
19
+ type SandboxSessionEvent,
20
+ SANDBOX_AGENT_ACTION_METHODS,
21
+ SANDBOX_AGENT_HOOK_METHODS,
22
+ } from "./types";
23
+ export type {
24
+ PermissionReply,
25
+ ProcessLogFollowQuery,
26
+ ProcessLogListener,
27
+ ProcessLogSubscription,
28
+ ProcessTerminalConnectOptions,
29
+ ProcessTerminalSession,
30
+ ProcessTerminalSessionOptions,
31
+ ProcessTerminalWebSocketUrlOptions,
32
+ SandboxAgent,
33
+ SandboxProvider,
34
+ Session,
35
+ SessionCreateRequest,
36
+ SessionEvent,
37
+ SessionPermissionRequest,
38
+ SessionRecord,
39
+ SessionResumeOrCreateRequest,
40
+ SessionSendOptions,
41
+ } from "sandbox-agent";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/computesdk";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/daytona";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/docker";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/e2b";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/local";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/modal";
@@ -0,0 +1 @@
1
+ export * from "sandbox-agent/vercel";
@@ -0,0 +1,180 @@
1
+ import type { RawAccess } from "@/db/config";
2
+ import type {
3
+ ListEventsRequest,
4
+ ListPage,
5
+ ListPageRequest,
6
+ SessionEvent,
7
+ SessionPersistDriver,
8
+ SessionRecord,
9
+ } from "sandbox-agent";
10
+
11
+ type PersistSessionRow = {
12
+ record_json: string;
13
+ };
14
+
15
+ type PersistEventRow = {
16
+ id: string;
17
+ event_index: number;
18
+ session_id: string;
19
+ created_at: number;
20
+ connection_id: string;
21
+ sender: SessionEvent["sender"];
22
+ payload_json: string;
23
+ };
24
+
25
+ function parseCursor(cursor?: string): number {
26
+ if (!cursor) {
27
+ return 0;
28
+ }
29
+
30
+ const value = Number(cursor);
31
+ if (!Number.isFinite(value) || value < 0) {
32
+ return 0;
33
+ }
34
+
35
+ return Math.floor(value);
36
+ }
37
+
38
+ function nextCursor(
39
+ offset: number,
40
+ limit: number,
41
+ itemCount: number,
42
+ ): string | undefined {
43
+ if (itemCount < limit) {
44
+ return undefined;
45
+ }
46
+
47
+ return String(offset + itemCount);
48
+ }
49
+
50
+ export class SqliteSessionPersistDriver implements SessionPersistDriver {
51
+ #db: RawAccess;
52
+ #persistRawEvents: boolean;
53
+
54
+ constructor(db: RawAccess, persistRawEvents: boolean) {
55
+ this.#db = db;
56
+ this.#persistRawEvents = persistRawEvents;
57
+ }
58
+
59
+ async getSession(id: string): Promise<SessionRecord | undefined> {
60
+ const rows = await this.#db.execute<PersistSessionRow>(
61
+ "SELECT record_json FROM sandbox_agent_sessions WHERE id = ? LIMIT 1",
62
+ id,
63
+ );
64
+ const row = rows[0];
65
+ if (!row) {
66
+ return undefined;
67
+ }
68
+ return JSON.parse(row.record_json) as SessionRecord;
69
+ }
70
+
71
+ async listSessions(
72
+ request: ListPageRequest = {},
73
+ ): Promise<ListPage<SessionRecord>> {
74
+ const limit = request.limit ?? 50;
75
+ const offset = parseCursor(request.cursor);
76
+ const rows = await this.#db.execute<PersistSessionRow>(
77
+ `
78
+ SELECT record_json
79
+ FROM sandbox_agent_sessions
80
+ ORDER BY created_at DESC, id DESC
81
+ LIMIT ? OFFSET ?
82
+ `,
83
+ limit,
84
+ offset,
85
+ );
86
+
87
+ return {
88
+ items: rows.map((row) => JSON.parse(row.record_json) as SessionRecord),
89
+ nextCursor: nextCursor(offset, limit, rows.length),
90
+ };
91
+ }
92
+
93
+ async updateSession(session: SessionRecord): Promise<void> {
94
+ await this.#db.execute(
95
+ `
96
+ INSERT INTO sandbox_agent_sessions (id, created_at, record_json)
97
+ VALUES (?, ?, ?)
98
+ ON CONFLICT(id) DO UPDATE SET
99
+ created_at = excluded.created_at,
100
+ record_json = excluded.record_json
101
+ `,
102
+ session.id,
103
+ session.createdAt,
104
+ JSON.stringify(session),
105
+ );
106
+ }
107
+
108
+ async listEvents(
109
+ request: ListEventsRequest,
110
+ ): Promise<ListPage<SessionEvent>> {
111
+ const limit = request.limit ?? 200;
112
+ const offset = parseCursor(request.cursor);
113
+ const rows = await this.#db.execute<PersistEventRow>(
114
+ `
115
+ SELECT
116
+ id,
117
+ event_index,
118
+ session_id,
119
+ created_at,
120
+ connection_id,
121
+ sender,
122
+ payload_json
123
+ FROM sandbox_agent_events
124
+ WHERE session_id = ?
125
+ ORDER BY event_index ASC
126
+ LIMIT ? OFFSET ?
127
+ `,
128
+ request.sessionId,
129
+ limit,
130
+ offset,
131
+ );
132
+
133
+ return {
134
+ items: rows.map((row) => ({
135
+ id: row.id,
136
+ eventIndex: row.event_index,
137
+ sessionId: row.session_id,
138
+ createdAt: row.created_at,
139
+ connectionId: row.connection_id,
140
+ sender: row.sender,
141
+ payload: JSON.parse(row.payload_json),
142
+ } satisfies SessionEvent)),
143
+ nextCursor: nextCursor(offset, limit, rows.length),
144
+ };
145
+ }
146
+
147
+ async insertEvent(_sessionId: string, event: SessionEvent): Promise<void> {
148
+ const payload = JSON.stringify(event.payload);
149
+ await this.#db.execute(
150
+ `
151
+ INSERT INTO sandbox_agent_events (
152
+ id,
153
+ session_id,
154
+ event_index,
155
+ created_at,
156
+ connection_id,
157
+ sender,
158
+ payload_json,
159
+ raw_payload_json
160
+ )
161
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
162
+ ON CONFLICT(session_id, event_index) DO UPDATE SET
163
+ id = excluded.id,
164
+ created_at = excluded.created_at,
165
+ connection_id = excluded.connection_id,
166
+ sender = excluded.sender,
167
+ payload_json = excluded.payload_json,
168
+ raw_payload_json = excluded.raw_payload_json
169
+ `,
170
+ event.id,
171
+ event.sessionId,
172
+ event.eventIndex,
173
+ event.createdAt,
174
+ event.connectionId,
175
+ event.sender,
176
+ payload,
177
+ this.#persistRawEvents ? payload : null,
178
+ );
179
+ }
180
+ }
@@ -0,0 +1,138 @@
1
+ import type { ActionContext } from "@/actor/contexts";
2
+ import type { DatabaseProvider } from "@/actor/database";
3
+ import type { RawAccess } from "@/db/config";
4
+ import type {
5
+ SandboxAgent,
6
+ SandboxProvider,
7
+ } from "sandbox-agent";
8
+
9
+ export type { SandboxProvider };
10
+
11
+ /** @deprecated Use `SandboxProvider` from `sandbox-agent` instead. */
12
+ export type SandboxActorProvider = SandboxProvider;
13
+
14
+ // Keep this split in lockstep with the sandbox-agent SDK. Hooks should match the
15
+ // SDK callback methods, and actions should match every other SDK instance
16
+ // method. Update these lists and the parity test together when sandbox-agent
17
+ // changes.
18
+ export const SANDBOX_AGENT_HOOK_METHODS = [
19
+ "onSessionEvent",
20
+ "onPermissionRequest",
21
+ ] as const;
22
+
23
+ export type SandboxActorHookMethodName =
24
+ (typeof SANDBOX_AGENT_HOOK_METHODS)[number];
25
+
26
+ export const SANDBOX_AGENT_ACTION_METHODS = [
27
+ "dispose",
28
+ "listSessions",
29
+ "getSession",
30
+ "getEvents",
31
+ "createSession",
32
+ "resumeSession",
33
+ "resumeOrCreateSession",
34
+ "destroySandbox",
35
+ "destroySession",
36
+ "setSessionMode",
37
+ "setSessionConfigOption",
38
+ "setSessionModel",
39
+ "setSessionThoughtLevel",
40
+ "getSessionConfigOptions",
41
+ "getSessionModes",
42
+ "rawSendSessionMethod",
43
+ "respondPermission",
44
+ "rawRespondPermission",
45
+ "getHealth",
46
+ "listAgents",
47
+ "getAgent",
48
+ "installAgent",
49
+ "listAcpServers",
50
+ "listFsEntries",
51
+ "readFsFile",
52
+ "writeFsFile",
53
+ "deleteFsEntry",
54
+ "mkdirFs",
55
+ "moveFs",
56
+ "statFs",
57
+ "uploadFsBatch",
58
+ "getMcpConfig",
59
+ "setMcpConfig",
60
+ "deleteMcpConfig",
61
+ "getSkillsConfig",
62
+ "setSkillsConfig",
63
+ "deleteSkillsConfig",
64
+ "getProcessConfig",
65
+ "setProcessConfig",
66
+ "createProcess",
67
+ "runProcess",
68
+ "listProcesses",
69
+ "getProcess",
70
+ "stopProcess",
71
+ "killProcess",
72
+ "deleteProcess",
73
+ "getProcessLogs",
74
+ "followProcessLogs",
75
+ "sendProcessInput",
76
+ "resizeProcessTerminal",
77
+ "buildProcessTerminalWebSocketUrl",
78
+ "connectProcessTerminalWebSocket",
79
+ "connectProcessTerminal",
80
+ ] as const;
81
+
82
+ export type SandboxAgentActionMethodName =
83
+ (typeof SANDBOX_AGENT_ACTION_METHODS)[number];
84
+
85
+ export type SandboxActorActions = Pick<
86
+ SandboxAgent,
87
+ SandboxAgentActionMethodName
88
+ >;
89
+
90
+ export type SandboxSessionEvent = Parameters<
91
+ Parameters<SandboxAgent["onSessionEvent"]>[1]
92
+ >[0];
93
+
94
+ export interface SandboxActorState {
95
+ sandboxId: string | null;
96
+ providerName: string | null;
97
+ /** Persisted so that on wake, the actor knows which sessions to
98
+ * re-subscribe to when reconnecting to the sandbox agent. Without
99
+ * this, event listeners would be lost after a sleep/wake cycle. */
100
+ subscribedSessionIds: string[];
101
+ sandboxDestroyed: boolean;
102
+ }
103
+
104
+ export interface SandboxActorVars {
105
+ sandboxAgentClient: SandboxAgent | null;
106
+ provider: SandboxProvider | null;
107
+ activeSessionIds: Set<string>;
108
+ activePromptRequestIdsBySessionId: Map<string, string[]>;
109
+ lastEventAtBySessionId: Map<string, number>;
110
+ unsubscribeBySessionId: Map<
111
+ string,
112
+ {
113
+ event?: () => void;
114
+ permission?: () => void;
115
+ }
116
+ >;
117
+ /** Tracks in-flight hook promises. Size is used instead of a counter
118
+ * to avoid increment/decrement mismatch bugs. */
119
+ activeHooks: Set<Promise<void>>;
120
+ warningTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
121
+ staleTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
122
+ }
123
+
124
+ /** @deprecated Use `SandboxActorVars` instead. */
125
+ export type SandboxActorRuntime = SandboxActorVars;
126
+
127
+ /**
128
+ * Action context type used by the sandbox actor implementation for session
129
+ * management, proxy actions, and lifecycle hooks.
130
+ */
131
+ export type SandboxActionContext<TConnParams = undefined> = ActionContext<
132
+ SandboxActorState,
133
+ TConnParams,
134
+ undefined,
135
+ SandboxActorVars,
136
+ undefined,
137
+ DatabaseProvider<RawAccess>
138
+ >;
@@ -49,15 +49,17 @@ export async function configureServerlessRunner(
49
49
  serverless: {
50
50
  url: customConfig.url,
51
51
  headers: customConfig.headers ?? {},
52
- max_runners: customConfig.maxRunners ?? 1000,
52
+ max_runners: customConfig.maxRunners ?? 100_000,
53
53
  min_runners: customConfig.minRunners ?? 0,
54
54
  request_lifespan: customConfig.requestLifespan ?? 15 * 60,
55
55
  runners_margin: customConfig.runnersMargin ?? 0,
56
56
  slots_per_runner: customConfig.slotsPerRunner ?? 1,
57
- metadata_poll_interval: customConfig.metadataPollInterval ?? 1000,
57
+ metadata_poll_interval:
58
+ customConfig.metadataPollInterval ?? 1000,
58
59
  },
59
60
  metadata: customConfig.metadata ?? {},
60
- drain_on_version_upgrade: customConfig.drainOnVersionUpgrade ?? true,
61
+ drain_on_version_upgrade:
62
+ customConfig.drainOnVersionUpgrade ?? true,
61
63
  metadataPollInterval: customConfig.metadataPollInterval ?? 1000,
62
64
  };
63
65
  await updateRunnerConfig(clientConfig, runnerName, {
@@ -78,9 +78,9 @@ describe("normalizeEndpointUrl", () => {
78
78
 
79
79
  describe("regional endpoint normalization", () => {
80
80
  test("normalizes api-us-west-1.rivet.dev to api.rivet.dev", () => {
81
- expect(normalizeEndpointUrl("https://api-us-west-1.rivet.dev")).toBe(
82
- "https://api.rivet.dev/",
83
- );
81
+ expect(
82
+ normalizeEndpointUrl("https://api-us-west-1.rivet.dev"),
83
+ ).toBe("https://api.rivet.dev/");
84
84
  });
85
85
 
86
86
  test("normalizes api-lax.staging.rivet.dev to api.staging.rivet.dev", () => {
@@ -102,14 +102,16 @@ describe("normalizeEndpointUrl", () => {
102
102
  });
103
103
 
104
104
  test("does not normalize non-rivet.dev domains", () => {
105
- expect(normalizeEndpointUrl("https://api-us-west-1.example.com")).toBe(
106
- "https://api-us-west-1.example.com/",
107
- );
105
+ expect(
106
+ normalizeEndpointUrl("https://api-us-west-1.example.com"),
107
+ ).toBe("https://api-us-west-1.example.com/");
108
108
  });
109
109
 
110
110
  test("preserves path when normalizing regional endpoint", () => {
111
111
  expect(
112
- normalizeEndpointUrl("https://api-us-west-1.rivet.dev/v1/actors"),
112
+ normalizeEndpointUrl(
113
+ "https://api-us-west-1.rivet.dev/v1/actors",
114
+ ),
113
115
  ).toBe("https://api.rivet.dev/v1/actors");
114
116
  });
115
117
 
@@ -136,7 +138,10 @@ describe("endpointsMatch", () => {
136
138
 
137
139
  test("matches URLs with paths ignoring trailing slash", () => {
138
140
  expect(
139
- endpointsMatch("http://example.com/api/v1", "http://example.com/api/v1/"),
141
+ endpointsMatch(
142
+ "http://example.com/api/v1",
143
+ "http://example.com/api/v1/",
144
+ ),
140
145
  ).toBe(true);
141
146
  });
142
147
 
@@ -178,7 +183,10 @@ describe("endpointsMatch", () => {
178
183
 
179
184
  test("does not match different paths", () => {
180
185
  expect(
181
- endpointsMatch("http://example.com/api/v1", "http://example.com/api/v2"),
186
+ endpointsMatch(
187
+ "http://example.com/api/v1",
188
+ "http://example.com/api/v2",
189
+ ),
182
190
  ).toBe(false);
183
191
  });
184
192
 
@@ -38,7 +38,7 @@ export function buildServerlessRouter(
38
38
  if (!parseResult.success) {
39
39
  throw new InvalidRequest(
40
40
  parseResult.error.issues[0]?.message ??
41
- "invalid serverless start headers",
41
+ "invalid serverless start headers",
42
42
  );
43
43
  }
44
44
  const { endpoint, token, totalSlots, runnerName, namespace } =
@@ -68,34 +68,41 @@ export function buildServerlessRouter(
68
68
  }
69
69
  }
70
70
 
71
- // Convert config to runner config
72
- const newConfig: RegistryConfig = {
71
+ const sharedConfig: RegistryConfig = {
73
72
  ...config,
74
- endpoint: endpoint,
75
- namespace: namespace,
76
- token: token,
73
+ endpoint,
74
+ namespace,
77
75
  runner: {
78
76
  ...config.runner,
79
- totalSlots: totalSlots,
80
- runnerName: runnerName,
81
- // Not supported on serverless
82
- runnerKey: undefined,
77
+ totalSlots,
78
+ runnerName,
83
79
  },
84
80
  };
81
+ const runnerConfig: RegistryConfig = {
82
+ ...sharedConfig,
83
+ token,
84
+ };
85
+ const clientConfig: RegistryConfig = {
86
+ ...sharedConfig,
87
+ // Preserve the configured application token for actor-to-actor
88
+ // calls. The start token is only needed for the runner
89
+ // connection and may not have gateway permissions.
90
+ token: config.token ?? token,
91
+ };
85
92
 
86
93
  // Create manager driver on demand based on the properties provided
87
94
  // by headers
88
95
  //
89
- // NOTE: This relies on the `newConfig.runner.runnerName` to
96
+ // NOTE: This relies on the `runnerConfig.runner.runnerName` to
90
97
  // configure which runner to create actors on.
91
98
  const managerDriver = new RemoteManagerDriver(
92
- convertRegistryConfigToClientConfig(newConfig),
99
+ convertRegistryConfigToClientConfig(clientConfig),
93
100
  );
94
101
  const client = createClientWithDriver(managerDriver);
95
102
 
96
103
  // Create new actor driver with updated config
97
104
  const actorDriver = driverConfig.actor(
98
- newConfig,
105
+ runnerConfig,
99
106
  managerDriver,
100
107
  client,
101
108
  );
package/src/test/mod.ts CHANGED
@@ -23,10 +23,9 @@ export async function setupTest<A extends Registry<any>>(
23
23
  registry.config.test = { ...registry.config.test, enabled: true };
24
24
 
25
25
  // Create driver
26
- const driver = createFileSystemOrMemoryDriver(
27
- true,
28
- { path: `/tmp/rivetkit-test-${crypto.randomUUID()}` },
29
- );
26
+ const driver = createFileSystemOrMemoryDriver(true, {
27
+ path: `/tmp/rivetkit-test-${crypto.randomUUID()}`,
28
+ });
30
29
 
31
30
  // Build driver config
32
31
  // biome-ignore lint/style/useConst: Assigned later