rivetkit 2.0.42 → 2.1.0-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 (322) hide show
  1. package/dist/{tsup/config-CLnylLYY.d.ts → browser/client.d.ts} +2127 -1910
  2. package/dist/browser/client.js +5182 -0
  3. package/dist/browser/client.js.map +1 -0
  4. package/dist/browser/inspector/client.d.ts +130 -0
  5. package/dist/browser/inspector/client.js +2854 -0
  6. package/dist/browser/inspector/client.js.map +1 -0
  7. package/dist/browser/v3-DnYObHH3.d.ts +279 -0
  8. package/dist/schemas/actor-inspector/v2.ts +796 -0
  9. package/dist/schemas/actor-inspector/v3.ts +899 -0
  10. package/dist/schemas/actor-persist/v4.ts +406 -0
  11. package/dist/schemas/client-protocol/v3.ts +554 -0
  12. package/dist/schemas/persist/v1.ts +781 -0
  13. package/dist/schemas/transport/v1.ts +697 -0
  14. package/dist/tsup/actor/errors.cjs +27 -3
  15. package/dist/tsup/actor/errors.cjs.map +1 -1
  16. package/dist/tsup/actor/errors.d.cts +37 -1
  17. package/dist/tsup/actor/errors.d.ts +37 -1
  18. package/dist/tsup/actor/errors.js +26 -1
  19. package/dist/tsup/{actor-router-consts-DzI2szci.d.cts → actor-router-consts-D29T1Z-K.d.cts} +1 -1
  20. package/dist/tsup/{actor-router-consts-DzI2szci.d.ts → actor-router-consts-D29T1Z-K.d.ts} +1 -1
  21. package/dist/tsup/chunk-424PT5DM.js +23 -0
  22. package/dist/tsup/chunk-424PT5DM.js.map +1 -0
  23. package/dist/tsup/{chunk-JDAD2YFA.js → chunk-5ESWDTHJ.js} +148 -273
  24. package/dist/tsup/chunk-5ESWDTHJ.js.map +1 -0
  25. package/dist/tsup/{chunk-FJ3KTN4V.js → chunk-6LIBPELE.js} +119 -11
  26. package/dist/tsup/chunk-6LIBPELE.js.map +1 -0
  27. package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
  28. package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
  29. package/dist/tsup/{chunk-LFVF5SCU.js → chunk-7HTNH26M.js} +126 -1
  30. package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
  31. package/dist/tsup/chunk-7K4CYDGD.js +630 -0
  32. package/dist/tsup/chunk-7K4CYDGD.js.map +1 -0
  33. package/dist/tsup/{chunk-XXGJCOL6.js → chunk-A6YIZWTK.js} +2 -2
  34. package/dist/tsup/chunk-AIYEYMX5.cjs +630 -0
  35. package/dist/tsup/chunk-AIYEYMX5.cjs.map +1 -0
  36. package/dist/tsup/{chunk-Q6W7RJJP.js → chunk-DIGBC2VI.js} +211 -2316
  37. package/dist/tsup/chunk-DIGBC2VI.js.map +1 -0
  38. package/dist/tsup/{chunk-RZW2DNND.cjs → chunk-F6JYU5IK.cjs} +1957 -1039
  39. package/dist/tsup/chunk-F6JYU5IK.cjs.map +1 -0
  40. package/dist/tsup/chunk-HAZL2EPK.cjs +534 -0
  41. package/dist/tsup/chunk-HAZL2EPK.cjs.map +1 -0
  42. package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
  43. package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
  44. package/dist/tsup/chunk-HIDX4C5Y.cjs +1036 -0
  45. package/dist/tsup/chunk-HIDX4C5Y.cjs.map +1 -0
  46. package/dist/tsup/chunk-IVG73YCW.js +534 -0
  47. package/dist/tsup/chunk-IVG73YCW.js.map +1 -0
  48. package/dist/tsup/chunk-KJSYAUOM.js +96 -0
  49. package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
  50. package/dist/tsup/{chunk-2XQS746M.cjs → chunk-L47L3ZWJ.cjs} +127 -2
  51. package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
  52. package/dist/tsup/{chunk-H4TB4X25.cjs → chunk-LW6KLR7A.cjs} +126 -18
  53. package/dist/tsup/chunk-LW6KLR7A.cjs.map +1 -0
  54. package/dist/tsup/chunk-LXUQ667X.js +2006 -0
  55. package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
  56. package/dist/tsup/{chunk-GMAVRZSF.js → chunk-M2T62AZQ.js} +1790 -872
  57. package/dist/tsup/chunk-M2T62AZQ.js.map +1 -0
  58. package/dist/tsup/chunk-MZ37VV3P.js +5974 -0
  59. package/dist/tsup/chunk-MZ37VV3P.js.map +1 -0
  60. package/dist/tsup/chunk-N4KRDJ56.js +72 -0
  61. package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
  62. package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
  63. package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
  64. package/dist/tsup/chunk-OMEPCQK2.js +649 -0
  65. package/dist/tsup/chunk-OMEPCQK2.js.map +1 -0
  66. package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
  67. package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
  68. package/dist/tsup/chunk-SSEP6DHP.cjs +2657 -0
  69. package/dist/tsup/chunk-SSEP6DHP.cjs.map +1 -0
  70. package/dist/tsup/chunk-T5YCUGVS.js +1036 -0
  71. package/dist/tsup/chunk-T5YCUGVS.js.map +1 -0
  72. package/dist/tsup/{chunk-EJVBH5VF.cjs → chunk-TPGXWFQT.cjs} +3 -3
  73. package/dist/tsup/{chunk-EJVBH5VF.cjs.map → chunk-TPGXWFQT.cjs.map} +1 -1
  74. package/dist/tsup/{chunk-X35U3YNX.cjs → chunk-TYLXNCA5.cjs} +214 -339
  75. package/dist/tsup/chunk-TYLXNCA5.cjs.map +1 -0
  76. package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
  77. package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
  78. package/dist/tsup/chunk-XWBAQO5H.cjs +649 -0
  79. package/dist/tsup/chunk-XWBAQO5H.cjs.map +1 -0
  80. package/dist/tsup/chunk-YQ4LDVD6.cjs +5974 -0
  81. package/dist/tsup/chunk-YQ4LDVD6.cjs.map +1 -0
  82. package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
  83. package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
  84. package/dist/tsup/client/mod.cjs +9 -10
  85. package/dist/tsup/client/mod.cjs.map +1 -1
  86. package/dist/tsup/client/mod.d.cts +11 -5
  87. package/dist/tsup/client/mod.d.ts +11 -5
  88. package/dist/tsup/client/mod.js +8 -8
  89. package/dist/tsup/common/log.cjs +4 -4
  90. package/dist/tsup/common/log.d.cts +2 -2
  91. package/dist/tsup/common/log.d.ts +2 -2
  92. package/dist/tsup/common/log.js +3 -2
  93. package/dist/tsup/common/websocket.cjs +5 -5
  94. package/dist/tsup/common/websocket.js +4 -3
  95. package/dist/tsup/config-BFqid9Gr.d.ts +2574 -0
  96. package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
  97. package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
  98. package/dist/tsup/{config-CZB2-W8x.d.cts → config-CAZphOS1.d.cts} +681 -355
  99. package/dist/tsup/db/drizzle/mod.cjs +49 -0
  100. package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
  101. package/dist/tsup/db/drizzle/mod.d.cts +17 -0
  102. package/dist/tsup/db/drizzle/mod.d.ts +17 -0
  103. package/dist/tsup/db/drizzle/mod.js +49 -0
  104. package/dist/tsup/db/drizzle/mod.js.map +1 -0
  105. package/dist/tsup/db/mod.cjs +9 -0
  106. package/dist/tsup/db/mod.cjs.map +1 -0
  107. package/dist/tsup/db/mod.d.cts +9 -0
  108. package/dist/tsup/db/mod.d.ts +9 -0
  109. package/dist/tsup/db/mod.js +9 -0
  110. package/dist/tsup/db/mod.js.map +1 -0
  111. package/dist/tsup/{driver-D0QX9M11.d.ts → driver-Bxv62E2p.d.ts} +2 -2
  112. package/dist/tsup/{driver-q-zqG7fc.d.cts → driver-DYXwJR5D.d.cts} +2 -2
  113. package/dist/tsup/driver-helpers/mod.cjs +12 -6
  114. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  115. package/dist/tsup/driver-helpers/mod.d.cts +12 -5
  116. package/dist/tsup/driver-helpers/mod.d.ts +12 -5
  117. package/dist/tsup/driver-helpers/mod.js +12 -5
  118. package/dist/tsup/driver-test-suite/mod.cjs +1370 -116
  119. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  120. package/dist/tsup/driver-test-suite/mod.d.cts +10 -4
  121. package/dist/tsup/driver-test-suite/mod.d.ts +10 -4
  122. package/dist/tsup/driver-test-suite/mod.js +2093 -838
  123. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  124. package/dist/tsup/inspector/mod.cjs +29 -3
  125. package/dist/tsup/inspector/mod.cjs.map +1 -1
  126. package/dist/tsup/inspector/mod.d.cts +124 -3
  127. package/dist/tsup/inspector/mod.d.ts +124 -3
  128. package/dist/tsup/inspector/mod.js +72 -45
  129. package/dist/tsup/keys-CydblqMh.d.cts +13 -0
  130. package/dist/tsup/keys-CydblqMh.d.ts +13 -0
  131. package/dist/tsup/mod.cjs +16 -10
  132. package/dist/tsup/mod.cjs.map +1 -1
  133. package/dist/tsup/mod.d.cts +26 -14
  134. package/dist/tsup/mod.d.ts +26 -14
  135. package/dist/tsup/mod.js +20 -13
  136. package/dist/tsup/serve-test-suite/mod.cjs +1165 -83
  137. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  138. package/dist/tsup/serve-test-suite/mod.js +1114 -29
  139. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  140. package/dist/tsup/test/mod.cjs +84 -11
  141. package/dist/tsup/test/mod.cjs.map +1 -1
  142. package/dist/tsup/test/mod.d.cts +10 -5
  143. package/dist/tsup/test/mod.d.ts +10 -5
  144. package/dist/tsup/test/mod.js +85 -11
  145. package/dist/tsup/test/mod.js.map +1 -1
  146. package/dist/tsup/utils.cjs +10 -4
  147. package/dist/tsup/utils.cjs.map +1 -1
  148. package/dist/tsup/utils.d.cts +72 -2
  149. package/dist/tsup/utils.d.ts +72 -2
  150. package/dist/tsup/utils.js +9 -2
  151. package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
  152. package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
  153. package/dist/tsup/workflow/mod.cjs +16 -0
  154. package/dist/tsup/workflow/mod.cjs.map +1 -0
  155. package/dist/tsup/workflow/mod.d.cts +83 -0
  156. package/dist/tsup/workflow/mod.d.ts +83 -0
  157. package/dist/tsup/workflow/mod.js +16 -0
  158. package/dist/tsup/workflow/mod.js.map +1 -0
  159. package/package.json +62 -5
  160. package/src/actor/config.ts +478 -68
  161. package/src/actor/conn/mod.ts +68 -16
  162. package/src/actor/conn/state-manager.ts +2 -2
  163. package/src/actor/contexts/action.ts +20 -12
  164. package/src/actor/contexts/base/actor.ts +137 -7
  165. package/src/actor/contexts/base/conn-init.ts +27 -7
  166. package/src/actor/contexts/base/conn.ts +27 -18
  167. package/src/actor/contexts/before-action-response.ts +9 -2
  168. package/src/actor/contexts/before-connect.ts +7 -2
  169. package/src/actor/contexts/connect.ts +9 -2
  170. package/src/actor/contexts/create-conn-state.ts +7 -2
  171. package/src/actor/contexts/create-vars.ts +16 -3
  172. package/src/actor/contexts/create.ts +16 -3
  173. package/src/actor/contexts/destroy.ts +9 -3
  174. package/src/actor/contexts/disconnect.ts +10 -4
  175. package/src/actor/contexts/index.ts +4 -3
  176. package/src/actor/contexts/request.ts +23 -6
  177. package/src/actor/contexts/run.ts +47 -0
  178. package/src/actor/contexts/sleep.ts +9 -3
  179. package/src/actor/contexts/state-change.ts +9 -3
  180. package/src/actor/contexts/wake.ts +9 -3
  181. package/src/actor/contexts/websocket.ts +23 -6
  182. package/src/actor/database.ts +8 -18
  183. package/src/actor/definition.ts +20 -6
  184. package/src/actor/driver.ts +32 -3
  185. package/src/actor/errors.ts +127 -0
  186. package/src/actor/instance/connection-manager.ts +183 -80
  187. package/src/actor/instance/event-manager.ts +26 -15
  188. package/src/actor/instance/keys.ts +117 -0
  189. package/src/actor/instance/mod.ts +784 -174
  190. package/src/actor/instance/queue-manager.ts +603 -0
  191. package/src/actor/instance/queue.ts +287 -0
  192. package/src/actor/instance/schedule-manager.ts +49 -7
  193. package/src/actor/instance/state-manager.ts +35 -11
  194. package/src/actor/instance/traces-driver.ts +128 -0
  195. package/src/actor/mod.ts +26 -2
  196. package/src/actor/protocol/old.ts +28 -13
  197. package/src/actor/protocol/serde.ts +1 -1
  198. package/src/actor/router-endpoints.ts +177 -21
  199. package/src/actor/router-websocket-endpoints.ts +18 -29
  200. package/src/actor/router.ts +177 -0
  201. package/src/actor/schema.ts +291 -0
  202. package/src/actor/utils.ts +40 -0
  203. package/src/client/actor-common.ts +1 -1
  204. package/src/client/actor-conn.ts +100 -33
  205. package/src/client/actor-handle.ts +61 -33
  206. package/src/client/client.ts +2 -4
  207. package/src/client/config.ts +1 -1
  208. package/src/client/mod.browser.ts +2 -0
  209. package/src/client/mod.ts +1 -4
  210. package/src/client/queue.ts +146 -0
  211. package/src/client/utils.ts +1 -1
  212. package/src/common/log.ts +1 -1
  213. package/src/common/utils.ts +3 -3
  214. package/src/db/config.ts +100 -0
  215. package/src/db/drizzle/mod.ts +226 -0
  216. package/src/db/drizzle/sqlite-core.ts +22 -0
  217. package/src/db/mod.ts +125 -0
  218. package/src/db/shared.ts +92 -0
  219. package/src/db/sqlite-vfs.ts +12 -0
  220. package/src/driver-helpers/mod.ts +1 -0
  221. package/src/driver-test-suite/mod.ts +69 -43
  222. package/src/driver-test-suite/tests/access-control.ts +218 -0
  223. package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
  224. package/src/driver-test-suite/tests/actor-db.ts +394 -0
  225. package/src/driver-test-suite/tests/actor-inspector.ts +259 -358
  226. package/src/driver-test-suite/tests/actor-kv.ts +41 -20
  227. package/src/driver-test-suite/tests/actor-queue.ts +324 -0
  228. package/src/driver-test-suite/tests/actor-run.ts +181 -0
  229. package/src/driver-test-suite/tests/actor-schedule.ts +5 -2
  230. package/src/driver-test-suite/tests/actor-sleep.ts +3 -3
  231. package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
  232. package/src/driver-test-suite/tests/actor-workflow.ts +108 -0
  233. package/src/driver-test-suite/tests/manager-driver.ts +11 -0
  234. package/src/driver-test-suite/tests/raw-http-request-properties.ts +1 -1
  235. package/src/driver-test-suite/tests/raw-websocket.ts +12 -12
  236. package/src/drivers/default.ts +7 -2
  237. package/src/drivers/engine/actor-driver.ts +45 -37
  238. package/src/drivers/engine/config.ts +1 -1
  239. package/src/drivers/file-system/actor.ts +20 -2
  240. package/src/drivers/file-system/global-state.ts +569 -258
  241. package/src/drivers/file-system/kv-limits.ts +70 -0
  242. package/src/drivers/file-system/manager.ts +22 -6
  243. package/src/drivers/file-system/mod.ts +39 -16
  244. package/src/drivers/file-system/sqlite-runtime.ts +210 -0
  245. package/src/inspector/actor-inspector.ts +224 -102
  246. package/src/inspector/config.ts +1 -1
  247. package/src/inspector/handler.ts +102 -20
  248. package/src/inspector/mod.browser.ts +8 -0
  249. package/src/inspector/mod.ts +2 -0
  250. package/src/inspector/serve-ui.ts +40 -0
  251. package/src/inspector/transport.ts +18 -0
  252. package/src/inspector/utils.ts +5 -39
  253. package/src/manager/gateway.ts +1 -1
  254. package/src/manager/protocol/mod.ts +1 -1
  255. package/src/manager/protocol/query.ts +1 -1
  256. package/src/manager/router-schema.ts +1 -1
  257. package/src/manager/router.ts +38 -12
  258. package/src/manager-api/actors.ts +1 -1
  259. package/src/manager-api/common.ts +1 -1
  260. package/src/registry/config/driver.ts +1 -1
  261. package/src/registry/config/index.ts +212 -43
  262. package/src/registry/config/legacy-runner.ts +1 -1
  263. package/src/registry/config/runner.ts +1 -1
  264. package/src/registry/config/serverless.ts +1 -1
  265. package/src/registry/index.ts +7 -5
  266. package/src/remote-manager-driver/api-utils.ts +1 -1
  267. package/src/schemas/actor-inspector/mod.ts +1 -1
  268. package/src/schemas/actor-inspector/versioned.ts +195 -8
  269. package/src/schemas/actor-persist/versioned.ts +87 -7
  270. package/src/schemas/client-protocol/mod.ts +1 -1
  271. package/src/schemas/client-protocol/versioned.ts +127 -11
  272. package/src/schemas/client-protocol-zod/mod.ts +16 -1
  273. package/src/schemas/persist/mod.ts +1 -0
  274. package/src/schemas/transport/mod.ts +1 -0
  275. package/src/serde.ts +1 -1
  276. package/src/serve-test-suite/mod.ts +10 -9
  277. package/src/test/mod.ts +15 -56
  278. package/src/utils/endpoint-parser.test.ts +1 -1
  279. package/src/utils/endpoint-parser.ts +1 -1
  280. package/src/utils/env-vars.ts +12 -1
  281. package/src/utils/node.ts +15 -2
  282. package/src/utils.test.ts +34 -0
  283. package/src/utils.ts +140 -6
  284. package/src/workflow/constants.ts +2 -0
  285. package/src/workflow/context.ts +532 -0
  286. package/src/workflow/driver.ts +191 -0
  287. package/src/workflow/inspector.ts +268 -0
  288. package/src/workflow/mod.ts +122 -0
  289. package/dist/tsup/chunk-2IJTYN6K.cjs +0 -278
  290. package/dist/tsup/chunk-2IJTYN6K.cjs.map +0 -1
  291. package/dist/tsup/chunk-2XQS746M.cjs.map +0 -1
  292. package/dist/tsup/chunk-3VP5CSHV.cjs +0 -114
  293. package/dist/tsup/chunk-3VP5CSHV.cjs.map +0 -1
  294. package/dist/tsup/chunk-AQFSQMBG.js +0 -114
  295. package/dist/tsup/chunk-AQFSQMBG.js.map +0 -1
  296. package/dist/tsup/chunk-E6ZE2YEA.js +0 -664
  297. package/dist/tsup/chunk-E6ZE2YEA.js.map +0 -1
  298. package/dist/tsup/chunk-FJ3KTN4V.js.map +0 -1
  299. package/dist/tsup/chunk-GBENOENJ.cjs +0 -8
  300. package/dist/tsup/chunk-GBENOENJ.cjs.map +0 -1
  301. package/dist/tsup/chunk-GD7UXGOE.cjs +0 -4762
  302. package/dist/tsup/chunk-GD7UXGOE.cjs.map +0 -1
  303. package/dist/tsup/chunk-GMAVRZSF.js.map +0 -1
  304. package/dist/tsup/chunk-H4TB4X25.cjs.map +0 -1
  305. package/dist/tsup/chunk-JDAD2YFA.js.map +0 -1
  306. package/dist/tsup/chunk-KCOVZOPS.js +0 -1946
  307. package/dist/tsup/chunk-KCOVZOPS.js.map +0 -1
  308. package/dist/tsup/chunk-KDFWJKMJ.cjs +0 -664
  309. package/dist/tsup/chunk-KDFWJKMJ.cjs.map +0 -1
  310. package/dist/tsup/chunk-LFVF5SCU.js.map +0 -1
  311. package/dist/tsup/chunk-Q6W7RJJP.js.map +0 -1
  312. package/dist/tsup/chunk-RUW5CZ5Z.cjs +0 -1949
  313. package/dist/tsup/chunk-RUW5CZ5Z.cjs.map +0 -1
  314. package/dist/tsup/chunk-RZW2DNND.cjs.map +0 -1
  315. package/dist/tsup/chunk-TCOEBUUE.js +0 -278
  316. package/dist/tsup/chunk-TCOEBUUE.js.map +0 -1
  317. package/dist/tsup/chunk-X35U3YNX.cjs.map +0 -1
  318. package/dist/tsup/keys-Chhy4ylv.d.cts +0 -8
  319. package/dist/tsup/keys-Chhy4ylv.d.ts +0 -8
  320. package/dist/tsup/v1-Gq4avTK3.d.cts +0 -240
  321. package/dist/tsup/v1-Gq4avTK3.d.ts +0 -240
  322. /package/dist/tsup/{chunk-XXGJCOL6.js.map → chunk-A6YIZWTK.js.map} +0 -0
@@ -1,7 +1,17 @@
1
1
  import {
2
+ CURRENT_VERSION,
2
3
  TO_CLIENT_VERSIONED,
3
4
  TO_SERVER_VERSIONED
4
- } from "./chunk-E6ZE2YEA.js";
5
+ } from "./chunk-LXUQ667X.js";
6
+ import {
7
+ ActorContext,
8
+ KEYS,
9
+ assertUnreachable as assertUnreachable2,
10
+ getRunMetadata,
11
+ hasSchemaConfigKey,
12
+ loggerWithoutContext,
13
+ validateSchemaSync
14
+ } from "./chunk-T5YCUGVS.js";
5
15
  import {
6
16
  LogLevelSchema,
7
17
  VERSION,
@@ -26,28 +36,30 @@ import {
26
36
  getRivetTotalSlots,
27
37
  getRivetkitInspectorDisable,
28
38
  getRivetkitInspectorToken,
39
+ getRivetkitStoragePath,
29
40
  isCborSerializable,
30
41
  isDev,
31
42
  noopNext,
32
43
  promiseWithResolvers,
33
44
  stringifyError
34
- } from "./chunk-FJ3KTN4V.js";
45
+ } from "./chunk-6LIBPELE.js";
35
46
  import {
36
47
  ConnStateNotEnabled,
48
+ EventPayloadInvalid,
37
49
  Forbidden,
38
50
  IncomingMessageTooLong,
39
51
  InternalError,
40
52
  InvalidEncoding,
41
53
  InvalidParams,
54
+ InvalidRequest,
42
55
  InvalidStateType,
43
56
  MalformedMessage,
44
57
  MissingActorHeader,
45
58
  OutgoingMessageTooLong,
46
59
  RestrictedFeature,
47
- Unreachable,
48
60
  Unsupported,
49
61
  WebSocketsNotEnabled
50
- } from "./chunk-LFVF5SCU.js";
62
+ } from "./chunk-7HTNH26M.js";
51
63
 
