rivetkit 2.1.5 → 2.1.6-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-PB5AEMKQ.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-TADUYCHF.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-GQGRQDRL.cjs → chunk-DH6UINWA.cjs} +4 -4
- package/dist/tsup/{chunk-GQGRQDRL.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-S662Y6ZU.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-IIJNPVPQ.cjs → chunk-GUHXWPGB.cjs} +1515 -1479
- package/dist/tsup/chunk-GUHXWPGB.cjs.map +1 -0
- package/dist/tsup/{chunk-TI5PXQGG.cjs → chunk-HNE2AK6C.cjs} +2375 -3713
- package/dist/tsup/chunk-HNE2AK6C.cjs.map +1 -0
- package/dist/tsup/{chunk-2OK7S6QF.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-U5SMSA27.cjs → chunk-JJNZQDUN.cjs} +667 -2517
- package/dist/tsup/chunk-JJNZQDUN.cjs.map +1 -0
- package/dist/tsup/{chunk-ZPWOYQHN.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-HYPIHCDT.cjs → chunk-MPLMTJY5.cjs} +123 -23
- package/dist/tsup/chunk-MPLMTJY5.cjs.map +1 -0
- package/dist/tsup/{chunk-MIX2KB6U.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-WY2SHWXQ.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-7WF2QSIC.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-JC6BEPE7.cjs → chunk-V3JSZR5P.cjs} +3 -3
- package/dist/tsup/{chunk-JC6BEPE7.cjs.map → chunk-V3JSZR5P.cjs.map} +1 -1
- package/dist/tsup/{chunk-OAXJWGMU.cjs → chunk-VBR35EQF.cjs} +271 -339
- package/dist/tsup/chunk-VBR35EQF.cjs.map +1 -0
- package/dist/tsup/{chunk-EIATSBYZ.js → chunk-VWYO36X4.js} +117 -17
- package/dist/tsup/chunk-VWYO36X4.js.map +1 -0
- package/dist/tsup/{chunk-JPXO2H55.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-SRIM3GHD.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 +114 -15
- 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-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-7WF2QSIC.cjs.map +0 -1
- package/dist/tsup/chunk-D2SPAJVT.cjs +0 -645
- package/dist/tsup/chunk-D2SPAJVT.cjs.map +0 -1
- package/dist/tsup/chunk-EIATSBYZ.js.map +0 -1
- package/dist/tsup/chunk-HYPIHCDT.cjs.map +0 -1
- package/dist/tsup/chunk-IIJNPVPQ.cjs.map +0 -1
- package/dist/tsup/chunk-JPXO2H55.js.map +0 -1
- package/dist/tsup/chunk-KJSYAUOM.js.map +0 -1
- package/dist/tsup/chunk-L47L3ZWJ.cjs.map +0 -1
- package/dist/tsup/chunk-MIX2KB6U.js.map +0 -1
- package/dist/tsup/chunk-N4KRDJ56.js.map +0 -1
- package/dist/tsup/chunk-OAXJWGMU.cjs.map +0 -1
- package/dist/tsup/chunk-PB5AEMKQ.cjs.map +0 -1
- package/dist/tsup/chunk-R5OQUSLN.js +0 -645
- package/dist/tsup/chunk-R5OQUSLN.js.map +0 -1
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +0 -1
- package/dist/tsup/chunk-SRIM3GHD.js.map +0 -1
- package/dist/tsup/chunk-TADUYCHF.js.map +0 -1
- package/dist/tsup/chunk-TI5PXQGG.cjs.map +0 -1
- package/dist/tsup/chunk-U5SMSA27.cjs.map +0 -1
- package/dist/tsup/chunk-VKVNIQRQ.js.map +0 -1
- package/dist/tsup/chunk-WY2SHWXQ.js.map +0 -1
- package/dist/tsup/chunk-ZFY5J2EP.cjs.map +0 -1
- package/dist/tsup/chunk-ZPWOYQHN.js.map +0 -1
- package/src/db/sqlite-vfs.ts +0 -12
- /package/dist/tsup/{chunk-S662Y6ZU.js.map → chunk-EONWXYMN.js.map} +0 -0
- /package/dist/tsup/{chunk-2OK7S6QF.js.map → chunk-I5I6OALK.js.map} +0 -0
|
@@ -38,28 +38,26 @@ export function runActorRunTests(driverTestConfig: DriverTestConfig) {
|
|
|
38
38
|
expect(state2.tickCount).toBeGreaterThan(count1);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
test("active run handler keeps actor awake past sleep timeout", async (c) => {
|
|
42
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
"run-stays-awake",
|
|
46
|
-
]);
|
|
44
|
+
const actor = client.runWithTicks.getOrCreate(["run-stays-awake"]);
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
// Wait for run to start
|
|
47
|
+
await waitFor(driverTestConfig, 100);
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
const state1 = await actor.getState();
|
|
50
|
+
expect(state1.runStarted).toBe(true);
|
|
51
|
+
const tickCount1 = state1.tickCount;
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
// Active run loops should keep the actor awake.
|
|
54
|
+
await waitFor(driverTestConfig, RUN_SLEEP_TIMEOUT + 300);
|
|
57
55
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
const state2 = await actor.getState();
|
|
57
|
+
expect(state2.runStarted).toBe(true);
|
|
58
|
+
expect(state2.runExited).toBe(false);
|
|
59
|
+
expect(state2.tickCount).toBeGreaterThan(tickCount1);
|
|
60
|
+
});
|
|
63
61
|
|
|
64
62
|
test("actor without run handler works normally", async (c) => {
|
|
65
63
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
@@ -78,8 +76,8 @@ export function runActorRunTests(driverTestConfig: DriverTestConfig) {
|
|
|
78
76
|
expect(state2.wakeCount).toBe(2);
|
|
79
77
|
});
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
test("run handler can consume from queue", async (c) => {
|
|
80
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
83
81
|
|
|
84
82
|
const actor = client.runWithQueueConsumer.getOrCreate([
|
|
85
83
|
"queue-consumer",
|
|
@@ -107,30 +105,30 @@ export function runActorRunTests(driverTestConfig: DriverTestConfig) {
|
|
|
107
105
|
type: "test",
|
|
108
106
|
value: 2,
|
|
109
107
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
});
|
|
108
|
+
expect(state.messagesReceived[2].body).toEqual({
|
|
109
|
+
type: "test",
|
|
110
|
+
value: 3,
|
|
114
111
|
});
|
|
112
|
+
});
|
|
115
113
|
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
test("queue-waiting run handler can sleep and resume", async (c) => {
|
|
115
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
118
116
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
const actor = client.runWithQueueConsumer.getOrCreate([
|
|
118
|
+
"queue-consumer-sleep",
|
|
119
|
+
]);
|
|
122
120
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
await waitFor(driverTestConfig, 100);
|
|
122
|
+
const state1 = await actor.getState();
|
|
123
|
+
expect(state1.runStarted).toBe(true);
|
|
126
124
|
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
await waitFor(driverTestConfig, RUN_SLEEP_TIMEOUT + 500);
|
|
126
|
+
const state2 = await actor.getState();
|
|
129
127
|
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
expect(state2.wakeCount).toBeGreaterThan(state1.wakeCount);
|
|
129
|
+
});
|
|
132
130
|
|
|
133
|
-
test("run handler that exits early
|
|
131
|
+
test("run handler that exits early sleeps instead of destroying", async (c) => {
|
|
134
132
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
135
133
|
|
|
136
134
|
const actor = client.runWithEarlyExit.getOrCreate(["early-exit"]);
|
|
@@ -141,22 +139,23 @@ export function runActorRunTests(driverTestConfig: DriverTestConfig) {
|
|
|
141
139
|
const state1 = await actor.getState();
|
|
142
140
|
expect(state1.runStarted).toBe(true);
|
|
143
141
|
|
|
144
|
-
// Wait for the
|
|
145
|
-
await waitFor(driverTestConfig,
|
|
142
|
+
// Wait for the run handler to exit and the normal idle sleep timeout.
|
|
143
|
+
await waitFor(driverTestConfig, RUN_SLEEP_TIMEOUT + 400);
|
|
146
144
|
|
|
147
|
-
|
|
148
|
-
// Depending on the driver, it may be in a destroyed state or recreated.
|
|
149
|
-
// In the file-system driver test environment, the actor is not automatically
|
|
150
|
-
// rescheduled, so we just verify the initial behavior worked.
|
|
151
|
-
// A new getOrCreate should create a fresh actor.
|
|
152
|
-
const actor2 = client.runWithEarlyExit.getOrCreate([
|
|
153
|
-
"early-exit-fresh",
|
|
154
|
-
]);
|
|
155
|
-
const state2 = await actor2.getState();
|
|
145
|
+
const state2 = await actor.getState();
|
|
156
146
|
expect(state2.runStarted).toBe(true);
|
|
147
|
+
expect(state2.destroyCalled).toBe(false);
|
|
148
|
+
|
|
149
|
+
if (driverTestConfig.skip?.sleep) {
|
|
150
|
+
expect(state2.sleepCount).toBe(0);
|
|
151
|
+
expect(state2.wakeCount).toBe(1);
|
|
152
|
+
} else {
|
|
153
|
+
expect(state2.sleepCount).toBeGreaterThan(0);
|
|
154
|
+
expect(state2.wakeCount).toBeGreaterThan(1);
|
|
155
|
+
}
|
|
157
156
|
});
|
|
158
157
|
|
|
159
|
-
test("run handler that throws error
|
|
158
|
+
test("run handler that throws error sleeps instead of destroying", async (c) => {
|
|
160
159
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
161
160
|
|
|
162
161
|
const actor = client.runWithError.getOrCreate(["run-error"]);
|
|
@@ -167,15 +166,20 @@ export function runActorRunTests(driverTestConfig: DriverTestConfig) {
|
|
|
167
166
|
const state1 = await actor.getState();
|
|
168
167
|
expect(state1.runStarted).toBe(true);
|
|
169
168
|
|
|
170
|
-
// Wait for the
|
|
171
|
-
await waitFor(driverTestConfig,
|
|
169
|
+
// Wait for the run handler to throw and the normal idle sleep timeout.
|
|
170
|
+
await waitFor(driverTestConfig, RUN_SLEEP_TIMEOUT + 400);
|
|
172
171
|
|
|
173
|
-
|
|
174
|
-
// Similar to the early exit test, the driver may not automatically reschedule.
|
|
175
|
-
// A new getOrCreate should create a fresh actor.
|
|
176
|
-
const actor2 = client.runWithError.getOrCreate(["run-error-fresh"]);
|
|
177
|
-
const state2 = await actor2.getState();
|
|
172
|
+
const state2 = await actor.getState();
|
|
178
173
|
expect(state2.runStarted).toBe(true);
|
|
174
|
+
expect(state2.destroyCalled).toBe(false);
|
|
175
|
+
|
|
176
|
+
if (driverTestConfig.skip?.sleep) {
|
|
177
|
+
expect(state2.sleepCount).toBe(0);
|
|
178
|
+
expect(state2.wakeCount).toBe(1);
|
|
179
|
+
} else {
|
|
180
|
+
expect(state2.sleepCount).toBeGreaterThan(0);
|
|
181
|
+
expect(state2.wakeCount).toBeGreaterThan(1);
|
|
182
|
+
}
|
|
179
183
|
});
|
|
180
184
|
});
|
|
181
185
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { describe, expect, test, vi } from "vitest";
|
|
3
|
+
import type { DriverTestConfig } from "../mod";
|
|
4
|
+
import { setupDriverTest } from "../utils";
|
|
5
|
+
|
|
6
|
+
export function runActorSandboxTests(driverTestConfig: DriverTestConfig) {
|
|
7
|
+
describe.skipIf(driverTestConfig.skip?.sandbox)("Actor Sandbox Tests", () => {
|
|
8
|
+
test("supports sandbox actions through the actor runtime", async (c) => {
|
|
9
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
10
|
+
const sandbox = client.dockerSandboxActor.getOrCreate([
|
|
11
|
+
`sandbox-${crypto.randomUUID()}`,
|
|
12
|
+
]);
|
|
13
|
+
const decoder = new TextDecoder();
|
|
14
|
+
|
|
15
|
+
const health = await vi.waitFor(
|
|
16
|
+
async () => {
|
|
17
|
+
return await sandbox.getHealth();
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
timeout: 120_000,
|
|
21
|
+
interval: 500,
|
|
22
|
+
},
|
|
23
|
+
);
|
|
24
|
+
expect(typeof health.status).toBe("string");
|
|
25
|
+
const { url } = await sandbox.getSandboxUrl();
|
|
26
|
+
expect(url).toMatch(/^https?:\/\//);
|
|
27
|
+
|
|
28
|
+
await sandbox.mkdirFs({ path: "/root/tmp" });
|
|
29
|
+
await sandbox.writeFsFile(
|
|
30
|
+
{ path: "/root/tmp/hello.txt" },
|
|
31
|
+
"sandbox actor driver test",
|
|
32
|
+
);
|
|
33
|
+
expect(
|
|
34
|
+
decoder.decode(
|
|
35
|
+
await sandbox.readFsFile({ path: "/root/tmp/hello.txt" }),
|
|
36
|
+
),
|
|
37
|
+
).toBe("sandbox actor driver test");
|
|
38
|
+
|
|
39
|
+
const stat = await sandbox.statFs({ path: "/root/tmp/hello.txt" });
|
|
40
|
+
expect(stat.entryType).toBe("file");
|
|
41
|
+
|
|
42
|
+
await sandbox.moveFs({
|
|
43
|
+
from: "/root/tmp/hello.txt",
|
|
44
|
+
to: "/root/tmp/renamed.txt",
|
|
45
|
+
});
|
|
46
|
+
expect(
|
|
47
|
+
(await sandbox.listFsEntries({ path: "/root/tmp" })).map(
|
|
48
|
+
(entry: { name: string }) => entry.name,
|
|
49
|
+
),
|
|
50
|
+
).toContain("renamed.txt");
|
|
51
|
+
|
|
52
|
+
await sandbox.dispose();
|
|
53
|
+
|
|
54
|
+
const healthAfterDispose = await vi.waitFor(
|
|
55
|
+
async () => {
|
|
56
|
+
return await sandbox.getHealth();
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
timeout: 120_000,
|
|
60
|
+
interval: 500,
|
|
61
|
+
},
|
|
62
|
+
);
|
|
63
|
+
expect(typeof healthAfterDispose.status).toBe("string");
|
|
64
|
+
expect(
|
|
65
|
+
decoder.decode(
|
|
66
|
+
await sandbox.readFsFile({ path: "/root/tmp/renamed.txt" }),
|
|
67
|
+
),
|
|
68
|
+
).toBe("sandbox actor driver test");
|
|
69
|
+
|
|
70
|
+
await sandbox.deleteFsEntry({ path: "/root/tmp", recursive: true });
|
|
71
|
+
expect(await sandbox.listFsEntries({ path: "/root" })).not.toEqual(
|
|
72
|
+
expect.arrayContaining([
|
|
73
|
+
expect.objectContaining({ name: "tmp" }),
|
|
74
|
+
]),
|
|
75
|
+
);
|
|
76
|
+
}, 180_000);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
@@ -81,10 +81,7 @@ export function runActorScheduleTests(driverTestConfig: DriverTestConfig) {
|
|
|
81
81
|
// Wait for second task
|
|
82
82
|
await waitFor(driverTestConfig, 500);
|
|
83
83
|
const history2 = await scheduled.getTaskHistory();
|
|
84
|
-
expect(history2.slice(0, 2)).toEqual([
|
|
85
|
-
"first",
|
|
86
|
-
"second",
|
|
87
|
-
]);
|
|
84
|
+
expect(history2.slice(0, 2)).toEqual(["first", "second"]);
|
|
88
85
|
|
|
89
86
|
// Wait for third task
|
|
90
87
|
await waitFor(driverTestConfig, 500);
|
|
@@ -124,6 +124,40 @@ export function runActorSleepTests(driverTestConfig: DriverTestConfig) {
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
+
test("waitUntil can broadcast before sleep disconnect", async (c) => {
|
|
128
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
129
|
+
|
|
130
|
+
const sleepActor =
|
|
131
|
+
client.sleepWithWaitUntilMessage.getOrCreate().connect();
|
|
132
|
+
const receivedMessages: Array<{
|
|
133
|
+
sleepCount: number;
|
|
134
|
+
startCount: number;
|
|
135
|
+
}> = [];
|
|
136
|
+
|
|
137
|
+
sleepActor.once("sleeping", (message) => {
|
|
138
|
+
receivedMessages.push(message);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
await sleepActor.triggerSleep();
|
|
142
|
+
await waitFor(driverTestConfig, 250);
|
|
143
|
+
|
|
144
|
+
expect(receivedMessages).toHaveLength(1);
|
|
145
|
+
expect(receivedMessages[0]?.startCount).toBe(1);
|
|
146
|
+
|
|
147
|
+
await sleepActor.dispose();
|
|
148
|
+
|
|
149
|
+
await waitFor(driverTestConfig, 250);
|
|
150
|
+
|
|
151
|
+
const sleepActor2 = client.sleepWithWaitUntilMessage.getOrCreate();
|
|
152
|
+
{
|
|
153
|
+
const { startCount, sleepCount, waitUntilMessageCount } =
|
|
154
|
+
await sleepActor2.getCounts();
|
|
155
|
+
expect(waitUntilMessageCount).toBe(1);
|
|
156
|
+
expect(sleepCount).toBe(1);
|
|
157
|
+
expect(startCount).toBe(2);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
|
|
127
161
|
test("rpc calls keep actor awake", async (c) => {
|
|
128
162
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
129
163
|
|
|
@@ -411,5 +445,82 @@ export function runActorSleepTests(driverTestConfig: DriverTestConfig) {
|
|
|
411
445
|
expect(startCount).toBe(1); // Still the same instance
|
|
412
446
|
}
|
|
413
447
|
});
|
|
448
|
+
|
|
449
|
+
test("preventSleep blocks auto sleep until cleared", async (c) => {
|
|
450
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
451
|
+
|
|
452
|
+
const sleepActor = client.sleepWithPreventSleep.getOrCreate();
|
|
453
|
+
|
|
454
|
+
{
|
|
455
|
+
const status = await sleepActor.getStatus();
|
|
456
|
+
expect(status.sleepCount).toBe(0);
|
|
457
|
+
expect(status.startCount).toBe(1);
|
|
458
|
+
expect(status.preventSleep).toBe(false);
|
|
459
|
+
expect(status.preventSleepOnWake).toBe(false);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
expect(await sleepActor.setPreventSleep(true)).toBe(true);
|
|
463
|
+
|
|
464
|
+
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 250);
|
|
465
|
+
|
|
466
|
+
{
|
|
467
|
+
const status = await sleepActor.getStatus();
|
|
468
|
+
expect(status.sleepCount).toBe(0);
|
|
469
|
+
expect(status.startCount).toBe(1);
|
|
470
|
+
expect(status.preventSleep).toBe(true);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
expect(await sleepActor.setPreventSleep(false)).toBe(false);
|
|
474
|
+
|
|
475
|
+
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 250);
|
|
476
|
+
|
|
477
|
+
{
|
|
478
|
+
const status = await sleepActor.getStatus();
|
|
479
|
+
expect(status.sleepCount).toBe(1);
|
|
480
|
+
expect(status.startCount).toBe(2);
|
|
481
|
+
expect(status.preventSleep).toBe(false);
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
|
|
485
|
+
test("preventSleep can be restored during onWake", async (c) => {
|
|
486
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
487
|
+
|
|
488
|
+
const sleepActor = client.sleepWithPreventSleep.getOrCreate();
|
|
489
|
+
|
|
490
|
+
expect(await sleepActor.setPreventSleepOnWake(true)).toBe(true);
|
|
491
|
+
|
|
492
|
+
await sleepActor.triggerSleep();
|
|
493
|
+
await waitFor(driverTestConfig, 250);
|
|
494
|
+
|
|
495
|
+
{
|
|
496
|
+
const status = await sleepActor.getStatus();
|
|
497
|
+
expect(status.sleepCount).toBe(1);
|
|
498
|
+
expect(status.startCount).toBe(2);
|
|
499
|
+
expect(status.preventSleep).toBe(true);
|
|
500
|
+
expect(status.preventSleepOnWake).toBe(true);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 250);
|
|
504
|
+
|
|
505
|
+
{
|
|
506
|
+
const status = await sleepActor.getStatus();
|
|
507
|
+
expect(status.sleepCount).toBe(1);
|
|
508
|
+
expect(status.startCount).toBe(2);
|
|
509
|
+
expect(status.preventSleep).toBe(true);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
expect(await sleepActor.setPreventSleepOnWake(false)).toBe(false);
|
|
513
|
+
expect(await sleepActor.setPreventSleep(false)).toBe(false);
|
|
514
|
+
|
|
515
|
+
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 250);
|
|
516
|
+
|
|
517
|
+
{
|
|
518
|
+
const status = await sleepActor.getStatus();
|
|
519
|
+
expect(status.sleepCount).toBe(2);
|
|
520
|
+
expect(status.startCount).toBe(3);
|
|
521
|
+
expect(status.preventSleep).toBe(false);
|
|
522
|
+
expect(status.preventSleepOnWake).toBe(false);
|
|
523
|
+
}
|
|
524
|
+
});
|
|
414
525
|
});
|
|
415
526
|
}
|