rivetkit 2.0.42 → 2.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{tsup/config-CLnylLYY.d.ts → browser/client.d.ts} +2127 -1910
- 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/schemas/actor-inspector/v2.ts +796 -0
- package/dist/schemas/actor-inspector/v3.ts +899 -0
- package/dist/schemas/actor-persist/v4.ts +406 -0
- package/dist/schemas/client-protocol/v3.ts +554 -0
- package/dist/schemas/persist/v1.ts +781 -0
- package/dist/schemas/transport/v1.ts +697 -0
- package/dist/tsup/actor/errors.cjs +27 -3
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +37 -1
- package/dist/tsup/actor/errors.d.ts +37 -1
- package/dist/tsup/actor/errors.js +26 -1
- package/dist/tsup/{actor-router-consts-DzI2szci.d.cts → actor-router-consts-D29T1Z-K.d.cts} +1 -1
- package/dist/tsup/{actor-router-consts-DzI2szci.d.ts → actor-router-consts-D29T1Z-K.d.ts} +1 -1
- package/dist/tsup/chunk-424PT5DM.js +23 -0
- package/dist/tsup/chunk-424PT5DM.js.map +1 -0
- package/dist/tsup/{chunk-JDAD2YFA.js → chunk-5ESWDTHJ.js} +148 -273
- package/dist/tsup/chunk-5ESWDTHJ.js.map +1 -0
- package/dist/tsup/{chunk-FJ3KTN4V.js → chunk-6LIBPELE.js} +119 -11
- package/dist/tsup/chunk-6LIBPELE.js.map +1 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
- package/dist/tsup/{chunk-LFVF5SCU.js → chunk-7HTNH26M.js} +126 -1
- package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
- package/dist/tsup/chunk-7K4CYDGD.js +630 -0
- package/dist/tsup/chunk-7K4CYDGD.js.map +1 -0
- package/dist/tsup/{chunk-XXGJCOL6.js → chunk-A6YIZWTK.js} +2 -2
- package/dist/tsup/chunk-AIYEYMX5.cjs +630 -0
- package/dist/tsup/chunk-AIYEYMX5.cjs.map +1 -0
- package/dist/tsup/{chunk-Q6W7RJJP.js → chunk-DIGBC2VI.js} +211 -2316
- package/dist/tsup/chunk-DIGBC2VI.js.map +1 -0
- package/dist/tsup/{chunk-RZW2DNND.cjs → chunk-F6JYU5IK.cjs} +1957 -1039
- package/dist/tsup/chunk-F6JYU5IK.cjs.map +1 -0
- package/dist/tsup/chunk-HAZL2EPK.cjs +534 -0
- package/dist/tsup/chunk-HAZL2EPK.cjs.map +1 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
- package/dist/tsup/chunk-HIDX4C5Y.cjs +1036 -0
- package/dist/tsup/chunk-HIDX4C5Y.cjs.map +1 -0
- package/dist/tsup/chunk-IVG73YCW.js +534 -0
- package/dist/tsup/chunk-IVG73YCW.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-2XQS746M.cjs → chunk-L47L3ZWJ.cjs} +127 -2
- package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
- package/dist/tsup/{chunk-H4TB4X25.cjs → chunk-LW6KLR7A.cjs} +126 -18
- package/dist/tsup/chunk-LW6KLR7A.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-GMAVRZSF.js → chunk-M2T62AZQ.js} +1790 -872
- package/dist/tsup/chunk-M2T62AZQ.js.map +1 -0
- package/dist/tsup/chunk-MZ37VV3P.js +5974 -0
- package/dist/tsup/chunk-MZ37VV3P.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-OMEPCQK2.js +649 -0
- package/dist/tsup/chunk-OMEPCQK2.js.map +1 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
- package/dist/tsup/chunk-SSEP6DHP.cjs +2657 -0
- package/dist/tsup/chunk-SSEP6DHP.cjs.map +1 -0
- package/dist/tsup/chunk-T5YCUGVS.js +1036 -0
- package/dist/tsup/chunk-T5YCUGVS.js.map +1 -0
- package/dist/tsup/{chunk-EJVBH5VF.cjs → chunk-TPGXWFQT.cjs} +3 -3
- package/dist/tsup/{chunk-EJVBH5VF.cjs.map → chunk-TPGXWFQT.cjs.map} +1 -1
- package/dist/tsup/{chunk-X35U3YNX.cjs → chunk-TYLXNCA5.cjs} +214 -339
- package/dist/tsup/chunk-TYLXNCA5.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-XWBAQO5H.cjs +649 -0
- package/dist/tsup/chunk-XWBAQO5H.cjs.map +1 -0
- package/dist/tsup/chunk-YQ4LDVD6.cjs +5974 -0
- package/dist/tsup/chunk-YQ4LDVD6.cjs.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 +9 -10
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +11 -5
- package/dist/tsup/client/mod.d.ts +11 -5
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +4 -4
- package/dist/tsup/common/log.d.cts +2 -2
- package/dist/tsup/common/log.d.ts +2 -2
- package/dist/tsup/common/log.js +3 -2
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -3
- package/dist/tsup/config-BFqid9Gr.d.ts +2574 -0
- package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
- package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
- package/dist/tsup/{config-CZB2-W8x.d.cts → config-CAZphOS1.d.cts} +681 -355
- 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-D0QX9M11.d.ts → driver-Bxv62E2p.d.ts} +2 -2
- package/dist/tsup/{driver-q-zqG7fc.d.cts → driver-DYXwJR5D.d.cts} +2 -2
- package/dist/tsup/driver-helpers/mod.cjs +12 -6
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +12 -5
- package/dist/tsup/driver-helpers/mod.d.ts +12 -5
- package/dist/tsup/driver-helpers/mod.js +12 -5
- package/dist/tsup/driver-test-suite/mod.cjs +1370 -116
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +10 -4
- package/dist/tsup/driver-test-suite/mod.d.ts +10 -4
- package/dist/tsup/driver-test-suite/mod.js +2093 -838
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +29 -3
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +124 -3
- package/dist/tsup/inspector/mod.d.ts +124 -3
- package/dist/tsup/inspector/mod.js +72 -45
- package/dist/tsup/keys-CydblqMh.d.cts +13 -0
- package/dist/tsup/keys-CydblqMh.d.ts +13 -0
- package/dist/tsup/mod.cjs +16 -10
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +26 -14
- package/dist/tsup/mod.d.ts +26 -14
- package/dist/tsup/mod.js +20 -13
- package/dist/tsup/serve-test-suite/mod.cjs +1165 -83
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/serve-test-suite/mod.js +1114 -29
- package/dist/tsup/serve-test-suite/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +84 -11
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +10 -5
- package/dist/tsup/test/mod.d.ts +10 -5
- package/dist/tsup/test/mod.js +85 -11
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/utils.cjs +10 -4
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +72 -2
- package/dist/tsup/utils.d.ts +72 -2
- package/dist/tsup/utils.js +9 -2
- 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 +83 -0
- package/dist/tsup/workflow/mod.d.ts +83 -0
- package/dist/tsup/workflow/mod.js +16 -0
- package/dist/tsup/workflow/mod.js.map +1 -0
- package/package.json +62 -5
- package/src/actor/config.ts +478 -68
- package/src/actor/conn/mod.ts +68 -16
- package/src/actor/conn/state-manager.ts +2 -2
- package/src/actor/contexts/action.ts +20 -12
- package/src/actor/contexts/base/actor.ts +137 -7
- package/src/actor/contexts/base/conn-init.ts +27 -7
- package/src/actor/contexts/base/conn.ts +27 -18
- package/src/actor/contexts/before-action-response.ts +9 -2
- package/src/actor/contexts/before-connect.ts +7 -2
- package/src/actor/contexts/connect.ts +9 -2
- package/src/actor/contexts/create-conn-state.ts +7 -2
- package/src/actor/contexts/create-vars.ts +16 -3
- package/src/actor/contexts/create.ts +16 -3
- package/src/actor/contexts/destroy.ts +9 -3
- package/src/actor/contexts/disconnect.ts +10 -4
- package/src/actor/contexts/index.ts +4 -3
- package/src/actor/contexts/request.ts +23 -6
- package/src/actor/contexts/run.ts +47 -0
- package/src/actor/contexts/sleep.ts +9 -3
- package/src/actor/contexts/state-change.ts +9 -3
- package/src/actor/contexts/wake.ts +9 -3
- package/src/actor/contexts/websocket.ts +23 -6
- package/src/actor/database.ts +8 -18
- package/src/actor/definition.ts +20 -6
- package/src/actor/driver.ts +32 -3
- package/src/actor/errors.ts +127 -0
- package/src/actor/instance/connection-manager.ts +183 -80
- package/src/actor/instance/event-manager.ts +26 -15
- package/src/actor/instance/keys.ts +117 -0
- package/src/actor/instance/mod.ts +784 -174
- package/src/actor/instance/queue-manager.ts +603 -0
- package/src/actor/instance/queue.ts +287 -0
- package/src/actor/instance/schedule-manager.ts +49 -7
- package/src/actor/instance/state-manager.ts +35 -11
- package/src/actor/instance/traces-driver.ts +128 -0
- package/src/actor/mod.ts +26 -2
- package/src/actor/protocol/old.ts +28 -13
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +177 -21
- package/src/actor/router-websocket-endpoints.ts +18 -29
- package/src/actor/router.ts +177 -0
- package/src/actor/schema.ts +291 -0
- package/src/actor/utils.ts +40 -0
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +100 -33
- package/src/client/actor-handle.ts +61 -33
- package/src/client/client.ts +2 -4
- package/src/client/config.ts +1 -1
- package/src/client/mod.browser.ts +2 -0
- package/src/client/mod.ts +1 -4
- package/src/client/queue.ts +146 -0
- package/src/client/utils.ts +1 -1
- package/src/common/log.ts +1 -1
- package/src/common/utils.ts +3 -3
- 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/driver-helpers/mod.ts +1 -0
- package/src/driver-test-suite/mod.ts +69 -43
- package/src/driver-test-suite/tests/access-control.ts +218 -0
- package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
- package/src/driver-test-suite/tests/actor-db.ts +394 -0
- package/src/driver-test-suite/tests/actor-inspector.ts +259 -358
- package/src/driver-test-suite/tests/actor-kv.ts +41 -20
- package/src/driver-test-suite/tests/actor-queue.ts +324 -0
- package/src/driver-test-suite/tests/actor-run.ts +181 -0
- package/src/driver-test-suite/tests/actor-schedule.ts +5 -2
- package/src/driver-test-suite/tests/actor-sleep.ts +3 -3
- package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
- package/src/driver-test-suite/tests/actor-workflow.ts +108 -0
- package/src/driver-test-suite/tests/manager-driver.ts +11 -0
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +1 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +12 -12
- package/src/drivers/default.ts +7 -2
- package/src/drivers/engine/actor-driver.ts +45 -37
- package/src/drivers/engine/config.ts +1 -1
- package/src/drivers/file-system/actor.ts +20 -2
- package/src/drivers/file-system/global-state.ts +569 -258
- package/src/drivers/file-system/kv-limits.ts +70 -0
- package/src/drivers/file-system/manager.ts +22 -6
- package/src/drivers/file-system/mod.ts +39 -16
- package/src/drivers/file-system/sqlite-runtime.ts +210 -0
- package/src/inspector/actor-inspector.ts +224 -102
- package/src/inspector/config.ts +1 -1
- package/src/inspector/handler.ts +102 -20
- package/src/inspector/mod.browser.ts +8 -0
- package/src/inspector/mod.ts +2 -0
- package/src/inspector/serve-ui.ts +40 -0
- package/src/inspector/transport.ts +18 -0
- package/src/inspector/utils.ts +5 -39
- package/src/manager/gateway.ts +1 -1
- package/src/manager/protocol/mod.ts +1 -1
- package/src/manager/protocol/query.ts +1 -1
- package/src/manager/router-schema.ts +1 -1
- package/src/manager/router.ts +38 -12
- package/src/manager-api/actors.ts +1 -1
- package/src/manager-api/common.ts +1 -1
- package/src/registry/config/driver.ts +1 -1
- package/src/registry/config/index.ts +212 -43
- package/src/registry/config/legacy-runner.ts +1 -1
- package/src/registry/config/runner.ts +1 -1
- package/src/registry/config/serverless.ts +1 -1
- package/src/registry/index.ts +7 -5
- package/src/remote-manager-driver/api-utils.ts +1 -1
- package/src/schemas/actor-inspector/mod.ts +1 -1
- package/src/schemas/actor-inspector/versioned.ts +195 -8
- package/src/schemas/actor-persist/versioned.ts +87 -7
- package/src/schemas/client-protocol/mod.ts +1 -1
- package/src/schemas/client-protocol/versioned.ts +127 -11
- package/src/schemas/client-protocol-zod/mod.ts +16 -1
- package/src/schemas/persist/mod.ts +1 -0
- package/src/schemas/transport/mod.ts +1 -0
- package/src/serde.ts +1 -1
- package/src/serve-test-suite/mod.ts +10 -9
- package/src/test/mod.ts +15 -56
- package/src/utils/endpoint-parser.test.ts +1 -1
- package/src/utils/endpoint-parser.ts +1 -1
- package/src/utils/env-vars.ts +12 -1
- package/src/utils/node.ts +15 -2
- package/src/utils.test.ts +34 -0
- package/src/utils.ts +140 -6
- package/src/workflow/constants.ts +2 -0
- package/src/workflow/context.ts +532 -0
- package/src/workflow/driver.ts +191 -0
- package/src/workflow/inspector.ts +268 -0
- package/src/workflow/mod.ts +122 -0
- package/dist/tsup/chunk-2IJTYN6K.cjs +0 -278
- package/dist/tsup/chunk-2IJTYN6K.cjs.map +0 -1
- package/dist/tsup/chunk-2XQS746M.cjs.map +0 -1
- package/dist/tsup/chunk-3VP5CSHV.cjs +0 -114
- package/dist/tsup/chunk-3VP5CSHV.cjs.map +0 -1
- package/dist/tsup/chunk-AQFSQMBG.js +0 -114
- package/dist/tsup/chunk-AQFSQMBG.js.map +0 -1
- package/dist/tsup/chunk-E6ZE2YEA.js +0 -664
- package/dist/tsup/chunk-E6ZE2YEA.js.map +0 -1
- package/dist/tsup/chunk-FJ3KTN4V.js.map +0 -1
- package/dist/tsup/chunk-GBENOENJ.cjs +0 -8
- package/dist/tsup/chunk-GBENOENJ.cjs.map +0 -1
- package/dist/tsup/chunk-GD7UXGOE.cjs +0 -4762
- package/dist/tsup/chunk-GD7UXGOE.cjs.map +0 -1
- package/dist/tsup/chunk-GMAVRZSF.js.map +0 -1
- package/dist/tsup/chunk-H4TB4X25.cjs.map +0 -1
- package/dist/tsup/chunk-JDAD2YFA.js.map +0 -1
- package/dist/tsup/chunk-KCOVZOPS.js +0 -1946
- package/dist/tsup/chunk-KCOVZOPS.js.map +0 -1
- package/dist/tsup/chunk-KDFWJKMJ.cjs +0 -664
- package/dist/tsup/chunk-KDFWJKMJ.cjs.map +0 -1
- package/dist/tsup/chunk-LFVF5SCU.js.map +0 -1
- package/dist/tsup/chunk-Q6W7RJJP.js.map +0 -1
- package/dist/tsup/chunk-RUW5CZ5Z.cjs +0 -1949
- package/dist/tsup/chunk-RUW5CZ5Z.cjs.map +0 -1
- package/dist/tsup/chunk-RZW2DNND.cjs.map +0 -1
- package/dist/tsup/chunk-TCOEBUUE.js +0 -278
- package/dist/tsup/chunk-TCOEBUUE.js.map +0 -1
- package/dist/tsup/chunk-X35U3YNX.cjs.map +0 -1
- package/dist/tsup/keys-Chhy4ylv.d.cts +0 -8
- package/dist/tsup/keys-Chhy4ylv.d.ts +0 -8
- package/dist/tsup/v1-Gq4avTK3.d.cts +0 -240
- package/dist/tsup/v1-Gq4avTK3.d.ts +0 -240
- /package/dist/tsup/{chunk-XXGJCOL6.js.map → chunk-A6YIZWTK.js.map} +0 -0
|
@@ -1,363 +1,264 @@
|
|
|
1
|
-
import { describe } from "vitest";
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
2
|
import type { DriverTestConfig } from "../mod";
|
|
3
|
+
import { setupDriverTest } from "../utils";
|
|
3
4
|
|
|
4
5
|
export function runActorInspectorTests(driverTestConfig: DriverTestConfig) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
// const handle = await client.counter.create(["test-rpcs"]);
|
|
263
|
-
// const actorId = await handle.resolve();
|
|
264
|
-
// const http = createActorInspectorClient(
|
|
265
|
-
// `${endpoint}/actors/inspect`,
|
|
266
|
-
// {
|
|
267
|
-
// headers: {
|
|
268
|
-
// Authorization: `Bearer token`,
|
|
269
|
-
// [HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
270
|
-
// getForId: { name: "counter", actorId },
|
|
271
|
-
// } satisfies ActorQuery),
|
|
272
|
-
// },
|
|
273
|
-
// },
|
|
274
|
-
// );
|
|
275
|
-
// const response = await http.rpcs.$get();
|
|
276
|
-
// expect(response.status).toBe(200);
|
|
277
|
-
// const data = await response.json();
|
|
278
|
-
// expect(data).toEqual(
|
|
279
|
-
// expect.objectContaining({
|
|
280
|
-
// rpcs: expect.arrayContaining(["increment", "getCount"]),
|
|
281
|
-
// }),
|
|
282
|
-
// );
|
|
283
|
-
// });
|
|
284
|
-
// // database is not officially supported yet
|
|
285
|
-
// test.skip("should get actor database info", async (c) => {
|
|
286
|
-
// const { client, endpoint } = await setupDriverTest(
|
|
287
|
-
// c,
|
|
288
|
-
// driverTestConfig,
|
|
289
|
-
// );
|
|
290
|
-
// const handle = await client.counter.create(["test-db"]);
|
|
291
|
-
// const actorId = await handle.resolve();
|
|
292
|
-
// const http = createActorInspectorClient(
|
|
293
|
-
// `${endpoint}/actors/inspect`,
|
|
294
|
-
// {
|
|
295
|
-
// headers: {
|
|
296
|
-
// Authorization: `Bearer token`,
|
|
297
|
-
// [HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
298
|
-
// getForId: { name: "counter", actorId },
|
|
299
|
-
// } satisfies ActorQuery),
|
|
300
|
-
// },
|
|
301
|
-
// },
|
|
302
|
-
// );
|
|
303
|
-
// const response = await http.db.$get();
|
|
304
|
-
// expect(response.status).toBe(200);
|
|
305
|
-
// const data = await response.json();
|
|
306
|
-
// // Database might be enabled or disabled depending on actor configuration
|
|
307
|
-
// expect(data).toHaveProperty("enabled");
|
|
308
|
-
// expect(typeof data.enabled).toBe("boolean");
|
|
309
|
-
// if (data.enabled) {
|
|
310
|
-
// expect(data).toHaveProperty("db");
|
|
311
|
-
// expect(Array.isArray(data.db)).toBe(true);
|
|
312
|
-
// } else {
|
|
313
|
-
// expect(data.db).toBe(null);
|
|
314
|
-
// }
|
|
315
|
-
// });
|
|
316
|
-
// test.skip("should execute database query when database is enabled", async (c) => {
|
|
317
|
-
// const { client, endpoint } = await setupDriverTest(
|
|
318
|
-
// c,
|
|
319
|
-
// driverTestConfig,
|
|
320
|
-
// );
|
|
321
|
-
// const handle = await client.counter.create(["test-db-query"]);
|
|
322
|
-
// const actorId = await handle.resolve();
|
|
323
|
-
// const http = createActorInspectorClient(
|
|
324
|
-
// `${endpoint}/actors/inspect`,
|
|
325
|
-
// {
|
|
326
|
-
// headers: {
|
|
327
|
-
// Authorization: `Bearer token`,
|
|
328
|
-
// [HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
329
|
-
// getForId: { name: "counter", actorId },
|
|
330
|
-
// } satisfies ActorQuery),
|
|
331
|
-
// },
|
|
332
|
-
// },
|
|
333
|
-
// );
|
|
334
|
-
// // First check if database is enabled
|
|
335
|
-
// const dbInfoResponse = await http.db.$get();
|
|
336
|
-
// const dbInfo = await dbInfoResponse.json();
|
|
337
|
-
// if (dbInfo.enabled) {
|
|
338
|
-
// // Execute a simple query
|
|
339
|
-
// const queryResponse = await http.db.$post({
|
|
340
|
-
// json: {
|
|
341
|
-
// query: "SELECT 1 as test",
|
|
342
|
-
// params: [],
|
|
343
|
-
// },
|
|
344
|
-
// });
|
|
345
|
-
// expect(queryResponse.status).toBe(200);
|
|
346
|
-
// const queryData = await queryResponse.json();
|
|
347
|
-
// expect(queryData).toHaveProperty("result");
|
|
348
|
-
// } else {
|
|
349
|
-
// // If database is not enabled, the POST should return enabled: false
|
|
350
|
-
// const queryResponse = await http.db.$post({
|
|
351
|
-
// json: {
|
|
352
|
-
// query: "SELECT 1 as test",
|
|
353
|
-
// params: [],
|
|
354
|
-
// },
|
|
355
|
-
// });
|
|
356
|
-
// expect(queryResponse.status).toBe(200);
|
|
357
|
-
// const queryData = await queryResponse.json();
|
|
358
|
-
// expect(queryData).toEqual({ enabled: false });
|
|
359
|
-
// }
|
|
360
|
-
// });
|
|
361
|
-
// });
|
|
6
|
+
describe("Actor Inspector HTTP API", () => {
|
|
7
|
+
test("GET /inspector/state returns actor state", async (c) => {
|
|
8
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
9
|
+
const handle = client.counter.getOrCreate(["inspector-state"]);
|
|
10
|
+
|
|
11
|
+
// Set some state first
|
|
12
|
+
await handle.increment(5);
|
|
13
|
+
|
|
14
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
15
|
+
const response = await fetch(`${gatewayUrl}/inspector/state`, {
|
|
16
|
+
headers: { Authorization: "Bearer token" },
|
|
17
|
+
});
|
|
18
|
+
expect(response.status).toBe(200);
|
|
19
|
+
const data = await response.json();
|
|
20
|
+
expect(data).toEqual({ state: { count: 5 } });
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test("PATCH /inspector/state updates actor state", async (c) => {
|
|
24
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
25
|
+
const handle = client.counter.getOrCreate([
|
|
26
|
+
"inspector-set-state",
|
|
27
|
+
]);
|
|
28
|
+
|
|
29
|
+
await handle.increment(5);
|
|
30
|
+
|
|
31
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
32
|
+
|
|
33
|
+
// Replace state
|
|
34
|
+
const patchResponse = await fetch(
|
|
35
|
+
`${gatewayUrl}/inspector/state`,
|
|
36
|
+
{
|
|
37
|
+
method: "PATCH",
|
|
38
|
+
headers: {
|
|
39
|
+
"Content-Type": "application/json",
|
|
40
|
+
Authorization: "Bearer token",
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify({ state: { count: 42 } }),
|
|
43
|
+
},
|
|
44
|
+
);
|
|
45
|
+
expect(patchResponse.status).toBe(200);
|
|
46
|
+
const patchData = await patchResponse.json();
|
|
47
|
+
expect(patchData).toEqual({ ok: true });
|
|
48
|
+
|
|
49
|
+
// Verify via action
|
|
50
|
+
const count = await handle.getCount();
|
|
51
|
+
expect(count).toBe(42);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test("GET /inspector/connections returns connections list", async (c) => {
|
|
55
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
56
|
+
const handle = client.counter.getOrCreate([
|
|
57
|
+
"inspector-connections",
|
|
58
|
+
]);
|
|
59
|
+
|
|
60
|
+
// Ensure actor exists
|
|
61
|
+
await handle.increment(0);
|
|
62
|
+
|
|
63
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
64
|
+
const response = await fetch(
|
|
65
|
+
`${gatewayUrl}/inspector/connections`,
|
|
66
|
+
{
|
|
67
|
+
headers: { Authorization: "Bearer token" },
|
|
68
|
+
},
|
|
69
|
+
);
|
|
70
|
+
expect(response.status).toBe(200);
|
|
71
|
+
const data = (await response.json()) as {
|
|
72
|
+
connections: unknown[];
|
|
73
|
+
};
|
|
74
|
+
expect(data).toHaveProperty("connections");
|
|
75
|
+
expect(Array.isArray(data.connections)).toBe(true);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test("GET /inspector/rpcs returns available actions", async (c) => {
|
|
79
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
80
|
+
const handle = client.counter.getOrCreate(["inspector-rpcs"]);
|
|
81
|
+
|
|
82
|
+
// Ensure actor exists
|
|
83
|
+
await handle.increment(0);
|
|
84
|
+
|
|
85
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
86
|
+
const response = await fetch(`${gatewayUrl}/inspector/rpcs`, {
|
|
87
|
+
headers: { Authorization: "Bearer token" },
|
|
88
|
+
});
|
|
89
|
+
expect(response.status).toBe(200);
|
|
90
|
+
const data = (await response.json()) as { rpcs: string[] };
|
|
91
|
+
expect(data).toHaveProperty("rpcs");
|
|
92
|
+
expect(data.rpcs).toContain("increment");
|
|
93
|
+
expect(data.rpcs).toContain("getCount");
|
|
94
|
+
expect(data.rpcs).toContain("setCount");
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test("POST /inspector/action/:name executes an action", async (c) => {
|
|
98
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
99
|
+
const handle = client.counter.getOrCreate([
|
|
100
|
+
"inspector-action",
|
|
101
|
+
]);
|
|
102
|
+
|
|
103
|
+
await handle.increment(10);
|
|
104
|
+
|
|
105
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
106
|
+
const response = await fetch(
|
|
107
|
+
`${gatewayUrl}/inspector/action/increment`,
|
|
108
|
+
{
|
|
109
|
+
method: "POST",
|
|
110
|
+
headers: {
|
|
111
|
+
"Content-Type": "application/json",
|
|
112
|
+
Authorization: "Bearer token",
|
|
113
|
+
},
|
|
114
|
+
body: JSON.stringify({ args: [5] }),
|
|
115
|
+
},
|
|
116
|
+
);
|
|
117
|
+
expect(response.status).toBe(200);
|
|
118
|
+
const data = (await response.json()) as { output: number };
|
|
119
|
+
expect(data.output).toBe(15);
|
|
120
|
+
|
|
121
|
+
// Verify via normal action
|
|
122
|
+
const count = await handle.getCount();
|
|
123
|
+
expect(count).toBe(15);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
test("GET /inspector/queue returns queue status", async (c) => {
|
|
127
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
128
|
+
const handle = client.counter.getOrCreate(["inspector-queue"]);
|
|
129
|
+
|
|
130
|
+
// Ensure actor exists
|
|
131
|
+
await handle.increment(0);
|
|
132
|
+
|
|
133
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
134
|
+
const response = await fetch(
|
|
135
|
+
`${gatewayUrl}/inspector/queue?limit=10`,
|
|
136
|
+
{
|
|
137
|
+
headers: { Authorization: "Bearer token" },
|
|
138
|
+
},
|
|
139
|
+
);
|
|
140
|
+
expect(response.status).toBe(200);
|
|
141
|
+
const data = (await response.json()) as {
|
|
142
|
+
size: number;
|
|
143
|
+
maxSize: number;
|
|
144
|
+
truncated: boolean;
|
|
145
|
+
messages: unknown[];
|
|
146
|
+
};
|
|
147
|
+
expect(data).toHaveProperty("size");
|
|
148
|
+
expect(data).toHaveProperty("maxSize");
|
|
149
|
+
expect(data).toHaveProperty("truncated");
|
|
150
|
+
expect(data).toHaveProperty("messages");
|
|
151
|
+
expect(typeof data.size).toBe("number");
|
|
152
|
+
expect(typeof data.maxSize).toBe("number");
|
|
153
|
+
expect(typeof data.truncated).toBe("boolean");
|
|
154
|
+
expect(Array.isArray(data.messages)).toBe(true);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
test("GET /inspector/traces returns trace data", async (c) => {
|
|
158
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
159
|
+
const handle = client.counter.getOrCreate([
|
|
160
|
+
"inspector-traces",
|
|
161
|
+
]);
|
|
162
|
+
|
|
163
|
+
// Perform an action to generate traces
|
|
164
|
+
await handle.increment(1);
|
|
165
|
+
|
|
166
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
167
|
+
const response = await fetch(
|
|
168
|
+
`${gatewayUrl}/inspector/traces?startMs=0&endMs=${Date.now() + 60000}&limit=100`,
|
|
169
|
+
{
|
|
170
|
+
headers: { Authorization: "Bearer token" },
|
|
171
|
+
},
|
|
172
|
+
);
|
|
173
|
+
expect(response.status).toBe(200);
|
|
174
|
+
const data = (await response.json()) as {
|
|
175
|
+
otlp: unknown;
|
|
176
|
+
clamped: boolean;
|
|
177
|
+
};
|
|
178
|
+
expect(data).toHaveProperty("otlp");
|
|
179
|
+
expect(data).toHaveProperty("clamped");
|
|
180
|
+
expect(typeof data.clamped).toBe("boolean");
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
test("GET /inspector/workflow-history returns workflow status", async (c) => {
|
|
184
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
185
|
+
const handle = client.counter.getOrCreate([
|
|
186
|
+
"inspector-workflow",
|
|
187
|
+
]);
|
|
188
|
+
|
|
189
|
+
// Ensure actor exists
|
|
190
|
+
await handle.increment(0);
|
|
191
|
+
|
|
192
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
193
|
+
const response = await fetch(
|
|
194
|
+
`${gatewayUrl}/inspector/workflow-history`,
|
|
195
|
+
{
|
|
196
|
+
headers: { Authorization: "Bearer token" },
|
|
197
|
+
},
|
|
198
|
+
);
|
|
199
|
+
expect(response.status).toBe(200);
|
|
200
|
+
const data = (await response.json()) as {
|
|
201
|
+
history: unknown;
|
|
202
|
+
isWorkflowEnabled: boolean;
|
|
203
|
+
};
|
|
204
|
+
expect(data).toHaveProperty("history");
|
|
205
|
+
expect(data).toHaveProperty("isWorkflowEnabled");
|
|
206
|
+
// Counter actor has no workflow, so it should be disabled
|
|
207
|
+
expect(data.isWorkflowEnabled).toBe(false);
|
|
208
|
+
expect(data.history).toBeNull();
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
test("GET /inspector/summary returns full actor snapshot", async (c) => {
|
|
212
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
213
|
+
const handle = client.counter.getOrCreate([
|
|
214
|
+
"inspector-summary",
|
|
215
|
+
]);
|
|
216
|
+
|
|
217
|
+
await handle.increment(7);
|
|
218
|
+
|
|
219
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
220
|
+
const response = await fetch(
|
|
221
|
+
`${gatewayUrl}/inspector/summary`,
|
|
222
|
+
{
|
|
223
|
+
headers: { Authorization: "Bearer token" },
|
|
224
|
+
},
|
|
225
|
+
);
|
|
226
|
+
expect(response.status).toBe(200);
|
|
227
|
+
const data = (await response.json()) as {
|
|
228
|
+
state: { count: number };
|
|
229
|
+
connections: unknown[];
|
|
230
|
+
rpcs: string[];
|
|
231
|
+
queueSize: number;
|
|
232
|
+
isStateEnabled: boolean;
|
|
233
|
+
isDatabaseEnabled: boolean;
|
|
234
|
+
isWorkflowEnabled: boolean;
|
|
235
|
+
workflowHistory: unknown;
|
|
236
|
+
};
|
|
237
|
+
expect(data.state).toEqual({ count: 7 });
|
|
238
|
+
expect(Array.isArray(data.connections)).toBe(true);
|
|
239
|
+
expect(data.rpcs).toContain("increment");
|
|
240
|
+
expect(typeof data.queueSize).toBe("number");
|
|
241
|
+
expect(data.isStateEnabled).toBe(true);
|
|
242
|
+
expect(typeof data.isDatabaseEnabled).toBe("boolean");
|
|
243
|
+
expect(data.isWorkflowEnabled).toBe(false);
|
|
244
|
+
expect(data.workflowHistory).toBeNull();
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
test("inspector endpoints require auth in non-dev mode", async (c) => {
|
|
248
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
249
|
+
const handle = client.counter.getOrCreate([
|
|
250
|
+
"inspector-auth",
|
|
251
|
+
]);
|
|
252
|
+
|
|
253
|
+
await handle.increment(0);
|
|
254
|
+
|
|
255
|
+
const gatewayUrl = await handle.getGatewayUrl();
|
|
256
|
+
|
|
257
|
+
// Request with wrong token should fail
|
|
258
|
+
const response = await fetch(`${gatewayUrl}/inspector/state`, {
|
|
259
|
+
headers: { Authorization: "Bearer wrong-token" },
|
|
260
|
+
});
|
|
261
|
+
expect(response.status).toBe(401);
|
|
262
|
+
});
|
|
362
263
|
});
|
|
363
264
|
}
|