52
64
  // src/common/actor-router-consts.ts
53
65
  var PATH_CONNECT = "/connect";
@@ -83,10 +95,11 @@ var ALLOWED_PUBLIC_HEADERS = [
83
95
  ];
84
96
 
85
97
  // src/manager/router.ts
98
+ import { serveStatic } from "@hono/node-server/serve-static";
86
99
  import { createRoute } from "@hono/zod-openapi";
87
100
  import * as cbor6 from "cbor-x";
88
101
  import invariant5 from "invariant";
89
- import { z as z10 } from "zod";
102
+ import { z as z10 } from "zod/v4";
90
103
 
91
104
  // src/actor/keys.ts
92
105
  var EMPTY_KEY = "/";
@@ -152,344 +165,6 @@ import * as cbor3 from "cbor-x";
152
165
  // src/actor/router-endpoints.ts
153
166
  import * as cbor2 from "cbor-x";
154
167
 
155
- // src/actor/instance/keys.ts
156
- var KEYS = {
157
- PERSIST_DATA: Uint8Array.from([1]),
158
- CONN_PREFIX: Uint8Array.from([2]),
159
- // Prefix for connection keys
160
- INSPECTOR_TOKEN: Uint8Array.from([3]),
161
- // Inspector token key
162
- KV: Uint8Array.from([4])
163
- // Prefix for user-facing KV storage
164
- };
165
- function makePrefixedKey(key) {
166
- const prefixed = new Uint8Array(KEYS.KV.length + key.length);
167
- prefixed.set(KEYS.KV, 0);
168
- prefixed.set(key, KEYS.KV.length);
169
- return prefixed;
170
- }
171
- function removePrefixFromKey(prefixedKey) {
172
- return prefixedKey.slice(KEYS.KV.length);
173
- }
174
- function makeConnKey(connId) {
175
- const encoder = new TextEncoder();
176
- const connIdBytes = encoder.encode(connId);
177
- const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
178
- key.set(KEYS.CONN_PREFIX, 0);
179
- key.set(connIdBytes, KEYS.CONN_PREFIX.length);
180
- return key;
181
- }
182
-
183
- // src/actor/instance/kv.ts
184
- var textEncoder = new TextEncoder();
185
- var textDecoder = new TextDecoder();
186
- function encodeKey(key, keyType) {
187
- if (key instanceof Uint8Array) {
188
- return key;
189
- }
190
- const resolvedKeyType = keyType ?? "text";
191
- if (resolvedKeyType === "binary") {
192
- throw new TypeError("Expected a Uint8Array when keyType is binary");
193
- }
194
- return textEncoder.encode(key);
195
- }
196
- function decodeKey(key, keyType) {
197
- const resolvedKeyType = keyType ?? "text";
198
- switch (resolvedKeyType) {
199
- case "text":
200
- return textDecoder.decode(key);
201
- case "binary":
202
- return key;
203
- default:
204
- throw new TypeError("Invalid kv key type");
205
- }
206
- }
207
- function resolveValueType(value) {
208
- if (typeof value === "string") {
209
- return "text";
210
- }
211
- if (value instanceof Uint8Array) {
212
- return "binary";
213
- }
214
- if (value instanceof ArrayBuffer) {
215
- return "arrayBuffer";
216
- }
217
- throw new TypeError("Invalid kv value");
218
- }
219
- function encodeValue(value, options) {
220
- const type = (options == null ? void 0 : options.type) ?? resolveValueType(value);
221
- switch (type) {
222
- case "text":
223
- if (typeof value !== "string") {
224
- throw new TypeError("Expected a string when type is text");
225
- }
226
- return textEncoder.encode(value);
227
- case "arrayBuffer":
228
- if (!(value instanceof ArrayBuffer)) {
229
- throw new TypeError("Expected an ArrayBuffer when type is arrayBuffer");
230
- }
231
- return new Uint8Array(value);
232
- case "binary":
233
- if (!(value instanceof Uint8Array)) {
234
- throw new TypeError("Expected a Uint8Array when type is binary");
235
- }
236
- return value;
237
- default:
238
- throw new TypeError("Invalid kv value type");
239
- }
240
- }
241
- function decodeValue(value, options) {
242
- const type = (options == null ? void 0 : options.type) ?? "text";
243
- switch (type) {
244
- case "text":
245
- return textDecoder.decode(value);
246
- case "arrayBuffer": {
247
- const copy = new Uint8Array(value.byteLength);
248
- copy.set(value);
249
- return copy.buffer;
250
- }
251
- case "binary":
252
- return value;
253
- default:
254
- throw new TypeError("Invalid kv value type");
255
- }
256
- }
257
- var ActorKv = class {
258
- #driver;
259
- #actorId;
260
- constructor(driver, actorId) {
261
- this.#driver = driver;
262
- this.#actorId = actorId;
263
- }
264
- /**
265
- * Get a single value by key.
266
- */
267
- async get(key, options) {
268
- const results = await this.#driver.kvBatchGet(this.#actorId, [
269
- makePrefixedKey(encodeKey(key))
270
- ]);
271
- const result = results[0];
272
- if (!result) {
273
- return null;
274
- }
275
- return decodeValue(result, options);
276
- }
277
- /**
278
- * Get multiple values by keys.
279
- */
280
- async getBatch(keys, options) {
281
- const prefixedKeys = keys.map(
282
- (key) => makePrefixedKey(encodeKey(key))
283
- );
284
- const results = await this.#driver.kvBatchGet(
285
- this.#actorId,
286
- prefixedKeys
287
- );
288
- return results.map(
289
- (result) => result ? decodeValue(result, options) : null
290
- );
291
- }
292
- /**
293
- * Put a single key-value pair.
294
- */
295
- async put(key, value, options) {
296
- await this.#driver.kvBatchPut(this.#actorId, [
297
- [makePrefixedKey(encodeKey(key)), encodeValue(value, options)]
298
- ]);
299
- }
300
- /**
301
- * Put multiple key-value pairs.
302
- */
303
- async putBatch(entries, options) {
304
- const prefixedEntries = entries.map(
305
- ([key, value]) => [
306
- makePrefixedKey(encodeKey(key)),
307
- encodeValue(value, options)
308
- ]
309
- );
310
- await this.#driver.kvBatchPut(this.#actorId, prefixedEntries);
311
- }
312
- /**
313
- * Delete a single key.
314
- */
315
- async delete(key) {
316
- await this.#driver.kvBatchDelete(this.#actorId, [
317
- makePrefixedKey(encodeKey(key))
318
- ]);
319
- }
320
- /**
321
- * Delete multiple keys.
322
- */
323
- async deleteBatch(keys) {
324
- const prefixedKeys = keys.map(
325
- (key) => makePrefixedKey(encodeKey(key))
326
- );
327
- await this.#driver.kvBatchDelete(this.#actorId, prefixedKeys);
328
- }
329
- /**
330
- * List all keys with a given prefix.
331
- * Returns key-value pairs where keys have the user prefix removed.
332
- */
333
- async list(prefix, options) {
334
- const prefixedPrefix = makePrefixedKey(
335
- encodeKey(prefix, options == null ? void 0 : options.keyType)
336
- );
337
- const results = await this.#driver.kvListPrefix(
338
- this.#actorId,
339
- prefixedPrefix
340
- );
341
- return results.map(([key, value]) => [
342
- decodeKey(removePrefixFromKey(key), options == null ? void 0 : options.keyType),
343
- decodeValue(value, options)
344
- ]);
345
- }
346
- };
347
-
348
- // src/actor/contexts/base/actor.ts
349
- var ActorContext = class {
350
- #actor;
351
- #kv;
352
- constructor(actor) {
353
- this.#actor = actor;
354
- }
355
- /**
356
- * Gets the KV storage interface.
357
- */
358
- get kv() {
359
- if (!this.#kv) {
360
- this.#kv = new ActorKv(this.#actor.driver, this.#actor.id);
361
- }
362
- return this.#kv;
363
- }
364
- /**
365
- * Get the actor state
366
- *
367
- * @remarks
368
- * This property is not available in `createState` since the state hasn't been created yet.
369
- */
370
- get state() {
371
- return this.#actor.state;
372
- }
373
- /**
374
- * Get the actor variables
375
- *
376
- * @remarks
377
- * This property is not available in `createVars` since the variables haven't been created yet.
378
- * Variables are only available if you define `vars` or `createVars` in your actor config.
379
- */
380
- get vars() {
381
- return this.#actor.vars;
382
- }
383
- /**
384
- * Broadcasts an event to all connected clients.
385
- * @param name - The name of the event.
386
- * @param args - The arguments to send with the event.
387
- */
388
- broadcast(name, ...args) {
389
- this.#actor.eventManager.broadcast(name, ...args);
390
- return;
391
- }
392
- /**
393
- * Gets the logger instance.
394
- */
395
- get log() {
396
- return this.#actor.log;
397
- }
398
- /**
399
- * Gets actor ID.
400
- */
401
- get actorId() {
402
- return this.#actor.id;
403
- }
404
- /**
405
- * Gets the actor name.
406
- */
407
- get name() {
408
- return this.#actor.name;
409
- }
410
- /**
411
- * Gets the actor key.
412
- */
413
- get key() {
414
- return this.#actor.key;
415
- }
416
- /**
417
- * Gets the region.
418
- */
419
- get region() {
420
- return this.#actor.region;
421
- }
422
- /**
423
- * Gets the scheduler.
424
- */
425
- get schedule() {
426
- return this.#actor.schedule;
427
- }
428
- /**
429
- * Gets the map of connections.
430
- */
431
- get conns() {
432
- return this.#actor.conns;
433
- }
434
- /**
435
- * Returns the client for the given registry.
436
- */
437
- client() {
438
- return this.#actor.inlineClient;
439
- }
440
- /**
441
- * Gets the database.
442
- *
443
- * @experimental
444
- * @remarks
445
- * This property is only available if you define a `db` provider in your actor config.
446
- * @throws {DatabaseNotEnabled} If the database is not enabled.
447
- */
448
- get db() {
449
- return this.#actor.db;
450
- }
451
- /**
452
- * Forces the state to get saved.
453
- *
454
- * @param opts - Options for saving the state.
455
- */
456
- async saveState(opts) {
457
- return this.#actor.stateManager.saveState(opts);
458
- }
459
- /**
460
- * Prevents the actor from sleeping until promise is complete.
461
- */
462
- waitUntil(promise) {
463
- this.#actor.waitUntil(promise);
464
- }
465
- /**
466
- * AbortSignal that fires when the actor is stopping.
467
- */
468
- get abortSignal() {
469
- return this.#actor.abortSignal;
470
- }
471
- /**
472
- * Forces the actor to sleep.
473
- *
474
- * Not supported on all drivers.
475
- *
476
- * @experimental
477
- */
478
- sleep() {
479
- this.#actor.startSleep();
480
- }
481
- /**
482
- * Forces the actor to destroy.
483
- *
484
- * This will return immediately, then call `onStop` and `onDestroy`.
485
- *
486
- * @experimental
487
- */
488
- destroy() {
489
- this.#actor.startDestroy();
490
- }
491
- };
492
-
493
168
  // src/actor/contexts/base/conn.ts
