rivetkit 2.1.5 → 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-PB5AEMKQ.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-TADUYCHF.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-GQGRQDRL.cjs → chunk-DH6UINWA.cjs} +4 -4
  30. package/dist/tsup/{chunk-GQGRQDRL.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-S662Y6ZU.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-IIJNPVPQ.cjs → chunk-GUHXWPGB.cjs} +1515 -1479
  39. package/dist/tsup/chunk-GUHXWPGB.cjs.map +1 -0
  40. package/dist/tsup/{chunk-TI5PXQGG.cjs → chunk-HNE2AK6C.cjs} +2375 -3713
  41. package/dist/tsup/chunk-HNE2AK6C.cjs.map +1 -0
  42. package/dist/tsup/{chunk-2OK7S6QF.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-U5SMSA27.cjs → chunk-JJNZQDUN.cjs} +667 -2517
  46. package/dist/tsup/chunk-JJNZQDUN.cjs.map +1 -0
  47. package/dist/tsup/{chunk-ZPWOYQHN.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-HYPIHCDT.cjs → chunk-MPLMTJY5.cjs} +123 -23
  56. package/dist/tsup/chunk-MPLMTJY5.cjs.map +1 -0
  57. package/dist/tsup/{chunk-MIX2KB6U.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-WY2SHWXQ.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-7WF2QSIC.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-JC6BEPE7.cjs → chunk-V3JSZR5P.cjs} +3 -3
  70. package/dist/tsup/{chunk-JC6BEPE7.cjs.map → chunk-V3JSZR5P.cjs.map} +1 -1
  71. package/dist/tsup/{chunk-OAXJWGMU.cjs → chunk-VBR35EQF.cjs} +271 -339
  72. package/dist/tsup/chunk-VBR35EQF.cjs.map +1 -0
  73. package/dist/tsup/{chunk-EIATSBYZ.js → chunk-VWYO36X4.js} +117 -17
  74. package/dist/tsup/chunk-VWYO36X4.js.map +1 -0
  75. package/dist/tsup/{chunk-JPXO2H55.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-SRIM3GHD.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 +114 -15
  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-6LJAZ5R4.cjs +0 -96
  305. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +0 -1
  306. package/dist/tsup/chunk-7HTNH26M.js.map +0 -1
  307. package/dist/tsup/chunk-7WF2QSIC.cjs.map +0 -1
  308. package/dist/tsup/chunk-D2SPAJVT.cjs +0 -645
  309. package/dist/tsup/chunk-D2SPAJVT.cjs.map +0 -1
  310. package/dist/tsup/chunk-EIATSBYZ.js.map +0 -1
  311. package/dist/tsup/chunk-HYPIHCDT.cjs.map +0 -1
  312. package/dist/tsup/chunk-IIJNPVPQ.cjs.map +0 -1
  313. package/dist/tsup/chunk-JPXO2H55.js.map +0 -1
  314. package/dist/tsup/chunk-KJSYAUOM.js.map +0 -1
  315. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +0 -1
  316. package/dist/tsup/chunk-MIX2KB6U.js.map +0 -1
  317. package/dist/tsup/chunk-N4KRDJ56.js.map +0 -1
  318. package/dist/tsup/chunk-OAXJWGMU.cjs.map +0 -1
  319. package/dist/tsup/chunk-PB5AEMKQ.cjs.map +0 -1
  320. package/dist/tsup/chunk-R5OQUSLN.js +0 -645
  321. package/dist/tsup/chunk-R5OQUSLN.js.map +0 -1
  322. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +0 -1
  323. package/dist/tsup/chunk-SRIM3GHD.js.map +0 -1
  324. package/dist/tsup/chunk-TADUYCHF.js.map +0 -1
  325. package/dist/tsup/chunk-TI5PXQGG.cjs.map +0 -1
  326. package/dist/tsup/chunk-U5SMSA27.cjs.map +0 -1
  327. package/dist/tsup/chunk-VKVNIQRQ.js.map +0 -1
  328. package/dist/tsup/chunk-WY2SHWXQ.js.map +0 -1
  329. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +0 -1
  330. package/dist/tsup/chunk-ZPWOYQHN.js.map +0 -1
  331. package/src/db/sqlite-vfs.ts +0 -12
  332. /package/dist/tsup/{chunk-S662Y6ZU.js.map → chunk-EONWXYMN.js.map} +0 -0
  333. /package/dist/tsup/{chunk-2OK7S6QF.js.map → chunk-I5I6OALK.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/sandbox/index.cjs","../../../src/sandbox/actor/index.ts","../../../src/sandbox/config.ts","../../../src/sandbox/session-persist-driver.ts","../../../src/sandbox/types.ts","../../../src/sandbox/actor/db.ts","../../../src/sandbox/actor/session.ts"],"names":["db"],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/sandbox/index.cjs","sourcesContent":[null,"/**\n * Sandbox actor — wraps a sandbox-agent as a RivetKit actor.\n *\n * ## Lifecycle\n *\n * The sandbox actor manages a remote sandbox environment (Docker container,\n * E2B sandbox, Daytona workspace, or custom provider) and exposes every\n * sandbox-agent SDK method as an actor action.\n *\n * **Creation:** On the first action call, `ensureAgent` lazily provisions\n * the sandbox via `SandboxAgent.start()`, which calls `provider.create()`\n * and connects to the running sandbox-agent server. The sandbox ID and\n * provider name are persisted in state so subsequent wake cycles reconnect\n * to the same sandbox.\n *\n * **Sleep/Wake:** When the actor sleeps, `onSleep` tears down the live\n * agent WebSocket connection and clears all in-memory subscriptions and\n * timers. Vars are ephemeral and recreated fresh on each wake cycle via\n * `createVars`. On the next action call after wake, `ensureAgent` reconnects\n * to the existing sandbox (identified by `state.sandboxId`) via\n * `SandboxAgent.start()` with the persisted sandbox ID and re-subscribes\n * to all sessions listed in `state.subscribedSessionIds`. The upstream\n * provider's `ensureServer()` hook (if implemented) is called automatically\n * by `SandboxAgent.start()` to ensure the sandbox-agent process is running.\n *\n * **Destroy:** `onDestroy` tears down the connection, then calls\n * `provider.destroy()` to delete the sandbox environment. The custom\n * `destroy` action allows users to destroy the sandbox without destroying\n * the actor, setting `state.sandboxDestroyed = true`. After this, proxy\n * actions that require a live sandbox throw, but read-only actions\n * (`listSessions`, `getSession`, `getEvents`) fall back to the local\n * SQLite persistence layer so transcripts remain accessible.\n *\n * ## Session management\n *\n * Session subscriptions and turn tracking are handled by `./session.ts`.\n * The actor prevents sleep while any session has an active prompt turn\n * or while user-provided hooks are executing. Idle timers warn and\n * eventually force-clear stale turns to prevent the actor from staying\n * awake indefinitely.\n *\n * ## Prevent-sleep coordination\n *\n * `setPreventSleep(true)` is set whenever:\n * - A session has an active prompt turn (tracked via JSON-RPC id matching)\n * - A user hook (onSessionEvent, onPermissionRequest) is executing\n *\n * It is cleared when all active turns complete and all hooks finish.\n * To avoid a race between sending a prompt and receiving the first event,\n * session-creating and message-sending actions immediately mark the session\n * active with idle timers.\n */\n\nimport type { DatabaseProvider } from \"@/actor/database\";\nimport { actor } from \"@/actor/mod\";\nimport type { RawAccess } from \"@/db/config\";\nimport { db } from \"@/db/mod\";\nimport { SandboxAgent, type SandboxProvider } from \"sandbox-agent\";\nimport {\n\ttype SandboxActorConfig,\n\ttype SandboxActorConfigInput,\n\ttype SandboxActorOptionsRuntime,\n\tSandboxActorConfigSchema,\n} from \"../config\";\nimport { SqliteSessionPersistDriver } from \"../session-persist-driver\";\nimport {\n\ttype SandboxActionContext,\n\ttype SandboxActorActions,\n\ttype SandboxActorState,\n\ttype SandboxActorVars,\n\tSANDBOX_AGENT_ACTION_METHODS,\n} from \"../types\";\nimport { migrateSandboxTables } from \"./db\";\nimport {\n\taddSubscribedSession,\n\tclearAllActiveSessions,\n\tclearAllSessionTimers,\n\tmarkSessionActiveInMemory,\n\tremoveSubscribedSession,\n\tsubscribeToSession,\n\tsyncPreventSleep,\n} from \"./session\";\n\n// --- Proxy action type definitions ---\n\ntype SandboxProxyActionDefinitions<TConnParams> = {\n\t[K in keyof SandboxActorActions]: (\n\t\tc: SandboxActionContext<TConnParams>,\n\t\t...args: Parameters<SandboxActorActions[K]>\n\t) => ReturnType<SandboxActorActions[K]>;\n};\n\n// --- Agent runtime lifecycle ---\n\n/**\n * Tears down the live sandbox-agent connection and all associated\n * in-memory state (event subscriptions, timers, hook tracking).\n * Does NOT destroy the sandbox itself.\n */\nasync function teardownAgentRuntime(\n\tvars: SandboxActorVars,\n): Promise<void> {\n\tfor (const subscription of vars.unsubscribeBySessionId.values()) {\n\t\tsubscription.event?.();\n\t\tsubscription.permission?.();\n\t}\n\tvars.unsubscribeBySessionId.clear();\n\tclearAllSessionTimers(vars);\n\tvars.activeHooks.clear();\n\n\tif (vars.sandboxAgentClient) {\n\t\ttry {\n\t\t\tawait vars.sandboxAgentClient.dispose();\n\t\t} finally {\n\t\t\tvars.sandboxAgentClient = null;\n\t\t}\n\t}\n\n\tvars.provider = null;\n}\n\nasync function resolveProvider<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tconfig: SandboxActorConfig<TConnParams>,\n): Promise<SandboxProvider> {\n\tif (c.vars.provider) {\n\t\treturn c.vars.provider;\n\t}\n\n\tconst provider =\n\t\tconfig.provider !== undefined\n\t\t\t? config.provider\n\t\t\t: await config.createProvider(c);\n\n\tif (c.state.providerName && c.state.providerName !== provider.name) {\n\t\tthrow new Error(\n\t\t\t`sandbox actor provider mismatch: expected ${c.state.providerName}, received ${provider.name}`,\n\t\t);\n\t}\n\n\tif (!c.state.providerName) {\n\t\tc.state.providerName = provider.name;\n\t}\n\n\tc.vars.provider = provider;\n\treturn provider;\n}\n\n/**\n * Lazily provisions and connects to the sandbox. On the first call, this\n * creates the sandbox via the provider. On subsequent calls (e.g. after\n * wake), it reconnects to the existing sandbox. Short-circuits if the\n * agent client is already connected.\n *\n * Steps:\n * 1. Resolve the provider (static or via createProvider callback)\n * 2. Call `SandboxAgent.start()` which handles:\n * - Creating the sandbox if no sandboxId is provided\n * - Calling `ensureServer()` if the provider implements it\n * - Connecting to the sandbox-agent server\n * 3. Persist the sandbox ID from the started client\n * 4. Re-subscribe to all persisted session IDs\n */\nasync function ensureAgent<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tconfig: SandboxActorConfig<TConnParams>,\n\tpersistRawEvents: boolean,\n): Promise<SandboxAgent> {\n\tif (c.vars.sandboxAgentClient) {\n\t\treturn c.vars.sandboxAgentClient;\n\t}\n\n\tconst provider = await resolveProvider(c, config);\n\n\tc.vars.sandboxAgentClient = await SandboxAgent.start({\n\t\tsandbox: provider,\n\t\tsandboxId: c.state.sandboxId ?? undefined,\n\t\tpersist: new SqliteSessionPersistDriver(c.db, persistRawEvents),\n\t});\n\n\t// Persist the sandbox ID so future wake cycles reconnect to the same sandbox.\n\tif (!c.state.sandboxId && c.vars.sandboxAgentClient.sandboxId) {\n\t\tc.state.sandboxId = c.vars.sandboxAgentClient.sandboxId;\n\t}\n\n\t// Re-subscribe to all sessions that were active before sleep.\n\tfor (const sessionId of c.state.subscribedSessionIds) {\n\t\tsubscribeToSession(c, config, sessionId);\n\t}\n\n\treturn c.vars.sandboxAgentClient;\n}\n\n// --- Read-only fallback actions ---\n\n// These actions can read from the local SQLite persistence layer even after\n// the sandbox has been destroyed, allowing transcript access.\nconst READ_ONLY_ACTIONS = new Set([\n\t\"listSessions\",\n\t\"getSession\",\n\t\"getEvents\",\n]);\n\n// --- Session-returning action detection ---\n\n// Actions that return a session object. After these actions, the actor\n// auto-subscribes to the returned session's event stream.\nconst SESSION_RETURNING_ACTIONS = new Set([\n\t\"createSession\",\n\t\"resumeSession\",\n\t\"resumeOrCreateSession\",\n\t\"getSession\",\n]);\n\n// Actions that send messages to a session. These immediately mark the\n// session active to prevent a race between sending and receiving the\n// first event.\nconst SESSION_SENDING_ACTIONS = new Set([\n\t\"rawSendSessionMethod\",\n\t\"respondPermission\",\n\t\"rawRespondPermission\",\n]);\n\nfunction isSessionLike(value: unknown): value is { id: string } {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"id\" in value &&\n\t\ttypeof (value as Record<string, unknown>).id === \"string\"\n\t);\n}\n\n// --- Proxy action builder ---\n\n/**\n * Generates an action for each sandbox-agent SDK method. Each proxy action:\n *\n * 1. Calls `ensureAgent()` to lazily connect to the sandbox\n * 2. Forwards the call to the corresponding `SandboxAgent` method\n * 3. Handles post-action side effects:\n * - `dispose`: tears down the agent runtime\n * - `destroySession`: unsubscribes from the destroyed session\n * - Session-returning actions: auto-subscribes to the session\n * - `listSessions`: auto-subscribes to all returned sessions\n * - Session-sending actions: immediately marks the session active\n * to prevent sleep before the first event arrives\n */\nfunction buildProxyActions<TConnParams>(\n\tconfig: SandboxActorConfig<TConnParams>,\n): SandboxProxyActionDefinitions<TConnParams> {\n\tconst actions = {} as Record<\n\t\tstring,\n\t\t(c: SandboxActionContext<TConnParams>, ...args: unknown[]) => Promise<unknown>\n\t>;\n\n\tfor (const actionName of SANDBOX_AGENT_ACTION_METHODS) {\n\t\tactions[actionName] = async (\n\t\t\tc: SandboxActionContext<TConnParams>,\n\t\t\t...args: unknown[]\n\t\t) => {\n\t\t\t// After sandbox destruction, only read-only actions are allowed.\n\t\t\t// These fall back to the SQLite persistence layer.\n\t\t\tif (c.state.sandboxDestroyed) {\n\t\t\t\tif (READ_ONLY_ACTIONS.has(actionName)) {\n\t\t\t\t\tconst persist = new SqliteSessionPersistDriver(\n\t\t\t\t\t\tc.db,\n\t\t\t\t\t\tconfig.persistRawEvents ?? false,\n\t\t\t\t\t);\n\t\t\t\t\tif (actionName === \"listSessions\") {\n\t\t\t\t\t\treturn persist.listSessions(args[0] as any);\n\t\t\t\t\t}\n\t\t\t\t\tif (actionName === \"getSession\") {\n\t\t\t\t\t\treturn persist.getSession(args[0] as string);\n\t\t\t\t\t}\n\t\t\t\t\tif (actionName === \"getEvents\") {\n\t\t\t\t\t\treturn persist.listEvents(args[0] as any);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"sandbox has been destroyed; only read-only actions (listSessions, getSession, getEvents) are available\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst options = config.options as SandboxActorOptionsRuntime;\n\n\t\t\t// For session-sending actions, immediately mark the session\n\t\t\t// active before dispatching to prevent the actor from sleeping\n\t\t\t// between sending the message and receiving the first event.\n\t\t\tif (\n\t\t\t\tSESSION_SENDING_ACTIONS.has(actionName) &&\n\t\t\t\ttypeof args[0] === \"string\"\n\t\t\t) {\n\t\t\t\tmarkSessionActiveInMemory(c, options, args[0]);\n\t\t\t\tsyncPreventSleep(c);\n\t\t\t}\n\n\t\t\t// Connect to the sandbox-agent and forward the method call.\n\t\t\tconst agent = await ensureAgent(\n\t\t\t\tc,\n\t\t\t\tconfig,\n\t\t\t\tconfig.persistRawEvents ?? false,\n\t\t\t);\n\t\t\tconst method = agent[actionName] as (\n\t\t\t\t...innerArgs: unknown[]\n\t\t\t) => unknown;\n\t\t\tconst result = await method.apply(agent, args);\n\n\t\t\t// Post-action side effects: manage session subscriptions based\n\t\t\t// on what the action returned.\n\t\t\tif (actionName === \"dispose\") {\n\t\t\t\tawait teardownAgentRuntime(c.vars);\n\t\t\t\tclearAllActiveSessions(c);\n\t\t\t} else if (\n\t\t\t\tactionName === \"destroySession\" &&\n\t\t\t\tisSessionLike(result)\n\t\t\t) {\n\t\t\t\tconst sub = c.vars.unsubscribeBySessionId.get(result.id);\n\t\t\t\tsub?.event?.();\n\t\t\t\tsub?.permission?.();\n\t\t\t\tc.vars.unsubscribeBySessionId.delete(result.id);\n\t\t\t\tremoveSubscribedSession(c, result.id);\n\t\t\t} else if (\n\t\t\t\tSESSION_RETURNING_ACTIONS.has(actionName) &&\n\t\t\t\tisSessionLike(result)\n\t\t\t) {\n\t\t\t\taddSubscribedSession(c, result.id);\n\t\t\t\tsubscribeToSession(c, config, result.id);\n\t\t\t} else if (\n\t\t\t\tactionName === \"listSessions\" &&\n\t\t\t\tresult &&\n\t\t\t\ttypeof result === \"object\"\n\t\t\t) {\n\t\t\t\tconst items = (result as { items?: unknown }).items;\n\t\t\t\tif (Array.isArray(items)) {\n\t\t\t\t\tfor (const item of items) {\n\t\t\t\t\t\tif (isSessionLike(item)) {\n\t\t\t\t\t\t\taddSubscribedSession(c, item.id);\n\t\t\t\t\t\t\tsubscribeToSession(c, config, item.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\treturn actions as unknown as SandboxProxyActionDefinitions<TConnParams>;\n}\n\n// --- Public API ---\n\nexport function sandboxActor<TConnParams = undefined>(\n\tconfig: SandboxActorConfigInput<TConnParams>,\n) {\n\tconst parsedConfig = SandboxActorConfigSchema.parse(\n\t\tconfig,\n\t) as SandboxActorConfig<TConnParams> & {\n\t\toptions: SandboxActorOptionsRuntime;\n\t};\n\n\treturn actor<\n\t\tSandboxActorState,\n\t\tTConnParams,\n\t\tundefined,\n\t\tSandboxActorVars,\n\t\tundefined,\n\t\tDatabaseProvider<RawAccess>,\n\t\tRecord<never, never>,\n\t\tRecord<never, never>\n\t>({\n\t\tcreateState: async () => ({\n\t\t\tsandboxId: null,\n\t\t\tproviderName: null,\n\t\t\tsubscribedSessionIds: [],\n\t\t\tsandboxDestroyed: false,\n\t\t}),\n\t\tcreateVars: () => ({\n\t\t\tsandboxAgentClient: null,\n\t\t\tprovider: null,\n\t\t\tactiveSessionIds: new Set<string>(),\n\t\t\tactivePromptRequestIdsBySessionId: new Map<string, string[]>(),\n\t\t\tlastEventAtBySessionId: new Map<string, number>(),\n\t\t\tunsubscribeBySessionId: new Map(),\n\t\t\tactiveHooks: new Set<Promise<void>>(),\n\t\t\twarningTimeoutBySessionId: new Map(),\n\t\t\tstaleTimeoutBySessionId: new Map(),\n\t\t}),\n\t\tdb: db({\n\t\t\tonMigrate: migrateSandboxTables,\n\t\t}),\n\t\tonSleep: async (c) => {\n\t\t\tawait teardownAgentRuntime(c.vars);\n\t\t},\n\t\tonDestroy: async (c) => {\n\t\t\tconst sandboxContext =\n\t\t\t\tc as SandboxActionContext<TConnParams>;\n\t\t\tclearAllActiveSessions(sandboxContext);\n\t\t\tawait teardownAgentRuntime(sandboxContext.vars);\n\n\t\t\tif (sandboxContext.state.sandboxId) {\n\t\t\t\ttry {\n\t\t\t\t\tconst provider = await resolveProvider(\n\t\t\t\t\t\tsandboxContext,\n\t\t\t\t\t\tparsedConfig,\n\t\t\t\t\t);\n\t\t\t\t\tawait provider.destroy(sandboxContext.state.sandboxId);\n\t\t\t\t} finally {\n\t\t\t\t\tsandboxContext.state.sandboxId = null;\n\t\t\t\t\tsandboxContext.state.providerName = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsandboxContext.state.subscribedSessionIds = [];\n\t\t},\n\t\tonBeforeConnect: parsedConfig.onBeforeConnect,\n\t\tactions: {\n\t\t\t// Destroys the sandbox environment but keeps the actor alive so\n\t\t\t// session transcripts remain accessible via read-only actions.\n\t\t\t// If `destroyActor` is set in the config, the actor is also\n\t\t\t// destroyed after the sandbox.\n\t\t\tdestroy: async (c: SandboxActionContext<TConnParams>) => {\n\t\t\t\tif (c.state.sandboxDestroyed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearAllActiveSessions(c);\n\t\t\t\tawait teardownAgentRuntime(c.vars);\n\n\t\t\t\tif (c.state.sandboxId) {\n\t\t\t\t\tconst provider = await resolveProvider(c, parsedConfig);\n\t\t\t\t\tawait provider.destroy(c.state.sandboxId);\n\t\t\t\t\tc.state.sandboxId = null;\n\t\t\t\t}\n\n\t\t\t\tc.state.sandboxDestroyed = true;\n\n\t\t\t\tif (parsedConfig.destroyActor) {\n\t\t\t\t\tc.destroy();\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetSandboxUrl: async (c: SandboxActionContext<TConnParams>) => {\n\t\t\t\tif (c.state.sandboxDestroyed) {\n\t\t\t\t\tthrow new Error(\"sandbox has been destroyed\");\n\t\t\t\t}\n\n\t\t\t\tconst provider = await resolveProvider(c, parsedConfig);\n\n\t\t\t\t// Ensure the sandbox exists so we have a sandbox ID.\n\t\t\t\tif (!c.state.sandboxId) {\n\t\t\t\t\tconst agent = await ensureAgent(\n\t\t\t\t\t\tc,\n\t\t\t\t\t\tparsedConfig,\n\t\t\t\t\t\tparsedConfig.persistRawEvents ?? false,\n\t\t\t\t\t);\n\t\t\t\t\tif (!c.state.sandboxId && agent.sandboxId) {\n\t\t\t\t\t\tc.state.sandboxId = agent.sandboxId;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!c.state.sandboxId) {\n\t\t\t\t\tthrow new Error(\"sandbox ID is not available\");\n\t\t\t\t}\n\n\t\t\t\tif (!provider.getUrl) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`provider \"${provider.name}\" does not support getUrl; direct sandbox URL access is not available for this provider`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn { url: await provider.getUrl(c.state.sandboxId) };\n\t\t\t},\n\t\t\t...buildProxyActions(parsedConfig),\n\t\t},\n\t});\n}\n","import { z } from \"zod/v4\";\nimport type {\n\tActorContext,\n\tBeforeConnectContext,\n} from \"@/actor/contexts\";\nimport type { AnyDatabaseProvider } from \"@/actor/database\";\nimport type {\n\tPermissionRequestListener,\n\tSessionEventListener,\n\tSandboxProvider,\n} from \"sandbox-agent\";\nimport type {\n\tSandboxActorVars,\n\tSandboxActorState,\n} from \"./types\";\n\nconst zFunction = <\n\tT extends (...args: any[]) => any = (...args: unknown[]) => unknown,\n>() => z.custom<T>((val) => typeof val === \"function\");\n\nconst SandboxProviderSchema = z.object({\n\tname: z.string(),\n\tcreate: zFunction<SandboxProvider[\"create\"]>(),\n\tdestroy: zFunction<SandboxProvider[\"destroy\"]>(),\n\tgetUrl: zFunction<NonNullable<SandboxProvider[\"getUrl\"]>>().optional(),\n\tgetFetch: zFunction<NonNullable<SandboxProvider[\"getFetch\"]>>().optional(),\n\tensureServer: zFunction<NonNullable<SandboxProvider[\"ensureServer\"]>>().optional(),\n});\n\nexport const SandboxActorOptionsSchema = z\n\t.object({\n\t\t// Log if the actor still thinks a turn is active but no new session event\n\t\t// has arrived for this long.\n\t\twarningAfterMs: z.number().nonnegative().default(30_000),\n\t\t// Clear active-turn state after this timeout so a missing terminal event\n\t\t// cannot keep the actor awake forever.\n\t\tstaleAfterMs: z.number().positive().default(5 * 60_000),\n\t})\n\t.strict()\n\t.prefault(() => ({}))\n\t.transform((value) => ({\n\t\t...value,\n\t\twarningAfterMs: Math.min(value.warningAfterMs, value.staleAfterMs),\n\t}));\n\nexport type SandboxActorOptions = z.input<typeof SandboxActorOptionsSchema>;\nexport type SandboxActorOptionsRuntime = z.infer<\n\ttypeof SandboxActorOptionsSchema\n>;\n\n// This schema validates the config at runtime. Generic callback types are\n// defined separately below following the same pattern as ActorConfigSchema:\n// infer from the schema, omit function keys, then intersect typed callbacks.\nexport const SandboxActorConfigSchema = z\n\t.object({\n\t\tprovider: SandboxProviderSchema.optional(),\n\t\tcreateProvider: zFunction().optional(),\n\t\tpersistRawEvents: z.boolean().optional(),\n\t\tdestroyActor: z.boolean().default(false),\n\t\toptions: SandboxActorOptionsSchema,\n\t\tonBeforeConnect: zFunction().optional(),\n\t\tonSessionEvent: zFunction().optional(),\n\t\tonPermissionRequest: zFunction().optional(),\n\t})\n\t.strict()\n\t.refine(\n\t\t(data) =>\n\t\t\t(data.provider !== undefined) !==\n\t\t\t(data.createProvider !== undefined),\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Sandbox actor config must define exactly one of 'provider' or 'createProvider'\",\n\t\t},\n\t);\n\n// --- Typed config types (generic callbacks overlaid on the Zod schema) ---\n\ntype SandboxActorContext<TConnParams> = ActorContext<\n\tSandboxActorState,\n\tTConnParams,\n\tundefined,\n\tSandboxActorVars,\n\tundefined,\n\tAnyDatabaseProvider\n>;\n\ninterface SandboxActorConfigCallbacks<TConnParams> {\n\tonBeforeConnect?: (\n\t\tc: BeforeConnectContext<\n\t\t\tSandboxActorState,\n\t\t\tSandboxActorVars,\n\t\t\tundefined,\n\t\t\tAnyDatabaseProvider\n\t\t>,\n\t\tparams: TConnParams,\n\t) => void | Promise<void>;\n\tonSessionEvent?: (\n\t\tc: SandboxActorContext<TConnParams>,\n\t\tsessionId: string,\n\t\tevent: Parameters<SessionEventListener>[0],\n\t) => void | Promise<void>;\n\tonPermissionRequest?: (\n\t\tc: SandboxActorContext<TConnParams>,\n\t\tsessionId: string,\n\t\trequest: Parameters<PermissionRequestListener>[0],\n\t) => void | Promise<void>;\n}\n\ntype SandboxActorProviderConfig<TConnParams> =\n\t| {\n\t\t\tprovider: SandboxProvider;\n\t\t\tcreateProvider?: never;\n\t }\n\t| {\n\t\t\tprovider?: never;\n\t\t\tcreateProvider: (\n\t\t\t\tc: SandboxActorContext<TConnParams>,\n\t\t\t) => SandboxProvider | Promise<SandboxProvider>;\n\t };\n\n// Parsed config (after Zod defaults/transforms applied).\nexport type SandboxActorConfig<TConnParams = undefined> = Omit<\n\tz.infer<typeof SandboxActorConfigSchema>,\n\t| \"provider\"\n\t| \"createProvider\"\n\t| \"onBeforeConnect\"\n\t| \"onSessionEvent\"\n\t| \"onPermissionRequest\"\n> &\n\tSandboxActorConfigCallbacks<TConnParams> &\n\tSandboxActorProviderConfig<TConnParams>;\n\n// Input config (what users pass in before Zod transforms).\nexport type SandboxActorConfigInput<TConnParams = undefined> = Omit<\n\tz.input<typeof SandboxActorConfigSchema>,\n\t| \"provider\"\n\t| \"createProvider\"\n\t| \"onBeforeConnect\"\n\t| \"onSessionEvent\"\n\t| \"onPermissionRequest\"\n> &\n\tSandboxActorConfigCallbacks<TConnParams> &\n\tSandboxActorProviderConfig<TConnParams>;\n\nexport type SandboxActorBeforeConnectContext<TConnParams = undefined> =\n\tBeforeConnectContext<\n\t\tSandboxActorState,\n\t\tSandboxActorVars,\n\t\tundefined,\n\t\tAnyDatabaseProvider\n\t>;\n","import type { RawAccess } from \"@/db/config\";\nimport type {\n\tListEventsRequest,\n\tListPage,\n\tListPageRequest,\n\tSessionEvent,\n\tSessionPersistDriver,\n\tSessionRecord,\n} from \"sandbox-agent\";\n\ntype PersistSessionRow = {\n\trecord_json: string;\n};\n\ntype PersistEventRow = {\n\tid: string;\n\tevent_index: number;\n\tsession_id: string;\n\tcreated_at: number;\n\tconnection_id: string;\n\tsender: SessionEvent[\"sender\"];\n\tpayload_json: string;\n};\n\nfunction parseCursor(cursor?: string): number {\n\tif (!cursor) {\n\t\treturn 0;\n\t}\n\n\tconst value = Number(cursor);\n\tif (!Number.isFinite(value) || value < 0) {\n\t\treturn 0;\n\t}\n\n\treturn Math.floor(value);\n}\n\nfunction nextCursor(\n\toffset: number,\n\tlimit: number,\n\titemCount: number,\n): string | undefined {\n\tif (itemCount < limit) {\n\t\treturn undefined;\n\t}\n\n\treturn String(offset + itemCount);\n}\n\nexport class SqliteSessionPersistDriver implements SessionPersistDriver {\n\t#db: RawAccess;\n\t#persistRawEvents: boolean;\n\n\tconstructor(db: RawAccess, persistRawEvents: boolean) {\n\t\tthis.#db = db;\n\t\tthis.#persistRawEvents = persistRawEvents;\n\t}\n\n\tasync getSession(id: string): Promise<SessionRecord | undefined> {\n\t\tconst rows = await this.#db.execute<PersistSessionRow>(\n\t\t\t\"SELECT record_json FROM sandbox_agent_sessions WHERE id = ? LIMIT 1\",\n\t\t\tid,\n\t\t);\n\t\tconst row = rows[0];\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn JSON.parse(row.record_json) as SessionRecord;\n\t}\n\n\tasync listSessions(\n\t\trequest: ListPageRequest = {},\n\t): Promise<ListPage<SessionRecord>> {\n\t\tconst limit = request.limit ?? 50;\n\t\tconst offset = parseCursor(request.cursor);\n\t\tconst rows = await this.#db.execute<PersistSessionRow>(\n\t\t\t`\n\t\t\t\tSELECT record_json\n\t\t\t\tFROM sandbox_agent_sessions\n\t\t\t\tORDER BY created_at DESC, id DESC\n\t\t\t\tLIMIT ? OFFSET ?\n\t\t\t`,\n\t\t\tlimit,\n\t\t\toffset,\n\t\t);\n\n\t\treturn {\n\t\t\titems: rows.map((row) => JSON.parse(row.record_json) as SessionRecord),\n\t\t\tnextCursor: nextCursor(offset, limit, rows.length),\n\t\t};\n\t}\n\n\tasync updateSession(session: SessionRecord): Promise<void> {\n\t\tawait this.#db.execute(\n\t\t\t`\n\t\t\t\tINSERT INTO sandbox_agent_sessions (id, created_at, record_json)\n\t\t\t\tVALUES (?, ?, ?)\n\t\t\t\tON CONFLICT(id) DO UPDATE SET\n\t\t\t\t\tcreated_at = excluded.created_at,\n\t\t\t\t\trecord_json = excluded.record_json\n\t\t\t`,\n\t\t\tsession.id,\n\t\t\tsession.createdAt,\n\t\t\tJSON.stringify(session),\n\t\t);\n\t}\n\n\tasync listEvents(\n\t\trequest: ListEventsRequest,\n\t): Promise<ListPage<SessionEvent>> {\n\t\tconst limit = request.limit ?? 200;\n\t\tconst offset = parseCursor(request.cursor);\n\t\tconst rows = await this.#db.execute<PersistEventRow>(\n\t\t\t`\n\t\t\t\tSELECT\n\t\t\t\t\tid,\n\t\t\t\t\tevent_index,\n\t\t\t\t\tsession_id,\n\t\t\t\t\tcreated_at,\n\t\t\t\t\tconnection_id,\n\t\t\t\t\tsender,\n\t\t\t\t\tpayload_json\n\t\t\t\tFROM sandbox_agent_events\n\t\t\t\tWHERE session_id = ?\n\t\t\t\tORDER BY event_index ASC\n\t\t\t\tLIMIT ? OFFSET ?\n\t\t\t`,\n\t\t\trequest.sessionId,\n\t\t\tlimit,\n\t\t\toffset,\n\t\t);\n\n\t\treturn {\n\t\t\titems: rows.map((row) => ({\n\t\t\t\tid: row.id,\n\t\t\t\teventIndex: row.event_index,\n\t\t\t\tsessionId: row.session_id,\n\t\t\t\tcreatedAt: row.created_at,\n\t\t\t\tconnectionId: row.connection_id,\n\t\t\t\tsender: row.sender,\n\t\t\t\tpayload: JSON.parse(row.payload_json),\n\t\t\t} satisfies SessionEvent)),\n\t\t\tnextCursor: nextCursor(offset, limit, rows.length),\n\t\t};\n\t}\n\n\tasync insertEvent(_sessionId: string, event: SessionEvent): Promise<void> {\n\t\tconst payload = JSON.stringify(event.payload);\n\t\tawait this.#db.execute(\n\t\t\t`\n\t\t\t\tINSERT INTO sandbox_agent_events (\n\t\t\t\t\tid,\n\t\t\t\t\tsession_id,\n\t\t\t\t\tevent_index,\n\t\t\t\t\tcreated_at,\n\t\t\t\t\tconnection_id,\n\t\t\t\t\tsender,\n\t\t\t\t\tpayload_json,\n\t\t\t\t\traw_payload_json\n\t\t\t\t)\n\t\t\t\tVALUES (?, ?, ?, ?, ?, ?, ?, ?)\n\t\t\t\tON CONFLICT(session_id, event_index) DO UPDATE SET\n\t\t\t\t\tid = excluded.id,\n\t\t\t\t\tcreated_at = excluded.created_at,\n\t\t\t\t\tconnection_id = excluded.connection_id,\n\t\t\t\t\tsender = excluded.sender,\n\t\t\t\t\tpayload_json = excluded.payload_json,\n\t\t\t\t\traw_payload_json = excluded.raw_payload_json\n\t\t\t`,\n\t\t\tevent.id,\n\t\t\tevent.sessionId,\n\t\t\tevent.eventIndex,\n\t\t\tevent.createdAt,\n\t\t\tevent.connectionId,\n\t\t\tevent.sender,\n\t\t\tpayload,\n\t\t\tthis.#persistRawEvents ? payload : null,\n\t\t);\n\t}\n}\n","import type { ActionContext } from \"@/actor/contexts\";\nimport type { DatabaseProvider } from \"@/actor/database\";\nimport type { RawAccess } from \"@/db/config\";\nimport type {\n\tSandboxAgent,\n\tSandboxProvider,\n} from \"sandbox-agent\";\n\nexport type { SandboxProvider };\n\n/** @deprecated Use `SandboxProvider` from `sandbox-agent` instead. */\nexport type SandboxActorProvider = SandboxProvider;\n\n// Keep this split in lockstep with the sandbox-agent SDK. Hooks should match the\n// SDK callback methods, and actions should match every other SDK instance\n// method. Update these lists and the parity test together when sandbox-agent\n// changes.\nexport const SANDBOX_AGENT_HOOK_METHODS = [\n\t\"onSessionEvent\",\n\t\"onPermissionRequest\",\n] as const;\n\nexport type SandboxActorHookMethodName =\n\t(typeof SANDBOX_AGENT_HOOK_METHODS)[number];\n\nexport const SANDBOX_AGENT_ACTION_METHODS = [\n\t\"dispose\",\n\t\"listSessions\",\n\t\"getSession\",\n\t\"getEvents\",\n\t\"createSession\",\n\t\"resumeSession\",\n\t\"resumeOrCreateSession\",\n\t\"destroySandbox\",\n\t\"destroySession\",\n\t\"setSessionMode\",\n\t\"setSessionConfigOption\",\n\t\"setSessionModel\",\n\t\"setSessionThoughtLevel\",\n\t\"getSessionConfigOptions\",\n\t\"getSessionModes\",\n\t\"rawSendSessionMethod\",\n\t\"respondPermission\",\n\t\"rawRespondPermission\",\n\t\"getHealth\",\n\t\"listAgents\",\n\t\"getAgent\",\n\t\"installAgent\",\n\t\"listAcpServers\",\n\t\"listFsEntries\",\n\t\"readFsFile\",\n\t\"writeFsFile\",\n\t\"deleteFsEntry\",\n\t\"mkdirFs\",\n\t\"moveFs\",\n\t\"statFs\",\n\t\"uploadFsBatch\",\n\t\"getMcpConfig\",\n\t\"setMcpConfig\",\n\t\"deleteMcpConfig\",\n\t\"getSkillsConfig\",\n\t\"setSkillsConfig\",\n\t\"deleteSkillsConfig\",\n\t\"getProcessConfig\",\n\t\"setProcessConfig\",\n\t\"createProcess\",\n\t\"runProcess\",\n\t\"listProcesses\",\n\t\"getProcess\",\n\t\"stopProcess\",\n\t\"killProcess\",\n\t\"deleteProcess\",\n\t\"getProcessLogs\",\n\t\"followProcessLogs\",\n\t\"sendProcessInput\",\n\t\"resizeProcessTerminal\",\n\t\"buildProcessTerminalWebSocketUrl\",\n\t\"connectProcessTerminalWebSocket\",\n\t\"connectProcessTerminal\",\n] as const;\n\nexport type SandboxAgentActionMethodName =\n\t(typeof SANDBOX_AGENT_ACTION_METHODS)[number];\n\nexport type SandboxActorActions = Pick<\n\tSandboxAgent,\n\tSandboxAgentActionMethodName\n>;\n\nexport type SandboxSessionEvent = Parameters<\n\tParameters<SandboxAgent[\"onSessionEvent\"]>[1]\n>[0];\n\nexport interface SandboxActorState {\n\tsandboxId: string | null;\n\tproviderName: string | null;\n\t/** Persisted so that on wake, the actor knows which sessions to\n\t * re-subscribe to when reconnecting to the sandbox agent. Without\n\t * this, event listeners would be lost after a sleep/wake cycle. */\n\tsubscribedSessionIds: string[];\n\tsandboxDestroyed: boolean;\n}\n\nexport interface SandboxActorVars {\n\tsandboxAgentClient: SandboxAgent | null;\n\tprovider: SandboxProvider | null;\n\tactiveSessionIds: Set<string>;\n\tactivePromptRequestIdsBySessionId: Map<string, string[]>;\n\tlastEventAtBySessionId: Map<string, number>;\n\tunsubscribeBySessionId: Map<\n\t\tstring,\n\t\t{\n\t\t\tevent?: () => void;\n\t\t\tpermission?: () => void;\n\t\t}\n\t>;\n\t/** Tracks in-flight hook promises. Size is used instead of a counter\n\t * to avoid increment/decrement mismatch bugs. */\n\tactiveHooks: Set<Promise<void>>;\n\twarningTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;\n\tstaleTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;\n}\n\n/** @deprecated Use `SandboxActorVars` instead. */\nexport type SandboxActorRuntime = SandboxActorVars;\n\n/**\n * Action context type used by the sandbox actor implementation for session\n * management, proxy actions, and lifecycle hooks.\n */\nexport type SandboxActionContext<TConnParams = undefined> = ActionContext<\n\tSandboxActorState,\n\tTConnParams,\n\tundefined,\n\tSandboxActorVars,\n\tundefined,\n\tDatabaseProvider<RawAccess>\n>;\n","import type { RawAccess } from \"@/db/config\";\n\nexport async function migrateSandboxTables(db: RawAccess): Promise<void> {\n\t// Legacy tables from an earlier naming convention. Safe to drop because\n\t// they were never shipped in a release and contain no user data.\n\tawait db.execute(`\n\t\tDROP TABLE IF EXISTS sandbox_actor_meta;\n\t\tDROP TABLE IF EXISTS sandbox_actor_sessions;\n\t`);\n\n\tawait db.execute(`\n\t\tCREATE TABLE IF NOT EXISTS sandbox_agent_sessions (\n\t\t\tid TEXT PRIMARY KEY,\n\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\trecord_json TEXT NOT NULL\n\t\t);\n\n\t\tCREATE TABLE IF NOT EXISTS sandbox_agent_events (\n\t\t\tid TEXT PRIMARY KEY,\n\t\t\tsession_id TEXT NOT NULL,\n\t\t\tevent_index INTEGER NOT NULL,\n\t\t\tcreated_at INTEGER NOT NULL,\n\t\t\tconnection_id TEXT NOT NULL,\n\t\t\tsender TEXT NOT NULL,\n\t\t\tpayload_json TEXT NOT NULL,\n\t\t\traw_payload_json TEXT,\n\t\t\tUNIQUE(session_id, event_index)\n\t\t);\n\n\t\tCREATE INDEX IF NOT EXISTS sandbox_agent_sessions_created_at_idx\n\t\t\tON sandbox_agent_sessions (created_at DESC);\n\n\t\tCREATE INDEX IF NOT EXISTS sandbox_agent_events_session_event_index_idx\n\t\t\tON sandbox_agent_events (session_id, event_index ASC);\n\t`);\n}\n","/**\n * Session lifecycle management for the sandbox actor.\n *\n * Manages three concerns:\n *\n * 1. **Subscription tracking** — which sandbox-agent sessions this actor is\n * listening to for events and permission requests. Subscriptions are\n * persisted in `state.subscribedSessionIds` so they survive sleep/wake.\n *\n * 2. **Active turn tracking** — detects when a session has an in-flight\n * prompt turn by observing JSON-RPC envelopes on the event stream.\n * A client `session/prompt` request starts a turn; the matching agent\n * response (same JSON-RPC id) ends it. While any turn is active the\n * actor prevents sleep.\n *\n * 3. **Idle timers** — if a turn appears stuck (no events for `warningAfterMs`),\n * a warning is logged. After `staleAfterMs` the turn state is force-cleared\n * so a missing terminal response cannot keep the actor awake forever.\n */\n\nimport type { SessionPermissionRequest } from \"sandbox-agent\";\nimport type { SandboxActorConfig, SandboxActorOptionsRuntime } from \"../config\";\nimport type {\n\tSandboxActionContext,\n\tSandboxActorVars,\n\tSandboxSessionEvent,\n} from \"../types\";\n\n// --- Prevent-sleep synchronization ---\n\nexport function syncPreventSleep<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n): void {\n\tc.setPreventSleep(\n\t\tc.vars.activeHooks.size > 0 || c.vars.activeSessionIds.size > 0,\n\t);\n}\n\n// --- Session timer management ---\n\nfunction clearTimerMap(\n\tmap: Map<string, ReturnType<typeof setTimeout>>,\n\tsessionId: string,\n): void {\n\tconst timeout = map.get(sessionId);\n\tif (timeout) {\n\t\tclearTimeout(timeout);\n\t\tmap.delete(sessionId);\n\t}\n}\n\nfunction clearTimerMapAll(\n\tmap: Map<string, ReturnType<typeof setTimeout>>,\n): void {\n\tfor (const timeout of map.values()) {\n\t\tclearTimeout(timeout);\n\t}\n\tmap.clear();\n}\n\nfunction clearSessionTimers(vars: SandboxActorVars, sessionId: string): void {\n\tclearTimerMap(vars.warningTimeoutBySessionId, sessionId);\n\tclearTimerMap(vars.staleTimeoutBySessionId, sessionId);\n}\n\nexport function clearAllSessionTimers(vars: SandboxActorVars): void {\n\tclearTimerMapAll(vars.warningTimeoutBySessionId);\n\tclearTimerMapAll(vars.staleTimeoutBySessionId);\n}\n\n// Schedules warning and stale timeouts for a session based on the last\n// event timestamp. If the session goes idle for too long, the stale\n// timeout clears the active turn so the actor can sleep.\nfunction scheduleSessionTimers<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\toptions: SandboxActorOptionsRuntime,\n\tsessionId: string,\n): void {\n\tclearSessionTimers(c.vars, sessionId);\n\n\tconst lastEventAt = c.vars.lastEventAtBySessionId.get(sessionId);\n\tif (lastEventAt === undefined) {\n\t\treturn;\n\t}\n\n\tconst warningDelay = Math.max(\n\t\t0,\n\t\toptions.warningAfterMs - (Date.now() - lastEventAt),\n\t);\n\tc.vars.warningTimeoutBySessionId.set(\n\t\tsessionId,\n\t\tsetTimeout(() => {\n\t\t\tif (!c.vars.activeSessionIds.has(sessionId)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tc.log.warn({\n\t\t\t\tmsg: \"sandbox actor turn is still active without new session events\",\n\t\t\t\tsessionId,\n\t\t\t\tidleMs: Date.now() - lastEventAt,\n\t\t\t});\n\t\t}, warningDelay),\n\t);\n\n\tconst staleDelay = Math.max(\n\t\t0,\n\t\toptions.staleAfterMs - (Date.now() - lastEventAt),\n\t);\n\tc.vars.staleTimeoutBySessionId.set(\n\t\tsessionId,\n\t\tsetTimeout(() => {\n\t\t\tif (!c.vars.activeSessionIds.has(sessionId)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tc.log.warn({\n\t\t\t\tmsg: \"sandbox actor cleared stale active turn state after inactivity timeout\",\n\t\t\t\tsessionId,\n\t\t\t\tidleMs: Date.now() - lastEventAt,\n\t\t\t});\n\t\t\tclearSessionActiveInMemory(c, sessionId);\n\t\t\tsyncPreventSleep(c);\n\t\t}, staleDelay),\n\t);\n}\n\n// --- Session active-state tracking (in-memory only) ---\n\nexport function markSessionActiveInMemory<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\toptions: SandboxActorOptionsRuntime,\n\tsessionId: string,\n\trequestId?: string,\n): void {\n\tc.vars.activeSessionIds.add(sessionId);\n\tif (requestId) {\n\t\tconst requestIds =\n\t\t\tc.vars.activePromptRequestIdsBySessionId.get(sessionId) ?? [];\n\t\tif (!requestIds.includes(requestId)) {\n\t\t\trequestIds.push(requestId);\n\t\t\tc.vars.activePromptRequestIdsBySessionId.set(\n\t\t\t\tsessionId,\n\t\t\t\trequestIds,\n\t\t\t);\n\t\t}\n\t}\n\n\tc.vars.lastEventAtBySessionId.set(sessionId, Date.now());\n\tscheduleSessionTimers(c, options, sessionId);\n}\n\nfunction clearSessionActiveInMemory<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tsessionId: string,\n\trequestId?: string,\n): void {\n\tif (requestId) {\n\t\tconst remaining =\n\t\t\t(c.vars.activePromptRequestIdsBySessionId.get(sessionId) ?? []).filter(\n\t\t\t\t(activeRequestId) => activeRequestId !== requestId,\n\t\t\t);\n\t\tif (remaining.length > 0) {\n\t\t\tc.vars.activePromptRequestIdsBySessionId.set(\n\t\t\t\tsessionId,\n\t\t\t\tremaining,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tc.vars.activeSessionIds.delete(sessionId);\n\tc.vars.activePromptRequestIdsBySessionId.delete(sessionId);\n\tc.vars.lastEventAtBySessionId.delete(sessionId);\n\tclearSessionTimers(c.vars, sessionId);\n}\n\n// --- Session subscription management ---\n\nexport function addSubscribedSession<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tsessionId: string,\n): void {\n\tif (c.state.subscribedSessionIds.includes(sessionId)) {\n\t\treturn;\n\t}\n\tc.state.subscribedSessionIds.push(sessionId);\n}\n\nexport function removeSubscribedSession<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tsessionId: string,\n): void {\n\tclearSessionActiveInMemory(c, sessionId);\n\tc.state.subscribedSessionIds = c.state.subscribedSessionIds.filter(\n\t\t(id) => id !== sessionId,\n\t);\n\tsyncPreventSleep(c);\n}\n\nexport function clearAllActiveSessions<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n): void {\n\tc.vars.activeSessionIds.clear();\n\tc.vars.activePromptRequestIdsBySessionId.clear();\n\tc.vars.lastEventAtBySessionId.clear();\n\tclearAllSessionTimers(c.vars);\n\tsyncPreventSleep(c);\n}\n\n// --- Hook execution ---\n\n/**\n * Wraps a user-provided callback (onSessionEvent, onPermissionRequest) with\n * active-hook tracking and error isolation. The hook promise is added to\n * `vars.activeHooks` so prevent-sleep stays accurate, and removed on\n * completion. Errors are logged but do not crash the actor.\n */\nfunction runHook<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tsessionId: string,\n\tname: \"onSessionEvent\" | \"onPermissionRequest\",\n\tcallback: () => void | Promise<void>,\n): void {\n\tconst promise = Promise.resolve(callback())\n\t\t.catch((error) => {\n\t\t\tc.log.error({\n\t\t\t\tmsg: `sandbox actor ${name} hook failed`,\n\t\t\t\tsessionId,\n\t\t\t\terror,\n\t\t\t});\n\t\t})\n\t\t.finally(() => {\n\t\t\tc.vars.activeHooks.delete(promise);\n\t\t\tsyncPreventSleep(c);\n\t\t});\n\n\tc.vars.activeHooks.add(promise);\n\tsyncPreventSleep(c);\n\n\tc.waitUntil(promise);\n}\n\n// --- Turn tracking from session events ---\n\n/**\n * Inspects raw JSON-RPC envelopes from the sandbox-agent event stream to\n * detect prompt turn boundaries. A client-side `session/prompt` request\n * marks the session active; the matching agent-side response (same\n * JSON-RPC id) clears it. Any intermediate event refreshes the idle timer.\n */\nexport function trackSessionTurnFromEvent<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\toptions: SandboxActorOptionsRuntime,\n\tsessionId: string,\n\tevent: SandboxSessionEvent,\n): void {\n\tconst payload = event.payload as Record<string, unknown> | null | undefined;\n\tconst method =\n\t\ttypeof payload?.method === \"string\" ? payload.method : null;\n\tconst rawId = payload?.id;\n\tconst id =\n\t\ttypeof rawId === \"string\"\n\t\t\t? rawId\n\t\t\t: typeof rawId === \"number\"\n\t\t\t\t? String(rawId)\n\t\t\t\t: null;\n\n\tif (event.sender === \"client\" && method === \"session/prompt\") {\n\t\tmarkSessionActiveInMemory(\n\t\t\tc,\n\t\t\toptions,\n\t\t\tsessionId,\n\t\t\tid ?? `session-prompt:${event.id}`,\n\t\t);\n\t\tsyncPreventSleep(c);\n\t\treturn;\n\t}\n\n\tif (!c.vars.activeSessionIds.has(sessionId)) {\n\t\treturn;\n\t}\n\n\tif (event.sender === \"agent\" && id) {\n\t\tconst requestIds =\n\t\t\tc.vars.activePromptRequestIdsBySessionId.get(sessionId) ?? [];\n\t\tif (requestIds.length === 0 || requestIds.includes(id)) {\n\t\t\tclearSessionActiveInMemory(c, sessionId, id);\n\t\t\tsyncPreventSleep(c);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Any other event from an active session refreshes the idle timer.\n\tc.vars.lastEventAtBySessionId.set(sessionId, Date.now());\n\tscheduleSessionTimers(c, options, sessionId);\n}\n\n// --- Session event subscriptions ---\n\n/**\n * Subscribes to a session's event and permission streams on the live\n * sandbox-agent connection. Tracks the unsubscribe callbacks so they\n * can be cleaned up on teardown.\n */\nexport function subscribeToSession<TConnParams>(\n\tc: SandboxActionContext<TConnParams>,\n\tconfig: SandboxActorConfig<TConnParams>,\n\tsessionId: string,\n): void {\n\tif (c.vars.unsubscribeBySessionId.has(sessionId)) {\n\t\treturn;\n\t}\n\n\tconst client = c.vars.sandboxAgentClient;\n\tif (!client) {\n\t\treturn;\n\t}\n\n\tconst options = config.options as SandboxActorOptionsRuntime;\n\n\tconst event = client.onSessionEvent(sessionId, (sessionEvent) => {\n\t\ttrackSessionTurnFromEvent(c, options, sessionId, sessionEvent);\n\n\t\tif (!config.onSessionEvent) {\n\t\t\treturn;\n\t\t}\n\n\t\trunHook(c, sessionId, \"onSessionEvent\", () =>\n\t\t\tconfig.onSessionEvent!(c, sessionId, sessionEvent),\n\t\t);\n\t});\n\n\tconst permission = client.onPermissionRequest(\n\t\tsessionId,\n\t\t(request: SessionPermissionRequest) => {\n\t\t\tmarkSessionActiveInMemory(c, options, sessionId);\n\t\t\tsyncPreventSleep(c);\n\n\t\t\tif (!config.onPermissionRequest) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunHook(c, sessionId, \"onPermissionRequest\", () =>\n\t\t\t\tconfig.onPermissionRequest!(c, sessionId, request),\n\t\t\t);\n\t\t},\n\t);\n\n\tc.vars.unsubscribeBySessionId.set(sessionId, { event, permission });\n}\n"]}
@@ -0,0 +1,120 @@
1
+ import { a0 as ActionContext, a1 as BeforeConnectContext, a2 as ActorContext, d as ActorDefinition, a3 as Actions } from '../config-ehT-_3BB.cjs';
2
+ import { D as DatabaseProvider, R as RawAccess, A as AnyDatabaseProvider } from '../config-DROwzBLT.cjs';
3
+ import { z } from 'zod/v4';
4
+ import { SandboxAgent, SandboxProvider, SessionEventListener, PermissionRequestListener } from 'sandbox-agent';
5
+ export { PermissionReply, ProcessLogFollowQuery, ProcessLogListener, ProcessLogSubscription, ProcessTerminalConnectOptions, ProcessTerminalSession, ProcessTerminalSessionOptions, ProcessTerminalWebSocketUrlOptions, SandboxAgent, SandboxProvider, Session, SessionCreateRequest, SessionEvent, SessionPermissionRequest, SessionRecord, SessionResumeOrCreateRequest, SessionSendOptions } from 'sandbox-agent';
6
+ export { FollowProcessLogsOptions, FsEntry, FsStat, ProcessLogEntry, TerminalConnectOptions, TerminalExitStatus, TerminalSession, UploadBatchResponse, buildTerminalWebSocketUrl, connectTerminal, deleteFile, downloadFile, followProcessLogs, listFiles, mkdirFs, moveFile, statFile, uploadBatch, uploadFile } from './client.cjs';
7
+ import '@rivetkit/virtual-websocket';
8
+ import '@rivetkit/traces';
9
+ import 'hono';
10
+ import 'vbare';
11
+ import '../utils.cjs';
12
+ import '../utils-fwx3o3K9.cjs';
13
+ import 'hono/utils/http-status';
14
+ import '@standard-schema/spec';
15
+ import '@rivetkit/sqlite-vfs';
16
+ import 'drizzle-orm/sqlite-core';
17
+ import 'zod';
18
+ import 'pino';
19
+ import 'nanoevents';
20
+ import '../v3-DnYObHH3.cjs';
21
+ import '@rivetkit/bare-ts';
22
+
23
+ /** @deprecated Use `SandboxProvider` from `sandbox-agent` instead. */
24
+ type SandboxActorProvider = SandboxProvider;
25
+ declare const SANDBOX_AGENT_HOOK_METHODS: readonly ["onSessionEvent", "onPermissionRequest"];
26
+ declare const SANDBOX_AGENT_ACTION_METHODS: readonly ["dispose", "listSessions", "getSession", "getEvents", "createSession", "resumeSession", "resumeOrCreateSession", "destroySandbox", "destroySession", "setSessionMode", "setSessionConfigOption", "setSessionModel", "setSessionThoughtLevel", "getSessionConfigOptions", "getSessionModes", "rawSendSessionMethod", "respondPermission", "rawRespondPermission", "getHealth", "listAgents", "getAgent", "installAgent", "listAcpServers", "listFsEntries", "readFsFile", "writeFsFile", "deleteFsEntry", "mkdirFs", "moveFs", "statFs", "uploadFsBatch", "getMcpConfig", "setMcpConfig", "deleteMcpConfig", "getSkillsConfig", "setSkillsConfig", "deleteSkillsConfig", "getProcessConfig", "setProcessConfig", "createProcess", "runProcess", "listProcesses", "getProcess", "stopProcess", "killProcess", "deleteProcess", "getProcessLogs", "followProcessLogs", "sendProcessInput", "resizeProcessTerminal", "buildProcessTerminalWebSocketUrl", "connectProcessTerminalWebSocket", "connectProcessTerminal"];
27
+ type SandboxAgentActionMethodName = (typeof SANDBOX_AGENT_ACTION_METHODS)[number];
28
+ type SandboxActorActions = Pick<SandboxAgent, SandboxAgentActionMethodName>;
29
+ type SandboxSessionEvent = Parameters<Parameters<SandboxAgent["onSessionEvent"]>[1]>[0];
30
+ interface SandboxActorState {
31
+ sandboxId: string | null;
32
+ providerName: string | null;
33
+ /** Persisted so that on wake, the actor knows which sessions to
34
+ * re-subscribe to when reconnecting to the sandbox agent. Without
35
+ * this, event listeners would be lost after a sleep/wake cycle. */
36
+ subscribedSessionIds: string[];
37
+ sandboxDestroyed: boolean;
38
+ }
39
+ interface SandboxActorVars {
40
+ sandboxAgentClient: SandboxAgent | null;
41
+ provider: SandboxProvider | null;
42
+ activeSessionIds: Set<string>;
43
+ activePromptRequestIdsBySessionId: Map<string, string[]>;
44
+ lastEventAtBySessionId: Map<string, number>;
45
+ unsubscribeBySessionId: Map<string, {
46
+ event?: () => void;
47
+ permission?: () => void;
48
+ }>;
49
+ /** Tracks in-flight hook promises. Size is used instead of a counter
50
+ * to avoid increment/decrement mismatch bugs. */
51
+ activeHooks: Set<Promise<void>>;
52
+ warningTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
53
+ staleTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
54
+ }
55
+ /** @deprecated Use `SandboxActorVars` instead. */
56
+ type SandboxActorRuntime = SandboxActorVars;
57
+ /**
58
+ * Action context type used by the sandbox actor implementation for session
59
+ * management, proxy actions, and lifecycle hooks.
60
+ */
61
+ type SandboxActionContext<TConnParams = undefined> = ActionContext<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>>;
62
+
63
+ declare const SandboxActorOptionsSchema: z.ZodPipe<z.ZodPrefault<z.ZodObject<{
64
+ warningAfterMs: z.ZodDefault<z.ZodNumber>;
65
+ staleAfterMs: z.ZodDefault<z.ZodNumber>;
66
+ }, z.core.$strict>>, z.ZodTransform<{
67
+ warningAfterMs: number;
68
+ staleAfterMs: number;
69
+ }, {
70
+ warningAfterMs: number;
71
+ staleAfterMs: number;
72
+ }>>;
73
+ type SandboxActorOptions = z.input<typeof SandboxActorOptionsSchema>;
74
+ type SandboxActorOptionsRuntime = z.infer<typeof SandboxActorOptionsSchema>;
75
+ declare const SandboxActorConfigSchema: z.ZodObject<{
76
+ provider: z.ZodOptional<z.ZodObject<{
77
+ name: z.ZodString;
78
+ create: z.ZodCustom<() => Promise<string>, () => Promise<string>>;
79
+ destroy: z.ZodCustom<(sandboxId: string) => Promise<void>, (sandboxId: string) => Promise<void>>;
80
+ getUrl: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<string>, (sandboxId: string) => Promise<string>>>;
81
+ getFetch: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<typeof globalThis.fetch>, (sandboxId: string) => Promise<typeof globalThis.fetch>>>;
82
+ ensureServer: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<void>, (sandboxId: string) => Promise<void>>>;
83
+ }, z.core.$strip>>;
84
+ createProvider: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
85
+ persistRawEvents: z.ZodOptional<z.ZodBoolean>;
86
+ destroyActor: z.ZodDefault<z.ZodBoolean>;
87
+ options: z.ZodPipe<z.ZodPrefault<z.ZodObject<{
88
+ warningAfterMs: z.ZodDefault<z.ZodNumber>;
89
+ staleAfterMs: z.ZodDefault<z.ZodNumber>;
90
+ }, z.core.$strict>>, z.ZodTransform<{
91
+ warningAfterMs: number;
92
+ staleAfterMs: number;
93
+ }, {
94
+ warningAfterMs: number;
95
+ staleAfterMs: number;
96
+ }>>;
97
+ onBeforeConnect: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
98
+ onSessionEvent: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
99
+ onPermissionRequest: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
100
+ }, z.core.$strict>;
101
+ type SandboxActorContext<TConnParams> = ActorContext<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, AnyDatabaseProvider>;
102
+ interface SandboxActorConfigCallbacks<TConnParams> {
103
+ onBeforeConnect?: (c: BeforeConnectContext<SandboxActorState, SandboxActorVars, undefined, AnyDatabaseProvider>, params: TConnParams) => void | Promise<void>;
104
+ onSessionEvent?: (c: SandboxActorContext<TConnParams>, sessionId: string, event: Parameters<SessionEventListener>[0]) => void | Promise<void>;
105
+ onPermissionRequest?: (c: SandboxActorContext<TConnParams>, sessionId: string, request: Parameters<PermissionRequestListener>[0]) => void | Promise<void>;
106
+ }
107
+ type SandboxActorProviderConfig<TConnParams> = {
108
+ provider: SandboxProvider;
109
+ createProvider?: never;
110
+ } | {
111
+ provider?: never;
112
+ createProvider: (c: SandboxActorContext<TConnParams>) => SandboxProvider | Promise<SandboxProvider>;
113
+ };
114
+ type SandboxActorConfig<TConnParams = undefined> = Omit<z.infer<typeof SandboxActorConfigSchema>, "provider" | "createProvider" | "onBeforeConnect" | "onSessionEvent" | "onPermissionRequest"> & SandboxActorConfigCallbacks<TConnParams> & SandboxActorProviderConfig<TConnParams>;
115
+ type SandboxActorConfigInput<TConnParams = undefined> = Omit<z.input<typeof SandboxActorConfigSchema>, "provider" | "createProvider" | "onBeforeConnect" | "onSessionEvent" | "onPermissionRequest"> & SandboxActorConfigCallbacks<TConnParams> & SandboxActorProviderConfig<TConnParams>;
116
+ type SandboxActorBeforeConnectContext<TConnParams = undefined> = BeforeConnectContext<SandboxActorState, SandboxActorVars, undefined, AnyDatabaseProvider>;
117
+
118
+ declare function sandboxActor<TConnParams = undefined>(config: SandboxActorConfigInput<TConnParams>): ActorDefinition<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>, Record<never, never>, Record<never, never>, Actions<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>, Record<never, never>, Record<never, never>>>;
119
+
120
+ export { SANDBOX_AGENT_ACTION_METHODS, SANDBOX_AGENT_HOOK_METHODS, type SandboxActionContext, type SandboxActorActions, type SandboxActorBeforeConnectContext, type SandboxActorConfig, type SandboxActorConfigInput, SandboxActorConfigSchema, type SandboxActorOptions, type SandboxActorOptionsRuntime, SandboxActorOptionsSchema, type SandboxActorProvider, type SandboxActorRuntime, type SandboxActorState, type SandboxActorVars, type SandboxSessionEvent, sandboxActor };
@@ -0,0 +1,120 @@
1
+ import { a0 as ActionContext, a1 as BeforeConnectContext, a2 as ActorContext, d as ActorDefinition, a3 as Actions } from '../config-C2Wwnc69.js';
2
+ import { D as DatabaseProvider, R as RawAccess, A as AnyDatabaseProvider } from '../config-DROwzBLT.js';
3
+ import { z } from 'zod/v4';
4
+ import { SandboxAgent, SandboxProvider, SessionEventListener, PermissionRequestListener } from 'sandbox-agent';
5
+ export { PermissionReply, ProcessLogFollowQuery, ProcessLogListener, ProcessLogSubscription, ProcessTerminalConnectOptions, ProcessTerminalSession, ProcessTerminalSessionOptions, ProcessTerminalWebSocketUrlOptions, SandboxAgent, SandboxProvider, Session, SessionCreateRequest, SessionEvent, SessionPermissionRequest, SessionRecord, SessionResumeOrCreateRequest, SessionSendOptions } from 'sandbox-agent';
6
+ export { FollowProcessLogsOptions, FsEntry, FsStat, ProcessLogEntry, TerminalConnectOptions, TerminalExitStatus, TerminalSession, UploadBatchResponse, buildTerminalWebSocketUrl, connectTerminal, deleteFile, downloadFile, followProcessLogs, listFiles, mkdirFs, moveFile, statFile, uploadBatch, uploadFile } from './client.js';
7
+ import '@rivetkit/virtual-websocket';
8
+ import '@rivetkit/traces';
9
+ import 'hono';
10
+ import 'vbare';
11
+ import '../utils.js';
12
+ import '../utils-fwx3o3K9.js';
13
+ import 'hono/utils/http-status';
14
+ import '@standard-schema/spec';
15
+ import '@rivetkit/sqlite-vfs';
16
+ import 'drizzle-orm/sqlite-core';
17
+ import 'zod';
18
+ import 'pino';
19
+ import 'nanoevents';
20
+ import '../v3-DnYObHH3.js';
21
+ import '@rivetkit/bare-ts';
22
+
23
+ /** @deprecated Use `SandboxProvider` from `sandbox-agent` instead. */
24
+ type SandboxActorProvider = SandboxProvider;
25
+ declare const SANDBOX_AGENT_HOOK_METHODS: readonly ["onSessionEvent", "onPermissionRequest"];
26
+ declare const SANDBOX_AGENT_ACTION_METHODS: readonly ["dispose", "listSessions", "getSession", "getEvents", "createSession", "resumeSession", "resumeOrCreateSession", "destroySandbox", "destroySession", "setSessionMode", "setSessionConfigOption", "setSessionModel", "setSessionThoughtLevel", "getSessionConfigOptions", "getSessionModes", "rawSendSessionMethod", "respondPermission", "rawRespondPermission", "getHealth", "listAgents", "getAgent", "installAgent", "listAcpServers", "listFsEntries", "readFsFile", "writeFsFile", "deleteFsEntry", "mkdirFs", "moveFs", "statFs", "uploadFsBatch", "getMcpConfig", "setMcpConfig", "deleteMcpConfig", "getSkillsConfig", "setSkillsConfig", "deleteSkillsConfig", "getProcessConfig", "setProcessConfig", "createProcess", "runProcess", "listProcesses", "getProcess", "stopProcess", "killProcess", "deleteProcess", "getProcessLogs", "followProcessLogs", "sendProcessInput", "resizeProcessTerminal", "buildProcessTerminalWebSocketUrl", "connectProcessTerminalWebSocket", "connectProcessTerminal"];
27
+ type SandboxAgentActionMethodName = (typeof SANDBOX_AGENT_ACTION_METHODS)[number];
28
+ type SandboxActorActions = Pick<SandboxAgent, SandboxAgentActionMethodName>;
29
+ type SandboxSessionEvent = Parameters<Parameters<SandboxAgent["onSessionEvent"]>[1]>[0];
30
+ interface SandboxActorState {
31
+ sandboxId: string | null;
32
+ providerName: string | null;
33
+ /** Persisted so that on wake, the actor knows which sessions to
34
+ * re-subscribe to when reconnecting to the sandbox agent. Without
35
+ * this, event listeners would be lost after a sleep/wake cycle. */
36
+ subscribedSessionIds: string[];
37
+ sandboxDestroyed: boolean;
38
+ }
39
+ interface SandboxActorVars {
40
+ sandboxAgentClient: SandboxAgent | null;
41
+ provider: SandboxProvider | null;
42
+ activeSessionIds: Set<string>;
43
+ activePromptRequestIdsBySessionId: Map<string, string[]>;
44
+ lastEventAtBySessionId: Map<string, number>;
45
+ unsubscribeBySessionId: Map<string, {
46
+ event?: () => void;
47
+ permission?: () => void;
48
+ }>;
49
+ /** Tracks in-flight hook promises. Size is used instead of a counter
50
+ * to avoid increment/decrement mismatch bugs. */
51
+ activeHooks: Set<Promise<void>>;
52
+ warningTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
53
+ staleTimeoutBySessionId: Map<string, ReturnType<typeof setTimeout>>;
54
+ }
55
+ /** @deprecated Use `SandboxActorVars` instead. */
56
+ type SandboxActorRuntime = SandboxActorVars;
57
+ /**
58
+ * Action context type used by the sandbox actor implementation for session
59
+ * management, proxy actions, and lifecycle hooks.
60
+ */
61
+ type SandboxActionContext<TConnParams = undefined> = ActionContext<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>>;
62
+
63
+ declare const SandboxActorOptionsSchema: z.ZodPipe<z.ZodPrefault<z.ZodObject<{
64
+ warningAfterMs: z.ZodDefault<z.ZodNumber>;
65
+ staleAfterMs: z.ZodDefault<z.ZodNumber>;
66
+ }, z.core.$strict>>, z.ZodTransform<{
67
+ warningAfterMs: number;
68
+ staleAfterMs: number;
69
+ }, {
70
+ warningAfterMs: number;
71
+ staleAfterMs: number;
72
+ }>>;
73
+ type SandboxActorOptions = z.input<typeof SandboxActorOptionsSchema>;
74
+ type SandboxActorOptionsRuntime = z.infer<typeof SandboxActorOptionsSchema>;
75
+ declare const SandboxActorConfigSchema: z.ZodObject<{
76
+ provider: z.ZodOptional<z.ZodObject<{
77
+ name: z.ZodString;
78
+ create: z.ZodCustom<() => Promise<string>, () => Promise<string>>;
79
+ destroy: z.ZodCustom<(sandboxId: string) => Promise<void>, (sandboxId: string) => Promise<void>>;
80
+ getUrl: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<string>, (sandboxId: string) => Promise<string>>>;
81
+ getFetch: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<typeof globalThis.fetch>, (sandboxId: string) => Promise<typeof globalThis.fetch>>>;
82
+ ensureServer: z.ZodOptional<z.ZodCustom<(sandboxId: string) => Promise<void>, (sandboxId: string) => Promise<void>>>;
83
+ }, z.core.$strip>>;
84
+ createProvider: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
85
+ persistRawEvents: z.ZodOptional<z.ZodBoolean>;
86
+ destroyActor: z.ZodDefault<z.ZodBoolean>;
87
+ options: z.ZodPipe<z.ZodPrefault<z.ZodObject<{
88
+ warningAfterMs: z.ZodDefault<z.ZodNumber>;
89
+ staleAfterMs: z.ZodDefault<z.ZodNumber>;
90
+ }, z.core.$strict>>, z.ZodTransform<{
91
+ warningAfterMs: number;
92
+ staleAfterMs: number;
93
+ }, {
94
+ warningAfterMs: number;
95
+ staleAfterMs: number;
96
+ }>>;
97
+ onBeforeConnect: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
98
+ onSessionEvent: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
99
+ onPermissionRequest: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
100
+ }, z.core.$strict>;
101
+ type SandboxActorContext<TConnParams> = ActorContext<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, AnyDatabaseProvider>;
102
+ interface SandboxActorConfigCallbacks<TConnParams> {
103
+ onBeforeConnect?: (c: BeforeConnectContext<SandboxActorState, SandboxActorVars, undefined, AnyDatabaseProvider>, params: TConnParams) => void | Promise<void>;
104
+ onSessionEvent?: (c: SandboxActorContext<TConnParams>, sessionId: string, event: Parameters<SessionEventListener>[0]) => void | Promise<void>;
105
+ onPermissionRequest?: (c: SandboxActorContext<TConnParams>, sessionId: string, request: Parameters<PermissionRequestListener>[0]) => void | Promise<void>;
106
+ }
107
+ type SandboxActorProviderConfig<TConnParams> = {
108
+ provider: SandboxProvider;
109
+ createProvider?: never;
110
+ } | {
111
+ provider?: never;
112
+ createProvider: (c: SandboxActorContext<TConnParams>) => SandboxProvider | Promise<SandboxProvider>;
113
+ };
114
+ type SandboxActorConfig<TConnParams = undefined> = Omit<z.infer<typeof SandboxActorConfigSchema>, "provider" | "createProvider" | "onBeforeConnect" | "onSessionEvent" | "onPermissionRequest"> & SandboxActorConfigCallbacks<TConnParams> & SandboxActorProviderConfig<TConnParams>;
115
+ type SandboxActorConfigInput<TConnParams = undefined> = Omit<z.input<typeof SandboxActorConfigSchema>, "provider" | "createProvider" | "onBeforeConnect" | "onSessionEvent" | "onPermissionRequest"> & SandboxActorConfigCallbacks<TConnParams> & SandboxActorProviderConfig<TConnParams>;
116
+ type SandboxActorBeforeConnectContext<TConnParams = undefined> = BeforeConnectContext<SandboxActorState, SandboxActorVars, undefined, AnyDatabaseProvider>;
117
+
118
+ declare function sandboxActor<TConnParams = undefined>(config: SandboxActorConfigInput<TConnParams>): ActorDefinition<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>, Record<never, never>, Record<never, never>, Actions<SandboxActorState, TConnParams, undefined, SandboxActorVars, undefined, DatabaseProvider<RawAccess>, Record<never, never>, Record<never, never>>>;
119
+
120
+ export { SANDBOX_AGENT_ACTION_METHODS, SANDBOX_AGENT_HOOK_METHODS, type SandboxActionContext, type SandboxActorActions, type SandboxActorBeforeConnectContext, type SandboxActorConfig, type SandboxActorConfigInput, SandboxActorConfigSchema, type SandboxActorOptions, type SandboxActorOptionsRuntime, SandboxActorOptionsSchema, type SandboxActorProvider, type SandboxActorRuntime, type SandboxActorState, type SandboxActorVars, type SandboxSessionEvent, sandboxActor };