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