494
169
  var ConnContext = class extends ActorContext {
495
170
  /**
@@ -501,6 +176,10 @@ var ConnContext = class extends ActorContext {
501
176
  }
502
177
  };
503
178
 
179
+ // src/actor/contexts/action.ts
180
+ var ActionContext = class extends ConnContext {
181
+ };
182
+
504
183
  // src/actor/contexts/base/conn-init.ts
505
184
  var ConnInitContext = class extends ActorContext {
506
185
  /**
@@ -517,10 +196,6 @@ var ConnInitContext = class extends ActorContext {
517
196
  }
518
197
  };
519
198
 
520
- // src/actor/contexts/action.ts
521
- var ActionContext = class extends ConnContext {
522
- };
523
-
524
199
  // src/actor/contexts/before-connect.ts
525
200
  var BeforeConnectContext = class extends ConnInitContext {
526
201
  };
@@ -566,7 +241,7 @@ var WebSocketContext = class extends ConnContext {
566
241
  };
567
242
 
568
243
  // src/actor/protocol/serde.ts
569
- import { z } from "zod";
244
+ import { z } from "zod/v4";
570
245
 
571
246
  // src/serde.ts
572
247
  import * as cbor from "cbor-x";
@@ -655,58 +330,6 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSche
655
330
  }
656
331
  }
657
332
 
658
- // src/actor/log.ts
659
- function loggerWithoutContext() {
660
- return getLogger("actor-runtime");
661
- }
662
-
663
- // src/actor/utils.ts
664
- function assertUnreachable2(x) {
665
- loggerWithoutContext().error({
666
- msg: "unreachable",
667
- value: `${x}`,
668
- stack: new Error().stack
669
- });
670
- throw new Unreachable(x);
671
- }
672
- var DeadlineError = class extends Error {
673
- constructor() {
674
- super("Promise did not complete before deadline.");
675
- }
676
- };
677
- function deadline(promise, timeout) {
678
- const controller = new AbortController();
679
- const signal = controller.signal;
680
- const timeoutId = setTimeout(() => controller.abort(), timeout);
681
- return Promise.race([
682
- promise,
683
- new Promise((_, reject) => {
684
- signal.addEventListener("abort", () => reject(new DeadlineError()));
685
- })
686
- ]).finally(() => {
687
- clearTimeout(timeoutId);
688
- });
689
- }
690
- function generateSecureToken(length = 32) {
691
- const array = new Uint8Array(length);
692
- crypto.getRandomValues(array);
693
- return btoa(String.fromCharCode(...array)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
694
- }
695
- function isStatePath(path) {
696
- return path === "state" || path.startsWith("state.");
697
- }
698
- function isConnStatePath(path) {
699
- if (!path.startsWith("connections.")) {
700
- return false;
701
- }
702
- const stateIndex = path.indexOf(".state", 12);
703
- if (stateIndex === -1) {
704
- return false;
705
- }
706
- const afterState = stateIndex + 6;
707
- return path.length === afterState || path[afterState] === ".";
708
- }
709
-
710
333
  // src/actor/protocol/serde.ts
711
334
  var EncodingSchema = z.enum(["json", "cbor", "bare"]);
712
335
  var CachedSerializer = class {
@@ -1435,71 +1058,488 @@ function decodeHttpResolveResponse2(bytes) {
1435
1058
  return result;
1436
1059
  }
1437
1060
 
1438
- // src/schemas/client-protocol/versioned.ts
1439
- var CURRENT_VERSION = 2;
1440
- var v1ToV2 = (v1Data) => {
1441
- if (v1Data.body.tag === "Init") {
1442
- const { actorId, connectionId } = v1Data.body.val;
1443
- return {
1444
- body: {
1445
- tag: "Init",
1446
- val: {
1447
- actorId,
1448
- connectionId
1449
- }
1450
- }
1451
- };
1061
+ // dist/schemas/client-protocol/v3.ts
1062
+ import * as bare3 from "@rivetkit/bare-ts";
1063
+ var config3 = /* @__PURE__ */ bare3.Config({});
1064
+ function readInit3(bc) {
1065
+ return {
1066
+ actorId: bare3.readString(bc),
1067
+ connectionId: bare3.readString(bc)
1068
+ };
1069
+ }
1070
+ function writeInit3(bc, x) {
1071
+ bare3.writeString(bc, x.actorId);
1072
+ bare3.writeString(bc, x.connectionId);
1073
+ }
1074
+ function read03(bc) {
1075
+ return bare3.readBool(bc) ? bare3.readData(bc) : null;
1076
+ }
1077
+ function write03(bc, x) {
1078
+ bare3.writeBool(bc, x !== null);
1079
+ if (x !== null) {
1080
+ bare3.writeData(bc, x);
1452
1081
  }
1453
- return v1Data;
1454
- };
1455
- var v2ToV1 = (v2Data) => {
1456
- if (v2Data.body.tag === "Init") {
1457
- const { actorId, connectionId } = v2Data.body.val;
1458
- return {
1459
- body: {
1460
- tag: "Init",
1461
- val: {
1462
- actorId,
1463
- connectionId,
1464
- connectionToken: ""
1465
- // Add empty connectionToken for v1 compatibility
1466
- }
1467
- }
1468
- };
1082
+ }
1083
+ function read13(bc) {
1084
+ return bare3.readBool(bc) ? bare3.readUint(bc) : null;
1085
+ }
1086
+ function write13(bc, x) {
1087
+ bare3.writeBool(bc, x !== null);
1088
+ if (x !== null) {
1089
+ bare3.writeUint(bc, x);
1469
1090
  }
1470
- return v2Data;
1471
- };
1472
- var TO_SERVER_VERSIONED2 = createVersionedDataHandler({
1473
- deserializeVersion: (bytes, version) => {
1474
- switch (version) {
1475
- case 1:
1476
- return decodeToServer(bytes);
1477
- case 2:
1478
- return decodeToServer2(bytes);
1479
- default:
1480
- throw new Error(`Unknown version ${version}`);
1091
+ }
1092
+ function readError3(bc) {
1093
+ return {
1094
+ group: bare3.readString(bc),
1095
+ code: bare3.readString(bc),
1096
+ message: bare3.readString(bc),
1097
+ metadata: read03(bc),
1098
+ actionId: read13(bc)
1099
+ };
1100
+ }
1101
+ function writeError3(bc, x) {
1102
+ bare3.writeString(bc, x.group);
1103
+ bare3.writeString(bc, x.code);
1104
+ bare3.writeString(bc, x.message);
1105
+ write03(bc, x.metadata);
1106
+ write13(bc, x.actionId);
1107
+ }
1108
+ function readActionResponse3(bc) {
1109
+ return {
1110
+ id: bare3.readUint(bc),
1111
+ output: bare3.readData(bc)
1112
+ };
1113
+ }
1114
+ function writeActionResponse3(bc, x) {
1115
+ bare3.writeUint(bc, x.id);
1116
+ bare3.writeData(bc, x.output);
1117
+ }
1118
+ function readEvent3(bc) {
1119
+ return {
1120
+ name: bare3.readString(bc),
1121
+ args: bare3.readData(bc)
1122
+ };
1123
+ }
1124
+ function writeEvent3(bc, x) {
1125
+ bare3.writeString(bc, x.name);
1126
+ bare3.writeData(bc, x.args);
1127
+ }
1128
+ function readToClientBody3(bc) {
1129
+ const offset = bc.offset;
1130
+ const tag = bare3.readU8(bc);
1131
+ switch (tag) {
1132
+ case 0:
1133
+ return { tag: "Init", val: readInit3(bc) };
1134
+ case 1:
1135
+ return { tag: "Error", val: readError3(bc) };
1136
+ case 2:
1137
+ return { tag: "ActionResponse", val: readActionResponse3(bc) };
1138
+ case 3:
1139
+ return { tag: "Event", val: readEvent3(bc) };
1140
+ default: {
1141
+ bc.offset = offset;
1142
+ throw new bare3.BareError(offset, "invalid tag");
1481
1143
  }
1482
- },
1483
- serializeVersion: (data, version) => {
1484
- switch (version) {
1485
- case 1:
1486
- return encodeToServer(data);
1487
- case 2:
1488
- return encodeToServer2(data);
1489
- default:
1490
- throw new Error(`Unknown version ${version}`);
1144
+ }
1145
+ }
1146
+ function writeToClientBody3(bc, x) {
1147
+ switch (x.tag) {
1148
+ case "Init": {
1149
+ bare3.writeU8(bc, 0);
1150
+ writeInit3(bc, x.val);
1151
+ break;
1491
1152
  }
1492
- },
1493
- deserializeConverters: () => [v1ToV2],
1494
- serializeConverters: () => [v2ToV1]
1495
- });
1496
- var TO_CLIENT_VERSIONED2 = createVersionedDataHandler({
1497
- deserializeVersion: (bytes, version) => {
1498
- switch (version) {
1499
- case 1:
1500
- return decodeToClient(bytes);
1501
- case 2:
1502
- return decodeToClient2(bytes);
1153
+ case "Error": {
1154
+ bare3.writeU8(bc, 1);
1155
+ writeError3(bc, x.val);
1156
+ break;
1157
+ }
1158
+ case "ActionResponse": {
1159
+ bare3.writeU8(bc, 2);
1160
+ writeActionResponse3(bc, x.val);
1161
+ break;
1162
+ }
1163
+ case "Event": {
1164
+ bare3.writeU8(bc, 3);
1165
+ writeEvent3(bc, x.val);
1166
+ break;
1167
+ }
1168
+ }
1169
+ }
1170
+ function readToClient3(bc) {
1171
+ return {
1172
+ body: readToClientBody3(bc)
1173
+ };
1174
+ }
1175
+ function writeToClient3(bc, x) {
1176
+ writeToClientBody3(bc, x.body);
1177
+ }
1178
+ function encodeToClient3(x) {
1179
+ const bc = new bare3.ByteCursor(
1180
+ new Uint8Array(config3.initialBufferLength),
1181
+ config3
1182
+ );
1183
+ writeToClient3(bc, x);
1184
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1185
+ }
1186
+ function decodeToClient3(bytes) {
1187
+ const bc = new bare3.ByteCursor(bytes, config3);
1188
+ const result = readToClient3(bc);
1189
+ if (bc.offset < bc.view.byteLength) {
1190
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1191
+ }
1192
+ return result;
1193
+ }
1194
+ function readActionRequest3(bc) {
1195
+ return {
1196
+ id: bare3.readUint(bc),
1197
+ name: bare3.readString(bc),
1198
+ args: bare3.readData(bc)
1199
+ };
1200
+ }
1201
+ function writeActionRequest3(bc, x) {
1202
+ bare3.writeUint(bc, x.id);
1203
+ bare3.writeString(bc, x.name);
1204
+ bare3.writeData(bc, x.args);
1205
+ }
1206
+ function readSubscriptionRequest3(bc) {
1207
+ return {
1208
+ eventName: bare3.readString(bc),
1209
+ subscribe: bare3.readBool(bc)
1210
+ };
1211
+ }
1212
+ function writeSubscriptionRequest3(bc, x) {
1213
+ bare3.writeString(bc, x.eventName);
1214
+ bare3.writeBool(bc, x.subscribe);
1215
+ }
1216
+ function readToServerBody3(bc) {
1217
+ const offset = bc.offset;
1218
+ const tag = bare3.readU8(bc);
1219
+ switch (tag) {
1220
+ case 0:
1221
+ return { tag: "ActionRequest", val: readActionRequest3(bc) };
1222
+ case 1:
1223
+ return { tag: "SubscriptionRequest", val: readSubscriptionRequest3(bc) };
1224
+ default: {
1225
+ bc.offset = offset;
1226
+ throw new bare3.BareError(offset, "invalid tag");
1227
+ }
1228
+ }
1229
+ }
1230
+ function writeToServerBody3(bc, x) {
1231
+ switch (x.tag) {
1232
+ case "ActionRequest": {
1233
+ bare3.writeU8(bc, 0);
1234
+ writeActionRequest3(bc, x.val);
1235
+ break;
1236
+ }
1237
+ case "SubscriptionRequest": {
1238
+ bare3.writeU8(bc, 1);
1239
+ writeSubscriptionRequest3(bc, x.val);
1240
+ break;
1241
+ }
1242
+ }
1243
+ }
1244
+ function readToServer3(bc) {
1245
+ return {
1246
+ body: readToServerBody3(bc)
1247
+ };
1248
+ }
1249
+ function writeToServer3(bc, x) {
1250
+ writeToServerBody3(bc, x.body);
1251
+ }
1252
+ function encodeToServer3(x) {
1253
+ const bc = new bare3.ByteCursor(
1254
+ new Uint8Array(config3.initialBufferLength),
1255
+ config3
1256
+ );
1257
+ writeToServer3(bc, x);
1258
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1259
+ }
1260
+ function decodeToServer3(bytes) {
1261
+ const bc = new bare3.ByteCursor(bytes, config3);
1262
+ const result = readToServer3(bc);
1263
+ if (bc.offset < bc.view.byteLength) {
1264
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1265
+ }
1266
+ return result;
1267
+ }
1268
+ function readHttpActionRequest3(bc) {
1269
+ return {
1270
+ args: bare3.readData(bc)
1271
+ };
1272
+ }
1273
+ function writeHttpActionRequest3(bc, x) {
1274
+ bare3.writeData(bc, x.args);
1275
+ }
1276
+ function encodeHttpActionRequest3(x) {
1277
+ const bc = new bare3.ByteCursor(
1278
+ new Uint8Array(config3.initialBufferLength),
1279
+ config3
1280
+ );
1281
+ writeHttpActionRequest3(bc, x);
1282
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1283
+ }
1284
+ function decodeHttpActionRequest3(bytes) {
1285
+ const bc = new bare3.ByteCursor(bytes, config3);
1286
+ const result = readHttpActionRequest3(bc);
1287
+ if (bc.offset < bc.view.byteLength) {
1288
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1289
+ }
1290
+ return result;
1291
+ }
1292
+ function readHttpActionResponse3(bc) {
1293
+ return {
1294
+ output: bare3.readData(bc)
1295
+ };
1296
+ }
1297
+ function writeHttpActionResponse3(bc, x) {
1298
+ bare3.writeData(bc, x.output);
1299
+ }
1300
+ function encodeHttpActionResponse3(x) {
1301
+ const bc = new bare3.ByteCursor(
1302
+ new Uint8Array(config3.initialBufferLength),
1303
+ config3
1304
+ );
1305
+ writeHttpActionResponse3(bc, x);
1306
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1307
+ }
1308
+ function decodeHttpActionResponse3(bytes) {
1309
+ const bc = new bare3.ByteCursor(bytes, config3);
1310
+ const result = readHttpActionResponse3(bc);
1311
+ if (bc.offset < bc.view.byteLength) {
1312
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1313
+ }
1314
+ return result;
1315
+ }
1316
+ function read2(bc) {
1317
+ return bare3.readBool(bc) ? bare3.readString(bc) : null;
1318
+ }
1319
+ function write2(bc, x) {
1320
+ bare3.writeBool(bc, x !== null);
1321
+ if (x !== null) {
1322
+ bare3.writeString(bc, x);
1323
+ }
1324
+ }
1325
+ function read3(bc) {
1326
+ return bare3.readBool(bc) ? bare3.readBool(bc) : null;
1327
+ }
1328
+ function write3(bc, x) {
1329
+ bare3.writeBool(bc, x !== null);
1330
+ if (x !== null) {
1331
+ bare3.writeBool(bc, x);
1332
+ }
1333
+ }
1334
+ function read4(bc) {
1335
+ return bare3.readBool(bc) ? bare3.readU64(bc) : null;
1336
+ }
1337
+ function write4(bc, x) {
1338
+ bare3.writeBool(bc, x !== null);
1339
+ if (x !== null) {
1340
+ bare3.writeU64(bc, x);
1341
+ }
1342
+ }
1343
+ function readHttpQueueSendRequest(bc) {
1344
+ return {
1345
+ body: bare3.readData(bc),
1346
+ name: read2(bc),
1347
+ wait: read3(bc),
1348
+ timeout: read4(bc)
1349
+ };
1350
+ }
1351
+ function writeHttpQueueSendRequest(bc, x) {
1352
+ bare3.writeData(bc, x.body);
1353
+ write2(bc, x.name);
1354
+ write3(bc, x.wait);
1355
+ write4(bc, x.timeout);
1356
+ }
1357
+ function encodeHttpQueueSendRequest(x) {
1358
+ const bc = new bare3.ByteCursor(
1359
+ new Uint8Array(config3.initialBufferLength),
1360
+ config3
1361
+ );
1362
+ writeHttpQueueSendRequest(bc, x);
1363
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1364
+ }
1365
+ function decodeHttpQueueSendRequest(bytes) {
1366
+ const bc = new bare3.ByteCursor(bytes, config3);
1367
+ const result = readHttpQueueSendRequest(bc);
1368
+ if (bc.offset < bc.view.byteLength) {
1369
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1370
+ }
1371
+ return result;
1372
+ }
1373
+ function readHttpQueueSendResponse(bc) {
1374
+ return {
1375
+ status: bare3.readString(bc),
1376
+ response: read03(bc)
1377
+ };
1378
+ }
1379
+ function writeHttpQueueSendResponse(bc, x) {
1380
+ bare3.writeString(bc, x.status);
1381
+ write03(bc, x.response);
1382
+ }
1383
+ function encodeHttpQueueSendResponse(x) {
1384
+ const bc = new bare3.ByteCursor(
1385
+ new Uint8Array(config3.initialBufferLength),
1386
+ config3
1387
+ );
1388
+ writeHttpQueueSendResponse(bc, x);
1389
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1390
+ }
1391
+ function decodeHttpQueueSendResponse(bytes) {
1392
+ const bc = new bare3.ByteCursor(bytes, config3);
1393
+ const result = readHttpQueueSendResponse(bc);
1394
+ if (bc.offset < bc.view.byteLength) {
1395
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1396
+ }
1397
+ return result;
1398
+ }
1399
+ function readHttpResponseError3(bc) {
1400
+ return {
1401
+ group: bare3.readString(bc),
1402
+ code: bare3.readString(bc),
1403
+ message: bare3.readString(bc),
1404
+ metadata: read03(bc)
1405
+ };
1406
+ }
1407
+ function writeHttpResponseError3(bc, x) {
1408
+ bare3.writeString(bc, x.group);
1409
+ bare3.writeString(bc, x.code);
1410
+ bare3.writeString(bc, x.message);
1411
+ write03(bc, x.metadata);
1412
+ }
1413
+ function encodeHttpResponseError3(x) {
1414
+ const bc = new bare3.ByteCursor(
1415
+ new Uint8Array(config3.initialBufferLength),
1416
+ config3
1417
+ );
1418
+ writeHttpResponseError3(bc, x);
1419
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1420
+ }
1421
+ function decodeHttpResponseError3(bytes) {
1422
+ const bc = new bare3.ByteCursor(bytes, config3);
1423
+ const result = readHttpResponseError3(bc);
1424
+ if (bc.offset < bc.view.byteLength) {
1425
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1426
+ }
1427
+ return result;
1428
+ }
1429
+ function readHttpResolveResponse3(bc) {
1430
+ return {
1431
+ actorId: bare3.readString(bc)
1432
+ };
1433
+ }
1434
+ function writeHttpResolveResponse3(bc, x) {
1435
+ bare3.writeString(bc, x.actorId);
1436
+ }
1437
+ function encodeHttpResolveResponse3(x) {
1438
+ const bc = new bare3.ByteCursor(
1439
+ new Uint8Array(config3.initialBufferLength),
1440
+ config3
1441
+ );
1442
+ writeHttpResolveResponse3(bc, x);
1443
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
1444
+ }
1445
+ function decodeHttpResolveResponse3(bytes) {
1446
+ const bc = new bare3.ByteCursor(bytes, config3);
1447
+ const result = readHttpResolveResponse3(bc);
1448
+ if (bc.offset < bc.view.byteLength) {
1449
+ throw new bare3.BareError(bc.offset, "remaining bytes");
1450
+ }
1451
+ return result;
1452
+ }
1453
+
1454
+ // src/schemas/client-protocol/versioned.ts
1455
+ var CURRENT_VERSION2 = 3;
1456
+ var v1ToV2 = (v1Data) => {
1457
+ if (v1Data.body.tag === "Init") {
1458
+ const { actorId, connectionId } = v1Data.body.val;
1459
+ return {
1460
+ body: {
1461
+ tag: "Init",
1462
+ val: {
1463
+ actorId,
1464
+ connectionId
1465
+ }
1466
+ }
1467
+ };
1468
+ }
1469
+ return v1Data;
1470
+ };
1471
+ var v2ToV1 = (v2Data) => {
1472
+ if (v2Data.body.tag === "Init") {
1473
+ const { actorId, connectionId } = v2Data.body.val;
1474
+ return {
1475
+ body: {
1476
+ tag: "Init",
1477
+ val: {
1478
+ actorId,
1479
+ connectionId,
1480
+ connectionToken: ""
1481
+ // Add empty connectionToken for v1 compatibility
1482
+ }
1483
+ }
1484
+ };
1485
+ }
1486
+ return v2Data;
1487
+ };
1488
+ var v2ToV3 = (v2Data) => {
1489
+ return v2Data;
1490
+ };
1491
+ var v3ToV2 = (v3Data) => {
1492
+ return v3Data;
1493
+ };
1494
+ var v1ToServerV2 = (v1Data) => {
1495
+ return v1Data;
1496
+ };
1497
+ var v2ToServerV3 = (v2Data) => {
1498
+ return v2Data;
1499
+ };
1500
+ var v3ToServerV2 = (v3Data) => {
1501
+ return v3Data;
1502
+ };
1503
+ var v2ToServerV1 = (v2Data) => {
1504
+ return v2Data;
1505
+ };
1506
+ var TO_SERVER_VERSIONED2 = createVersionedDataHandler({
1507
+ deserializeVersion: (bytes, version) => {
1508
+ switch (version) {
1509
+ case 1:
1510
+ return decodeToServer(bytes);
1511
+ case 2:
1512
+ return decodeToServer2(bytes);
1513
+ case 3:
1514
+ return decodeToServer3(bytes);
1515
+ default:
1516
+ throw new Error(`Unknown version ${version}`);
1517
+ }
1518
+ },
1519
+ serializeVersion: (data, version) => {
1520
+ switch (version) {
1521
+ case 1:
1522
+ return encodeToServer(data);
1523
+ case 2:
1524
+ return encodeToServer2(data);
1525
+ case 3:
1526
+ return encodeToServer3(data);
1527
+ default:
1528
+ throw new Error(`Unknown version ${version}`);
1529
+ }
1530
+ },
1531
+ deserializeConverters: () => [v1ToServerV2, v2ToServerV3],
1532
+ serializeConverters: () => [v3ToServerV2, v2ToServerV1]
1533
+ });
1534
+ var TO_CLIENT_VERSIONED2 = createVersionedDataHandler({
1535
+ deserializeVersion: (bytes, version) => {
1536
+ switch (version) {
1537
+ case 1:
1538
+ return decodeToClient(bytes);
1539
+ case 2:
1540
+ return decodeToClient2(bytes);
1541
+ case 3:
1542
+ return decodeToClient3(bytes);
1503
1543
  default:
1504
1544
  throw new Error(`Unknown version ${version}`);
1505
1545
  }
@@ -1510,12 +1550,14 @@ var TO_CLIENT_VERSIONED2 = createVersionedDataHandler({
1510
1550
  return encodeToClient(data);
1511
1551
  case 2:
1512
1552
  return encodeToClient2(data);
1553
+ case 3:
1554
+ return encodeToClient3(data);
1513
1555
  default:
1514
1556
  throw new Error(`Unknown version ${version}`);
1515
1557
  }
1516
1558
  },
1517
- deserializeConverters: () => [v1ToV2],
1518
- serializeConverters: () => [v2ToV1]
1559
+ deserializeConverters: () => [v1ToV2, v2ToV3],
1560
+ serializeConverters: () => [v3ToV2, v2ToV1]
1519
1561
  });
1520
1562
  var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
1521
1563
  deserializeVersion: (bytes, version) => {
@@ -1524,6 +1566,8 @@ var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
1524
1566
  return decodeHttpActionRequest(bytes);
1525
1567
  case 2:
1526
1568
  return decodeHttpActionRequest2(bytes);
1569
+ case 3:
1570
+ return decodeHttpActionRequest3(bytes);
1527
1571
  default:
1528
1572
  throw new Error(`Unknown version ${version}`);
1529
1573
  }
@@ -1538,6 +1582,10 @@ var HTTP_ACTION_REQUEST_VERSIONED = createVersionedDataHandler({
1538
1582
  return encodeHttpActionRequest2(
1539
1583
  data
1540
1584
  );
1585
+ case 3:
1586
+ return encodeHttpActionRequest3(
1587
+ data
1588
+ );
1541
1589
  default:
1542
1590
  throw new Error(`Unknown version ${version}`);
1543
1591
  }
@@ -1552,6 +1600,8 @@ var HTTP_ACTION_RESPONSE_VERSIONED = createVersionedDataHandler({
1552
1600
  return decodeHttpActionResponse(bytes);
1553
1601
  case 2:
1554
1602
  return decodeHttpActionResponse2(bytes);
1603
+ case 3:
1604
+ return decodeHttpActionResponse3(bytes);
1555
1605
  default:
1556
1606
  throw new Error(`Unknown version ${version}`);
1557
1607
  }
@@ -1566,6 +1616,10 @@ var HTTP_ACTION_RESPONSE_VERSIONED = createVersionedDataHandler({
1566
1616
  return encodeHttpActionResponse2(
1567
1617
  data
1568
1618
  );
1619
+ case 3:
1620
+ return encodeHttpActionResponse3(
1621
+ data
1622
+ );
1569
1623
  default:
1570
1624
  throw new Error(`Unknown version ${version}`);
1571
1625
  }
@@ -1573,6 +1627,58 @@ var HTTP_ACTION_RESPONSE_VERSIONED = createVersionedDataHandler({
1573
1627
  deserializeConverters: () => [],
1574
1628
  serializeConverters: () => []
1575
1629
  });
1630
+ var HTTP_QUEUE_SEND_REQUEST_VERSIONED = createVersionedDataHandler({
1631
+ deserializeVersion: (bytes, version) => {
1632
+ switch (version) {
1633
+ case 3:
1634
+ return decodeHttpQueueSendRequest(bytes);
1635
+ default:
1636
+ throw new Error(
1637
+ `HttpQueueSendRequest only exists in version 3+, got version ${version}`
1638
+ );
1639
+ }
1640
+ },
1641
+ serializeVersion: (data, version) => {
1642
+ switch (version) {
1643
+ case 3:
1644
+ return encodeHttpQueueSendRequest(
1645
+ data
1646
+ );
1647
+ default:
1648
+ throw new Error(
1649
+ `HttpQueueSendRequest only exists in version 3+, got version ${version}`
1650
+ );
1651
+ }
1652
+ },
1653
+ deserializeConverters: () => [],
1654
+ serializeConverters: () => []
1655
+ });
1656
+ var HTTP_QUEUE_SEND_RESPONSE_VERSIONED = createVersionedDataHandler({
1657
+ deserializeVersion: (bytes, version) => {
1658
+ switch (version) {
1659
+ case 3:
1660
+ return decodeHttpQueueSendResponse(bytes);
1661
+ default:
1662
+ throw new Error(
1663
+ `HttpQueueSendResponse only exists in version 3+, got version ${version}`
1664
+ );
1665
+ }
1666
+ },
1667
+ serializeVersion: (data, version) => {
1668
+ switch (version) {
1669
+ case 3:
1670
+ return encodeHttpQueueSendResponse(
1671
+ data
1672
+ );
1673
+ default:
1674
+ throw new Error(
1675
+ `HttpQueueSendResponse only exists in version 3+, got version ${version}`
1676
+ );
1677
+ }
1678
+ },
1679
+ deserializeConverters: () => [],
1680
+ serializeConverters: () => []
1681
+ });
1576
1682
  var HTTP_RESPONSE_ERROR_VERSIONED = createVersionedDataHandler({
1577
1683
  deserializeVersion: (bytes, version) => {
1578
1684
  switch (version) {
@@ -1580,6 +1686,8 @@ var HTTP_RESPONSE_ERROR_VERSIONED = createVersionedDataHandler({
1580
1686
  return decodeHttpResponseError(bytes);
1581
1687
  case 2:
1582
1688
  return decodeHttpResponseError2(bytes);
1689
+ case 3:
1690
+ return decodeHttpResponseError3(bytes);
1583
1691
  default:
1584
1692
  throw new Error(`Unknown version ${version}`);
1585
1693
  }
@@ -1594,6 +1702,10 @@ var HTTP_RESPONSE_ERROR_VERSIONED = createVersionedDataHandler({
1594
1702
  return encodeHttpResponseError2(
1595
1703
  data
1596
1704
  );
1705
+ case 3:
1706
+ return encodeHttpResponseError3(
1707
+ data
1708
+ );
1597
1709
  default:
1598
1710
  throw new Error(`Unknown version ${version}`);
1599
1711
  }
@@ -1608,6 +1720,8 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
1608
1720
  return decodeHttpResolveResponse(bytes);
1609
1721
  case 2:
1610
1722
  return decodeHttpResolveResponse2(bytes);
1723
+ case 3:
1724
+ return decodeHttpResolveResponse3(bytes);
1611
1725
  default:
1612
1726
  throw new Error(`Unknown version ${version}`);
1613
1727
  }
@@ -1622,6 +1736,10 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
1622
1736
  return encodeHttpResolveResponse2(
1623
1737
  data
1624
1738
  );
1739
+ case 3:
1740
+ return encodeHttpResolveResponse3(
1741
+ data
1742
+ );
1625
1743
  default:
1626
1744
  throw new Error(`Unknown version ${version}`);
1627
1745
  }
@@ -1631,7 +1749,7 @@ var HTTP_RESOLVE_RESPONSE_VERSIONED = createVersionedDataHandler({
1631
1749
  });
1632
1750
 
1633
1751
  // src/schemas/client-protocol-zod/mod.ts
1634
- import { z as z2 } from "zod";
1752
+ import { z as z2 } from "zod/v4";
1635
1753
  var UintSchema = z2.bigint();
1636
1754
  var OptionalUintSchema = UintSchema.nullable();
1637
1755
  var InitSchema = z2.object({
@@ -1687,6 +1805,16 @@ var HttpActionRequestSchema = z2.object({
1687
1805
  var HttpActionResponseSchema = z2.object({
1688
1806
  output: z2.unknown()
1689
1807
  });
1808
+ var HttpQueueSendRequestSchema = z2.object({
1809
+ body: z2.unknown(),
1810
+ name: z2.string().optional(),
1811
+ wait: z2.boolean().optional(),
1812
+ timeout: z2.number().optional()
1813
+ });
1814
+ var HttpQueueSendResponseSchema = z2.object({
1815
+ status: z2.enum(["completed", "timedOut"]),
1816
+ response: z2.unknown().optional()
1817
+ });
1690
1818
  var HttpResponseErrorSchema = z2.object({
1691
1819
  group: z2.string(),
1692
1820
  code: z2.string(),
@@ -1723,11 +1851,11 @@ function createRawRequestDriver() {
1723
1851
  }
1724
1852
 
1725
1853
  // src/actor/router-endpoints.ts
1726
- async function handleAction(c, config6, actorDriver, actionName, actorId) {
1854
+ async function handleAction(c, config8, actorDriver, actionName, actorId) {
1727
1855
  const encoding = getRequestEncoding(c.req);
1728
1856
  const parameters = getRequestConnParams(c.req);
1729
1857
  const arrayBuffer = await c.req.arrayBuffer();
1730
- if (arrayBuffer.byteLength > config6.maxIncomingMessageSize) {
1858
+ if (arrayBuffer.byteLength > config8.maxIncomingMessageSize) {
1731
1859
  throw new IncomingMessageTooLong();
1732
1860
  }
1733
1861
  const request = deserializeWithEncoding(
@@ -1738,47 +1866,157 @@ async function handleAction(c, config6, actorDriver, actionName, actorId) {
1738
1866
  // JSON: args is already the decoded value (raw object/array)
1739
1867
  (json) => json.args,
1740
1868
  // BARE/CBOR: args is ArrayBuffer that needs CBOR-decoding
1741
- (bare6) => cbor2.decode(new Uint8Array(bare6.args))
1869
+ (bare8) => cbor2.decode(new Uint8Array(bare8.args))
1742
1870
  );
1743
1871
  const actionArgs = request;
1744
- let actor;
1745
- let conn;
1746
1872
  let output;
1747
- try {
1748
- actor = await actorDriver.loadActor(actorId);
1749
- actor.rLog.debug({ msg: "handling action", actionName, encoding });
1750
- conn = await actor.connectionManager.prepareAndConnectConn(
1751
- createHttpDriver(),
1752
- parameters,
1753
- c.req.raw,
1754
- c.req.path,
1755
- c.req.header()
1756
- );
1757
- const ctx = new ActionContext(actor, conn);
1758
- output = await actor.executeAction(ctx, actionName, actionArgs);
1759
- } finally {
1760
- if (conn) {
1761
- conn.disconnect();
1873
+ let outputReady = false;
1874
+ const maxAttempts = 3;
1875
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
1876
+ let actor;
1877
+ let conn;
1878
+ try {
1879
+ actor = await actorDriver.loadActor(actorId);
1880
+ actor.rLog.debug({ msg: "handling action", actionName, encoding });
1881
+ conn = await actor.connectionManager.prepareAndConnectConn(
1882
+ createHttpDriver(),
1883
+ parameters,
1884
+ c.req.raw,
1885
+ c.req.path,
1886
+ c.req.header()
1887
+ );
1888
+ const ctx = new ActionContext(actor, conn);
1889
+ output = await actor.executeAction(ctx, actionName, actionArgs);
1890
+ outputReady = true;
1891
+ break;
1892
+ } catch (error) {
1893
+ const shouldRetry = error instanceof InternalError && error.message === "Actor is stopping" && attempt < maxAttempts - 1;
1894
+ if (shouldRetry) {
1895
+ await new Promise((resolve) => setTimeout(resolve, 25));
1896
+ continue;
1897
+ }
1898
+ throw error;
1899
+ } finally {
1900
+ if (conn) {
1901
+ conn.disconnect();
1902
+ }
1762
1903
  }
1763
1904
  }
1905
+ if (!outputReady) {
1906
+ throw new InternalError("Action did not complete");
1907
+ }
1764
1908
  const serialized = serializeWithEncoding(
1765
1909
  encoding,
1766
1910
  output,
1767
1911
  HTTP_ACTION_RESPONSE_VERSIONED,
1768
- CURRENT_VERSION,
1912
+ CURRENT_VERSION2,
1769
1913
  HttpActionResponseSchema,
1770
1914
  // JSON: output is the raw value (will be serialized by jsonStringifyCompat)
1771
1915
  (value) => ({ output: value }),
1772
1916
  // BARE/CBOR: output needs to be CBOR-encoded to ArrayBuffer
1773
1917
  (value) => ({
1774
- output: bufferToArrayBuffer(cbor2.encode(value))
1918
+ output: bufferToArrayBuffer(cbor2.encode(value))
1919
+ })
1920
+ );
1921
+ const messageSize = serialized instanceof Uint8Array ? serialized.byteLength : serialized.length;
1922
+ if (messageSize > config8.maxOutgoingMessageSize) {
1923
+ throw new OutgoingMessageTooLong();
1924
+ }
1925
+ return c.body(serialized, 200, {
1926
+ "Content-Type": contentTypeForEncoding(encoding)
1927
+ });
1928
+ }
1929
+ async function handleQueueSend(c, config8, actorDriver, actorId, queueName) {
1930
+ const encoding = getRequestEncoding(c.req);
1931
+ const params = getRequestConnParams(c.req);
1932
+ const arrayBuffer = await c.req.arrayBuffer();
1933
+ if (arrayBuffer.byteLength > config8.maxIncomingMessageSize) {
1934
+ throw new IncomingMessageTooLong();
1935
+ }
1936
+ const request = deserializeWithEncoding(
1937
+ encoding,
1938
+ new Uint8Array(arrayBuffer),
1939
+ HTTP_QUEUE_SEND_REQUEST_VERSIONED,
1940
+ HttpQueueSendRequestSchema,
1941
+ (json) => json,
1942
+ (bare8) => ({
1943
+ name: bare8.name ?? void 0,
1944
+ body: cbor2.decode(new Uint8Array(bare8.body)),
1945
+ wait: bare8.wait ?? void 0,
1946
+ timeout: bare8.timeout !== null && bare8.timeout !== void 0 ? Number(bare8.timeout) : void 0
1947
+ })
1948
+ );
1949
+ const name = queueName ?? request.name;
1950
+ if (!name) {
1951
+ throw new InvalidRequest("missing queue name");
1952
+ }
1953
+ const actor = await actorDriver.loadActor(actorId);
1954
+ if (!hasSchemaConfigKey(actor.config.queues, name)) {
1955
+ actor.rLog.warn({
1956
+ msg: "ignoring incoming queue message for undefined queue",
1957
+ queueName: name,
1958
+ hasQueueConfig: actor.config.queues !== void 0
1959
+ });
1960
+ const ignoredResponse = serializeWithEncoding(
1961
+ encoding,
1962
+ { status: "completed", response: void 0 },
1963
+ HTTP_QUEUE_SEND_RESPONSE_VERSIONED,
1964
+ CURRENT_VERSION2,
1965
+ HttpQueueSendResponseSchema,
1966
+ (value) => ({
1967
+ status: value.status,
1968
+ response: value.response
1969
+ }),
1970
+ (value) => ({
1971
+ status: value.status,
1972
+ response: value.response !== void 0 ? bufferToArrayBuffer(cbor2.encode(value.response)) : null
1973
+ })
1974
+ );
1975
+ return c.body(ignoredResponse, 200, {
1976
+ "Content-Type": contentTypeForEncoding(encoding)
1977
+ });
1978
+ }
1979
+ const conn = await actor.connectionManager.prepareAndConnectConn(
1980
+ createHttpDriver(),
1981
+ params,
1982
+ c.req.raw,
1983
+ c.req.path,
1984
+ c.req.header()
1985
+ );
1986
+ let result = {
1987
+ status: "completed"
1988
+ };
1989
+ try {
1990
+ const ctx = new ActionContext(actor, conn);
1991
+ await actor.assertCanPublish(ctx, name);
1992
+ if (request.wait) {
1993
+ result = await actor.queueManager.enqueueAndWait(
1994
+ name,
1995
+ request.body,
1996
+ request.timeout
1997
+ );
1998
+ } else {
1999
+ await actor.queueManager.enqueue(name, request.body);
2000
+ }
2001
+ } finally {
2002
+ conn.disconnect();
2003
+ }
2004
+ const response = serializeWithEncoding(
2005
+ encoding,
2006
+ result,
2007
+ HTTP_QUEUE_SEND_RESPONSE_VERSIONED,
2008
+ CURRENT_VERSION2,
2009
+ HttpQueueSendResponseSchema,
2010
+ (value) => ({
2011
+ status: value.status,
2012
+ response: value.response
2013
+ }),
2014
+ (value) => ({
2015
+ status: value.status,
2016
+ response: value.response !== void 0 ? bufferToArrayBuffer(cbor2.encode(value.response)) : null
1775
2017
  })
1776
2018
  );
1777
- const messageSize = serialized instanceof Uint8Array ? serialized.byteLength : serialized.length;
1778
- if (messageSize > config6.maxOutgoingMessageSize) {
1779
- throw new OutgoingMessageTooLong();
1780
- }
1781
- return c.body(serialized, 200, {
2019
+ return c.body(response, 200, {
1782
2020
  "Content-Type": contentTypeForEncoding(encoding)
1783
2021
  });
1784
2022
  }
@@ -1838,7 +2076,7 @@ var ENGINE_PORT = 6420;
1838
2076
  var ENGINE_ENDPOINT = `http://127.0.0.1:${ENGINE_PORT}`;
1839
2077
 
1840
2078
  // src/inspector/config.ts
1841
- import { z as z3 } from "zod";
2079
+ import { z as z3 } from "zod/v4";
1842
2080
  var defaultTokenFn = () => {
1843
2081
  const envToken = getRivetkitInspectorToken();
1844
2082
  if (envToken) {
@@ -1931,7 +2169,7 @@ function tryParseEndpoint(ctx, options) {
1931
2169
  }
1932
2170
 
1933
2171
  // src/registry/config/driver.ts
1934
- import { z as z4 } from "zod";
2172
+ import { z as z4 } from "zod/v4";
1935
2173
  var DriverConfigSchema = z4.object({
1936
2174
  /** Machine-readable name to identify this driver by. */
1937
2175
  name: z4.string(),
@@ -1949,7 +2187,7 @@ var DriverConfigSchema = z4.object({
1949
2187
  });
1950
2188
 
1951
2189
  // src/registry/config/runner.ts
1952
- import { z as z5 } from "zod";
2190
+ import { z as z5 } from "zod/v4";
1953
2191
  var RunnerConfigSchema = z5.object({
1954
2192
  // MARK: Runner
1955
2193
  totalSlots: z5.number().default(() => getRivetTotalSlots() ?? 1e5),
@@ -1959,7 +2197,7 @@ var RunnerConfigSchema = z5.object({
1959
2197
  });
1960
2198
 
1961
2199
  // src/registry/config/serverless.ts
1962
- import { z as z6 } from "zod";
2200
+ import { z as z6 } from "zod/v4";
1963
2201
  var ConfigureRunnerPoolSchema = z6.object({
1964
2202
  name: z6.string().optional(),
1965
2203
  url: z6.string(),
@@ -2045,6 +2283,14 @@ var RegistryConfigSchema = z7.object({
2045
2283
  test: TestConfigSchema.optional().default({ enabled: false }),
2046
2284
  // MARK: Driver
2047
2285
  driver: DriverConfigSchema.optional(),
2286
+ /**
2287
+ * Storage path for RivetKit file-system state when using the default driver.
2288
+ *
2289
+ * If not set, RivetKit uses the platform default data location.
2290
+ *
2291
+ * Can also be set via RIVETKIT_STORAGE_PATH.
2292
+ */
2293
+ storagePath: z7.string().optional().transform((val) => val ?? getRivetkitStoragePath()),
2048
2294
  // MARK: Networking
2049
2295
  /** @experimental */
2050
2296
  maxIncomingMessageSize: z7.number().optional().default(65536),
@@ -2122,37 +2368,37 @@ var RegistryConfigSchema = z7.object({
2122
2368
  runner: RunnerConfigSchema.optional().default(
2123
2369
  () => RunnerConfigSchema.parse({})
2124
2370
  )
2125
- }).transform((config6, ctx) => {
2371
+ }).transform((config8, ctx) => {
2126
2372
  const isDevEnv = isDev();
2127
- const parsedEndpoint = config6.endpoint ? tryParseEndpoint(ctx, {
2128
- endpoint: config6.endpoint,
2373
+ const parsedEndpoint = config8.endpoint ? tryParseEndpoint(ctx, {
2374
+ endpoint: config8.endpoint,
2129
2375
  path: ["endpoint"],
2130
- namespace: config6.namespace,
2131
- token: config6.token
2376
+ namespace: config8.namespace,
2377
+ token: config8.token
2132
2378
  }) : void 0;
2133
- if (parsedEndpoint && config6.serveManager) {
2379
+ if (parsedEndpoint && config8.serveManager) {
2134
2380
  ctx.addIssue({
2135
2381
  code: "custom",
2136
2382
  message: "cannot specify both endpoint and serveManager"
2137
2383
  });
2138
2384
  }
2139
- if (config6.serverless.spawnEngine && parsedEndpoint) {
2385
+ if (config8.serverless.spawnEngine && parsedEndpoint) {
2140
2386
  ctx.addIssue({
2141
2387
  code: "custom",
2142
2388
  message: "cannot specify both spawnEngine and endpoint"
2143
2389
  });
2144
2390
  }
2145
- if (config6.serverless.configureRunnerPool && !parsedEndpoint && !config6.serverless.spawnEngine) {
2391
+ if (config8.serverless.configureRunnerPool && !parsedEndpoint && !config8.serverless.spawnEngine) {
2146
2392
  ctx.addIssue({
2147
2393
  code: "custom",
2148
2394
  message: "configureRunnerPool requires either endpoint or spawnEngine"
2149
2395
  });
2150
2396
  }
2151
- const endpoint = config6.serverless.spawnEngine ? ENGINE_ENDPOINT : parsedEndpoint == null ? void 0 : parsedEndpoint.endpoint;
2152
- const namespace = (parsedEndpoint == null ? void 0 : parsedEndpoint.namespace) ?? config6.namespace ?? "default";
2153
- const token = (parsedEndpoint == null ? void 0 : parsedEndpoint.token) ?? config6.token;
2154
- const parsedPublicEndpoint = config6.serverless.publicEndpoint ? tryParseEndpoint(ctx, {
2155
- endpoint: config6.serverless.publicEndpoint,
2397
+ const endpoint = config8.serverless.spawnEngine ? ENGINE_ENDPOINT : parsedEndpoint == null ? void 0 : parsedEndpoint.endpoint;
2398
+ const namespace = (parsedEndpoint == null ? void 0 : parsedEndpoint.namespace) ?? config8.namespace ?? "default";
2399
+ const token = (parsedEndpoint == null ? void 0 : parsedEndpoint.token) ?? config8.token;
2400
+ const parsedPublicEndpoint = config8.serverless.publicEndpoint ? tryParseEndpoint(ctx, {
2401
+ endpoint: config8.serverless.publicEndpoint,
2156
2402
  path: ["serverless", "publicEndpoint"]
2157
2403
  }) : void 0;
2158
2404
  if ((parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.namespace) && parsedPublicEndpoint.namespace !== namespace) {
@@ -2162,17 +2408,17 @@ var RegistryConfigSchema = z7.object({
2162
2408
  path: ["serverless", "publicEndpoint"]
2163
2409
  });
2164
2410
  }
2165
- const serveManager = config6.serveManager ?? (isDevEnv && !endpoint);
2166
- const publicEndpoint = (parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.endpoint) ?? (isDevEnv && (serveManager || config6.serverless.spawnEngine) ? `http://127.0.0.1:${config6.managerPort}` : void 0);
2411
+ const serveManager = config8.serveManager ?? (isDevEnv && !endpoint);
2412
+ const publicEndpoint = (parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.endpoint) ?? (isDevEnv && (serveManager || config8.serverless.spawnEngine) ? `http://127.0.0.1:${config8.managerPort}` : void 0);
2167
2413
  const publicNamespace = parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.namespace;
2168
- const publicToken = (parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.token) ?? config6.serverless.publicToken;
2169
- const willUseEngine = !!endpoint || config6.serverless.spawnEngine;
2414
+ const publicToken = (parsedPublicEndpoint == null ? void 0 : parsedPublicEndpoint.token) ?? config8.serverless.publicToken;
2415
+ const willUseEngine = !!endpoint || config8.serverless.spawnEngine;
2170
2416
  const inspector = willUseEngine ? {
2171
- ...config6.inspector,
2417
+ ...config8.inspector,
2172
2418
  enabled: { manager: false, actor: true }
2173
- } : config6.inspector;
2419
+ } : config8.inspector;
2174
2420
  return {
2175
- ...config6,
2421
+ ...config8,
2176
2422
  endpoint,
2177
2423
  namespace,
2178
2424
  token,
@@ -2182,40 +2428,72 @@ var RegistryConfigSchema = z7.object({
2182
2428
  publicToken,
2183
2429
  inspector,
2184
2430
  serverless: {
2185
- ...config6.serverless,
2431
+ ...config8.serverless,
2186
2432
  publicEndpoint
2187
2433
  }
2188
2434
  };
2189
2435
  });
2190
- function buildActorNames(config6) {
2436
+ function buildActorNames(config8) {
2191
2437
  return Object.fromEntries(
2192
- Object.keys(config6.use).map((name) => [name, { metadata: {} }])
2438
+ Object.keys(config8.use).map((actorName) => {
2439
+ const definition = config8.use[actorName];
2440
+ const options = definition.config.options ?? {};
2441
+ const runMeta = getRunMetadata(definition.config.run);
2442
+ const metadata = {};
2443
+ metadata.icon = options.icon ?? runMeta.icon;
2444
+ metadata.name = options.name ?? runMeta.name;
2445
+ if (!metadata.icon) delete metadata.icon;
2446
+ if (!metadata.name) delete metadata.name;
2447
+ return [actorName, { metadata }];
2448
+ })
2193
2449
  );
2194
2450
  }
2195
2451
  var DocInspectorConfigSchema = z7.object({
2196
- enabled: z7.boolean().optional().describe("Whether to enable the Rivet Inspector. Defaults to true in development mode."),
2452
+ enabled: z7.boolean().optional().describe(
2453
+ "Whether to enable the Rivet Inspector. Defaults to true in development mode."
2454
+ ),
2197
2455
  token: z7.string().optional().describe("Token used to access the Inspector."),
2198
- defaultEndpoint: z7.string().optional().describe("Default RivetKit server endpoint for Rivet Inspector to connect to.")
2456
+ defaultEndpoint: z7.string().optional().describe(
2457
+ "Default RivetKit server endpoint for Rivet Inspector to connect to."
2458
+ )
2199
2459
  }).optional().describe("Inspector configuration for debugging and development.");
2200
2460
  var DocConfigureRunnerPoolSchema = z7.object({
2201
2461
  name: z7.string().optional().describe("Name of the runner pool."),
2202
2462
  url: z7.string().describe("URL of the serverless platform to configure runners."),
2203
- headers: z7.record(z7.string(), z7.string()).optional().describe("Headers to include in requests to the serverless platform."),
2463
+ headers: z7.record(z7.string(), z7.string()).optional().describe(
2464
+ "Headers to include in requests to the serverless platform."
2465
+ ),
2204
2466
  maxRunners: z7.number().optional().describe("Maximum number of runners in the pool."),
2205
2467
  minRunners: z7.number().optional().describe("Minimum number of runners to keep warm."),
2206
2468
  requestLifespan: z7.number().optional().describe("Maximum lifespan of a request in milliseconds."),
2207
2469
  runnersMargin: z7.number().optional().describe("Buffer margin for scaling runners."),
2208
2470
  slotsPerRunner: z7.number().optional().describe("Number of actor slots per runner."),
2209
- metadata: z7.record(z7.string(), z7.unknown()).optional().describe("Additional metadata to pass to the serverless platform."),
2210
- metadataPollInterval: z7.number().optional().describe("Interval in milliseconds between metadata polls from the engine. Defaults to 10000 milliseconds (10 seconds).")
2471
+ metadata: z7.record(z7.string(), z7.unknown()).optional().describe(
2472
+ "Additional metadata to pass to the serverless platform."
2473
+ ),
2474
+ metadataPollInterval: z7.number().optional().describe(
2475
+ "Interval in milliseconds between metadata polls from the engine. Defaults to 10000 milliseconds (10 seconds)."
2476
+ )
2211
2477
  }).optional();
2212
2478
  var DocServerlessConfigSchema = z7.object({
2213
- spawnEngine: z7.boolean().optional().describe("Downloads and starts the full Rust engine process. Auto-enabled in development mode when no endpoint is provided. Default: false"),
2214
- engineVersion: z7.string().optional().describe("Version of the engine to download. Defaults to the current RivetKit version."),
2215
- configureRunnerPool: DocConfigureRunnerPoolSchema.describe("Automatically configure serverless runners in the engine."),
2216
- basePath: z7.string().optional().describe("Base path for serverless API routes. Default: '/api/rivet'"),
2217
- publicEndpoint: z7.string().optional().describe("The endpoint that clients should connect to. Supports URL auth syntax: https://namespace:token@api.rivet.dev"),
2218
- publicToken: z7.string().optional().describe("Token that clients should use when connecting via the public endpoint.")
2479
+ spawnEngine: z7.boolean().optional().describe(
2480
+ "Downloads and starts the full Rust engine process. Auto-enabled in development mode when no endpoint is provided. Default: false"
2481
+ ),
2482
+ engineVersion: z7.string().optional().describe(
2483
+ "Version of the engine to download. Defaults to the current RivetKit version."
2484
+ ),
2485
+ configureRunnerPool: DocConfigureRunnerPoolSchema.describe(
2486
+ "Automatically configure serverless runners in the engine."
2487
+ ),
2488
+ basePath: z7.string().optional().describe(
2489
+ "Base path for serverless API routes. Default: '/api/rivet'"
2490
+ ),
2491
+ publicEndpoint: z7.string().optional().describe(
2492
+ "The endpoint that clients should connect to. Supports URL auth syntax: https://namespace:token@api.rivet.dev"
2493
+ ),
2494
+ publicToken: z7.string().optional().describe(
2495
+ "Token that clients should use when connecting via the public endpoint."
2496
+ )
2219
2497
  }).describe("Configuration for serverless deployment mode.");
2220
2498
  var DocRunnerConfigSchema = z7.object({
2221
2499
  totalSlots: z7.number().optional().describe("Total number of actor slots available. Default: 100000"),
@@ -2224,18 +2502,39 @@ var DocRunnerConfigSchema = z7.object({
2224
2502
  version: z7.number().optional().describe("Version number of this runner. Default: 1")
2225
2503
  }).describe("Configuration for runner mode.");
2226
2504
  var DocRegistryConfigSchema = z7.object({
2227
- use: z7.record(z7.string(), z7.unknown()).describe("Actor definitions. Keys are actor names, values are actor definitions."),
2228
- maxIncomingMessageSize: z7.number().optional().describe("Maximum size of incoming WebSocket messages in bytes. Default: 65536"),
2229
- maxOutgoingMessageSize: z7.number().optional().describe("Maximum size of outgoing WebSocket messages in bytes. Default: 1048576"),
2505
+ use: z7.record(z7.string(), z7.unknown()).describe(
2506
+ "Actor definitions. Keys are actor names, values are actor definitions."
2507
+ ),
2508
+ storagePath: z7.string().optional().describe(
2509
+ "Storage path for RivetKit file-system state when using the default driver. Can also be set via RIVETKIT_STORAGE_PATH."
2510
+ ),
2511
+ maxIncomingMessageSize: z7.number().optional().describe(
2512
+ "Maximum size of incoming WebSocket messages in bytes. Default: 65536"
2513
+ ),
2514
+ maxOutgoingMessageSize: z7.number().optional().describe(
2515
+ "Maximum size of outgoing WebSocket messages in bytes. Default: 1048576"
2516
+ ),
2230
2517
  noWelcome: z7.boolean().optional().describe("Disable the welcome message on startup. Default: false"),
2231
2518
  logging: z7.object({
2232
- level: LogLevelSchema.optional().describe("Log level for RivetKit. Default: 'warn'")
2519
+ level: LogLevelSchema.optional().describe(
2520
+ "Log level for RivetKit. Default: 'warn'"
2521
+ )
2233
2522
  }).optional().describe("Logging configuration."),
2234
- endpoint: z7.string().optional().describe("Endpoint URL to connect to Rivet Engine. Supports URL auth syntax: https://namespace:token@api.rivet.dev. Can also be set via RIVET_ENDPOINT environment variable."),
2235
- token: z7.string().optional().describe("Authentication token for Rivet Engine. Can also be set via RIVET_TOKEN environment variable."),
2236
- namespace: z7.string().optional().describe("Namespace to use. Default: 'default'. Can also be set via RIVET_NAMESPACE environment variable."),
2237
- headers: z7.record(z7.string(), z7.string()).optional().describe("Additional headers to include in requests to Rivet Engine."),
2238
- serveManager: z7.boolean().optional().describe("Whether to start the local manager server. Auto-determined based on endpoint and NODE_ENV if not specified."),
2523
+ endpoint: z7.string().optional().describe(
2524
+ "Endpoint URL to connect to Rivet Engine. Supports URL auth syntax: https://namespace:token@api.rivet.dev. Can also be set via RIVET_ENDPOINT environment variable."
2525
+ ),
2526
+ token: z7.string().optional().describe(
2527
+ "Authentication token for Rivet Engine. Can also be set via RIVET_TOKEN environment variable."
2528
+ ),
2529
+ namespace: z7.string().optional().describe(
2530
+ "Namespace to use. Default: 'default'. Can also be set via RIVET_NAMESPACE environment variable."
2531
+ ),
2532
+ headers: z7.record(z7.string(), z7.string()).optional().describe(
2533
+ "Additional headers to include in requests to Rivet Engine."
2534
+ ),
2535
+ serveManager: z7.boolean().optional().describe(
2536
+ "Whether to start the local manager server. Auto-determined based on endpoint and NODE_ENV if not specified."
2537
+ ),
2239
2538
  managerBasePath: z7.string().optional().describe("Base path for the manager API. Default: '/'"),
2240
2539
  managerPort: z7.number().optional().describe("Port to run the manager on. Default: 6420"),
2241
2540
  inspector: DocInspectorConfigSchema,
@@ -2292,7 +2591,7 @@ function handleRouteError(error, c) {
2292
2591
  encoding,
2293
2592
  errorData,
2294
2593
  HTTP_RESPONSE_ERROR_VERSIONED,
2295
- CURRENT_VERSION,
2594
+ CURRENT_VERSION2,
2296
2595
  HttpResponseErrorSchema,
2297
2596
  // JSON: metadata is the raw value (will be serialized by jsonStringifyCompat)
2298
2597
  (value) => ({
@@ -2311,15 +2610,15 @@ function handleRouteError(error, c) {
2311
2610
  );
2312
2611
  return c.body(output, { status: statusCode });
2313
2612
  }
2314
- function handleMetadataRequest(c, config6, runnerKind, clientEndpoint, clientNamespace, clientToken) {
2613
+ function handleMetadataRequest(c, config8, runnerKind, clientEndpoint, clientNamespace, clientToken) {
2315
2614
  const response = {
2316
2615
  runtime: "rivetkit",
2317
2616
  version: VERSION,
2318
2617
  runner: {
2319
2618
  kind: runnerKind,
2320
- version: config6.runner.version
2619
+ version: config8.runner.version
2321
2620
  },
2322
- actorNames: buildActorNames(config6),
2621
+ actorNames: buildActorNames(config8),
2323
2622
  clientEndpoint,
2324
2623
  clientNamespace,
2325
2624
  clientToken
@@ -2334,11 +2633,169 @@ function handleHealthRequest(c) {
2334
2633
  });
2335
2634
  }
2336
2635
 
2636
+ // src/inspector/serve-ui.ts
2637
+ import { extract } from "tar";
2638
+
2639
+ // src/utils/node.ts
2640
+ import { createRequire } from "module";
2641
+ var nodeCrypto;
2642
+ var nodeFsSync;
2643
+ var nodeFs;
2644
+ var nodePath;
2645
+ var nodeOs;
2646
+ var nodeChildProcess;
2647
+ var nodeStream;
2648
+ var nodeUrl;
2649
+ var hasImportedDependencies = false;
2650
+ function getRequireFn() {
2651
+ return createRequire(import.meta.url);
2652
+ }
2653
+ function importNodeDependencies() {
2654
+ if (hasImportedDependencies) return;
2655
+ try {
2656
+ const requireFn = getRequireFn();
2657
+ nodeCrypto = requireFn(
2658
+ /* webpackIgnore: true */
2659
+ "node:crypto"
2660
+ );
2661
+ nodeFsSync = requireFn(
2662
+ /* webpackIgnore: true */
2663
+ "node:fs"
2664
+ );
2665
+ nodeFs = requireFn(
2666
+ /* webpackIgnore: true */
2667
+ "node:fs/promises"
2668
+ );
2669
+ nodePath = requireFn(
2670
+ /* webpackIgnore: true */
2671
+ "node:path"
2672
+ );
2673
+ nodeOs = requireFn(
2674
+ /* webpackIgnore: true */
2675
+ "node:os"
2676
+ );
2677
+ nodeChildProcess = requireFn(
2678
+ /* webpackIgnore: true */
2679
+ "node:child_process"
2680
+ );
2681
+ nodeStream = requireFn(
2682
+ /* webpackIgnore: true */
2683
+ "node:stream/promises"
2684
+ );
2685
+ nodeUrl = requireFn(
2686
+ /* webpackIgnore: true */
2687
+ "node:url"
2688
+ );
2689
+ hasImportedDependencies = true;
2690
+ } catch (err) {
2691
+ console.warn(
2692
+ "Node.js modules not available, file system driver will not work",
2693
+ err
2694
+ );
2695
+ throw err;
2696
+ }
2697
+ }
2698
+ function getNodeCrypto() {
2699
+ if (!nodeCrypto) {
2700
+ throw new Error(
2701
+ "Node crypto module not loaded. Ensure importNodeDependencies() has been called."
2702
+ );
2703
+ }
2704
+ return nodeCrypto;
2705
+ }
2706
+ function getNodeFsSync() {
2707
+ if (!nodeFsSync) {
2708
+ throw new Error(
2709
+ "Node fs module not loaded. Ensure importNodeDependencies() has been called."
2710
+ );
2711
+ }
2712
+ return nodeFsSync;
2713
+ }
2714
+ function getNodeFs() {
2715
+ if (!nodeFs) {
2716
+ throw new Error(
2717
+ "Node fs/promises module not loaded. Ensure importNodeDependencies() has been called."
2718
+ );
2719
+ }
2720
+ return nodeFs;
2721
+ }
2722
+ function getNodePath() {
2723
+ if (!nodePath) {
2724
+ throw new Error(
2725
+ "Node path module not loaded. Ensure importNodeDependencies() has been called."
2726
+ );
2727
+ }
2728
+ return nodePath;
2729
+ }
2730
+ function getNodeOs() {
2731
+ if (!nodeOs) {
2732
+ throw new Error(
2733
+ "Node os module not loaded. Ensure importNodeDependencies() has been called."
2734
+ );
2735
+ }
2736
+ return nodeOs;
2737
+ }
2738
+ function getNodeChildProcess() {
2739
+ if (!nodeChildProcess) {
2740
+ throw new Error(
2741
+ "Node child_process module not loaded. Ensure importNodeDependencies() has been called."
2742
+ );
2743
+ }
2744
+ return nodeChildProcess;
2745
+ }
2746
+ function getNodeStream() {
2747
+ if (!nodeStream) {
2748
+ throw new Error(
2749
+ "Node stream/promises module not loaded. Ensure importNodeDependencies() has been called."
2750
+ );
2751
+ }
2752
+ return nodeStream;
2753
+ }
2754
+ function getNodeUrl() {
2755
+ if (!nodeUrl) {
2756
+ throw new Error(
2757
+ "Node url module not loaded. Ensure importNodeDependencies() has been called."
2758
+ );
2759
+ }
2760
+ return nodeUrl;
2761
+ }
2762
+
2763
+ // src/inspector/serve-ui.ts
2764
+ var extractedDir;
2765
+ var extractionPromise;
2766
+ async function getInspectorDir() {
2767
+ if (extractedDir !== void 0) return extractedDir;
2768
+ if (extractionPromise !== void 0) return extractionPromise;
2769
+ const nodeFs2 = getNodeFs();
2770
+ const os = getNodeOs();
2771
+ const url = getNodeUrl();
2772
+ const path = getNodePath();
2773
+ extractionPromise = (async () => {
2774
+ const tarball = path.join(
2775
+ path.dirname(url.fileURLToPath(import.meta.url)),
2776
+ "../../dist/inspector.tar.gz"
2777
+ );
2778
+ try {
2779
+ await nodeFs2.access(tarball);
2780
+ } catch {
2781
+ throw new Error(
2782
+ `Inspector tarball not found at ${tarball}. Run 'pnpm build:pack-inspector' first.`
2783
+ );
2784
+ }
2785
+ const dest = path.join(os.tmpdir(), "rivetkit-inspector");
2786
+ await nodeFs2.mkdir(dest, { recursive: true });
2787
+ await extract({ file: tarball, cwd: dest });
2788
+ extractedDir = dest;
2789
+ return dest;
2790
+ })();
2791
+ return extractionPromise;
2792
+ }
2793
+
2337
2794
  // src/manager-api/actors.ts
2338
- import { z as z9 } from "zod";
2795
+ import { z as z9 } from "zod/v4";
2339
2796
 
2340
2797
  // src/manager-api/common.ts
2341
- import { z as z8 } from "zod";
2798
+ import { z as z8 } from "zod/v4";
2342
2799
  var RivetIdSchema = z8.string();
2343
2800
 
2344
2801
  // src/manager-api/actors.ts
@@ -2502,6 +2959,9 @@ import invariant4 from "invariant";
2502
2959
  // src/actor/router-websocket-endpoints.ts
2503
2960
  import invariant3 from "invariant";
2504
2961
 
2962
+ // src/inspector/handler.ts
2963
+ import { encodeReadRangeWire } from "@rivetkit/traces/encoding";
2964
+
2505
2965
  // src/inspector/log.ts
2506
2966
  function inspectorLogger() {
2507
2967
  return getLogger("inspector");
@@ -2512,6 +2972,7 @@ async function handleWebSocketInspectorConnect({
2512
2972
  actor
2513
2973
  }) {
2514
2974
  const inspector = actor.inspector;
2975
+ const maxQueueStatusLimit = 200;
2515
2976
  const listeners = [];
2516
2977
  return {
2517
2978
  // NOTE: onOpen cannot be async since this messes up the open event listener order
@@ -2521,11 +2982,13 @@ async function handleWebSocketInspectorConnect({
2521
2982
  tag: "Init",
2522
2983
  val: {
2523
2984
  connections: inspector.getConnections(),
2524
- events: inspector.getLastEvents(),
2525
2985
  rpcs: inspector.getRpcs(),
2526
2986
  state: inspector.isStateEnabled() ? inspector.getState() : null,
2527
2987
  isStateEnabled: inspector.isStateEnabled(),
2528
- isDatabaseEnabled: inspector.isDatabaseEnabled()
2988
+ isDatabaseEnabled: inspector.isDatabaseEnabled(),
2989
+ queueSize: BigInt(inspector.getQueueSize()),
2990
+ workflowHistory: inspector.getWorkflowHistory(),
2991
+ isWorkflowEnabled: inspector.isWorkflowEnabled()
2529
2992
  }
2530
2993
  }
2531
2994
  });
@@ -2546,19 +3009,21 @@ async function handleWebSocketInspectorConnect({
2546
3009
  }
2547
3010
  });
2548
3011
  }),
2549
- inspector.emitter.on("eventFired", () => {
3012
+ inspector.emitter.on("queueUpdated", () => {
2550
3013
  sendMessage(ws, {
2551
3014
  body: {
2552
- tag: "EventsUpdated",
2553
- val: { events: inspector.getLastEvents() }
3015
+ tag: "QueueUpdated",
3016
+ val: {
3017
+ queueSize: BigInt(inspector.getQueueSize())
3018
+ }
2554
3019
  }
2555
3020
  });
2556
3021
  }),
2557
- inspector.emitter.on("eventsChanged", () => {
3022
+ inspector.emitter.on("workflowHistoryUpdated", (history) => {
2558
3023
  sendMessage(ws, {
2559
3024
  body: {
2560
- tag: "EventsUpdated",
2561
- val: { events: inspector.getLastEvents() }
3025
+ tag: "WorkflowHistoryUpdated",
3026
+ val: { history }
2562
3027
  }
2563
3028
  });
2564
3029
  })
@@ -2604,37 +3069,111 @@ async function handleWebSocketInspectorConnect({
2604
3069
  }
2605
3070
  }
2606
3071
  });
2607
- } else if (message.body.tag === "EventsRequest") {
3072
+ } else if (message.body.tag === "RpcsListRequest") {
2608
3073
  sendMessage(ws, {
2609
3074
  body: {
2610
- tag: "EventsResponse",
3075
+ tag: "RpcsListResponse",
2611
3076
  val: {
2612
3077
  rid: message.body.val.id,
2613
- events: inspector.getLastEvents()
3078
+ rpcs: inspector.getRpcs()
2614
3079
  }
2615
3080
  }
2616
3081
  });
2617
- } else if (message.body.tag === "ClearEventsRequest") {
2618
- inspector.clearEvents();
3082
+ } else if (message.body.tag === "TraceQueryRequest") {
3083
+ const { id, startMs, endMs, limit } = message.body.val;
3084
+ const wire = await actor.traces.readRangeWire({
3085
+ startMs: Number(startMs),
3086
+ endMs: Number(endMs),
3087
+ limit: Number(limit)
3088
+ });
2619
3089
  sendMessage(ws, {
2620
3090
  body: {
2621
- tag: "EventsResponse",
3091
+ tag: "TraceQueryResponse",
2622
3092
  val: {
2623
- rid: message.body.val.id,
2624
- events: []
3093
+ rid: id,
3094
+ payload: bufferToArrayBuffer(
3095
+ encodeReadRangeWire(wire)
3096
+ )
2625
3097
  }
2626
3098
  }
2627
3099
  });
2628
- } else if (message.body.tag === "RpcsListRequest") {
3100
+ } else if (message.body.tag === "QueueRequest") {
3101
+ const { id, limit } = message.body.val;
3102
+ const status = await inspector.getQueueStatus(
3103
+ Math.min(Number(limit), maxQueueStatusLimit)
3104
+ );
2629
3105
  sendMessage(ws, {
2630
3106
  body: {
2631
- tag: "RpcsListResponse",
3107
+ tag: "QueueResponse",
3108
+ val: {
3109
+ rid: id,
3110
+ status
3111
+ }
3112
+ }
3113
+ });
3114
+ } else if (message.body.tag === "WorkflowHistoryRequest") {
3115
+ sendMessage(ws, {
3116
+ body: {
3117
+ tag: "WorkflowHistoryResponse",
2632
3118
  val: {
2633
3119
  rid: message.body.val.id,
2634
- rpcs: inspector.getRpcs()
3120
+ history: inspector.getWorkflowHistory(),
3121
+ isWorkflowEnabled: inspector.isWorkflowEnabled()
2635
3122
  }
2636
3123
  }
2637
3124
  });
3125
+ } else if (message.body.tag === "DatabaseSchemaRequest") {
3126
+ const { id } = message.body.val;
3127
+ try {
3128
+ const schema = await inspector.getDatabaseSchema();
3129
+ sendMessage(ws, {
3130
+ body: {
3131
+ tag: "DatabaseSchemaResponse",
3132
+ val: { rid: id, schema }
3133
+ }
3134
+ });
3135
+ } catch (error) {
3136
+ inspectorLogger().warn(
3137
+ { error },
3138
+ "Failed to get database schema"
3139
+ );
3140
+ sendMessage(ws, {
3141
+ body: {
3142
+ tag: "Error",
3143
+ val: {
3144
+ message: `Failed to get database schema: ${error instanceof Error ? error.message : String(error)}`
3145
+ }
3146
+ }
3147
+ });
3148
+ }
3149
+ } else if (message.body.tag === "DatabaseTableRowsRequest") {
3150
+ const { id, table, limit, offset } = message.body.val;
3151
+ try {
3152
+ const result = await inspector.getDatabaseTableRows(
3153
+ table,
3154
+ Number(limit),
3155
+ Number(offset)
3156
+ );
3157
+ sendMessage(ws, {
3158
+ body: {
3159
+ tag: "DatabaseTableRowsResponse",
3160
+ val: { rid: id, result }
3161
+ }
3162
+ });
3163
+ } catch (error) {
3164
+ inspectorLogger().warn(
3165
+ { error },
3166
+ "Failed to get database table rows"
3167
+ );
3168
+ sendMessage(ws, {
3169
+ body: {
3170
+ tag: "Error",
3171
+ val: {
3172
+ message: `Failed to get database rows: ${error instanceof Error ? error.message : String(error)}`
3173
+ }
3174
+ }
3175
+ });
3176
+ }
2638
3177
  } else {
2639
3178
  assertUnreachable(message.body);
2640
3179
  }
@@ -2662,7 +3201,7 @@ function sendMessage(ws, message) {
2662
3201
  ws.send(
2663
3202
  TO_CLIENT_VERSIONED.serializeWithEmbeddedVersion(
2664
3203
  message,
2665
- 1
3204
+ CURRENT_VERSION
2666
3205
  )
2667
3206
  );
2668
3207
  }
@@ -2705,7 +3244,7 @@ function createRawWebSocketDriver(hibernatable, closePromise) {
2705
3244
  }
2706
3245
 
2707
3246
  // src/actor/conn/drivers/websocket.ts
2708
- function createWebSocketDriver(hibernatable, encoding, closePromise, config6) {
3247
+ function createWebSocketDriver(hibernatable, encoding, closePromise, config8) {
2709
3248
  loggerWithoutContext().debug({
2710
3249
  msg: "createWebSocketDriver creating driver",
2711
3250
  hibernatable
@@ -2741,11 +3280,11 @@ function createWebSocketDriver(hibernatable, encoding, closePromise, config6) {
2741
3280
  dataLength: serialized.byteLength || serialized.length
2742
3281
  });
2743
3282
  const messageSize = serialized.byteLength || serialized.length;
2744
- if (messageSize > config6.maxOutgoingMessageSize) {
3283
+ if (messageSize > config8.maxOutgoingMessageSize) {
2745
3284
  actor.rLog.error({
2746
3285
  msg: "outgoing message exceeds maxOutgoingMessageSize",
2747
3286
  messageSize,
2748
- maxOutgoingMessageSize: config6.maxOutgoingMessageSize
3287
+ maxOutgoingMessageSize: config8.maxOutgoingMessageSize
2749
3288
  });
2750
3289
  throw new OutgoingMessageTooLong();
2751
3290
  }
@@ -2936,12 +3475,12 @@ var StateManager = class {
2936
3475
  };
2937
3476
 
2938
3477
  // src/actor/conn/mod.ts
2939
- var CONN_CONNECTED_SYMBOL = Symbol("connected");
2940
- var CONN_SPEAKS_RIVETKIT_SYMBOL = Symbol("speaksRivetKit");
2941
- var CONN_DRIVER_SYMBOL = Symbol("driver");
2942
- var CONN_ACTOR_SYMBOL = Symbol("actor");
2943
- var CONN_STATE_MANAGER_SYMBOL = Symbol("stateManager");
2944
- var CONN_SEND_MESSAGE_SYMBOL = Symbol("sendMessage");
3478
+ var CONN_CONNECTED_SYMBOL = /* @__PURE__ */ Symbol("connected");
3479
+ var CONN_SPEAKS_RIVETKIT_SYMBOL = /* @__PURE__ */ Symbol("speaksRivetKit");
3480
+ var CONN_DRIVER_SYMBOL = /* @__PURE__ */ Symbol("driver");
3481
+ var CONN_ACTOR_SYMBOL = /* @__PURE__ */ Symbol("actor");
3482
+ var CONN_STATE_MANAGER_SYMBOL = /* @__PURE__ */ Symbol("stateManager");
3483
+ var CONN_SEND_MESSAGE_SYMBOL = /* @__PURE__ */ Symbol("sendMessage");
2945
3484
  var Conn = class {
2946
3485
  #actor;
2947
3486
  get [CONN_ACTOR_SYMBOL]() {
@@ -3007,8 +3546,7 @@ var Conn = class {
3007
3546
  * If the underlying connection can hibernate.
3008
3547
  */
3009
3548
  get isHibernatable() {
3010
- var _a;
3011
- return ((_a = this[CONN_DRIVER_SYMBOL]) == null ? void 0 : _a.hibernatable) !== void 0;
3549
+ return this.#stateManager.hibernatableDataRaw !== void 0;
3012
3550
  }
3013
3551
  /**
3014
3552
  * Initializes a new instance of the Connection class.
@@ -3042,13 +3580,6 @@ var Conn = class {
3042
3580
  });
3043
3581
  }
3044
3582
  }
3045
- /**
3046
- * Sends an event with arguments to the client.
3047
- *
3048
- * @param eventName - The name of the event.
3049
- * @param args - The arguments for the event.
3050
- * @see {@link https://rivet.dev/docs/events|Events Documentation}
3051
- */
3052
3583
  send(eventName, ...args) {
3053
3584
  var _a;
3054
3585
  this.#assertConnected();
@@ -3059,18 +3590,33 @@ var Conn = class {
3059
3590
  connType: (_a = this[CONN_DRIVER_SYMBOL]) == null ? void 0 : _a.type
3060
3591
  });
3061
3592
  }
3062
- this.#actor.inspector.emitter.emit("eventFired", {
3063
- type: "event",
3593
+ if (this.#actor.config.events !== void 0 && !hasSchemaConfigKey(this.#actor.config.events, eventName)) {
3594
+ this.#actor.rLog.warn({
3595
+ msg: "sending event not defined in actor events config",
3596
+ eventName,
3597
+ connId: this.id
3598
+ });
3599
+ }
3600
+ const payload = args.length === 1 ? args[0] : args;
3601
+ const result = validateSchemaSync(
3602
+ this.#actor.config.events,
3064
3603
  eventName,
3065
- args,
3066
- connId: this.id
3604
+ payload
3605
+ );
3606
+ if (!result.success) {
3607
+ throw new EventPayloadInvalid(eventName, result.issues);
3608
+ }
3609
+ const eventArgs = args.length === 1 ? [result.data] : Array.isArray(result.data) ? result.data : args;
3610
+ this.#actor.emitTraceEvent("message.send", {
3611
+ "rivet.event.name": eventName,
3612
+ "rivet.conn.id": this.id
3067
3613
  });
3068
- const eventData = { name: eventName, args };
3614
+ const eventData = { name: eventName, args: eventArgs };
3069
3615
  this[CONN_SEND_MESSAGE_SYMBOL](
3070
3616
  new CachedSerializer(
3071
3617
  eventData,
3072
3618
  TO_CLIENT_VERSIONED2,
3073
- CURRENT_VERSION,
3619
+ CURRENT_VERSION2,
3074
3620
  ToClientSchema,
3075
3621
  // JSON: args is the raw value (array of arguments)
3076
3622
  (value) => ({
@@ -3111,14 +3657,18 @@ var Conn = class {
3111
3657
  conn: this.id
3112
3658
  });
3113
3659
  }
3114
- this.#actor.connectionManager.connDisconnected(this);
3660
+ try {
3661
+ await this.#actor.connectionManager.connDisconnected(this);
3662
+ } finally {
3663
+ this[CONN_DRIVER_SYMBOL] = void 0;
3664
+ }
3115
3665
  } else {
3116
3666
  this.#actor.rLog.warn({
3117
3667
  msg: "missing connection driver state for disconnect",
3118
3668
  conn: this.id
3119
3669
  });
3670
+ this[CONN_DRIVER_SYMBOL] = void 0;
3120
3671
  }
3121
- this[CONN_DRIVER_SYMBOL] = void 0;
3122
3672
  }
3123
3673
  };
3124
3674
 
@@ -3165,22 +3715,22 @@ async function parseMessage(value, opts) {
3165
3715
  // JSON: values are already the correct type
3166
3716
  (json) => json,
3167
3717
  // BARE: need to decode ArrayBuffer fields back to unknown
3168
- (bare6) => {
3169
- if (bare6.body.tag === "ActionRequest") {
3718
+ (bare8) => {
3719
+ if (bare8.body.tag === "ActionRequest") {
3170
3720
  return {
3171
3721
  body: {
3172
3722
  tag: "ActionRequest",
3173
3723
  val: {
3174
- id: bare6.body.val.id,
3175
- name: bare6.body.val.name,
3724
+ id: bare8.body.val.id,
3725
+ name: bare8.body.val.name,
3176
3726
  args: cbor5.decode(
3177
- new Uint8Array(bare6.body.val.args)
3727
+ new Uint8Array(bare8.body.val.args)
3178
3728
  )
3179
3729
  }
3180
3730
  }
3181
3731
  };
3182
3732
  } else {
3183
- return bare6;
3733
+ return bare8;
3184
3734
  }
3185
3735
  }
3186
3736
  );
@@ -3201,7 +3751,10 @@ async function processMessage(message, actor, conn, handler) {
3201
3751
  actionId: id,
3202
3752
  actionName: name
3203
3753
  });
3204
- const ctx = new ActionContext(actor, conn);
3754
+ const ctx = new ActionContext(
3755
+ actor,
3756
+ conn
3757
+ );
3205
3758
  const output = await handler.onExecuteAction(
3206
3759
  ctx,
3207
3760
  name,
@@ -3218,7 +3771,7 @@ async function processMessage(message, actor, conn, handler) {
3218
3771
  new CachedSerializer(
3219
3772
  output,
3220
3773
  TO_CLIENT_VERSIONED2,
3221
- CURRENT_VERSION,
3774
+ CURRENT_VERSION2,
3222
3775
  ToClientSchema,
3223
3776
  // JSON: output is the raw value
3224
3777
  (value) => ({
@@ -3254,6 +3807,13 @@ async function processMessage(message, actor, conn, handler) {
3254
3807
  subscribe
3255
3808
  });
3256
3809
  if (subscribe) {
3810
+ await actor.assertCanSubscribe(
3811
+ new ActionContext(
3812
+ actor,
3813
+ conn
3814
+ ),
3815
+ eventName
3816
+ );
3257
3817
  await handler.onSubscribe(eventName, conn);
3258
3818
  } else {
3259
3819
  await handler.onUnsubscribe(eventName, conn);
@@ -3289,7 +3849,7 @@ async function processMessage(message, actor, conn, handler) {
3289
3849
  new CachedSerializer(
3290
3850
  errorData,
3291
3851
  TO_CLIENT_VERSIONED2,
3292
- CURRENT_VERSION,
3852
+ CURRENT_VERSION2,
3293
3853
  ToClientSchema,
3294
3854
  // JSON: metadata is the raw value (keep as undefined if not present)
3295
3855
  (value) => {
@@ -3332,7 +3892,7 @@ async function processMessage(message, actor, conn, handler) {
3332
3892
  }
3333
3893
 
3334
3894
  // src/actor/router-websocket-endpoints.ts
3335
- async function routeWebSocket(request, requestPath, requestHeaders, config6, actorDriver, actorId, encoding, parameters, gatewayId, requestId, isHibernatable, isRestoringHibernatable) {
3895
+ async function routeWebSocket(request, requestPath, requestHeaders, config8, actorDriver, actorId, encoding, parameters, gatewayId, requestId, isHibernatable, isRestoringHibernatable) {
3336
3896
  var _a;
3337
3897
  const exposeInternalError = request ? getRequestExposeInternalError(request) : false;
3338
3898
  let createdConn;
@@ -3344,7 +3904,7 @@ async function routeWebSocket(request, requestPath, requestHeaders, config6, act
3344
3904
  requestPath,
3345
3905
  isHibernatable
3346
3906
  });
3347
- const closePromiseResolvers = promiseWithResolvers();
3907
+ const closePromiseResolvers = promiseWithResolvers((reason) => loggerWithoutContext().warn({ msg: "unhandled websocket close promise rejection", reason }));
3348
3908
  const requestPathWithoutQuery = requestPath.split("?")[0];
3349
3909
  let handler;
3350
3910
  let connDriver;
@@ -3353,7 +3913,7 @@ async function routeWebSocket(request, requestPath, requestHeaders, config6, act
3353
3913
  isHibernatable ? { gatewayId, requestId } : void 0,
3354
3914
  encoding,
3355
3915
  closePromiseResolvers.promise,
3356
- config6
3916
+ config8
3357
3917
  );
3358
3918
  handler = handleWebSocketConnect.bind(void 0, setWebSocket);
3359
3919
  connDriver = driver;
@@ -3389,7 +3949,7 @@ async function routeWebSocket(request, requestPath, requestHeaders, config6, act
3389
3949
  );
3390
3950
  createdConn = conn;
3391
3951
  return await handler({
3392
- config: config6,
3952
+ config: config8,
3393
3953
  request,
3394
3954
  encoding,
3395
3955
  actor,
@@ -3410,7 +3970,7 @@ async function routeWebSocket(request, requestPath, requestHeaders, config6, act
3410
3970
  return {
3411
3971
  conn: createdConn,
3412
3972
  onOpen: (_evt, ws) => {
3413
- ws.close(1011, code);
3973
+ ws.close(1011, `${group}.${code}`);
3414
3974
  },
3415
3975
  onMessage: (_evt, ws) => {
3416
3976
  ws.close(1011, "actor.not_loaded");
@@ -3430,6 +3990,7 @@ async function handleWebSocketConnect(setWebSocket, {
3430
3990
  conn,
3431
3991
  exposeInternalError
3432
3992
  }) {
3993
+ let pendingMessage = Promise.resolve();
3433
3994
  return {
3434
3995
  conn,
3435
3996
  actor,
@@ -3445,23 +4006,14 @@ async function handleWebSocketConnect(setWebSocket, {
3445
4006
  onMessage: (evt, ws) => {
3446
4007
  actor.rLog.debug({ msg: "received message" });
3447
4008
  const value = evt.data.valueOf();
3448
- parseMessage(value, {
3449
- encoding,
3450
- maxIncomingMessageSize: runConfig.maxIncomingMessageSize
3451
- }).then((message) => {
3452
- actor.processMessage(message, conn).catch((error) => {
3453
- const { code } = deconstructError(
3454
- error,
3455
- actor.rLog,
3456
- {
3457
- wsEvent: "message"
3458
- },
3459
- exposeInternalError
3460
- );
3461
- ws.close(1011, code);
4009
+ pendingMessage = pendingMessage.then(async () => {
4010
+ const message = await parseMessage(value, {
4011
+ encoding,
4012
+ maxIncomingMessageSize: runConfig.maxIncomingMessageSize
3462
4013
  });
4014
+ await actor.processMessage(message, conn);
3463
4015
  }).catch((error) => {
3464
- const { code } = deconstructError(
4016
+ const { group, code } = deconstructError(
3465
4017
  error,
3466
4018
  actor.rLog,
3467
4019
  {
@@ -3469,7 +4021,7 @@ async function handleWebSocketConnect(setWebSocket, {
3469
4021
  },
3470
4022
  exposeInternalError
3471
4023
  );
3472
- ws.close(1011, code);
4024
+ ws.close(1011, `${group}.${code}`);
3473
4025
  });
3474
4026
  },
3475
4027
  onClose: (event, ws) => {
@@ -3569,7 +4121,7 @@ function logger3() {
3569
4121
  }
3570
4122
 
3571
4123
  // src/manager/gateway.ts
3572
- async function handleWebSocketGatewayPathBased(config6, managerDriver, c, actorPathInfo, getUpgradeWebSocket) {
4124
+ async function handleWebSocketGatewayPathBased(config8, managerDriver, c, actorPathInfo, getUpgradeWebSocket) {
3573
4125
  const upgradeWebSocket = getUpgradeWebSocket == null ? void 0 : getUpgradeWebSocket();
3574
4126
  if (!upgradeWebSocket) {
3575
4127
  throw new WebSocketsNotEnabled();
@@ -3614,13 +4166,13 @@ async function handleHttpGatewayPathBased(managerDriver, c, actorPathInfo) {
3614
4166
  actorPathInfo.actorId
3615
4167
  );
3616
4168
  }
3617
- async function actorGateway(config6, managerDriver, getUpgradeWebSocket, c, next) {
4169
+ async function actorGateway(config8, managerDriver, getUpgradeWebSocket, c, next) {
3618
4170
  if (c.req.path.startsWith("/.test/")) {
3619
4171
  return next();
3620
4172
  }
3621
4173
  let strippedPath = c.req.path;
3622
- if (config6.managerBasePath && strippedPath.startsWith(config6.managerBasePath)) {
3623
- strippedPath = strippedPath.slice(config6.managerBasePath.length);
4174
+ if (config8.managerBasePath && strippedPath.startsWith(config8.managerBasePath)) {
4175
+ strippedPath = strippedPath.slice(config8.managerBasePath.length);
3624
4176
  if (!strippedPath.startsWith("/")) {
3625
4177
  strippedPath = "/" + strippedPath;
3626
4178
  }
@@ -3635,7 +4187,7 @@ async function actorGateway(config6, managerDriver, getUpgradeWebSocket, c, next
3635
4187
  const isWebSocket = c.req.header("upgrade") === "websocket";
3636
4188
  if (isWebSocket) {
3637
4189
  return await handleWebSocketGatewayPathBased(
3638
- config6,
4190
+ config8,
3639
4191
  managerDriver,
3640
4192
  c,
3641
4193
  actorPathInfo,
@@ -3650,7 +4202,7 @@ async function actorGateway(config6, managerDriver, getUpgradeWebSocket, c, next
3650
4202
  }
3651
4203
  if (c.req.header("upgrade") === "websocket") {
3652
4204
  return await handleWebSocketGateway(
3653
- config6,
4205
+ config8,
3654
4206
  managerDriver,
3655
4207
  getUpgradeWebSocket,
3656
4208
  c,
@@ -3659,7 +4211,7 @@ async function actorGateway(config6, managerDriver, getUpgradeWebSocket, c, next
3659
4211
  }
3660
4212
  return await handleHttpGateway(managerDriver, c, next, strippedPath);
3661
4213
  }
3662
- async function handleWebSocketGateway(config6, managerDriver, getUpgradeWebSocket, c, strippedPath) {
4214
+ async function handleWebSocketGateway(config8, managerDriver, getUpgradeWebSocket, c, strippedPath) {
3663
4215
  const upgradeWebSocket = getUpgradeWebSocket == null ? void 0 : getUpgradeWebSocket();
3664
4216
  if (!upgradeWebSocket) {
3665
4217
  throw new WebSocketsNotEnabled();
@@ -3801,7 +4353,7 @@ async function createTestWebSocketProxy(proxyToActorWsPromise) {
3801
4353
  promise: clientToProxyWsPromise,
3802
4354
  resolve: clientToProxyWsResolve,
3803
4355
  reject: clientToProxyWsReject
3804
- } = promiseWithResolvers();
4356
+ } = promiseWithResolvers((reason) => logger3().warn({ msg: "unhandled client websocket promise rejection", reason }));
3805
4357
  try {
3806
4358
  logger3().debug({ msg: "awaiting client websocket promise" });
3807
4359
  proxyToActorWs = await proxyToActorWsPromise;
@@ -3978,14 +4530,14 @@ async function createTestWebSocketProxy(proxyToActorWsPromise) {
3978
4530
  }
3979
4531
 
3980
4532
  // src/manager/router.ts
3981
- function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
3982
- return createRouter(config6.managerBasePath, (router) => {
4533
+ function buildManagerRouter(config8, managerDriver, getUpgradeWebSocket) {
4534
+ return createRouter(config8.managerBasePath, (router) => {
3983
4535
  var _a;
3984
4536
  router.use(
3985
4537
  "*",
3986
4538
  actorGateway.bind(
3987
4539
  void 0,
3988
- config6,
4540
+ config8,
3989
4541
  managerDriver,
3990
4542
  getUpgradeWebSocket
3991
4543
  )
@@ -4053,7 +4605,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4053
4605
  actors.push(actorOutput);
4054
4606
  }
4055
4607
  } else {
4056
- for (const actorName of Object.keys(config6.use)) {
4608
+ for (const actorName of Object.keys(config8.use)) {
4057
4609
  const actorOutput = await managerDriver.getForId({
4058
4610
  c,
4059
4611
  name: actorName,
@@ -4070,8 +4622,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4070
4622
  const actorOutput = await managerDriver.getWithKey({
4071
4623
  c,
4072
4624
  name,
4073
- key: [key]
4074
- // Convert string to ActorKey array
4625
+ key: deserializeActorKey(key)
4075
4626
  });
4076
4627
  if (actorOutput) {
4077
4628
  actors.push(actorOutput);
@@ -4110,7 +4661,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4110
4661
  responses: buildOpenApiResponses(ActorsListNamesResponseSchema)
4111
4662
  });
4112
4663
  router.openapi(route, async (c) => {
4113
- const names = buildActorNames(config6);
4664
+ const names = buildActorNames(config8);
4114
4665
  return c.json({
4115
4666
  names
4116
4667
  });
@@ -4134,8 +4685,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4134
4685
  const existingActor = await managerDriver.getWithKey({
4135
4686
  c,
4136
4687
  name: body.name,
4137
- key: [body.key]
4138
- // Convert string to ActorKey array
4688
+ key: deserializeActorKey(body.key)
4139
4689
  });
4140
4690
  if (existingActor) {
4141
4691
  return c.json({
@@ -4146,8 +4696,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4146
4696
  const newActor = await managerDriver.getOrCreateWithKey({
4147
4697
  c,
4148
4698
  name: body.name,
4149
- key: [body.key],
4150
- // Convert string to ActorKey array
4699
+ key: deserializeActorKey(body.key),
4151
4700
  input: body.input ? cbor6.decode(Buffer.from(body.input, "base64")) : void 0,
4152
4701
  region: void 0
4153
4702
  // Not provided in the request schema
@@ -4172,8 +4721,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4172
4721
  const actorOutput = await managerDriver.createActor({
4173
4722
  c,
4174
4723
  name: body.name,
4175
- key: [body.key || crypto.randomUUID()],
4176
- // Generate key if not provided, convert to ActorKey array
4724
+ key: deserializeActorKey(body.key || crypto.randomUUID()),
4177
4725
  input: body.input ? cbor6.decode(Buffer.from(body.input, "base64")) : void 0,
4178
4726
  region: void 0
4179
4727
  // Not provided in the request schema
@@ -4195,17 +4743,17 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4195
4743
  responses: buildOpenApiResponses(ActorsKvGetResponseSchema)
4196
4744
  });
4197
4745
  router.openapi(route, async (c) => {
4198
- if (getNodeEnv() === "development" && !config6.token) {
4746
+ if (getNodeEnv() === "development" && !config8.token) {
4199
4747
  logger3().warn({
4200
4748
  msg: "RIVET_TOKEN is not set, skipping KV store access checks in development mode. This endpoint will be disabled in production, unless you set the token."
4201
4749
  });
4202
4750
  }
4203
4751
  if (getNodeEnv() !== "development") {
4204
- if (!config6.token) {
4752
+ if (!config8.token) {
4205
4753
  throw new RestrictedFeature("KV store access");
4206
4754
  }
4207
4755
  if (timingSafeEqual(
4208
- config6.token,
4756
+ config8.token,
4209
4757
  c.req.header(HEADER_RIVET_TOKEN) || ""
4210
4758
  ) === false) {
4211
4759
  throw new Forbidden();
@@ -4221,7 +4769,7 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4221
4769
  });
4222
4770
  });
4223
4771
  }
4224
- if (config6.test.enabled) {
4772
+ if (config8.test.enabled) {
4225
4773
  router.post(".test/inline-driver/call", async (c) => {
4226
4774
  const buffer = await c.req.arrayBuffer();
4227
4775
  const { encoding, method, args } = cbor6.decode(new Uint8Array(buffer));
@@ -4380,19 +4928,40 @@ function buildManagerRouter(config6, managerDriver, getUpgradeWebSocket) {
4380
4928
  }
4381
4929
  });
4382
4930
  }
4931
+ if (config8.inspector.enabled) {
4932
+ let inspectorRoot;
4933
+ router.get("/ui/*", async (c, next) => {
4934
+ if (!inspectorRoot) {
4935
+ inspectorRoot = await getInspectorDir();
4936
+ }
4937
+ const root = inspectorRoot;
4938
+ const rewrite = (path) => path.replace(/^\/ui/, "") || "/";
4939
+ return serveStatic({
4940
+ root,
4941
+ rewriteRequestPath: rewrite,
4942
+ onNotFound: async (_path, c2) => {
4943
+ await serveStatic({ root, path: "index.html" })(
4944
+ c2,
4945
+ next
4946
+ );
4947
+ }
4948
+ })(c, next);
4949
+ });
4950
+ router.get("/ui", (c) => c.redirect("/ui/"));
4951
+ }
4383
4952
  router.get("/health", (c) => handleHealthRequest(c));
4384
4953
  router.get(
4385
4954
  "/metadata",
4386
4955
  (c) => handleMetadataRequest(
4387
4956
  c,
4388
- config6,
4957
+ config8,
4389
4958
  { normal: {} },
4390
- config6.publicEndpoint,
4391
- config6.publicNamespace,
4392
- config6.publicToken
4959
+ config8.publicEndpoint,
4960
+ config8.publicNamespace,
4961
+ config8.publicToken
4393
4962
  )
4394
4963
  );
4395
- (_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(managerDriver, config6, router);
4964
+ (_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(managerDriver, config8, router);
4396
4965
  });
4397
4966
  }
4398
4967
  function createApiActor(actor) {
@@ -4418,18 +4987,18 @@ import * as cbor7 from "cbor-x";
4418
4987
  import { createVersionedDataHandler as createVersionedDataHandler2 } from "vbare";
4419
4988
 
4420
4989
  // dist/schemas/actor-persist/v1.ts
4421
- import * as bare3 from "@rivetkit/bare-ts";
4422
- var config3 = /* @__PURE__ */ bare3.Config({});
4990
+ import * as bare4 from "@rivetkit/bare-ts";
4991
+ var config4 = /* @__PURE__ */ bare4.Config({});
4423
4992
  function readPersistedSubscription(bc) {
4424
4993
  return {
4425
- eventName: bare3.readString(bc)
4994
+ eventName: bare4.readString(bc)
4426
4995
  };
4427
4996
  }
4428
4997
  function writePersistedSubscription(bc, x) {
4429
- bare3.writeString(bc, x.eventName);
4998
+ bare4.writeString(bc, x.eventName);
4430
4999
  }
4431
- function read03(bc) {
4432
- const len = bare3.readUintSafe(bc);
5000
+ function read04(bc) {
5001
+ const len = bare4.readUintSafe(bc);
4433
5002
  if (len === 0) {
4434
5003
  return [];
4435
5004
  }
@@ -4439,65 +5008,65 @@ function read03(bc) {
4439
5008
  }
4440
5009
  return result;
4441
5010
  }
4442
- function write03(bc, x) {
4443
- bare3.writeUintSafe(bc, x.length);
5011
+ function write04(bc, x) {
5012
+ bare4.writeUintSafe(bc, x.length);
4444
5013
  for (let i = 0; i < x.length; i++) {
4445
5014
  writePersistedSubscription(bc, x[i]);
4446
5015
  }
4447
5016
  }
4448
5017
  function readPersistedConnection(bc) {
4449
5018
  return {
4450
- id: bare3.readString(bc),
4451
- token: bare3.readString(bc),
4452
- parameters: bare3.readData(bc),
4453
- state: bare3.readData(bc),
4454
- subscriptions: read03(bc),
4455
- lastSeen: bare3.readU64(bc)
5019
+ id: bare4.readString(bc),
5020
+ token: bare4.readString(bc),
5021
+ parameters: bare4.readData(bc),
5022
+ state: bare4.readData(bc),
5023
+ subscriptions: read04(bc),
5024
+ lastSeen: bare4.readU64(bc)
4456
5025
  };
4457
5026
  }
4458
5027
  function writePersistedConnection(bc, x) {
4459
- bare3.writeString(bc, x.id);
4460
- bare3.writeString(bc, x.token);
4461
- bare3.writeData(bc, x.parameters);
4462
- bare3.writeData(bc, x.state);
4463
- write03(bc, x.subscriptions);
4464
- bare3.writeU64(bc, x.lastSeen);
5028
+ bare4.writeString(bc, x.id);
5029
+ bare4.writeString(bc, x.token);
5030
+ bare4.writeData(bc, x.parameters);
5031
+ bare4.writeData(bc, x.state);
5032
+ write04(bc, x.subscriptions);
5033
+ bare4.writeU64(bc, x.lastSeen);
4465
5034
  }
4466
- function read13(bc) {
4467
- return bare3.readBool(bc) ? bare3.readData(bc) : null;
5035
+ function read14(bc) {
5036
+ return bare4.readBool(bc) ? bare4.readData(bc) : null;
4468
5037
  }
4469
- function write13(bc, x) {
4470
- bare3.writeBool(bc, x !== null);
5038
+ function write14(bc, x) {
5039
+ bare4.writeBool(bc, x !== null);
4471
5040
  if (x !== null) {
4472
- bare3.writeData(bc, x);
5041
+ bare4.writeData(bc, x);
4473
5042
  }
4474
5043
  }
4475
5044
  function readGenericPersistedScheduleEvent(bc) {
4476
5045
  return {
4477
- action: bare3.readString(bc),
4478
- args: read13(bc)
5046
+ action: bare4.readString(bc),
5047
+ args: read14(bc)
4479
5048
  };
4480
5049
  }
4481
5050
  function writeGenericPersistedScheduleEvent(bc, x) {
4482
- bare3.writeString(bc, x.action);
4483
- write13(bc, x.args);
5051
+ bare4.writeString(bc, x.action);
5052
+ write14(bc, x.args);
4484
5053
  }
4485
5054
  function readPersistedScheduleEventKind(bc) {
4486
5055
  const offset = bc.offset;
4487
- const tag = bare3.readU8(bc);
5056
+ const tag = bare4.readU8(bc);
4488
5057
  switch (tag) {
4489
5058
  case 0:
4490
5059
  return { tag: "GenericPersistedScheduleEvent", val: readGenericPersistedScheduleEvent(bc) };
4491
5060
  default: {
4492
5061
  bc.offset = offset;
4493
- throw new bare3.BareError(offset, "invalid tag");
5062
+ throw new bare4.BareError(offset, "invalid tag");
4494
5063
  }
4495
5064
  }
4496
5065
  }
4497
5066
  function writePersistedScheduleEventKind(bc, x) {
4498
5067
  switch (x.tag) {
4499
5068
  case "GenericPersistedScheduleEvent": {
4500
- bare3.writeU8(bc, 0);
5069
+ bare4.writeU8(bc, 0);
4501
5070
  writeGenericPersistedScheduleEvent(bc, x.val);
4502
5071
  break;
4503
5072
  }
@@ -4505,18 +5074,18 @@ function writePersistedScheduleEventKind(bc, x) {
4505
5074
  }
4506
5075
  function readPersistedScheduleEvent(bc) {
4507
5076
  return {
4508
- eventId: bare3.readString(bc),
4509
- timestamp: bare3.readU64(bc),
5077
+ eventId: bare4.readString(bc),
5078
+ timestamp: bare4.readU64(bc),
4510
5079
  kind: readPersistedScheduleEventKind(bc)
4511
5080
  };
4512
5081
  }
4513
5082
  function writePersistedScheduleEvent(bc, x) {
4514
- bare3.writeString(bc, x.eventId);
4515
- bare3.writeU64(bc, x.timestamp);
5083
+ bare4.writeString(bc, x.eventId);
5084
+ bare4.writeU64(bc, x.timestamp);
4516
5085
  writePersistedScheduleEventKind(bc, x.kind);
4517
5086
  }
4518
- function read2(bc) {
4519
- const len = bare3.readUintSafe(bc);
5087
+ function read22(bc) {
5088
+ const len = bare4.readUintSafe(bc);
4520
5089
  if (len === 0) {
4521
5090
  return [];
4522
5091
  }
@@ -4526,14 +5095,14 @@ function read2(bc) {
4526
5095
  }
4527
5096
  return result;
4528
5097
  }
4529
- function write2(bc, x) {
4530
- bare3.writeUintSafe(bc, x.length);
5098
+ function write22(bc, x) {
5099
+ bare4.writeUintSafe(bc, x.length);
4531
5100
  for (let i = 0; i < x.length; i++) {
4532
5101
  writePersistedConnection(bc, x[i]);
4533
5102
  }
4534
5103
  }
4535
- function read3(bc) {
4536
- const len = bare3.readUintSafe(bc);
5104
+ function read32(bc) {
5105
+ const len = bare4.readUintSafe(bc);
4537
5106
  if (len === 0) {
4538
5107
  return [];
4539
5108
  }
@@ -4543,58 +5112,58 @@ function read3(bc) {
4543
5112
  }
4544
5113
  return result;
4545
5114
  }
4546
- function write3(bc, x) {
4547
- bare3.writeUintSafe(bc, x.length);
5115
+ function write32(bc, x) {
5116
+ bare4.writeUintSafe(bc, x.length);
4548
5117
  for (let i = 0; i < x.length; i++) {
4549
5118
  writePersistedScheduleEvent(bc, x[i]);
4550
5119
  }
4551
5120
  }
4552
5121
  function readPersistedActor(bc) {
4553
5122
  return {
4554
- input: read13(bc),
4555
- hasInitialized: bare3.readBool(bc),
4556
- state: bare3.readData(bc),
4557
- connections: read2(bc),
4558
- scheduledEvents: read3(bc)
5123
+ input: read14(bc),
5124
+ hasInitialized: bare4.readBool(bc),
5125
+ state: bare4.readData(bc),
5126
+ connections: read22(bc),
5127
+ scheduledEvents: read32(bc)
4559
5128
  };
4560
5129
  }
4561
5130
  function writePersistedActor(bc, x) {
4562
- write13(bc, x.input);
4563
- bare3.writeBool(bc, x.hasInitialized);
4564
- bare3.writeData(bc, x.state);
4565
- write2(bc, x.connections);
4566
- write3(bc, x.scheduledEvents);
5131
+ write14(bc, x.input);
5132
+ bare4.writeBool(bc, x.hasInitialized);
5133
+ bare4.writeData(bc, x.state);
5134
+ write22(bc, x.connections);
5135
+ write32(bc, x.scheduledEvents);
4567
5136
  }
4568
5137
  function encodePersistedActor(x) {
4569
- const bc = new bare3.ByteCursor(
4570
- new Uint8Array(config3.initialBufferLength),
4571
- config3
5138
+ const bc = new bare4.ByteCursor(
5139
+ new Uint8Array(config4.initialBufferLength),
5140
+ config4
4572
5141
  );
4573
5142
  writePersistedActor(bc, x);
4574
5143
  return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
4575
5144
  }
4576
5145
  function decodePersistedActor(bytes) {
4577
- const bc = new bare3.ByteCursor(bytes, config3);
5146
+ const bc = new bare4.ByteCursor(bytes, config4);
4578
5147
  const result = readPersistedActor(bc);
4579
5148
  if (bc.offset < bc.view.byteLength) {
4580
- throw new bare3.BareError(bc.offset, "remaining bytes");
5149
+ throw new bare4.BareError(bc.offset, "remaining bytes");
4581
5150
  }
4582
5151
  return result;
4583
5152
  }
4584
5153
 
4585
5154
  // dist/schemas/actor-persist/v2.ts
4586
- import * as bare4 from "@rivetkit/bare-ts";
4587
- var config4 = /* @__PURE__ */ bare4.Config({});
5155
+ import * as bare5 from "@rivetkit/bare-ts";
5156
+ var config5 = /* @__PURE__ */ bare5.Config({});
4588
5157
  function readPersistedSubscription2(bc) {
4589
5158
  return {
4590
- eventName: bare4.readString(bc)
5159
+ eventName: bare5.readString(bc)
4591
5160
  };
4592
5161
  }
4593
5162
  function writePersistedSubscription2(bc, x) {
4594
- bare4.writeString(bc, x.eventName);
5163
+ bare5.writeString(bc, x.eventName);
4595
5164
  }
4596
- function read04(bc) {
4597
- const len = bare4.readUintSafe(bc);
5165
+ function read05(bc) {
5166
+ const len = bare5.readUintSafe(bc);
4598
5167
  if (len === 0) {
4599
5168
  return [];
4600
5169
  }
@@ -4604,67 +5173,67 @@ function read04(bc) {
4604
5173
  }
4605
5174
  return result;
4606
5175
  }
4607
- function write04(bc, x) {
4608
- bare4.writeUintSafe(bc, x.length);
5176
+ function write05(bc, x) {
5177
+ bare5.writeUintSafe(bc, x.length);
4609
5178
  for (let i = 0; i < x.length; i++) {
4610
5179
  writePersistedSubscription2(bc, x[i]);
4611
5180
  }
4612
5181
  }
4613
- function read14(bc) {
4614
- return bare4.readBool(bc) ? bare4.readData(bc) : null;
5182
+ function read15(bc) {
5183
+ return bare5.readBool(bc) ? bare5.readData(bc) : null;
4615
5184
  }
4616
- function write14(bc, x) {
4617
- bare4.writeBool(bc, x !== null);
5185
+ function write15(bc, x) {
5186
+ bare5.writeBool(bc, x !== null);
4618
5187
  if (x !== null) {
4619
- bare4.writeData(bc, x);
5188
+ bare5.writeData(bc, x);
4620
5189
  }
4621
5190
  }
4622
5191
  function readPersistedConnection2(bc) {
4623
5192
  return {
4624
- id: bare4.readString(bc),
4625
- token: bare4.readString(bc),
4626
- parameters: bare4.readData(bc),
4627
- state: bare4.readData(bc),
4628
- subscriptions: read04(bc),
4629
- lastSeen: bare4.readI64(bc),
4630
- hibernatableRequestId: read14(bc)
4631
- };
4632
- }
4633
- function writePersistedConnection2(bc, x) {
4634
- bare4.writeString(bc, x.id);
4635
- bare4.writeString(bc, x.token);
4636
- bare4.writeData(bc, x.parameters);
4637
- bare4.writeData(bc, x.state);
4638
- write04(bc, x.subscriptions);
4639
- bare4.writeI64(bc, x.lastSeen);
4640
- write14(bc, x.hibernatableRequestId);
5193
+ id: bare5.readString(bc),
5194
+ token: bare5.readString(bc),
5195
+ parameters: bare5.readData(bc),
5196
+ state: bare5.readData(bc),
5197
+ subscriptions: read05(bc),
5198
+ lastSeen: bare5.readI64(bc),
5199
+ hibernatableRequestId: read15(bc)
5200
+ };
5201
+ }
5202
+ function writePersistedConnection2(bc, x) {
5203
+ bare5.writeString(bc, x.id);
5204
+ bare5.writeString(bc, x.token);
5205
+ bare5.writeData(bc, x.parameters);
5206
+ bare5.writeData(bc, x.state);
5207
+ write05(bc, x.subscriptions);
5208
+ bare5.writeI64(bc, x.lastSeen);
5209
+ write15(bc, x.hibernatableRequestId);
4641
5210
  }
4642
5211
  function readGenericPersistedScheduleEvent2(bc) {
4643
5212
  return {
4644
- action: bare4.readString(bc),
4645
- args: read14(bc)
5213
+ action: bare5.readString(bc),
5214
+ args: read15(bc)
4646
5215
  };
4647
5216
  }
4648
5217
  function writeGenericPersistedScheduleEvent2(bc, x) {
4649
- bare4.writeString(bc, x.action);
4650
- write14(bc, x.args);
5218
+ bare5.writeString(bc, x.action);
5219
+ write15(bc, x.args);
4651
5220
  }
4652
5221
  function readPersistedScheduleEventKind2(bc) {
4653
5222
  const offset = bc.offset;
4654
- const tag = bare4.readU8(bc);
5223
+ const tag = bare5.readU8(bc);
4655
5224
  switch (tag) {
4656
5225
  case 0:
4657
5226
  return { tag: "GenericPersistedScheduleEvent", val: readGenericPersistedScheduleEvent2(bc) };
4658
5227
  default: {
4659
5228
  bc.offset = offset;
4660
- throw new bare4.BareError(offset, "invalid tag");
5229
+ throw new bare5.BareError(offset, "invalid tag");
4661
5230
  }
4662
5231
  }
4663
5232
  }
4664
5233
  function writePersistedScheduleEventKind2(bc, x) {
4665
5234
  switch (x.tag) {
4666
5235
  case "GenericPersistedScheduleEvent": {
4667
- bare4.writeU8(bc, 0);
5236
+ bare5.writeU8(bc, 0);
4668
5237
  writeGenericPersistedScheduleEvent2(bc, x.val);
4669
5238
  break;
4670
5239
  }
@@ -4672,30 +5241,30 @@ function writePersistedScheduleEventKind2(bc, x) {
4672
5241
  }
4673
5242
  function readPersistedScheduleEvent2(bc) {
4674
5243
  return {
4675
- eventId: bare4.readString(bc),
4676
- timestamp: bare4.readI64(bc),
5244
+ eventId: bare5.readString(bc),
5245
+ timestamp: bare5.readI64(bc),
4677
5246
  kind: readPersistedScheduleEventKind2(bc)
4678
5247
  };
4679
5248
  }
4680
5249
  function writePersistedScheduleEvent2(bc, x) {
4681
- bare4.writeString(bc, x.eventId);
4682
- bare4.writeI64(bc, x.timestamp);
5250
+ bare5.writeString(bc, x.eventId);
5251
+ bare5.writeI64(bc, x.timestamp);
4683
5252
  writePersistedScheduleEventKind2(bc, x.kind);
4684
5253
  }
4685
5254
  function readPersistedHibernatableWebSocket(bc) {
4686
5255
  return {
4687
- requestId: bare4.readData(bc),
4688
- lastSeenTimestamp: bare4.readI64(bc),
4689
- msgIndex: bare4.readI64(bc)
5256
+ requestId: bare5.readData(bc),
5257
+ lastSeenTimestamp: bare5.readI64(bc),
5258
+ msgIndex: bare5.readI64(bc)
4690
5259
  };
4691
5260
  }
4692
5261
  function writePersistedHibernatableWebSocket(bc, x) {
4693
- bare4.writeData(bc, x.requestId);
4694
- bare4.writeI64(bc, x.lastSeenTimestamp);
4695
- bare4.writeI64(bc, x.msgIndex);
5262
+ bare5.writeData(bc, x.requestId);
5263
+ bare5.writeI64(bc, x.lastSeenTimestamp);
5264
+ bare5.writeI64(bc, x.msgIndex);
4696
5265
  }
4697
- function read22(bc) {
4698
- const len = bare4.readUintSafe(bc);
5266
+ function read23(bc) {
5267
+ const len = bare5.readUintSafe(bc);
4699
5268
  if (len === 0) {
4700
5269
  return [];
4701
5270
  }
@@ -4705,14 +5274,14 @@ function read22(bc) {
4705
5274
  }
4706
5275
  return result;
4707
5276
  }
4708
- function write22(bc, x) {
4709
- bare4.writeUintSafe(bc, x.length);
5277
+ function write23(bc, x) {
5278
+ bare5.writeUintSafe(bc, x.length);
4710
5279
  for (let i = 0; i < x.length; i++) {
4711
5280
  writePersistedConnection2(bc, x[i]);
4712
5281
  }
4713
5282
  }
4714
- function read32(bc) {
4715
- const len = bare4.readUintSafe(bc);
5283
+ function read33(bc) {
5284
+ const len = bare5.readUintSafe(bc);
4716
5285
  if (len === 0) {
4717
5286
  return [];
4718
5287
  }
@@ -4722,14 +5291,14 @@ function read32(bc) {
4722
5291
  }
4723
5292
  return result;
4724
5293
  }
4725
- function write32(bc, x) {
4726
- bare4.writeUintSafe(bc, x.length);
5294
+ function write33(bc, x) {
5295
+ bare5.writeUintSafe(bc, x.length);
4727
5296
  for (let i = 0; i < x.length; i++) {
4728
5297
  writePersistedScheduleEvent2(bc, x[i]);
4729
5298
  }
4730
5299
  }
4731
- function read4(bc) {
4732
- const len = bare4.readUintSafe(bc);
5300
+ function read42(bc) {
5301
+ const len = bare5.readUintSafe(bc);
4733
5302
  if (len === 0) {
4734
5303
  return [];
4735
5304
  }
@@ -4739,80 +5308,80 @@ function read4(bc) {
4739
5308
  }
4740
5309
  return result;
4741
5310
  }
4742
- function write4(bc, x) {
4743
- bare4.writeUintSafe(bc, x.length);
5311
+ function write42(bc, x) {
5312
+ bare5.writeUintSafe(bc, x.length);
4744
5313
  for (let i = 0; i < x.length; i++) {
4745
5314
  writePersistedHibernatableWebSocket(bc, x[i]);
4746
5315
  }
4747
5316
  }
4748
5317
  function readPersistedActor2(bc) {
4749
5318
  return {
4750
- input: read14(bc),
4751
- hasInitialized: bare4.readBool(bc),
4752
- state: bare4.readData(bc),
4753
- connections: read22(bc),
4754
- scheduledEvents: read32(bc),
4755
- hibernatableWebSockets: read4(bc)
5319
+ input: read15(bc),
5320
+ hasInitialized: bare5.readBool(bc),
5321
+ state: bare5.readData(bc),
5322
+ connections: read23(bc),
5323
+ scheduledEvents: read33(bc),
5324
+ hibernatableWebSockets: read42(bc)
4756
5325
  };
4757
5326
  }
4758
5327
  function writePersistedActor2(bc, x) {
4759
- write14(bc, x.input);
4760
- bare4.writeBool(bc, x.hasInitialized);
4761
- bare4.writeData(bc, x.state);
4762
- write22(bc, x.connections);
4763
- write32(bc, x.scheduledEvents);
4764
- write4(bc, x.hibernatableWebSockets);
5328
+ write15(bc, x.input);
5329
+ bare5.writeBool(bc, x.hasInitialized);
5330
+ bare5.writeData(bc, x.state);
5331
+ write23(bc, x.connections);
5332
+ write33(bc, x.scheduledEvents);
5333
+ write42(bc, x.hibernatableWebSockets);
4765
5334
  }
4766
5335
  function encodePersistedActor2(x) {
4767
- const bc = new bare4.ByteCursor(
4768
- new Uint8Array(config4.initialBufferLength),
4769
- config4
5336
+ const bc = new bare5.ByteCursor(
5337
+ new Uint8Array(config5.initialBufferLength),
5338
+ config5
4770
5339
  );
4771
5340
  writePersistedActor2(bc, x);
4772
5341
  return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
4773
5342
  }
4774
5343
  function decodePersistedActor2(bytes) {
4775
- const bc = new bare4.ByteCursor(bytes, config4);
5344
+ const bc = new bare5.ByteCursor(bytes, config5);
4776
5345
  const result = readPersistedActor2(bc);
4777
5346
  if (bc.offset < bc.view.byteLength) {
4778
- throw new bare4.BareError(bc.offset, "remaining bytes");
5347
+ throw new bare5.BareError(bc.offset, "remaining bytes");
4779
5348
  }
4780
5349
  return result;
4781
5350
  }
4782
5351
 
4783
5352
  // dist/schemas/actor-persist/v3.ts
4784
- import * as bare5 from "@rivetkit/bare-ts";
4785
- var config5 = /* @__PURE__ */ bare5.Config({});
5353
+ import * as bare6 from "@rivetkit/bare-ts";
5354
+ var config6 = /* @__PURE__ */ bare6.Config({});
4786
5355
  function readGatewayId(bc) {
4787
- return bare5.readFixedData(bc, 4);
5356
+ return bare6.readFixedData(bc, 4);
4788
5357
  }
4789
5358
  function writeGatewayId(bc, x) {
4790
5359
  assert(x.byteLength === 4);
4791
- bare5.writeFixedData(bc, x);
5360
+ bare6.writeFixedData(bc, x);
4792
5361
  }
4793
5362
  function readRequestId(bc) {
4794
- return bare5.readFixedData(bc, 4);
5363
+ return bare6.readFixedData(bc, 4);
4795
5364
  }
4796
5365
  function writeRequestId(bc, x) {
4797
5366
  assert(x.byteLength === 4);
4798
- bare5.writeFixedData(bc, x);
5367
+ bare6.writeFixedData(bc, x);
4799
5368
  }
4800
5369
  function readCbor(bc) {
4801
- return bare5.readData(bc);
5370
+ return bare6.readData(bc);
4802
5371
  }
4803
5372
  function writeCbor(bc, x) {
4804
- bare5.writeData(bc, x);
5373
+ bare6.writeData(bc, x);
4805
5374
  }
4806
5375
  function readSubscription(bc) {
4807
5376
  return {
4808
- eventName: bare5.readString(bc)
5377
+ eventName: bare6.readString(bc)
4809
5378
  };
4810
5379
  }
4811
5380
  function writeSubscription(bc, x) {
4812
- bare5.writeString(bc, x.eventName);
5381
+ bare6.writeString(bc, x.eventName);
4813
5382
  }
4814
- function read05(bc) {
4815
- const len = bare5.readUintSafe(bc);
5383
+ function read06(bc) {
5384
+ const len = bare6.readUintSafe(bc);
4816
5385
  if (len === 0) {
4817
5386
  return [];
4818
5387
  }
@@ -4822,100 +5391,100 @@ function read05(bc) {
4822
5391
  }
4823
5392
  return result;
4824
5393
  }
4825
- function write05(bc, x) {
4826
- bare5.writeUintSafe(bc, x.length);
5394
+ function write06(bc, x) {
5395
+ bare6.writeUintSafe(bc, x.length);
4827
5396
  for (let i = 0; i < x.length; i++) {
4828
5397
  writeSubscription(bc, x[i]);
4829
5398
  }
4830
5399
  }
4831
- function read15(bc) {
4832
- const len = bare5.readUintSafe(bc);
5400
+ function read16(bc) {
5401
+ const len = bare6.readUintSafe(bc);
4833
5402
  const result = /* @__PURE__ */ new Map();
4834
5403
  for (let i = 0; i < len; i++) {
4835
5404
  const offset = bc.offset;
4836
- const key = bare5.readString(bc);
5405
+ const key = bare6.readString(bc);
4837
5406
  if (result.has(key)) {
4838
5407
  bc.offset = offset;
4839
- throw new bare5.BareError(offset, "duplicated key");
5408
+ throw new bare6.BareError(offset, "duplicated key");
4840
5409
  }
4841
- result.set(key, bare5.readString(bc));
5410
+ result.set(key, bare6.readString(bc));
4842
5411
  }
4843
5412
  return result;
4844
5413
  }
4845
- function write15(bc, x) {
4846
- bare5.writeUintSafe(bc, x.size);
5414
+ function write16(bc, x) {
5415
+ bare6.writeUintSafe(bc, x.size);
4847
5416
  for (const kv of x) {
4848
- bare5.writeString(bc, kv[0]);
4849
- bare5.writeString(bc, kv[1]);
5417
+ bare6.writeString(bc, kv[0]);
5418
+ bare6.writeString(bc, kv[1]);
4850
5419
  }
4851
5420
  }
4852
5421
  function readConn(bc) {
4853
5422
  return {
4854
- id: bare5.readString(bc),
5423
+ id: bare6.readString(bc),
4855
5424
  parameters: readCbor(bc),
4856
5425
  state: readCbor(bc),
4857
- subscriptions: read05(bc),
5426
+ subscriptions: read06(bc),
4858
5427
  gatewayId: readGatewayId(bc),
4859
5428
  requestId: readRequestId(bc),
4860
- serverMessageIndex: bare5.readU16(bc),
4861
- clientMessageIndex: bare5.readU16(bc),
4862
- requestPath: bare5.readString(bc),
4863
- requestHeaders: read15(bc)
5429
+ serverMessageIndex: bare6.readU16(bc),
5430
+ clientMessageIndex: bare6.readU16(bc),
5431
+ requestPath: bare6.readString(bc),
5432
+ requestHeaders: read16(bc)
4864
5433
  };
4865
5434
  }
4866
5435
  function writeConn(bc, x) {
4867
- bare5.writeString(bc, x.id);
5436
+ bare6.writeString(bc, x.id);
4868
5437
  writeCbor(bc, x.parameters);
4869
5438
  writeCbor(bc, x.state);
4870
- write05(bc, x.subscriptions);
5439
+ write06(bc, x.subscriptions);
4871
5440
  writeGatewayId(bc, x.gatewayId);
4872
5441
  writeRequestId(bc, x.requestId);
4873
- bare5.writeU16(bc, x.serverMessageIndex);
4874
- bare5.writeU16(bc, x.clientMessageIndex);
4875
- bare5.writeString(bc, x.requestPath);
4876
- write15(bc, x.requestHeaders);
5442
+ bare6.writeU16(bc, x.serverMessageIndex);
5443
+ bare6.writeU16(bc, x.clientMessageIndex);
5444
+ bare6.writeString(bc, x.requestPath);
5445
+ write16(bc, x.requestHeaders);
4877
5446
  }
4878
5447
  function encodeConn(x) {
4879
- const bc = new bare5.ByteCursor(
4880
- new Uint8Array(config5.initialBufferLength),
4881
- config5
5448
+ const bc = new bare6.ByteCursor(
5449
+ new Uint8Array(config6.initialBufferLength),
5450
+ config6
4882
5451
  );
4883
5452
  writeConn(bc, x);
4884
5453
  return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
4885
5454
  }
4886
5455
  function decodeConn(bytes) {
4887
- const bc = new bare5.ByteCursor(bytes, config5);
5456
+ const bc = new bare6.ByteCursor(bytes, config6);
4888
5457
  const result = readConn(bc);
4889
5458
  if (bc.offset < bc.view.byteLength) {
4890
- throw new bare5.BareError(bc.offset, "remaining bytes");
5459
+ throw new bare6.BareError(bc.offset, "remaining bytes");
4891
5460
  }
4892
5461
  return result;
4893
5462
  }
4894
- function read23(bc) {
4895
- return bare5.readBool(bc) ? readCbor(bc) : null;
5463
+ function read24(bc) {
5464
+ return bare6.readBool(bc) ? readCbor(bc) : null;
4896
5465
  }
4897
- function write23(bc, x) {
4898
- bare5.writeBool(bc, x !== null);
5466
+ function write24(bc, x) {
5467
+ bare6.writeBool(bc, x !== null);
4899
5468
  if (x !== null) {
4900
5469
  writeCbor(bc, x);
4901
5470
  }
4902
5471
  }
4903
5472
  function readScheduleEvent(bc) {
4904
5473
  return {
4905
- eventId: bare5.readString(bc),
4906
- timestamp: bare5.readI64(bc),
4907
- action: bare5.readString(bc),
4908
- args: read23(bc)
5474
+ eventId: bare6.readString(bc),
5475
+ timestamp: bare6.readI64(bc),
5476
+ action: bare6.readString(bc),
5477
+ args: read24(bc)
4909
5478
  };
4910
5479
  }
4911
5480
  function writeScheduleEvent(bc, x) {
4912
- bare5.writeString(bc, x.eventId);
4913
- bare5.writeI64(bc, x.timestamp);
4914
- bare5.writeString(bc, x.action);
4915
- write23(bc, x.args);
5481
+ bare6.writeString(bc, x.eventId);
5482
+ bare6.writeI64(bc, x.timestamp);
5483
+ bare6.writeString(bc, x.action);
5484
+ write24(bc, x.args);
4916
5485
  }
4917
- function read33(bc) {
4918
- const len = bare5.readUintSafe(bc);
5486
+ function read34(bc) {
5487
+ const len = bare6.readUintSafe(bc);
4919
5488
  if (len === 0) {
4920
5489
  return [];
4921
5490
  }
@@ -4925,39 +5494,39 @@ function read33(bc) {
4925
5494
  }
4926
5495
  return result;
4927
5496
  }
4928
- function write33(bc, x) {
4929
- bare5.writeUintSafe(bc, x.length);
5497
+ function write34(bc, x) {
5498
+ bare6.writeUintSafe(bc, x.length);
4930
5499
  for (let i = 0; i < x.length; i++) {
4931
5500
  writeScheduleEvent(bc, x[i]);
4932
5501
  }
4933
5502
  }
4934
5503
  function readActor(bc) {
4935
5504
  return {
4936
- input: read23(bc),
4937
- hasInitialized: bare5.readBool(bc),
5505
+ input: read24(bc),
5506
+ hasInitialized: bare6.readBool(bc),
4938
5507
  state: readCbor(bc),
4939
- scheduledEvents: read33(bc)
5508
+ scheduledEvents: read34(bc)
4940
5509
  };
4941
5510
  }
4942
5511
  function writeActor(bc, x) {
4943
- write23(bc, x.input);
4944
- bare5.writeBool(bc, x.hasInitialized);
5512
+ write24(bc, x.input);
5513
+ bare6.writeBool(bc, x.hasInitialized);
4945
5514
  writeCbor(bc, x.state);
4946
- write33(bc, x.scheduledEvents);
5515
+ write34(bc, x.scheduledEvents);
4947
5516
  }
4948
5517
  function encodeActor(x) {
4949
- const bc = new bare5.ByteCursor(
4950
- new Uint8Array(config5.initialBufferLength),
4951
- config5
5518
+ const bc = new bare6.ByteCursor(
5519
+ new Uint8Array(config6.initialBufferLength),
5520
+ config6
4952
5521
  );
4953
5522
  writeActor(bc, x);
4954
5523
  return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
4955
5524
  }
4956
5525
  function decodeActor(bytes) {
4957
- const bc = new bare5.ByteCursor(bytes, config5);
5526
+ const bc = new bare6.ByteCursor(bytes, config6);
4958
5527
  const result = readActor(bc);
4959
5528
  if (bc.offset < bc.view.byteLength) {
4960
- throw new bare5.BareError(bc.offset, "remaining bytes");
5529
+ throw new bare6.BareError(bc.offset, "remaining bytes");
4961
5530
  }
4962
5531
  return result;
4963
5532
  }
@@ -4965,8 +5534,282 @@ function assert(condition, message) {
4965
5534
  if (!condition) throw new Error(message ?? "Assertion failed");
4966
5535
  }
4967
5536
 
5537
+ // dist/schemas/actor-persist/v4.ts
5538
+ import * as bare7 from "@rivetkit/bare-ts";
5539
+ var config7 = /* @__PURE__ */ bare7.Config({});
5540
+ function readGatewayId2(bc) {
5541
+ return bare7.readFixedData(bc, 4);
5542
+ }
5543
+ function writeGatewayId2(bc, x) {
5544
+ assert2(x.byteLength === 4);
5545
+ bare7.writeFixedData(bc, x);
5546
+ }
5547
+ function readRequestId2(bc) {
5548
+ return bare7.readFixedData(bc, 4);
5549
+ }
5550
+ function writeRequestId2(bc, x) {
5551
+ assert2(x.byteLength === 4);
5552
+ bare7.writeFixedData(bc, x);
5553
+ }
5554
+ function readCbor2(bc) {
5555
+ return bare7.readData(bc);
5556
+ }
5557
+ function writeCbor2(bc, x) {
5558
+ bare7.writeData(bc, x);
5559
+ }
5560
+ function readSubscription2(bc) {
5561
+ return {
5562
+ eventName: bare7.readString(bc)
5563
+ };
5564
+ }
5565
+ function writeSubscription2(bc, x) {
5566
+ bare7.writeString(bc, x.eventName);
5567
+ }
5568
+ function read07(bc) {
5569
+ const len = bare7.readUintSafe(bc);
5570
+ if (len === 0) {
5571
+ return [];
5572
+ }
5573
+ const result = [readSubscription2(bc)];
5574
+ for (let i = 1; i < len; i++) {
5575
+ result[i] = readSubscription2(bc);
5576
+ }
5577
+ return result;
5578
+ }
5579
+ function write07(bc, x) {
5580
+ bare7.writeUintSafe(bc, x.length);
5581
+ for (let i = 0; i < x.length; i++) {
5582
+ writeSubscription2(bc, x[i]);
5583
+ }
5584
+ }
5585
+ function read17(bc) {
5586
+ const len = bare7.readUintSafe(bc);
5587
+ const result = /* @__PURE__ */ new Map();
5588
+ for (let i = 0; i < len; i++) {
5589
+ const offset = bc.offset;
5590
+ const key = bare7.readString(bc);
5591
+ if (result.has(key)) {
5592
+ bc.offset = offset;
5593
+ throw new bare7.BareError(offset, "duplicated key");
5594
+ }
5595
+ result.set(key, bare7.readString(bc));
5596
+ }
5597
+ return result;
5598
+ }
5599
+ function write17(bc, x) {
5600
+ bare7.writeUintSafe(bc, x.size);
5601
+ for (const kv of x) {
5602
+ bare7.writeString(bc, kv[0]);
5603
+ bare7.writeString(bc, kv[1]);
5604
+ }
5605
+ }
5606
+ function readConn2(bc) {
5607
+ return {
5608
+ id: bare7.readString(bc),
5609
+ parameters: readCbor2(bc),
5610
+ state: readCbor2(bc),
5611
+ subscriptions: read07(bc),
5612
+ gatewayId: readGatewayId2(bc),
5613
+ requestId: readRequestId2(bc),
5614
+ serverMessageIndex: bare7.readU16(bc),
5615
+ clientMessageIndex: bare7.readU16(bc),
5616
+ requestPath: bare7.readString(bc),
5617
+ requestHeaders: read17(bc)
5618
+ };
5619
+ }
5620
+ function writeConn2(bc, x) {
5621
+ bare7.writeString(bc, x.id);
5622
+ writeCbor2(bc, x.parameters);
5623
+ writeCbor2(bc, x.state);
5624
+ write07(bc, x.subscriptions);
5625
+ writeGatewayId2(bc, x.gatewayId);
5626
+ writeRequestId2(bc, x.requestId);
5627
+ bare7.writeU16(bc, x.serverMessageIndex);
5628
+ bare7.writeU16(bc, x.clientMessageIndex);
5629
+ bare7.writeString(bc, x.requestPath);
5630
+ write17(bc, x.requestHeaders);
5631
+ }
5632
+ function encodeConn2(x) {
5633
+ const bc = new bare7.ByteCursor(
5634
+ new Uint8Array(config7.initialBufferLength),
5635
+ config7
5636
+ );
5637
+ writeConn2(bc, x);
5638
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
5639
+ }
5640
+ function decodeConn2(bytes) {
5641
+ const bc = new bare7.ByteCursor(bytes, config7);
5642
+ const result = readConn2(bc);
5643
+ if (bc.offset < bc.view.byteLength) {
5644
+ throw new bare7.BareError(bc.offset, "remaining bytes");
5645
+ }
5646
+ return result;
5647
+ }
5648
+ function read25(bc) {
5649
+ return bare7.readBool(bc) ? readCbor2(bc) : null;
5650
+ }
5651
+ function write25(bc, x) {
5652
+ bare7.writeBool(bc, x !== null);
5653
+ if (x !== null) {
5654
+ writeCbor2(bc, x);
5655
+ }
5656
+ }
5657
+ function readScheduleEvent2(bc) {
5658
+ return {
5659
+ eventId: bare7.readString(bc),
5660
+ timestamp: bare7.readI64(bc),
5661
+ action: bare7.readString(bc),
5662
+ args: read25(bc)
5663
+ };
5664
+ }
5665
+ function writeScheduleEvent2(bc, x) {
5666
+ bare7.writeString(bc, x.eventId);
5667
+ bare7.writeI64(bc, x.timestamp);
5668
+ bare7.writeString(bc, x.action);
5669
+ write25(bc, x.args);
5670
+ }
5671
+ function read35(bc) {
5672
+ const len = bare7.readUintSafe(bc);
5673
+ if (len === 0) {
5674
+ return [];
5675
+ }
5676
+ const result = [readScheduleEvent2(bc)];
5677
+ for (let i = 1; i < len; i++) {
5678
+ result[i] = readScheduleEvent2(bc);
5679
+ }
5680
+ return result;
5681
+ }
5682
+ function write35(bc, x) {
5683
+ bare7.writeUintSafe(bc, x.length);
5684
+ for (let i = 0; i < x.length; i++) {
5685
+ writeScheduleEvent2(bc, x[i]);
5686
+ }
5687
+ }
5688
+ function readActor2(bc) {
5689
+ return {
5690
+ input: read25(bc),
5691
+ hasInitialized: bare7.readBool(bc),
5692
+ state: readCbor2(bc),
5693
+ scheduledEvents: read35(bc)
5694
+ };
5695
+ }
5696
+ function writeActor2(bc, x) {
5697
+ write25(bc, x.input);
5698
+ bare7.writeBool(bc, x.hasInitialized);
5699
+ writeCbor2(bc, x.state);
5700
+ write35(bc, x.scheduledEvents);
5701
+ }
5702
+ function encodeActor2(x) {
5703
+ const bc = new bare7.ByteCursor(
5704
+ new Uint8Array(config7.initialBufferLength),
5705
+ config7
5706
+ );
5707
+ writeActor2(bc, x);
5708
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
5709
+ }
5710
+ function decodeActor2(bytes) {
5711
+ const bc = new bare7.ByteCursor(bytes, config7);
5712
+ const result = readActor2(bc);
5713
+ if (bc.offset < bc.view.byteLength) {
5714
+ throw new bare7.BareError(bc.offset, "remaining bytes");
5715
+ }
5716
+ return result;
5717
+ }
5718
+ function readQueueMetadata(bc) {
5719
+ return {
5720
+ nextId: bare7.readU64(bc),
5721
+ size: bare7.readU32(bc)
5722
+ };
5723
+ }
5724
+ function writeQueueMetadata(bc, x) {
5725
+ bare7.writeU64(bc, x.nextId);
5726
+ bare7.writeU32(bc, x.size);
5727
+ }
5728
+ function encodeQueueMetadata(x) {
5729
+ const bc = new bare7.ByteCursor(
5730
+ new Uint8Array(config7.initialBufferLength),
5731
+ config7
5732
+ );
5733
+ writeQueueMetadata(bc, x);
5734
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
5735
+ }
5736
+ function decodeQueueMetadata(bytes) {
5737
+ const bc = new bare7.ByteCursor(bytes, config7);
5738
+ const result = readQueueMetadata(bc);
5739
+ if (bc.offset < bc.view.byteLength) {
5740
+ throw new bare7.BareError(bc.offset, "remaining bytes");
5741
+ }
5742
+ return result;
5743
+ }
5744
+ function read43(bc) {
5745
+ return bare7.readBool(bc) ? bare7.readU32(bc) : null;
5746
+ }
5747
+ function write43(bc, x) {
5748
+ bare7.writeBool(bc, x !== null);
5749
+ if (x !== null) {
5750
+ bare7.writeU32(bc, x);
5751
+ }
5752
+ }
5753
+ function read5(bc) {
5754
+ return bare7.readBool(bc) ? bare7.readI64(bc) : null;
5755
+ }
5756
+ function write5(bc, x) {
5757
+ bare7.writeBool(bc, x !== null);
5758
+ if (x !== null) {
5759
+ bare7.writeI64(bc, x);
5760
+ }
5761
+ }
5762
+ function read6(bc) {
5763
+ return bare7.readBool(bc) ? bare7.readBool(bc) : null;
5764
+ }
5765
+ function write6(bc, x) {
5766
+ bare7.writeBool(bc, x !== null);
5767
+ if (x !== null) {
5768
+ bare7.writeBool(bc, x);
5769
+ }
5770
+ }
5771
+ function readQueueMessage(bc) {
5772
+ return {
5773
+ name: bare7.readString(bc),
5774
+ body: readCbor2(bc),
5775
+ createdAt: bare7.readI64(bc),
5776
+ failureCount: read43(bc),
5777
+ availableAt: read5(bc),
5778
+ inFlight: read6(bc),
5779
+ inFlightAt: read5(bc)
5780
+ };
5781
+ }
5782
+ function writeQueueMessage(bc, x) {
5783
+ bare7.writeString(bc, x.name);
5784
+ writeCbor2(bc, x.body);
5785
+ bare7.writeI64(bc, x.createdAt);
5786
+ write43(bc, x.failureCount);
5787
+ write5(bc, x.availableAt);
5788
+ write6(bc, x.inFlight);
5789
+ write5(bc, x.inFlightAt);
5790
+ }
5791
+ function encodeQueueMessage(x) {
5792
+ const bc = new bare7.ByteCursor(
5793
+ new Uint8Array(config7.initialBufferLength),
5794
+ config7
5795
+ );
5796
+ writeQueueMessage(bc, x);
5797
+ return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
5798
+ }
5799
+ function decodeQueueMessage(bytes) {
5800
+ const bc = new bare7.ByteCursor(bytes, config7);
5801
+ const result = readQueueMessage(bc);
5802
+ if (bc.offset < bc.view.byteLength) {
5803
+ throw new bare7.BareError(bc.offset, "remaining bytes");
5804
+ }
5805
+ return result;
5806
+ }
5807
+ function assert2(condition, message) {
5808
+ if (!condition) throw new Error(message ?? "Assertion failed");
5809
+ }
5810
+
4968
5811
  // src/schemas/actor-persist/versioned.ts
4969
- var CURRENT_VERSION2 = 3;
5812
+ var CURRENT_VERSION3 = 4;
4970
5813
  var v1ToV22 = (v1Data) => ({
4971
5814
  ...v1Data,
4972
5815
  connections: v1Data.connections.map((conn) => ({
@@ -4975,7 +5818,7 @@ var v1ToV22 = (v1Data) => ({
4975
5818
  })),
4976
5819
  hibernatableWebSockets: []
4977
5820
  });
4978
- var v2ToV3 = (v2Data) => {
5821
+ var v2ToV32 = (v2Data) => {
4979
5822
  const scheduledEvents = v2Data.scheduledEvents.map(
4980
5823
  (event) => {
4981
5824
  if (event.kind.tag === "GenericPersistedScheduleEvent") {
@@ -4996,7 +5839,13 @@ var v2ToV3 = (v2Data) => {
4996
5839
  scheduledEvents
4997
5840
  };
4998
5841
  };
4999
- var v3ToV2 = (v3Data) => {
5842
+ var v3ToV4 = (v3Data) => {
5843
+ return v3Data;
5844
+ };
5845
+ var v4ToV3 = (v4Data) => {
5846
+ return v4Data;
5847
+ };
5848
+ var v3ToV22 = (v3Data) => {
5000
5849
  const scheduledEvents = v3Data.scheduledEvents.map((event) => ({
5001
5850
  eventId: event.eventId,
5002
5851
  timestamp: event.timestamp,
@@ -5038,6 +5887,8 @@ var ACTOR_VERSIONED = createVersionedDataHandler2({
5038
5887
  return decodePersistedActor2(bytes);
5039
5888
  case 3:
5040
5889
  return decodeActor(bytes);
5890
+ case 4:
5891
+ return decodeActor2(bytes);
5041
5892
  default:
5042
5893
  throw new Error(`Unknown version ${version}`);
5043
5894
  }
@@ -5050,18 +5901,28 @@ var ACTOR_VERSIONED = createVersionedDataHandler2({
5050
5901
  return encodePersistedActor2(data);
5051
5902
  case 3:
5052
5903
  return encodeActor(data);
5904
+ case 4:
5905
+ return encodeActor2(data);
5053
5906
  default:
5054
5907
  throw new Error(`Unknown version ${version}`);
5055
5908
  }
5056
5909
  },
5057
- deserializeConverters: () => [v1ToV22, v2ToV3],
5058
- serializeConverters: () => [v3ToV2, v2ToV12]
5910
+ deserializeConverters: () => [v1ToV22, v2ToV32, v3ToV4],
5911
+ serializeConverters: () => [v4ToV3, v3ToV22, v2ToV12]
5059
5912
  });
5913
+ var v3ConnToV4 = (v3Data) => {
5914
+ return v3Data;
5915
+ };
5916
+ var v4ConnToV3 = (v4Data) => {
5917
+ return v4Data;
5918
+ };
5060
5919
  var CONN_VERSIONED = createVersionedDataHandler2({
5061
5920
  deserializeVersion: (bytes, version) => {
5062
5921
  switch (version) {
5063
5922
  case 3:
5064
5923
  return decodeConn(bytes);
5924
+ case 4:
5925
+ return decodeConn2(bytes);
5065
5926
  default:
5066
5927
  throw new Error(
5067
5928
  `Conn type only exists in version 3+, got version ${version}`
@@ -5072,12 +5933,62 @@ var CONN_VERSIONED = createVersionedDataHandler2({
5072
5933
  switch (version) {
5073
5934
  case 3:
5074
5935
  return encodeConn(data);
5936
+ case 4:
5937
+ return encodeConn2(data);
5075
5938
  default:
5076
5939
  throw new Error(
5077
5940
  `Conn type only exists in version 3+, got version ${version}`
5078
5941
  );
5079
5942
  }
5080
5943
  },
5944
+ deserializeConverters: () => [v3ConnToV4],
5945
+ serializeConverters: () => [v4ConnToV3]
5946
+ });
5947
+ var QUEUE_METADATA_VERSIONED = createVersionedDataHandler2({
5948
+ deserializeVersion: (bytes, version) => {
5949
+ switch (version) {
5950
+ case 4:
5951
+ return decodeQueueMetadata(bytes);
5952
+ default:
5953
+ throw new Error(
5954
+ `QueueMetadata type only exists in version 4+, got version ${version}`
5955
+ );
5956
+ }
5957
+ },
5958
+ serializeVersion: (data, version) => {
5959
+ switch (version) {
5960
+ case 4:
5961
+ return encodeQueueMetadata(data);
5962
+ default:
5963
+ throw new Error(
5964
+ `QueueMetadata type only exists in version 4+, got version ${version}`
5965
+ );
5966
+ }
5967
+ },
5968
+ deserializeConverters: () => [],
5969
+ serializeConverters: () => []
5970
+ });
5971
+ var QUEUE_MESSAGE_VERSIONED = createVersionedDataHandler2({
5972
+ deserializeVersion: (bytes, version) => {
5973
+ switch (version) {
5974
+ case 4:
5975
+ return decodeQueueMessage(bytes);
5976
+ default:
5977
+ throw new Error(
5978
+ `QueueMessage type only exists in version 4+, got version ${version}`
5979
+ );
5980
+ }
5981
+ },
5982
+ serializeVersion: (data, version) => {
5983
+ switch (version) {
5984
+ case 4:
5985
+ return encodeQueueMessage(data);
5986
+ default:
5987
+ throw new Error(
5988
+ `QueueMessage type only exists in version 4+, got version ${version}`
5989
+ );
5990
+ }
5991
+ },
5081
5992
  deserializeConverters: () => [],
5082
5993
  serializeConverters: () => []
5083
5994
  });
@@ -5092,7 +6003,7 @@ function serializeEmptyPersistData(input) {
5092
6003
  };
5093
6004
  return ACTOR_VERSIONED.serializeWithEmbeddedVersion(
5094
6005
  persistData,
5095
- CURRENT_VERSION2
6006
+ CURRENT_VERSION3
5096
6007
  );
5097
6008
  }
5098
6009
  function getInitialActorKvState(input) {
@@ -5102,28 +6013,25 @@ function getInitialActorKvState(input) {
5102
6013
 
5103
6014
  export {
5104
6015
  createHttpDriver,
5105
- CURRENT_VERSION,
6016
+ CURRENT_VERSION2 as CURRENT_VERSION,
5106
6017
  TO_SERVER_VERSIONED2 as TO_SERVER_VERSIONED,
5107
6018
  TO_CLIENT_VERSIONED2 as TO_CLIENT_VERSIONED,
5108
6019
  HTTP_ACTION_REQUEST_VERSIONED,
5109
6020
  HTTP_ACTION_RESPONSE_VERSIONED,
6021
+ HTTP_QUEUE_SEND_REQUEST_VERSIONED,
6022
+ HTTP_QUEUE_SEND_RESPONSE_VERSIONED,
5110
6023
  HTTP_RESPONSE_ERROR_VERSIONED,
5111
6024
  ToClientSchema,
5112
6025
  ToServerSchema,
5113
6026
  HttpActionRequestSchema,
5114
6027
  HttpActionResponseSchema,
6028
+ HttpQueueSendRequestSchema,
6029
+ HttpQueueSendResponseSchema,
5115
6030
  HttpResponseErrorSchema,
5116
6031
  uint8ArrayToBase64,
5117
6032
  contentTypeForEncoding,
5118
6033
  serializeWithEncoding,
5119
6034
  deserializeWithEncoding,
5120
- loggerWithoutContext,
5121
- assertUnreachable2 as assertUnreachable,
5122
- DeadlineError,
5123
- deadline,
5124
- generateSecureToken,
5125
- isStatePath,
5126
- isConnStatePath,
5127
6035
  EncodingSchema,
5128
6036
  CachedSerializer,
5129
6037
  jsonStringifyCompat,
@@ -5133,14 +6041,12 @@ export {
5133
6041
  CONN_STATE_MANAGER_SYMBOL,
5134
6042
  CONN_SEND_MESSAGE_SYMBOL,
5135
6043
  Conn,
5136
- KEYS,
5137
- makeConnKey,
5138
- ActorKv,
5139
- ActorContext,
5140
6044
  ActionContext,
5141
- CURRENT_VERSION2,
6045
+ CURRENT_VERSION3 as CURRENT_VERSION2,
5142
6046
  ACTOR_VERSIONED,
5143
6047
  CONN_VERSIONED,
6048
+ QUEUE_METADATA_VERSIONED,
6049
+ QUEUE_MESSAGE_VERSIONED,
5144
6050
  BeforeConnectContext,
5145
6051
  ConnectContext,
5146
6052
  CreateConnStateContext,
@@ -5170,6 +6076,7 @@ export {
5170
6076
  WS_TEST_PROTOCOL_PATH,
5171
6077
  ALLOWED_PUBLIC_HEADERS,
5172
6078
  handleAction,
6079
+ handleQueueSend,
5173
6080
  handleRawRequest,
5174
6081
  ENGINE_PORT,
5175
6082
  ENGINE_ENDPOINT,
@@ -5190,11 +6097,22 @@ export {
5190
6097
  handleRouteError,
5191
6098
  handleMetadataRequest,
5192
6099
  handleHealthRequest,
6100
+ inspectorLogger,
6101
+ timingSafeEqual,
5193
6102
  routeWebSocket,
5194
6103
  parseWebSocketProtocols,
5195
6104
  truncateRawWebSocketPathPrefix,
6105
+ getRequireFn,
6106
+ importNodeDependencies,
6107
+ getNodeCrypto,
6108
+ getNodeFsSync,
6109
+ getNodeFs,
6110
+ getNodePath,
6111
+ getNodeOs,
6112
+ getNodeChildProcess,
6113
+ getNodeStream,
5196
6114
  createRouter,
5197
6115
  buildManagerRouter,
5198
6116
  getInitialActorKvState
5199
6117
  };
5200
- //# sourceMappingURL=chunk-GMAVRZSF.js.map
6118
+ //# sourceMappingURL=chunk-M2T62AZQ.js.map