rivetkit 2.0.2 → 2.0.4-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/README.md +3 -5
- package/dist/browser/client.d.ts +2485 -0
- package/dist/browser/client.js +5182 -0
- package/dist/browser/client.js.map +1 -0
- package/dist/browser/inspector/client.d.ts +130 -0
- package/dist/browser/inspector/client.js +2854 -0
- package/dist/browser/inspector/client.js.map +1 -0
- package/dist/browser/v3-DnYObHH3.d.ts +279 -0
- package/dist/inspector.tar.gz +0 -0
- package/dist/schemas/actor-inspector/v1.ts +784 -0
- package/dist/schemas/actor-inspector/v2.ts +796 -0
- package/dist/schemas/actor-inspector/v3.ts +899 -0
- package/dist/schemas/actor-persist/v1.ts +225 -0
- package/dist/schemas/actor-persist/v2.ts +268 -0
- package/dist/schemas/actor-persist/v3.ts +280 -0
- package/dist/schemas/actor-persist/v4.ts +406 -0
- package/dist/schemas/client-protocol/v1.ts +441 -0
- package/dist/schemas/client-protocol/v2.ts +438 -0
- package/dist/schemas/client-protocol/v3.ts +554 -0
- package/dist/schemas/file-system-driver/v1.ts +108 -0
- package/dist/schemas/file-system-driver/v2.ts +142 -0
- package/dist/schemas/file-system-driver/v3.ts +167 -0
- package/dist/schemas/persist/v1.ts +781 -0
- package/dist/schemas/transport/v1.ts +697 -0
- package/dist/tsup/actor/errors.cjs +106 -0
- package/dist/tsup/actor/errors.cjs.map +1 -0
- package/dist/tsup/actor/errors.d.cts +188 -0
- package/dist/tsup/actor/errors.d.ts +188 -0
- package/dist/tsup/actor/errors.js +106 -0
- package/dist/tsup/actor/errors.js.map +1 -0
- package/dist/tsup/actor-router-consts-D29T1Z-K.d.cts +24 -0
- package/dist/tsup/actor-router-consts-D29T1Z-K.d.ts +24 -0
- package/dist/tsup/chunk-325TLXJT.js +1060 -0
- package/dist/tsup/chunk-325TLXJT.js.map +1 -0
- package/dist/tsup/chunk-424PT5DM.js +23 -0
- package/dist/tsup/chunk-424PT5DM.js.map +1 -0
- package/dist/tsup/chunk-4JVIG3SS.cjs +6289 -0
- package/dist/tsup/chunk-4JVIG3SS.cjs.map +1 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
- package/dist/tsup/chunk-6XU3FMCB.cjs +534 -0
- package/dist/tsup/chunk-6XU3FMCB.cjs.map +1 -0
- package/dist/tsup/chunk-7HTNH26M.js +509 -0
- package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
- package/dist/tsup/chunk-AUVH72RE.cjs +5977 -0
- package/dist/tsup/chunk-AUVH72RE.cjs.map +1 -0
- package/dist/tsup/chunk-D4BYUPNQ.js +645 -0
- package/dist/tsup/chunk-D4BYUPNQ.js.map +1 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
- package/dist/tsup/chunk-HHXX2VRM.js +6289 -0
- package/dist/tsup/chunk-HHXX2VRM.js.map +1 -0
- package/dist/tsup/chunk-JEAEA2PB.js +49 -0
- package/dist/tsup/chunk-JEAEA2PB.js.map +1 -0
- package/dist/tsup/chunk-JYSEG3VF.cjs +642 -0
- package/dist/tsup/chunk-JYSEG3VF.cjs.map +1 -0
- package/dist/tsup/chunk-K6DGYILQ.js +2657 -0
- package/dist/tsup/chunk-K6DGYILQ.js.map +1 -0
- package/dist/tsup/chunk-KJSYAUOM.js +96 -0
- package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
- package/dist/tsup/chunk-L47L3ZWJ.cjs +509 -0
- package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
- package/dist/tsup/chunk-LXUQ667X.js +2006 -0
- package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
- package/dist/tsup/chunk-MXNPAB5W.js +5977 -0
- package/dist/tsup/chunk-MXNPAB5W.js.map +1 -0
- package/dist/tsup/chunk-N4KRDJ56.js +72 -0
- package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
- package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
- package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
- package/dist/tsup/chunk-PQZHDKRW.cjs +1060 -0
- package/dist/tsup/chunk-PQZHDKRW.cjs.map +1 -0
- package/dist/tsup/chunk-PVOE6BU7.cjs +1050 -0
- package/dist/tsup/chunk-PVOE6BU7.cjs.map +1 -0
- package/dist/tsup/chunk-Q4UD2GA4.cjs +1810 -0
- package/dist/tsup/chunk-Q4UD2GA4.cjs.map +1 -0
- package/dist/tsup/chunk-QUD664YZ.js +1810 -0
- package/dist/tsup/chunk-QUD664YZ.js.map +1 -0
- package/dist/tsup/chunk-RTOCTWME.js +1050 -0
- package/dist/tsup/chunk-RTOCTWME.js.map +1 -0
- package/dist/tsup/chunk-SAZZ4SB2.cjs +2657 -0
- package/dist/tsup/chunk-SAZZ4SB2.cjs.map +1 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
- package/dist/tsup/chunk-V2GHLYC6.cjs +49 -0
- package/dist/tsup/chunk-V2GHLYC6.cjs.map +1 -0
- package/dist/tsup/chunk-V3WG7XTW.cjs +645 -0
- package/dist/tsup/chunk-V3WG7XTW.cjs.map +1 -0
- package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
- package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
- package/dist/tsup/chunk-WMPW7JYC.js +642 -0
- package/dist/tsup/chunk-WMPW7JYC.js.map +1 -0
- package/dist/tsup/chunk-Z7HNQ2WF.js +534 -0
- package/dist/tsup/chunk-Z7HNQ2WF.js.map +1 -0
- package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
- package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +33 -0
- package/dist/tsup/client/mod.cjs.map +1 -0
- package/dist/tsup/client/mod.d.cts +64 -0
- package/dist/tsup/client/mod.d.ts +64 -0
- package/dist/tsup/client/mod.js +33 -0
- package/dist/tsup/client/mod.js.map +1 -0
- package/dist/tsup/common/log.cjs +21 -0
- package/dist/tsup/common/log.cjs.map +1 -0
- package/dist/tsup/common/log.d.cts +34 -0
- package/dist/tsup/common/log.d.ts +34 -0
- package/dist/tsup/common/log.js +21 -0
- package/dist/tsup/common/log.js.map +1 -0
- package/dist/tsup/common/websocket.cjs +10 -0
- package/dist/tsup/common/websocket.cjs.map +1 -0
- package/dist/tsup/common/websocket.d.cts +3 -0
- package/dist/tsup/common/websocket.d.ts +3 -0
- package/dist/tsup/common/websocket.js +10 -0
- package/dist/tsup/common/websocket.js.map +1 -0
- package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
- package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
- package/dist/tsup/config-P3XujgRr.d.ts +2594 -0
- package/dist/tsup/config-_gfywqqI.d.cts +2594 -0
- package/dist/tsup/context-Bxd8Cx4H.d.cts +75 -0
- package/dist/tsup/context-uNA4TRn3.d.ts +75 -0
- package/dist/tsup/db/drizzle/mod.cjs +49 -0
- package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
- package/dist/tsup/db/drizzle/mod.d.cts +17 -0
- package/dist/tsup/db/drizzle/mod.d.ts +17 -0
- package/dist/tsup/db/drizzle/mod.js +49 -0
- package/dist/tsup/db/drizzle/mod.js.map +1 -0
- package/dist/tsup/db/mod.cjs +9 -0
- package/dist/tsup/db/mod.cjs.map +1 -0
- package/dist/tsup/db/mod.d.cts +9 -0
- package/dist/tsup/db/mod.d.ts +9 -0
- package/dist/tsup/db/mod.js +9 -0
- package/dist/tsup/db/mod.js.map +1 -0
- package/dist/tsup/driver-BcLvZcKl.d.cts +13 -0
- package/dist/tsup/driver-CPGHKXyh.d.ts +13 -0
- package/dist/tsup/driver-helpers/mod.cjs +53 -0
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -0
- package/dist/tsup/driver-helpers/mod.d.cts +47 -0
- package/dist/tsup/driver-helpers/mod.d.ts +47 -0
- package/dist/tsup/driver-helpers/mod.js +53 -0
- package/dist/tsup/driver-helpers/mod.js.map +1 -0
- package/dist/tsup/driver-test-suite/mod.cjs +4974 -0
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -0
- package/dist/tsup/driver-test-suite/mod.d.cts +73 -0
- package/dist/tsup/driver-test-suite/mod.d.ts +73 -0
- package/dist/tsup/driver-test-suite/mod.js +4974 -0
- package/dist/tsup/driver-test-suite/mod.js.map +1 -0
- package/dist/tsup/inspector/mod.cjs +164 -0
- package/dist/tsup/inspector/mod.cjs.map +1 -0
- package/dist/tsup/inspector/mod.d.cts +130 -0
- package/dist/tsup/inspector/mod.d.ts +130 -0
- package/dist/tsup/inspector/mod.js +164 -0
- package/dist/tsup/inspector/mod.js.map +1 -0
- package/dist/tsup/keys-CydblqMh.d.cts +13 -0
- package/dist/tsup/keys-CydblqMh.d.ts +13 -0
- package/dist/tsup/mod.cjs +82 -0
- package/dist/tsup/mod.cjs.map +1 -0
- package/dist/tsup/mod.d.cts +126 -0
- package/dist/tsup/mod.d.ts +126 -0
- package/dist/tsup/mod.js +82 -0
- package/dist/tsup/mod.js.map +1 -0
- package/dist/tsup/serve-test-suite/mod.cjs +2601 -0
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -0
- package/dist/tsup/serve-test-suite/mod.d.cts +9 -0
- package/dist/tsup/serve-test-suite/mod.d.ts +9 -0
- package/dist/tsup/serve-test-suite/mod.js +2601 -0
- package/dist/tsup/serve-test-suite/mod.js.map +1 -0
- package/dist/tsup/test/mod.cjs +90 -0
- package/dist/tsup/test/mod.cjs.map +1 -0
- package/dist/tsup/test/mod.d.cts +26 -0
- package/dist/tsup/test/mod.d.ts +26 -0
- package/dist/tsup/test/mod.js +90 -0
- package/dist/tsup/test/mod.js.map +1 -0
- package/dist/tsup/utils-fwx3o3K9.d.cts +18 -0
- package/dist/tsup/utils-fwx3o3K9.d.ts +18 -0
- package/dist/tsup/utils.cjs +43 -0
- package/dist/tsup/utils.cjs.map +1 -0
- package/dist/tsup/utils.d.cts +148 -0
- package/dist/tsup/utils.d.ts +148 -0
- package/dist/tsup/utils.js +43 -0
- package/dist/tsup/utils.js.map +1 -0
- package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
- package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
- package/dist/tsup/workflow/mod.cjs +16 -0
- package/dist/tsup/workflow/mod.cjs.map +1 -0
- package/dist/tsup/workflow/mod.d.cts +25 -0
- package/dist/tsup/workflow/mod.d.ts +25 -0
- package/dist/tsup/workflow/mod.js +16 -0
- package/dist/tsup/workflow/mod.js.map +1 -0
- package/package.json +293 -5
- package/src/actor/config.ts +1221 -0
- package/src/actor/conn/driver.ts +61 -0
- package/src/actor/conn/drivers/http.ts +17 -0
- package/src/actor/conn/drivers/raw-request.ts +24 -0
- package/src/actor/conn/drivers/raw-websocket.ts +65 -0
- package/src/actor/conn/drivers/websocket.ts +144 -0
- package/src/actor/conn/mod.ts +288 -0
- package/src/actor/conn/persisted.ts +81 -0
- package/src/actor/conn/state-manager.ts +196 -0
- package/src/actor/contexts/action.ts +47 -0
- package/src/actor/contexts/base/actor.ts +347 -0
- package/src/actor/contexts/base/conn-init.ts +68 -0
- package/src/actor/contexts/base/conn.ts +73 -0
- package/src/actor/contexts/before-action-response.ts +42 -0
- package/src/actor/contexts/before-connect.ts +31 -0
- package/src/actor/contexts/connect.ts +42 -0
- package/src/actor/contexts/create-conn-state.ts +32 -0
- package/src/actor/contexts/create-vars.ts +39 -0
- package/src/actor/contexts/create.ts +39 -0
- package/src/actor/contexts/destroy.ts +42 -0
- package/src/actor/contexts/disconnect.ts +43 -0
- package/src/actor/contexts/index.ts +33 -0
- package/src/actor/contexts/request.ts +80 -0
- package/src/actor/contexts/run.ts +47 -0
- package/src/actor/contexts/sleep.ts +42 -0
- package/src/actor/contexts/state-change.ts +42 -0
- package/src/actor/contexts/wake.ts +42 -0
- package/src/actor/contexts/websocket.ts +80 -0
- package/src/actor/database.ts +13 -0
- package/src/actor/definition.ts +64 -0
- package/src/actor/driver.ts +114 -0
- package/src/actor/errors.ts +556 -0
- package/src/actor/instance/connection-manager.ts +574 -0
- package/src/actor/instance/event-manager.ts +314 -0
- package/src/actor/instance/keys.ts +146 -0
- package/src/actor/instance/kv.ts +241 -0
- package/src/actor/instance/mod.ts +1658 -0
- package/src/actor/instance/persisted.ts +67 -0
- package/src/actor/instance/queue-manager.ts +603 -0
- package/src/actor/instance/queue.ts +345 -0
- package/src/actor/instance/schedule-manager.ts +392 -0
- package/src/actor/instance/state-manager.ts +542 -0
- package/src/actor/instance/traces-driver.ts +128 -0
- package/src/actor/keys.test.ts +275 -0
- package/src/actor/keys.ts +89 -0
- package/src/actor/log.ts +6 -0
- package/src/actor/mod.ts +110 -0
- package/src/actor/protocol/old.ts +416 -0
- package/src/actor/protocol/serde.ts +222 -0
- package/src/actor/router-endpoints.ts +400 -0
- package/src/actor/router-websocket-endpoints.test.ts +54 -0
- package/src/actor/router-websocket-endpoints.ts +405 -0
- package/src/actor/router.ts +380 -0
- package/src/actor/schedule.ts +17 -0
- package/src/actor/schema.ts +291 -0
- package/src/actor/utils.test.ts +48 -0
- package/src/actor/utils.ts +158 -0
- package/src/client/actor-common.ts +32 -0
- package/src/client/actor-conn.ts +1262 -0
- package/src/client/actor-handle.ts +344 -0
- package/src/client/actor-query.ts +112 -0
- package/src/client/client.ts +558 -0
- package/src/client/config.ts +151 -0
- package/src/client/errors.ts +76 -0
- package/src/client/log.ts +5 -0
- package/src/client/mod.browser.ts +2 -0
- package/src/client/mod.ts +70 -0
- package/src/client/queue.ts +146 -0
- package/src/client/raw-utils.ts +149 -0
- package/src/client/test.ts +44 -0
- package/src/client/utils.ts +252 -0
- package/src/common/actor-router-consts.ts +59 -0
- package/src/common/cors.ts +57 -0
- package/src/common/eventsource-interface.ts +47 -0
- package/src/common/eventsource.ts +44 -0
- package/src/common/inline-websocket-adapter.ts +154 -0
- package/src/common/log-levels.ts +27 -0
- package/src/common/log.ts +229 -0
- package/src/common/logfmt.ts +221 -0
- package/src/common/network.ts +2 -0
- package/src/common/router.ts +174 -0
- package/src/common/utils.ts +339 -0
- package/src/common/websocket-interface.ts +7 -0
- package/src/common/websocket.ts +43 -0
- package/src/db/config.ts +100 -0
- package/src/db/drizzle/mod.ts +226 -0
- package/src/db/drizzle/sqlite-core.ts +22 -0
- package/src/db/mod.ts +125 -0
- package/src/db/shared.ts +92 -0
- package/src/db/sqlite-vfs.ts +12 -0
- package/src/devtools-loader/index.ts +33 -0
- package/src/devtools-loader/log.ts +5 -0
- package/src/driver-helpers/mod.ts +33 -0
- package/src/driver-helpers/utils.ts +54 -0
- package/src/driver-test-suite/log.ts +5 -0
- package/src/driver-test-suite/mod.ts +293 -0
- package/src/driver-test-suite/test-inline-client-driver.ts +307 -0
- package/src/driver-test-suite/tests/access-control.ts +218 -0
- package/src/driver-test-suite/tests/action-features.ts +203 -0
- package/src/driver-test-suite/tests/actor-conn-hibernation.ts +152 -0
- package/src/driver-test-suite/tests/actor-conn-state.ts +300 -0
- package/src/driver-test-suite/tests/actor-conn.ts +596 -0
- package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
- package/src/driver-test-suite/tests/actor-db.ts +477 -0
- package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
- package/src/driver-test-suite/tests/actor-driver.ts +18 -0
- package/src/driver-test-suite/tests/actor-error-handling.ts +150 -0
- package/src/driver-test-suite/tests/actor-handle.ts +312 -0
- package/src/driver-test-suite/tests/actor-inline-client.ts +163 -0
- package/src/driver-test-suite/tests/actor-inspector.ts +264 -0
- package/src/driver-test-suite/tests/actor-kv.ts +65 -0
- package/src/driver-test-suite/tests/actor-metadata.ts +116 -0
- package/src/driver-test-suite/tests/actor-onstatechange.ts +95 -0
- package/src/driver-test-suite/tests/actor-queue.ts +325 -0
- package/src/driver-test-suite/tests/actor-run.ts +181 -0
- package/src/driver-test-suite/tests/actor-schedule.ts +97 -0
- package/src/driver-test-suite/tests/actor-sleep.ts +415 -0
- package/src/driver-test-suite/tests/actor-state.ts +54 -0
- package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
- package/src/driver-test-suite/tests/actor-vars.ts +97 -0
- package/src/driver-test-suite/tests/actor-workflow.ts +118 -0
- package/src/driver-test-suite/tests/manager-driver.ts +388 -0
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -0
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +454 -0
- package/src/driver-test-suite/tests/raw-http.ts +359 -0
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -0
- package/src/driver-test-suite/tests/raw-websocket.ts +513 -0
- package/src/driver-test-suite/tests/request-access.ts +240 -0
- package/src/driver-test-suite/utils.ts +80 -0
- package/src/drivers/default.ts +38 -0
- package/src/drivers/engine/actor-driver.ts +1027 -0
- package/src/drivers/engine/config.ts +43 -0
- package/src/drivers/engine/log.ts +5 -0
- package/src/drivers/engine/mod.ts +36 -0
- package/src/drivers/file-system/actor.ts +102 -0
- package/src/drivers/file-system/global-state.ts +1445 -0
- package/src/drivers/file-system/kv-limits.ts +70 -0
- package/src/drivers/file-system/log.ts +5 -0
- package/src/drivers/file-system/manager.ts +300 -0
- package/src/drivers/file-system/mod.ts +78 -0
- package/src/drivers/file-system/sqlite-runtime.ts +210 -0
- package/src/drivers/file-system/utils.ts +125 -0
- package/src/engine-process/constants.ts +2 -0
- package/src/engine-process/log.ts +5 -0
- package/src/engine-process/mod.ts +464 -0
- package/src/globals.d.ts +35 -0
- package/src/inspector/actor-inspector.ts +352 -0
- package/src/inspector/config.ts +49 -0
- package/src/inspector/handler.ts +273 -0
- package/src/inspector/log.ts +5 -0
- package/src/inspector/mod.browser.ts +8 -0
- package/src/inspector/mod.ts +4 -0
- package/src/inspector/serve-ui.ts +40 -0
- package/src/inspector/transport.ts +18 -0
- package/src/inspector/utils.ts +32 -0
- package/src/manager/driver.ts +106 -0
- package/src/manager/gateway.ts +668 -0
- package/src/manager/log.ts +5 -0
- package/src/manager/mod.ts +2 -0
- package/src/manager/protocol/mod.ts +22 -0
- package/src/manager/protocol/query.ts +85 -0
- package/src/manager/router-schema.ts +22 -0
- package/src/manager/router.ts +660 -0
- package/src/manager-api/actors.ts +83 -0
- package/src/manager-api/common.ts +4 -0
- package/src/mod.ts +24 -0
- package/src/registry/config/driver.ts +21 -0
- package/src/registry/config/index.ts +510 -0
- package/src/registry/config/legacy-runner.ts +157 -0
- package/src/registry/config/runner.ts +21 -0
- package/src/registry/config/serverless.ts +94 -0
- package/src/registry/index.ts +194 -0
- package/src/registry/log.ts +5 -0
- package/src/remote-manager-driver/actor-http-client.ts +84 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +81 -0
- package/src/remote-manager-driver/api-endpoints.ts +159 -0
- package/src/remote-manager-driver/api-utils.ts +69 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/metadata.ts +64 -0
- package/src/remote-manager-driver/mod.ts +414 -0
- package/src/remote-manager-driver/ws-proxy.ts +189 -0
- package/src/schemas/actor-inspector/mod.ts +1 -0
- package/src/schemas/actor-inspector/versioned.ts +233 -0
- package/src/schemas/actor-persist/mod.ts +1 -0
- package/src/schemas/actor-persist/versioned.ts +217 -0
- package/src/schemas/client-protocol/mod.ts +1 -0
- package/src/schemas/client-protocol/versioned.ts +330 -0
- package/src/schemas/client-protocol-zod/mod.ts +118 -0
- package/src/schemas/file-system-driver/mod.ts +1 -0
- package/src/schemas/file-system-driver/versioned.ts +135 -0
- package/src/schemas/persist/mod.ts +1 -0
- package/src/schemas/transport/mod.ts +1 -0
- package/src/serde.ts +138 -0
- package/src/serve-test-suite/mod.ts +148 -0
- package/src/serverless/configure.ts +82 -0
- package/src/serverless/log.ts +5 -0
- package/src/serverless/router.test.ts +299 -0
- package/src/serverless/router.ts +215 -0
- package/src/test/log.ts +5 -0
- package/src/test/mod.ts +99 -0
- package/src/utils/crypto.ts +24 -0
- package/src/utils/endpoint-parser.test.ts +202 -0
- package/src/utils/endpoint-parser.ts +124 -0
- package/src/utils/env-vars.ts +78 -0
- package/src/utils/node.ts +178 -0
- package/src/utils/router.ts +83 -0
- package/src/utils/serve.ts +212 -0
- package/src/utils.test.ts +34 -0
- package/src/utils.ts +437 -0
- package/src/workflow/constants.ts +2 -0
- package/src/workflow/context.ts +597 -0
- package/src/workflow/driver.ts +194 -0
- package/src/workflow/inspector.ts +268 -0
- package/src/workflow/mod.ts +128 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import * as cbor from "cbor-x";
|
|
2
|
+
import invariant from "invariant";
|
|
3
|
+
import type { AnyActorDefinition } from "@/actor/definition";
|
|
4
|
+
import type { Encoding } from "@/actor/protocol/serde";
|
|
5
|
+
import { assertUnreachable } from "@/actor/utils";
|
|
6
|
+
import { deconstructError } from "@/common/utils";
|
|
7
|
+
import {
|
|
8
|
+
HEADER_CONN_PARAMS,
|
|
9
|
+
HEADER_ENCODING,
|
|
10
|
+
type ManagerDriver,
|
|
11
|
+
} from "@/driver-helpers/mod";
|
|
12
|
+
import type { ActorQuery } from "@/manager/protocol/query";
|
|
13
|
+
import type * as protocol from "@/schemas/client-protocol/mod";
|
|
14
|
+
import {
|
|
15
|
+
CURRENT_VERSION as CLIENT_PROTOCOL_CURRENT_VERSION,
|
|
16
|
+
HTTP_ACTION_REQUEST_VERSIONED,
|
|
17
|
+
HTTP_ACTION_RESPONSE_VERSIONED,
|
|
18
|
+
} from "@/schemas/client-protocol/versioned";
|
|
19
|
+
import {
|
|
20
|
+
type HttpActionRequest as HttpActionRequestJson,
|
|
21
|
+
HttpActionRequestSchema,
|
|
22
|
+
type HttpActionResponse as HttpActionResponseJson,
|
|
23
|
+
HttpActionResponseSchema,
|
|
24
|
+
} from "@/schemas/client-protocol-zod/mod";
|
|
25
|
+
import { bufferToArrayBuffer } from "@/utils";
|
|
26
|
+
import type { ActorDefinitionActions } from "./actor-common";
|
|
27
|
+
import { type ActorConn, ActorConnRaw } from "./actor-conn";
|
|
28
|
+
import { checkForSchedulingError, queryActor } from "./actor-query";
|
|
29
|
+
import { type ClientRaw, CREATE_ACTOR_CONN_PROXY } from "./client";
|
|
30
|
+
import { ActorError, isSchedulingError } from "./errors";
|
|
31
|
+
import { logger } from "./log";
|
|
32
|
+
import {
|
|
33
|
+
createQueueSender,
|
|
34
|
+
type QueueSendNoWaitOptions,
|
|
35
|
+
type QueueSendOptions,
|
|
36
|
+
type QueueSendResult,
|
|
37
|
+
type QueueSendWaitOptions,
|
|
38
|
+
} from "./queue";
|
|
39
|
+
import { rawHttpFetch, rawWebSocket } from "./raw-utils";
|
|
40
|
+
import { sendHttpRequest } from "./utils";
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Provides underlying functions for stateless {@link ActorHandle} for action calls.
|
|
44
|
+
* Similar to ActorConnRaw but doesn't maintain a connection.
|
|
45
|
+
*
|
|
46
|
+
* @see {@link ActorHandle}
|
|
47
|
+
*/
|
|
48
|
+
export class ActorHandleRaw {
|
|
49
|
+
#client: ClientRaw;
|
|
50
|
+
#driver: ManagerDriver;
|
|
51
|
+
#encoding: Encoding;
|
|
52
|
+
#actorQuery: ActorQuery;
|
|
53
|
+
#params: unknown;
|
|
54
|
+
#queueSender: ReturnType<typeof createQueueSender>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Do not call this directly.
|
|
58
|
+
*
|
|
59
|
+
* Creates an instance of ActorHandleRaw.
|
|
60
|
+
*
|
|
61
|
+
* @protected
|
|
62
|
+
*/
|
|
63
|
+
public constructor(
|
|
64
|
+
client: any,
|
|
65
|
+
driver: ManagerDriver,
|
|
66
|
+
params: unknown,
|
|
67
|
+
encoding: Encoding,
|
|
68
|
+
actorQuery: ActorQuery,
|
|
69
|
+
) {
|
|
70
|
+
this.#client = client;
|
|
71
|
+
this.#driver = driver;
|
|
72
|
+
this.#encoding = encoding;
|
|
73
|
+
this.#actorQuery = actorQuery;
|
|
74
|
+
this.#params = params;
|
|
75
|
+
this.#queueSender = createQueueSender({
|
|
76
|
+
encoding: this.#encoding,
|
|
77
|
+
params: this.#params,
|
|
78
|
+
customFetch: async (request: Request) => {
|
|
79
|
+
const { actorId } = await queryActor(
|
|
80
|
+
undefined,
|
|
81
|
+
this.#actorQuery,
|
|
82
|
+
this.#driver,
|
|
83
|
+
);
|
|
84
|
+
return this.#driver.sendRequest(actorId, request);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
send(
|
|
90
|
+
name: string,
|
|
91
|
+
body: unknown,
|
|
92
|
+
options: QueueSendWaitOptions,
|
|
93
|
+
): Promise<QueueSendResult>;
|
|
94
|
+
send(
|
|
95
|
+
name: string,
|
|
96
|
+
body: unknown,
|
|
97
|
+
options?: QueueSendNoWaitOptions,
|
|
98
|
+
): Promise<void>;
|
|
99
|
+
send(
|
|
100
|
+
name: string,
|
|
101
|
+
body: unknown,
|
|
102
|
+
options?: QueueSendOptions,
|
|
103
|
+
): Promise<QueueSendResult | void> {
|
|
104
|
+
return this.#queueSender.send(name, body, options as any);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Call a raw action. This method sends an HTTP request to invoke the named action.
|
|
109
|
+
*
|
|
110
|
+
* @see {@link ActorHandle}
|
|
111
|
+
* @template Args - The type of arguments to pass to the action function.
|
|
112
|
+
* @template Response - The type of the response returned by the action function.
|
|
113
|
+
*/
|
|
114
|
+
async action<
|
|
115
|
+
Args extends Array<unknown> = unknown[],
|
|
116
|
+
Response = unknown,
|
|
117
|
+
>(opts: {
|
|
118
|
+
name: string;
|
|
119
|
+
args: Args;
|
|
120
|
+
signal?: AbortSignal;
|
|
121
|
+
}): Promise<Response> {
|
|
122
|
+
// Track actorId for scheduling error lookups
|
|
123
|
+
let actorId: string | undefined;
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
// Get the actor ID
|
|
127
|
+
const result = await queryActor(
|
|
128
|
+
undefined,
|
|
129
|
+
this.#actorQuery,
|
|
130
|
+
this.#driver,
|
|
131
|
+
);
|
|
132
|
+
actorId = result.actorId;
|
|
133
|
+
logger().debug({ msg: "found actor for action", actorId });
|
|
134
|
+
invariant(actorId, "Missing actor ID");
|
|
135
|
+
|
|
136
|
+
// Invoke the action
|
|
137
|
+
logger().debug({
|
|
138
|
+
msg: "handling action",
|
|
139
|
+
name: opts.name,
|
|
140
|
+
encoding: this.#encoding,
|
|
141
|
+
});
|
|
142
|
+
const responseData = await sendHttpRequest<
|
|
143
|
+
protocol.HttpActionRequest, // Bare type
|
|
144
|
+
protocol.HttpActionResponse, // Bare type
|
|
145
|
+
HttpActionRequestJson, // Json type
|
|
146
|
+
HttpActionResponseJson, // Json type
|
|
147
|
+
unknown[], // Request type (the args array)
|
|
148
|
+
Response // Response type (the output value)
|
|
149
|
+
>({
|
|
150
|
+
url: `http://actor/action/${encodeURIComponent(opts.name)}`,
|
|
151
|
+
method: "POST",
|
|
152
|
+
headers: {
|
|
153
|
+
[HEADER_ENCODING]: this.#encoding,
|
|
154
|
+
...(this.#params !== undefined
|
|
155
|
+
? { [HEADER_CONN_PARAMS]: JSON.stringify(this.#params) }
|
|
156
|
+
: {}),
|
|
157
|
+
},
|
|
158
|
+
body: opts.args,
|
|
159
|
+
encoding: this.#encoding,
|
|
160
|
+
customFetch: this.#driver.sendRequest.bind(
|
|
161
|
+
this.#driver,
|
|
162
|
+
actorId,
|
|
163
|
+
),
|
|
164
|
+
signal: opts?.signal,
|
|
165
|
+
requestVersion: CLIENT_PROTOCOL_CURRENT_VERSION,
|
|
166
|
+
requestVersionedDataHandler: HTTP_ACTION_REQUEST_VERSIONED,
|
|
167
|
+
responseVersion: CLIENT_PROTOCOL_CURRENT_VERSION,
|
|
168
|
+
responseVersionedDataHandler: HTTP_ACTION_RESPONSE_VERSIONED,
|
|
169
|
+
requestZodSchema: HttpActionRequestSchema,
|
|
170
|
+
responseZodSchema: HttpActionResponseSchema,
|
|
171
|
+
// JSON Request: args is the raw value
|
|
172
|
+
requestToJson: (args): HttpActionRequestJson => ({
|
|
173
|
+
args,
|
|
174
|
+
}),
|
|
175
|
+
// BARE Request: args needs to be CBOR-encoded
|
|
176
|
+
requestToBare: (args): protocol.HttpActionRequest => ({
|
|
177
|
+
args: bufferToArrayBuffer(cbor.encode(args)),
|
|
178
|
+
}),
|
|
179
|
+
// JSON Response: output is the raw value
|
|
180
|
+
responseFromJson: (json): Response => json.output as Response,
|
|
181
|
+
// BARE Response: output is ArrayBuffer that needs CBOR-decoding
|
|
182
|
+
responseFromBare: (bare): Response =>
|
|
183
|
+
cbor.decode(new Uint8Array(bare.output)) as Response,
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
return responseData;
|
|
187
|
+
} catch (err) {
|
|
188
|
+
// Standardize to ClientActorError instead of the native backend error
|
|
189
|
+
const { group, code, message, metadata } = deconstructError(
|
|
190
|
+
err,
|
|
191
|
+
logger(),
|
|
192
|
+
{},
|
|
193
|
+
true,
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
// Check if this is a scheduling error and try to get more details
|
|
197
|
+
if (actorId && isSchedulingError(group, code)) {
|
|
198
|
+
const schedulingError = await checkForSchedulingError(
|
|
199
|
+
group,
|
|
200
|
+
code,
|
|
201
|
+
actorId,
|
|
202
|
+
this.#actorQuery,
|
|
203
|
+
this.#driver,
|
|
204
|
+
);
|
|
205
|
+
if (schedulingError) {
|
|
206
|
+
throw schedulingError;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
throw new ActorError(group, code, message, metadata);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Establishes a persistent connection to the actor.
|
|
216
|
+
*
|
|
217
|
+
* @template AD The actor class that this connection is for.
|
|
218
|
+
* @returns {ActorConn<AD>} A connection to the actor.
|
|
219
|
+
*/
|
|
220
|
+
connect(): ActorConn<AnyActorDefinition> {
|
|
221
|
+
logger().debug({
|
|
222
|
+
msg: "establishing connection from handle",
|
|
223
|
+
query: this.#actorQuery,
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
const conn = new ActorConnRaw(
|
|
227
|
+
this.#client,
|
|
228
|
+
this.#driver,
|
|
229
|
+
this.#params,
|
|
230
|
+
this.#encoding,
|
|
231
|
+
this.#actorQuery,
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
return this.#client[CREATE_ACTOR_CONN_PROXY](
|
|
235
|
+
conn,
|
|
236
|
+
) as ActorConn<AnyActorDefinition>;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Fetches a resource from this actor via the /request endpoint. This is a
|
|
241
|
+
* convenience wrapper around the raw HTTP API.
|
|
242
|
+
*/
|
|
243
|
+
fetch(input: string | URL | Request, init?: RequestInit) {
|
|
244
|
+
return rawHttpFetch(
|
|
245
|
+
this.#driver,
|
|
246
|
+
this.#actorQuery,
|
|
247
|
+
this.#params,
|
|
248
|
+
input,
|
|
249
|
+
init,
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Opens a raw WebSocket connection to this actor.
|
|
255
|
+
*/
|
|
256
|
+
webSocket(path?: string, protocols?: string | string[]) {
|
|
257
|
+
return rawWebSocket(
|
|
258
|
+
this.#driver,
|
|
259
|
+
this.#actorQuery,
|
|
260
|
+
this.#params,
|
|
261
|
+
path,
|
|
262
|
+
protocols,
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Resolves the actor to get its unique actor ID.
|
|
268
|
+
*/
|
|
269
|
+
async resolve(): Promise<string> {
|
|
270
|
+
if ("getForKey" in this.#actorQuery) {
|
|
271
|
+
const name = this.#actorQuery.getForKey.name;
|
|
272
|
+
|
|
273
|
+
// Query the actor to get the id
|
|
274
|
+
const { actorId } = await queryActor(
|
|
275
|
+
undefined,
|
|
276
|
+
this.#actorQuery,
|
|
277
|
+
this.#driver,
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
this.#actorQuery = { getForId: { actorId, name } };
|
|
281
|
+
|
|
282
|
+
return actorId;
|
|
283
|
+
} else if ("getOrCreateForKey" in this.#actorQuery) {
|
|
284
|
+
const name = this.#actorQuery.getOrCreateForKey.name;
|
|
285
|
+
|
|
286
|
+
// Query the actor to get or create and get the id
|
|
287
|
+
const { actorId } = await queryActor(
|
|
288
|
+
undefined,
|
|
289
|
+
this.#actorQuery,
|
|
290
|
+
this.#driver,
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
this.#actorQuery = { getForId: { actorId, name } };
|
|
294
|
+
|
|
295
|
+
return actorId;
|
|
296
|
+
} else if ("getForId" in this.#actorQuery) {
|
|
297
|
+
// Skip since it's already resolved
|
|
298
|
+
return this.#actorQuery.getForId.actorId;
|
|
299
|
+
} else if ("create" in this.#actorQuery) {
|
|
300
|
+
// Cannot create a handle with this query
|
|
301
|
+
invariant(false, "actorQuery cannot be create");
|
|
302
|
+
} else {
|
|
303
|
+
assertUnreachable(this.#actorQuery);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Returns the raw URL for routing traffic to the actor.
|
|
309
|
+
*/
|
|
310
|
+
async getGatewayUrl(): Promise<string> {
|
|
311
|
+
const { actorId } = await queryActor(
|
|
312
|
+
undefined,
|
|
313
|
+
this.#actorQuery,
|
|
314
|
+
this.#driver,
|
|
315
|
+
);
|
|
316
|
+
return await this.#driver.buildGatewayUrl(actorId);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Stateless handle to a actor. Allows calling actor's remote procedure calls with inferred types
|
|
322
|
+
* without establishing a persistent connection.
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```
|
|
326
|
+
* const room = client.get<ChatRoom>(...etc...);
|
|
327
|
+
* // This calls the action named `sendMessage` on the `ChatRoom` actor without a connection.
|
|
328
|
+
* await room.sendMessage('Hello, world!');
|
|
329
|
+
* ```
|
|
330
|
+
*
|
|
331
|
+
* Private methods (e.g. those starting with `_`) are automatically excluded.
|
|
332
|
+
*
|
|
333
|
+
* @template AD The actor class that this handle is for.
|
|
334
|
+
* @see {@link ActorHandleRaw}
|
|
335
|
+
*/
|
|
336
|
+
export type ActorHandle<AD extends AnyActorDefinition> = Omit<
|
|
337
|
+
ActorHandleRaw,
|
|
338
|
+
"connect"
|
|
339
|
+
> & {
|
|
340
|
+
// Add typed version of ActorConn (instead of using AnyActorDefinition)
|
|
341
|
+
connect(): ActorConn<AD>;
|
|
342
|
+
// Resolve method returns the actor ID
|
|
343
|
+
resolve(): Promise<string>;
|
|
344
|
+
} & ActorDefinitionActions<AD>;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { Context as HonoContext } from "hono";
|
|
2
|
+
import * as errors from "@/actor/errors";
|
|
3
|
+
import { stringifyError } from "@/common/utils";
|
|
4
|
+
import type { ManagerDriver } from "@/driver-helpers/mod";
|
|
5
|
+
import type { ActorQuery } from "@/manager/protocol/query";
|
|
6
|
+
import { ActorSchedulingError } from "./errors";
|
|
7
|
+
import { logger } from "./log";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Query the manager driver to get or create a actor based on the provided query
|
|
11
|
+
*/
|
|
12
|
+
export async function queryActor(
|
|
13
|
+
c: HonoContext | undefined,
|
|
14
|
+
query: ActorQuery,
|
|
15
|
+
managerDriver: ManagerDriver,
|
|
16
|
+
): Promise<{ actorId: string }> {
|
|
17
|
+
logger().debug({ msg: "querying actor", query: JSON.stringify(query) });
|
|
18
|
+
let actorOutput: { actorId: string };
|
|
19
|
+
if ("getForId" in query) {
|
|
20
|
+
const output = await managerDriver.getForId({
|
|
21
|
+
c,
|
|
22
|
+
name: query.getForId.name,
|
|
23
|
+
actorId: query.getForId.actorId,
|
|
24
|
+
});
|
|
25
|
+
if (!output) throw new errors.ActorNotFound(query.getForId.actorId);
|
|
26
|
+
actorOutput = output;
|
|
27
|
+
} else if ("getForKey" in query) {
|
|
28
|
+
const existingActor = await managerDriver.getWithKey({
|
|
29
|
+
c,
|
|
30
|
+
name: query.getForKey.name,
|
|
31
|
+
key: query.getForKey.key,
|
|
32
|
+
});
|
|
33
|
+
if (!existingActor) {
|
|
34
|
+
throw new errors.ActorNotFound(
|
|
35
|
+
`${query.getForKey.name}:${JSON.stringify(query.getForKey.key)}`,
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
actorOutput = existingActor;
|
|
39
|
+
} else if ("getOrCreateForKey" in query) {
|
|
40
|
+
const getOrCreateOutput = await managerDriver.getOrCreateWithKey({
|
|
41
|
+
c,
|
|
42
|
+
name: query.getOrCreateForKey.name,
|
|
43
|
+
key: query.getOrCreateForKey.key,
|
|
44
|
+
input: query.getOrCreateForKey.input,
|
|
45
|
+
region: query.getOrCreateForKey.region,
|
|
46
|
+
});
|
|
47
|
+
actorOutput = {
|
|
48
|
+
actorId: getOrCreateOutput.actorId,
|
|
49
|
+
};
|
|
50
|
+
} else if ("create" in query) {
|
|
51
|
+
const createOutput = await managerDriver.createActor({
|
|
52
|
+
c,
|
|
53
|
+
name: query.create.name,
|
|
54
|
+
key: query.create.key,
|
|
55
|
+
input: query.create.input,
|
|
56
|
+
region: query.create.region,
|
|
57
|
+
});
|
|
58
|
+
actorOutput = {
|
|
59
|
+
actorId: createOutput.actorId,
|
|
60
|
+
};
|
|
61
|
+
} else {
|
|
62
|
+
throw new errors.InvalidRequest("Invalid query format");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
logger().debug({ msg: "actor query result", actorId: actorOutput.actorId });
|
|
66
|
+
return { actorId: actorOutput.actorId };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Extract the actor name from a query.
|
|
71
|
+
*/
|
|
72
|
+
export function getActorNameFromQuery(query: ActorQuery): string {
|
|
73
|
+
if ("getForId" in query) return query.getForId.name;
|
|
74
|
+
if ("getForKey" in query) return query.getForKey.name;
|
|
75
|
+
if ("getOrCreateForKey" in query) return query.getOrCreateForKey.name;
|
|
76
|
+
if ("create" in query) return query.create.name;
|
|
77
|
+
throw new errors.InvalidRequest("Invalid query format");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Fetch actor details and check for scheduling errors.
|
|
82
|
+
*/
|
|
83
|
+
export async function checkForSchedulingError(
|
|
84
|
+
group: string,
|
|
85
|
+
code: string,
|
|
86
|
+
actorId: string,
|
|
87
|
+
query: ActorQuery,
|
|
88
|
+
driver: ManagerDriver,
|
|
89
|
+
): Promise<ActorSchedulingError | null> {
|
|
90
|
+
const name = getActorNameFromQuery(query);
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const actor = await driver.getForId({ name, actorId });
|
|
94
|
+
|
|
95
|
+
if (actor?.error) {
|
|
96
|
+
logger().info({
|
|
97
|
+
msg: "found actor scheduling error",
|
|
98
|
+
actorId,
|
|
99
|
+
error: actor.error,
|
|
100
|
+
});
|
|
101
|
+
return new ActorSchedulingError(group, code, actorId, actor.error);
|
|
102
|
+
}
|
|
103
|
+
} catch (err) {
|
|
104
|
+
logger().warn({
|
|
105
|
+
msg: "failed to fetch actor details for scheduling error check",
|
|
106
|
+
actorId,
|
|
107
|
+
error: stringifyError(err),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return null;
|
|
112
|
+
}
|