rivetkit 2.3.0-rc.9 → 2.3.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 +511 -62
- package/dist/browser/client.js +230 -174
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +53 -23
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/actor/errors.cjs +4 -2
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +1 -1
- package/dist/tsup/actor/errors.d.ts +1 -1
- package/dist/tsup/actor/errors.js +3 -1
- package/dist/tsup/agent-os/index.cjs +2163 -2087
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +509 -69
- package/dist/tsup/agent-os/index.d.ts +509 -69
- package/dist/tsup/agent-os/index.js +2163 -2087
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-WQ4HNA4W.cjs → chunk-3MHDOUD7.cjs} +73 -3
- package/dist/tsup/chunk-3MHDOUD7.cjs.map +1 -0
- package/dist/tsup/{chunk-QAZLM4WT.cjs → chunk-4FC7TVS6.cjs} +8 -4
- package/dist/tsup/chunk-4FC7TVS6.cjs.map +1 -0
- package/dist/tsup/{chunk-4CGA6QJO.cjs → chunk-4UUEB43Y.cjs} +24 -9
- package/dist/tsup/chunk-4UUEB43Y.cjs.map +1 -0
- package/dist/tsup/{chunk-GVTOE34S.cjs → chunk-5IWLUJ6W.cjs} +222 -235
- package/dist/tsup/chunk-5IWLUJ6W.cjs.map +1 -0
- package/dist/tsup/{chunk-MMMEZM5J.js → chunk-H6VVZMWN.js} +4 -4
- package/dist/tsup/chunk-H6VVZMWN.js.map +1 -0
- package/dist/tsup/{chunk-3YY5S6TV.js → chunk-HXUEHHJF.js} +2 -2
- package/dist/tsup/chunk-HXUEHHJF.js.map +1 -0
- package/dist/tsup/{chunk-H7P7WR2Y.js → chunk-I35VSLEM.js} +6 -6
- package/dist/tsup/chunk-I35VSLEM.js.map +1 -0
- package/dist/tsup/{chunk-H37XQU3I.js → chunk-JBUZRPY5.js} +2 -2
- package/dist/tsup/{chunk-CPA4Y3RG.cjs → chunk-JLJJZYCJ.cjs} +10 -10
- package/dist/tsup/chunk-JLJJZYCJ.cjs.map +1 -0
- package/dist/tsup/{chunk-PCBNKI2J.js → chunk-JZ7TWV65.js} +1 -1
- package/dist/tsup/chunk-JZ7TWV65.js.map +1 -0
- package/dist/tsup/{chunk-VRCIXJRN.js → chunk-L2X3YFER.js} +64 -10
- package/dist/tsup/chunk-L2X3YFER.js.map +1 -0
- package/dist/tsup/{chunk-Y5NSCZA2.cjs → chunk-MNHKOS6L.cjs} +72 -18
- package/dist/tsup/chunk-MNHKOS6L.cjs.map +1 -0
- package/dist/tsup/{chunk-KJTA3ATT.js → chunk-NERUIBOT.js} +22 -7
- package/dist/tsup/chunk-NERUIBOT.js.map +1 -0
- package/dist/tsup/{chunk-4WPEZBK4.cjs → chunk-OST76LRW.cjs} +10 -10
- package/dist/tsup/chunk-OST76LRW.cjs.map +1 -0
- package/dist/tsup/{chunk-MALSPBAF.cjs → chunk-OZBCXBVP.cjs} +3 -3
- package/dist/tsup/{chunk-MALSPBAF.cjs.map → chunk-OZBCXBVP.cjs.map} +1 -1
- package/dist/tsup/{chunk-F3Q5BFQ6.js → chunk-PT6OIW5E.js} +66 -79
- package/dist/tsup/chunk-PT6OIW5E.js.map +1 -0
- package/dist/tsup/{chunk-W7EYSYVI.js → chunk-R6KPN5EW.js} +134 -20
- package/dist/tsup/chunk-R6KPN5EW.js.map +1 -0
- package/dist/tsup/{chunk-VJFRBJVQ.cjs → chunk-V5KMAMX3.cjs} +138 -24
- package/dist/tsup/chunk-V5KMAMX3.cjs.map +1 -0
- package/dist/tsup/{chunk-LD5YASJU.cjs → chunk-VE2X4KMG.cjs} +2 -2
- package/dist/tsup/{chunk-LD5YASJU.cjs.map → chunk-VE2X4KMG.cjs.map} +1 -1
- package/dist/tsup/{chunk-T6YVRM4K.js → chunk-XIX5DOZN.js} +72 -2
- package/dist/tsup/chunk-XIX5DOZN.js.map +1 -0
- package/dist/tsup/{chunk-2NDZ7JCR.cjs → chunk-ZA7FLHKH.cjs} +1 -1
- package/dist/tsup/chunk-ZA7FLHKH.cjs.map +1 -0
- package/dist/tsup/{chunk-KIWH5H3K.js → chunk-ZZ3WBRPD.js} +7 -3
- package/dist/tsup/chunk-ZZ3WBRPD.js.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +5 -5
- package/dist/tsup/client/mod.d.ts +5 -5
- package/dist/tsup/client/mod.js +8 -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-Ca8dN4cS.d.cts → config-CzvopP5m.d.cts} +544 -23
- package/dist/tsup/{config-CxjGYf4K.d.cts → config-D49x8NpL.d.cts} +1 -2
- package/dist/tsup/{config-CxjGYf4K.d.ts → config-D49x8NpL.d.ts} +1 -2
- package/dist/tsup/{config-0Ta55UV0.d.ts → config-DZuT7tcp.d.ts} +544 -23
- package/dist/tsup/context-CyAdY-aA.d.ts +128 -0
- package/dist/tsup/context-sNB28g0N.d.cts +128 -0
- package/dist/tsup/db/drizzle.cjs +3 -3
- package/dist/tsup/db/drizzle.d.cts +1 -1
- package/dist/tsup/db/drizzle.d.ts +1 -1
- package/dist/tsup/db/drizzle.js +1 -1
- package/dist/tsup/db/mod.cjs +2 -2
- package/dist/tsup/db/mod.d.cts +2 -2
- package/dist/tsup/db/mod.d.ts +2 -2
- package/dist/tsup/db/mod.js +1 -1
- package/dist/tsup/dynamic/mod.cjs +24 -0
- package/dist/tsup/dynamic/mod.cjs.map +1 -0
- package/dist/tsup/dynamic/mod.d.cts +37 -0
- package/dist/tsup/dynamic/mod.d.ts +37 -0
- package/dist/tsup/dynamic/mod.js +24 -0
- package/dist/tsup/dynamic/mod.js.map +1 -0
- package/dist/tsup/inspector/mod.cjs +6 -6
- package/dist/tsup/inspector/mod.js +5 -5
- package/dist/tsup/inspector-tab/mod.cjs +173 -0
- package/dist/tsup/inspector-tab/mod.cjs.map +1 -0
- package/dist/tsup/inspector-tab/mod.d.cts +250 -0
- package/dist/tsup/inspector-tab/mod.d.ts +250 -0
- package/dist/tsup/inspector-tab/mod.js +173 -0
- package/dist/tsup/inspector-tab/mod.js.map +1 -0
- package/dist/tsup/mod.cjs +758 -348
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +5 -5
- package/dist/tsup/mod.d.ts +5 -5
- package/dist/tsup/mod.js +662 -252
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +21 -18
- 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 +18 -15
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/{utils-DVekpm4I.d.cts → utils-CqDnC_PS.d.cts} +2 -1
- package/dist/tsup/{utils-DVekpm4I.d.ts → utils-CqDnC_PS.d.ts} +2 -1
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.d.cts +1 -1
- package/dist/tsup/utils.d.ts +1 -1
- package/dist/tsup/utils.js +2 -2
- package/dist/tsup/workflow/mod.cjs +383 -322
- package/dist/tsup/workflow/mod.cjs.map +1 -1
- package/dist/tsup/workflow/mod.d.cts +8 -8
- package/dist/tsup/workflow/mod.d.ts +8 -8
- package/dist/tsup/workflow/mod.js +360 -299
- package/dist/tsup/workflow/mod.js.map +1 -1
- package/package.json +35 -14
- package/src/actor/config.ts +173 -51
- package/src/actor/contexts/index.ts +7 -2
- package/src/actor/definition.ts +17 -19
- package/src/actor/driver.ts +3 -3
- package/src/actor/errors.ts +20 -3
- package/src/actor/instance/mod.ts +26 -34
- package/src/actor/keys.ts +1 -1
- package/src/actor/mod.ts +22 -20
- package/src/actor/schema.ts +2 -2
- package/src/agent-os/actor/index.ts +38 -18
- package/src/agent-os/actor/preview.ts +1 -2
- package/src/agent-os/actor/session.ts +2 -2
- package/src/agent-os/config.ts +1 -1
- package/src/agent-os/fs/database-vfs.ts +1 -1
- package/src/agent-os/index.ts +16 -15
- package/src/client/actor-common.ts +87 -54
- package/src/client/actor-conn.ts +8 -36
- package/src/client/actor-handle.ts +69 -51
- package/src/client/actor-query.ts +5 -5
- package/src/client/errors.ts +1 -1
- package/src/client/lifecycle-errors.ts +2 -4
- package/src/client/query.ts +1 -1
- package/src/client/queue.ts +8 -3
- package/src/client/raw-utils.ts +8 -6
- package/src/client/resolve-gateway-target.ts +1 -1
- package/src/client/utils.ts +2 -7
- package/src/common/actor-websocket.ts +3 -1
- package/src/common/bare/actor-persist/v1.ts +205 -163
- package/src/common/bare/actor-persist/v2.ts +265 -213
- package/src/common/bare/actor-persist/v3.ts +176 -172
- package/src/common/bare/actor-persist/v4.ts +254 -253
- package/src/common/bare/transport/v1.ts +659 -543
- package/src/common/client-protocol-versioned.ts +66 -64
- package/src/common/database/config.ts +2 -8
- package/src/common/database/native-database.ts +1 -1
- package/src/common/database/shared.ts +1 -0
- package/src/common/encoding.ts +250 -16
- package/src/common/engine.ts +28 -1
- package/src/common/eventsource.ts +1 -1
- package/src/common/inline-websocket-adapter.ts +14 -13
- package/src/common/log.ts +1 -0
- package/src/common/router.ts +13 -17
- package/src/common/utils.ts +1 -150
- package/src/common/websocket-interface.ts +1 -1
- package/src/db/mod.ts +1 -1
- package/src/devtools-loader/index.ts +4 -7
- package/src/devtools-loader/serve-devtools.ts +26 -0
- package/src/drivers/engine/actor-driver.ts +58 -56
- package/src/dynamic/instance.ts +32 -0
- package/src/dynamic/internal.ts +50 -0
- package/src/dynamic/isolate-runtime.ts +66 -0
- package/src/dynamic/mod.ts +32 -0
- package/src/engine-client/actor-http-client.ts +3 -3
- package/src/engine-client/actor-websocket-client.ts +6 -5
- package/src/engine-client/api-endpoints.ts +51 -2
- package/src/engine-client/api-utils.ts +2 -2
- package/src/engine-client/driver.ts +1 -1
- package/src/engine-client/mod.ts +6 -3
- package/src/engine-client/ws-proxy.ts +9 -4
- package/src/inspector/client.browser.ts +5 -11
- package/src/inspector/mod.ts +1 -3
- package/src/inspector-tab/mod.ts +315 -0
- package/src/registry/config/envoy.ts +1 -2
- package/src/registry/config/index.ts +40 -16
- package/src/registry/index.ts +209 -73
- package/src/registry/napi-runtime.ts +29 -2
- package/src/registry/native-validation.ts +10 -12
- package/src/registry/native.ts +433 -198
- package/src/registry/process-metrics.ts +250 -0
- package/src/registry/runtime.ts +52 -1
- package/src/registry/wasm-runtime.ts +29 -2
- package/src/registry/write-through-proxy.ts +40 -0
- package/src/serde.ts +2 -2
- package/src/serverless/configure.ts +18 -7
- package/src/test/mod.ts +11 -8
- package/src/utils/endpoint-parser.ts +1 -1
- package/src/utils/env-vars.ts +37 -0
- package/src/utils/router.ts +1 -1
- package/src/utils.ts +1 -2
- package/src/workflow/context.ts +699 -240
- package/src/workflow/driver.ts +23 -12
- package/src/workflow/inspector.ts +4 -3
- package/src/workflow/mod.ts +37 -23
- package/dist/tsup/chunk-2NDZ7JCR.cjs.map +0 -1
- package/dist/tsup/chunk-3YY5S6TV.js.map +0 -1
- package/dist/tsup/chunk-4CGA6QJO.cjs.map +0 -1
- package/dist/tsup/chunk-4WPEZBK4.cjs.map +0 -1
- package/dist/tsup/chunk-CPA4Y3RG.cjs.map +0 -1
- package/dist/tsup/chunk-F3Q5BFQ6.js.map +0 -1
- package/dist/tsup/chunk-GVTOE34S.cjs.map +0 -1
- package/dist/tsup/chunk-H7P7WR2Y.js.map +0 -1
- package/dist/tsup/chunk-KIWH5H3K.js.map +0 -1
- package/dist/tsup/chunk-KJTA3ATT.js.map +0 -1
- package/dist/tsup/chunk-MMMEZM5J.js.map +0 -1
- package/dist/tsup/chunk-PCBNKI2J.js.map +0 -1
- package/dist/tsup/chunk-QAZLM4WT.cjs.map +0 -1
- package/dist/tsup/chunk-T6YVRM4K.js.map +0 -1
- package/dist/tsup/chunk-VJFRBJVQ.cjs.map +0 -1
- package/dist/tsup/chunk-VRCIXJRN.js.map +0 -1
- package/dist/tsup/chunk-W7EYSYVI.js.map +0 -1
- package/dist/tsup/chunk-WQ4HNA4W.cjs.map +0 -1
- package/dist/tsup/chunk-Y5NSCZA2.cjs.map +0 -1
- package/dist/tsup/context-B_IWbWne.d.ts +0 -92
- package/dist/tsup/context-CUrQ9MHc.d.cts +0 -92
- package/src/utils/serve.ts +0 -217
- /package/dist/tsup/{chunk-H37XQU3I.js.map → chunk-JBUZRPY5.js.map} +0 -0
package/dist/browser/client.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
// src/common/log.ts
|
|
2
|
+
import {
|
|
3
|
+
pino,
|
|
4
|
+
stdTimeFunctions
|
|
5
|
+
} from "pino";
|
|
6
|
+
import { z } from "zod/v4";
|
|
7
|
+
|
|
1
8
|
// src/actor/errors.ts
|
|
2
9
|
var INTERNAL_ERROR_CODE = "internal_error";
|
|
3
10
|
var INTERNAL_ERROR_DESCRIPTION = "An internal error occurred";
|
|
@@ -75,19 +82,6 @@ function actorNotFound(identifier) {
|
|
|
75
82
|
);
|
|
76
83
|
}
|
|
77
84
|
|
|
78
|
-
// src/utils/env-vars.ts
|
|
79
|
-
var getRivetEngine = () => getEnvUniversal("RIVET_ENGINE");
|
|
80
|
-
var getRivetEndpoint = () => getEnvUniversal("RIVET_ENDPOINT");
|
|
81
|
-
var getRivetToken = () => getEnvUniversal("RIVET_TOKEN");
|
|
82
|
-
var getRivetNamespace = () => getEnvUniversal("RIVET_NAMESPACE");
|
|
83
|
-
var getRivetPool = () => getEnvUniversal("RIVET_POOL");
|
|
84
|
-
var getLogLevel = () => getEnvUniversal("RIVET_LOG_LEVEL") ?? getEnvUniversal("LOG_LEVEL");
|
|
85
|
-
var getLogTarget = () => getEnvUniversal("RIVET_LOG_TARGET") === "1";
|
|
86
|
-
var getLogTimestamp = () => getEnvUniversal("RIVET_LOG_TIMESTAMP") === "1";
|
|
87
|
-
var getLogMessage = () => getEnvUniversal("RIVET_LOG_MESSAGE") === "1";
|
|
88
|
-
var getLogErrorStack = () => getEnvUniversal("RIVET_LOG_ERROR_STACK") === "1";
|
|
89
|
-
var getNextPhase = () => getEnvUniversal("NEXT_PHASE");
|
|
90
|
-
|
|
91
85
|
// src/common/utils.ts
|
|
92
86
|
function assertUnreachable(x) {
|
|
93
87
|
throw new Error(`Unreachable case: ${x}`);
|
|
@@ -145,7 +139,7 @@ function deconstructError(error, exposeInternalError = false) {
|
|
|
145
139
|
actor = error.actor;
|
|
146
140
|
}
|
|
147
141
|
metadata = {
|
|
148
|
-
//url: `https://
|
|
142
|
+
//url: `https://dashboard.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
|
|
149
143
|
};
|
|
150
144
|
}
|
|
151
145
|
return {
|
|
@@ -200,7 +194,7 @@ function noopNext() {
|
|
|
200
194
|
// package.json
|
|
201
195
|
var package_default = {
|
|
202
196
|
name: "rivetkit",
|
|
203
|
-
version: "2.3.
|
|
197
|
+
version: "2.3.1",
|
|
204
198
|
description: "Lightweight libraries for building stateful actors on edge platforms",
|
|
205
199
|
license: "Apache-2.0",
|
|
206
200
|
keywords: [
|
|
@@ -272,6 +266,16 @@ var package_default = {
|
|
|
272
266
|
default: "./dist/tsup/db/drizzle.cjs"
|
|
273
267
|
}
|
|
274
268
|
},
|
|
269
|
+
"./dynamic": {
|
|
270
|
+
import: {
|
|
271
|
+
types: "./dist/tsup/dynamic/mod.d.ts",
|
|
272
|
+
default: "./dist/tsup/dynamic/mod.js"
|
|
273
|
+
},
|
|
274
|
+
require: {
|
|
275
|
+
types: "./dist/tsup/dynamic/mod.d.cts",
|
|
276
|
+
default: "./dist/tsup/dynamic/mod.cjs"
|
|
277
|
+
}
|
|
278
|
+
},
|
|
275
279
|
"./client": {
|
|
276
280
|
import: {
|
|
277
281
|
browser: {
|
|
@@ -316,6 +320,16 @@ var package_default = {
|
|
|
316
320
|
default: "./dist/tsup/inspector/mod.cjs"
|
|
317
321
|
}
|
|
318
322
|
},
|
|
323
|
+
"./inspector-tab": {
|
|
324
|
+
import: {
|
|
325
|
+
types: "./dist/tsup/inspector-tab/mod.d.ts",
|
|
326
|
+
default: "./dist/tsup/inspector-tab/mod.js"
|
|
327
|
+
},
|
|
328
|
+
require: {
|
|
329
|
+
types: "./dist/tsup/inspector-tab/mod.d.cts",
|
|
330
|
+
default: "./dist/tsup/inspector-tab/mod.cjs"
|
|
331
|
+
}
|
|
332
|
+
},
|
|
319
333
|
"./inspector/client": {
|
|
320
334
|
import: {
|
|
321
335
|
types: "./dist/browser/inspector/client.d.ts",
|
|
@@ -351,7 +365,7 @@ var package_default = {
|
|
|
351
365
|
"./dist/tsup/chunk-*.cjs"
|
|
352
366
|
],
|
|
353
367
|
scripts: {
|
|
354
|
-
build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/db/mod.ts src/db/drizzle.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
|
|
368
|
+
build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/inspector-tab/mod.ts src/db/mod.ts src/db/drizzle.ts src/dynamic/mod.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
|
|
355
369
|
"build:browser": "tsup --config tsup.browser.config.ts",
|
|
356
370
|
"check-types": "tsc --noEmit",
|
|
357
371
|
lint: "biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments",
|
|
@@ -368,13 +382,12 @@ var package_default = {
|
|
|
368
382
|
"actor-config-schema-gen": "tsx scripts/actor-config-schema-gen.ts"
|
|
369
383
|
},
|
|
370
384
|
dependencies: {
|
|
371
|
-
"@rivet-dev/agent-os-core": "^0.1.1",
|
|
372
|
-
"@hono/node-server": "^1.18.2",
|
|
373
|
-
"@hono/node-ws": "^1.1.1",
|
|
374
385
|
"@hono/zod-openapi": "^1.1.5",
|
|
386
|
+
"@rivet-dev/agent-os-core": "^0.1.1",
|
|
375
387
|
"@rivetkit/bare-ts": "^0.6.2",
|
|
376
388
|
"@rivetkit/engine-cli": "workspace:*",
|
|
377
389
|
"@rivetkit/engine-envoy-protocol": "workspace:*",
|
|
390
|
+
"@rivetkit/on-change": "6.0.1",
|
|
378
391
|
"@rivetkit/rivetkit-napi": "workspace:*",
|
|
379
392
|
"@rivetkit/rivetkit-wasm": "workspace:*",
|
|
380
393
|
"@rivetkit/traces": "workspace:*",
|
|
@@ -382,7 +395,6 @@ var package_default = {
|
|
|
382
395
|
"@rivetkit/workflow-engine": "workspace:*",
|
|
383
396
|
"cbor-x": "^1.6.0",
|
|
384
397
|
"drizzle-orm": "^0.44.2",
|
|
385
|
-
"get-port": "^7.1.0",
|
|
386
398
|
hono: "^4.7.0",
|
|
387
399
|
invariant: "^2.2.4",
|
|
388
400
|
"p-retry": "^6.2.1",
|
|
@@ -392,14 +404,17 @@ var package_default = {
|
|
|
392
404
|
zod: "^4.1.0"
|
|
393
405
|
},
|
|
394
406
|
devDependencies: {
|
|
407
|
+
"@biomejs/biome": "^2.3",
|
|
395
408
|
"@copilotkit/llmock": "^1.6.0",
|
|
409
|
+
"@hono/node-server": "^1.18.2",
|
|
410
|
+
"@hono/node-ws": "^1.1.1",
|
|
396
411
|
"@rivet-dev/agent-os-common": "*",
|
|
397
412
|
"@rivet-dev/agent-os-pi": "^0.1.1",
|
|
398
|
-
"@biomejs/biome": "^2.3",
|
|
399
413
|
"@standard-schema/spec": "^1.0.0",
|
|
400
414
|
"@types/invariant": "^2",
|
|
401
415
|
"@types/node": "^22.13.1",
|
|
402
416
|
eventsource: "^4.0.0",
|
|
417
|
+
"get-port": "^7.1.0",
|
|
403
418
|
tsup: "^8.4.0",
|
|
404
419
|
tsx: "^4.19.4",
|
|
405
420
|
typescript: "^5.7.3",
|
|
@@ -426,12 +441,81 @@ var package_default = {
|
|
|
426
441
|
stableVersion: "0.8.0"
|
|
427
442
|
};
|
|
428
443
|
|
|
444
|
+
// src/utils.ts
|
|
445
|
+
var VERSION = package_default.version;
|
|
446
|
+
var _userAgent;
|
|
447
|
+
function httpUserAgent() {
|
|
448
|
+
if (_userAgent !== void 0) {
|
|
449
|
+
return _userAgent;
|
|
450
|
+
}
|
|
451
|
+
let userAgent = `RivetKit/${VERSION}`;
|
|
452
|
+
const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
|
|
453
|
+
if (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
|
|
454
|
+
_userAgent = userAgent;
|
|
455
|
+
return userAgent;
|
|
456
|
+
}
|
|
457
|
+
function getEnvUniversal(key) {
|
|
458
|
+
if (typeof Deno !== "undefined") {
|
|
459
|
+
return Deno.env.get(key);
|
|
460
|
+
} else if (typeof process !== "undefined") {
|
|
461
|
+
return process.env[key];
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
function promiseWithResolvers(onReject) {
|
|
465
|
+
let resolve;
|
|
466
|
+
let reject;
|
|
467
|
+
const promise = new Promise((res, rej) => {
|
|
468
|
+
resolve = res;
|
|
469
|
+
reject = rej;
|
|
470
|
+
});
|
|
471
|
+
promise.catch(onReject);
|
|
472
|
+
return { promise, resolve, reject };
|
|
473
|
+
}
|
|
474
|
+
function bufferToArrayBuffer(buf) {
|
|
475
|
+
return buf.buffer.slice(
|
|
476
|
+
buf.byteOffset,
|
|
477
|
+
buf.byteOffset + buf.byteLength
|
|
478
|
+
);
|
|
479
|
+
}
|
|
480
|
+
function combineUrlPath(endpoint, path, queryParams) {
|
|
481
|
+
const baseUrl = new URL(endpoint);
|
|
482
|
+
const pathParts = path.split("?");
|
|
483
|
+
const pathOnly = pathParts[0];
|
|
484
|
+
const existingQuery = pathParts[1] || "";
|
|
485
|
+
const basePath = baseUrl.pathname.replace(/\/$/, "");
|
|
486
|
+
const cleanPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
487
|
+
const fullPath = (basePath + cleanPath).replace(/\/\//g, "/");
|
|
488
|
+
const queryParts = [];
|
|
489
|
+
if (existingQuery) {
|
|
490
|
+
queryParts.push(existingQuery);
|
|
491
|
+
}
|
|
492
|
+
if (queryParams) {
|
|
493
|
+
for (const [key, value] of Object.entries(queryParams)) {
|
|
494
|
+
if (value !== void 0) {
|
|
495
|
+
queryParts.push(
|
|
496
|
+
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
|
|
502
|
+
return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// src/utils/env-vars.ts
|
|
506
|
+
var getRivetEngine = () => getEnvUniversal("RIVET_ENGINE");
|
|
507
|
+
var getRivetEndpoint = () => getEnvUniversal("RIVET_ENDPOINT");
|
|
508
|
+
var getRivetToken = () => getEnvUniversal("RIVET_TOKEN");
|
|
509
|
+
var getRivetNamespace = () => getEnvUniversal("RIVET_NAMESPACE");
|
|
510
|
+
var getRivetPool = () => getEnvUniversal("RIVET_POOL");
|
|
511
|
+
var getLogLevel = () => getEnvUniversal("RIVET_LOG_LEVEL") ?? getEnvUniversal("LOG_LEVEL");
|
|
512
|
+
var getLogTarget = () => getEnvUniversal("RIVET_LOG_TARGET") === "1";
|
|
513
|
+
var getLogTimestamp = () => getEnvUniversal("RIVET_LOG_TIMESTAMP") === "1";
|
|
514
|
+
var getLogMessage = () => getEnvUniversal("RIVET_LOG_MESSAGE") === "1";
|
|
515
|
+
var getLogErrorStack = () => getEnvUniversal("RIVET_LOG_ERROR_STACK") === "1";
|
|
516
|
+
var getNextPhase = () => getEnvUniversal("NEXT_PHASE");
|
|
517
|
+
|
|
429
518
|
// src/common/log.ts
|
|
430
|
-
import {
|
|
431
|
-
pino,
|
|
432
|
-
stdTimeFunctions
|
|
433
|
-
} from "pino";
|
|
434
|
-
import { z } from "zod/v4";
|
|
435
519
|
var baseLogger;
|
|
436
520
|
var configuredLogLevel;
|
|
437
521
|
var loggerCache = /* @__PURE__ */ new Map();
|
|
@@ -471,6 +555,7 @@ function configureDefaultLogger(logLevel) {
|
|
|
471
555
|
messageKey: "msg",
|
|
472
556
|
// Do not include pid/hostname in output
|
|
473
557
|
base: {},
|
|
558
|
+
errorKey: "error",
|
|
474
559
|
// Keep the numeric level so the logfmt sink can match Pino's levels.
|
|
475
560
|
formatters: {
|
|
476
561
|
level(_label, number) {
|
|
@@ -575,74 +660,12 @@ function quoteLogfmtString(value) {
|
|
|
575
660
|
return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n")}"`;
|
|
576
661
|
}
|
|
577
662
|
|
|
578
|
-
// src/utils.ts
|
|
579
|
-
var VERSION = package_default.version;
|
|
580
|
-
var _userAgent;
|
|
581
|
-
function httpUserAgent() {
|
|
582
|
-
if (_userAgent !== void 0) {
|
|
583
|
-
return _userAgent;
|
|
584
|
-
}
|
|
585
|
-
let userAgent = `RivetKit/${VERSION}`;
|
|
586
|
-
const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0;
|
|
587
|
-
if (navigatorObj?.userAgent) userAgent += ` ${navigatorObj.userAgent}`;
|
|
588
|
-
_userAgent = userAgent;
|
|
589
|
-
return userAgent;
|
|
590
|
-
}
|
|
591
|
-
function getEnvUniversal(key) {
|
|
592
|
-
if (typeof Deno !== "undefined") {
|
|
593
|
-
return Deno.env.get(key);
|
|
594
|
-
} else if (typeof process !== "undefined") {
|
|
595
|
-
return process.env[key];
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
function promiseWithResolvers(onReject) {
|
|
599
|
-
let resolve;
|
|
600
|
-
let reject;
|
|
601
|
-
const promise = new Promise((res, rej) => {
|
|
602
|
-
resolve = res;
|
|
603
|
-
reject = rej;
|
|
604
|
-
});
|
|
605
|
-
promise.catch(onReject);
|
|
606
|
-
return { promise, resolve, reject };
|
|
607
|
-
}
|
|
608
|
-
function bufferToArrayBuffer(buf) {
|
|
609
|
-
return buf.buffer.slice(
|
|
610
|
-
buf.byteOffset,
|
|
611
|
-
buf.byteOffset + buf.byteLength
|
|
612
|
-
);
|
|
613
|
-
}
|
|
614
|
-
function combineUrlPath(endpoint, path, queryParams) {
|
|
615
|
-
const baseUrl = new URL(endpoint);
|
|
616
|
-
const pathParts = path.split("?");
|
|
617
|
-
const pathOnly = pathParts[0];
|
|
618
|
-
const existingQuery = pathParts[1] || "";
|
|
619
|
-
const basePath = baseUrl.pathname.replace(/\/$/, "");
|
|
620
|
-
const cleanPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
621
|
-
const fullPath = (basePath + cleanPath).replace(/\/\//g, "/");
|
|
622
|
-
const queryParts = [];
|
|
623
|
-
if (existingQuery) {
|
|
624
|
-
queryParts.push(existingQuery);
|
|
625
|
-
}
|
|
626
|
-
if (queryParams) {
|
|
627
|
-
for (const [key, value] of Object.entries(queryParams)) {
|
|
628
|
-
if (value !== void 0) {
|
|
629
|
-
queryParts.push(
|
|
630
|
-
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`
|
|
631
|
-
);
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
const fullQuery = queryParts.length > 0 ? `?${queryParts.join("&")}` : "";
|
|
636
|
-
return `${baseUrl.protocol}//${baseUrl.host}${fullPath}${fullQuery}`;
|
|
637
|
-
}
|
|
638
|
-
|
|
639
663
|
// src/devtools-loader/log.ts
|
|
640
664
|
function logger() {
|
|
641
665
|
return getLogger("devtools");
|
|
642
666
|
}
|
|
643
667
|
|
|
644
668
|
// src/devtools-loader/index.ts
|
|
645
|
-
var DEFAULT_DEVTOOLS_URL = (version = VERSION) => `https://releases.rivet.dev/rivet/latest/devtools/mod.js?v=${version}`;
|
|
646
669
|
var scriptId = "rivetkit-devtools-script";
|
|
647
670
|
function injectDevtools(config) {
|
|
648
671
|
if (!window) {
|
|
@@ -650,9 +673,10 @@ function injectDevtools(config) {
|
|
|
650
673
|
return;
|
|
651
674
|
}
|
|
652
675
|
if (!document.getElementById(scriptId)) {
|
|
676
|
+
const src = `${config.endpoint?.replace(/\/$/, "")}/devtools/mod.js`;
|
|
653
677
|
const script = document.createElement("script");
|
|
654
678
|
script.id = scriptId;
|
|
655
|
-
script.src =
|
|
679
|
+
script.src = src;
|
|
656
680
|
script.async = true;
|
|
657
681
|
document.head.appendChild(script);
|
|
658
682
|
}
|
|
@@ -762,7 +786,7 @@ function deserializeActorKey(keyString) {
|
|
|
762
786
|
}
|
|
763
787
|
}
|
|
764
788
|
if (escaping) {
|
|
765
|
-
parts.push(currentPart
|
|
789
|
+
parts.push(`${currentPart}\\`);
|
|
766
790
|
} else if (isEmptyStringMarker) {
|
|
767
791
|
parts.push("");
|
|
768
792
|
} else if (currentPart !== "" || parts.length > 0) {
|
|
@@ -805,6 +829,10 @@ var JSON_COMPAT_BIGINT = "$BigInt";
|
|
|
805
829
|
var JSON_COMPAT_ARRAY_BUFFER = "$ArrayBuffer";
|
|
806
830
|
var JSON_COMPAT_UINT8_ARRAY = "$Uint8Array";
|
|
807
831
|
var JSON_COMPAT_UNDEFINED = "$Undefined";
|
|
832
|
+
var JSON_COMPAT_SET = "$Set";
|
|
833
|
+
function isTypedArray(value) {
|
|
834
|
+
return value instanceof Uint8ClampedArray || value instanceof Uint16Array || value instanceof Uint32Array || value instanceof BigUint64Array || value instanceof Int8Array || value instanceof Int16Array || value instanceof Int32Array || value instanceof BigInt64Array || value instanceof Float32Array || value instanceof Float64Array;
|
|
835
|
+
}
|
|
808
836
|
var EncodingSchema = z2.enum(["json", "cbor", "bare"]);
|
|
809
837
|
async function inputDataToBuffer(data) {
|
|
810
838
|
if (typeof data === "string") {
|
|
@@ -839,9 +867,15 @@ function isPlainObject(value) {
|
|
|
839
867
|
return proto === Object.prototype || proto === null;
|
|
840
868
|
}
|
|
841
869
|
function encodeJsonCompatValue(input) {
|
|
870
|
+
if (input === null) {
|
|
871
|
+
return input;
|
|
872
|
+
}
|
|
842
873
|
if (input === void 0) {
|
|
843
874
|
return [JSON_COMPAT_UNDEFINED, 0];
|
|
844
875
|
}
|
|
876
|
+
if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
|
|
877
|
+
return input;
|
|
878
|
+
}
|
|
845
879
|
if (typeof input === "bigint") {
|
|
846
880
|
return [JSON_COMPAT_BIGINT, input.toString()];
|
|
847
881
|
}
|
|
@@ -851,10 +885,34 @@ function encodeJsonCompatValue(input) {
|
|
|
851
885
|
if (input instanceof Uint8Array) {
|
|
852
886
|
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];
|
|
853
887
|
}
|
|
888
|
+
if (isTypedArray(input)) {
|
|
889
|
+
return input;
|
|
890
|
+
}
|
|
891
|
+
if (input instanceof Date || input instanceof RegExp || input instanceof Error) {
|
|
892
|
+
return input;
|
|
893
|
+
}
|
|
894
|
+
if (input instanceof Set) {
|
|
895
|
+
const encoded = [...input.values()].map(
|
|
896
|
+
(v) => encodeJsonCompatValue(v)
|
|
897
|
+
);
|
|
898
|
+
return [JSON_COMPAT_SET, encoded];
|
|
899
|
+
}
|
|
900
|
+
if (input instanceof Map) {
|
|
901
|
+
const encoded = /* @__PURE__ */ new Map();
|
|
902
|
+
for (const [k, v] of input.entries()) {
|
|
903
|
+
encoded.set(
|
|
904
|
+
encodeJsonCompatValue(k),
|
|
905
|
+
encodeJsonCompatValue(v)
|
|
906
|
+
);
|
|
907
|
+
}
|
|
908
|
+
return encoded;
|
|
909
|
+
}
|
|
854
910
|
if (Array.isArray(input)) {
|
|
855
|
-
const encoded = input.map(
|
|
911
|
+
const encoded = input.map(
|
|
912
|
+
(value) => encodeJsonCompatValue(value)
|
|
913
|
+
);
|
|
856
914
|
if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
|
|
857
|
-
return [
|
|
915
|
+
return [`$${encoded[0]}`, encoded[1]];
|
|
858
916
|
}
|
|
859
917
|
return encoded;
|
|
860
918
|
}
|
|
@@ -865,7 +923,8 @@ function encodeJsonCompatValue(input) {
|
|
|
865
923
|
}
|
|
866
924
|
return encoded;
|
|
867
925
|
}
|
|
868
|
-
|
|
926
|
+
const typeName = typeof input === "object" && input !== null ? input.constructor?.name ?? typeof input : typeof input;
|
|
927
|
+
throw new TypeError(`Value of type "${typeName}" is not CBOR serializable`);
|
|
869
928
|
}
|
|
870
929
|
function reviveJsonCompatValue(input, options = {}) {
|
|
871
930
|
if (typeof input === "bigint") {
|
|
@@ -874,6 +933,16 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
874
933
|
}
|
|
875
934
|
return input;
|
|
876
935
|
}
|
|
936
|
+
if (input instanceof Map) {
|
|
937
|
+
const revived = /* @__PURE__ */ new Map();
|
|
938
|
+
for (const [k, v] of input.entries()) {
|
|
939
|
+
revived.set(
|
|
940
|
+
reviveJsonCompatValue(k, options),
|
|
941
|
+
reviveJsonCompatValue(v, options)
|
|
942
|
+
);
|
|
943
|
+
}
|
|
944
|
+
return revived;
|
|
945
|
+
}
|
|
877
946
|
if (Array.isArray(input)) {
|
|
878
947
|
if (input.length === 2 && typeof input[0] === "string" && input[0].startsWith("$")) {
|
|
879
948
|
if (input[0] === JSON_COMPAT_BIGINT) {
|
|
@@ -888,6 +957,12 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
888
957
|
if (input[0] === JSON_COMPAT_UNDEFINED) {
|
|
889
958
|
return void 0;
|
|
890
959
|
}
|
|
960
|
+
if (input[0] === JSON_COMPAT_SET) {
|
|
961
|
+
const items = input[1].map(
|
|
962
|
+
(v) => reviveJsonCompatValue(v, options)
|
|
963
|
+
);
|
|
964
|
+
return new Set(items);
|
|
965
|
+
}
|
|
891
966
|
if (input[0].startsWith("$$")) {
|
|
892
967
|
return [
|
|
893
968
|
input[0].substring(1),
|
|
@@ -929,19 +1004,13 @@ function jsonStringifyCompat(input) {
|
|
|
929
1004
|
return [JSON_COMPAT_BIGINT, value.toString()];
|
|
930
1005
|
}
|
|
931
1006
|
if (value instanceof ArrayBuffer) {
|
|
932
|
-
return [
|
|
933
|
-
JSON_COMPAT_ARRAY_BUFFER,
|
|
934
|
-
base64EncodeArrayBuffer(value)
|
|
935
|
-
];
|
|
1007
|
+
return [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];
|
|
936
1008
|
}
|
|
937
1009
|
if (value instanceof Uint8Array) {
|
|
938
|
-
return [
|
|
939
|
-
JSON_COMPAT_UINT8_ARRAY,
|
|
940
|
-
base64EncodeUint8Array(value)
|
|
941
|
-
];
|
|
1010
|
+
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
|
|
942
1011
|
}
|
|
943
1012
|
if (Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0].startsWith("$")) {
|
|
944
|
-
return [
|
|
1013
|
+
return [`$${value[0]}`, value[1]];
|
|
945
1014
|
}
|
|
946
1015
|
return value;
|
|
947
1016
|
});
|
|
@@ -1053,7 +1122,7 @@ async function sendHttpRequestToGateway(runConfig, gatewayUrl, actorRequest, opt
|
|
|
1053
1122
|
if (reqBody.byteLength !== 0) {
|
|
1054
1123
|
bodyToSend = reqBody;
|
|
1055
1124
|
guardHeaders.delete("transfer-encoding");
|
|
1056
|
-
guardHeaders.
|
|
1125
|
+
guardHeaders.delete("content-length");
|
|
1057
1126
|
}
|
|
1058
1127
|
}
|
|
1059
1128
|
const guardRequest = new Request(gatewayUrl, {
|
|
@@ -3905,11 +3974,11 @@ async function lookupMetadataCached(config) {
|
|
|
3905
3974
|
}
|
|
3906
3975
|
|
|
3907
3976
|
// src/engine-client/ws-proxy.ts
|
|
3908
|
-
async function createWebSocketProxy(
|
|
3977
|
+
async function createWebSocketProxy(_c, targetUrl, protocols) {
|
|
3909
3978
|
const WebSocket2 = await importWebSocket();
|
|
3910
3979
|
const state = {};
|
|
3911
3980
|
return {
|
|
3912
|
-
onOpen: async (
|
|
3981
|
+
onOpen: async (_event, clientWs) => {
|
|
3913
3982
|
logger3().debug({ msg: "client websocket connected", targetUrl });
|
|
3914
3983
|
if (clientWs.readyState !== 1) {
|
|
3915
3984
|
logger3().warn({
|
|
@@ -3947,23 +4016,25 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
3947
4016
|
reject(error);
|
|
3948
4017
|
});
|
|
3949
4018
|
});
|
|
3950
|
-
state.
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3954
|
-
|
|
4019
|
+
state.connectPromise.catch(() => {
|
|
4020
|
+
});
|
|
4021
|
+
state.targetWs.addEventListener("message", (event) => {
|
|
4022
|
+
if (typeof event.data === "string" || event.data instanceof ArrayBuffer) {
|
|
4023
|
+
clientWs.send(event.data);
|
|
4024
|
+
} else if (event.data instanceof Blob) {
|
|
4025
|
+
event.data.arrayBuffer().then((buffer) => {
|
|
3955
4026
|
clientWs.send(buffer);
|
|
3956
4027
|
});
|
|
3957
4028
|
}
|
|
3958
4029
|
});
|
|
3959
|
-
state.targetWs.addEventListener("close", (
|
|
4030
|
+
state.targetWs.addEventListener("close", (event) => {
|
|
3960
4031
|
logger3().debug({
|
|
3961
4032
|
msg: "target websocket closed",
|
|
3962
4033
|
targetUrl,
|
|
3963
|
-
code:
|
|
3964
|
-
reason:
|
|
4034
|
+
code: event.code,
|
|
4035
|
+
reason: event.reason
|
|
3965
4036
|
});
|
|
3966
|
-
closeWebSocketIfOpen(clientWs,
|
|
4037
|
+
closeWebSocketIfOpen(clientWs, event.code, event.reason);
|
|
3967
4038
|
});
|
|
3968
4039
|
state.targetWs.addEventListener("error", (error) => {
|
|
3969
4040
|
logger3().error({
|
|
@@ -4006,7 +4077,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
4006
4077
|
);
|
|
4007
4078
|
}
|
|
4008
4079
|
},
|
|
4009
|
-
onClose: (event,
|
|
4080
|
+
onClose: (event, _clientWs) => {
|
|
4010
4081
|
logger3().debug({
|
|
4011
4082
|
msg: "client websocket closed",
|
|
4012
4083
|
targetUrl,
|
|
@@ -4023,7 +4094,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
4023
4094
|
}
|
|
4024
4095
|
}
|
|
4025
4096
|
},
|
|
4026
|
-
onError: (event,
|
|
4097
|
+
onError: (event, _clientWs) => {
|
|
4027
4098
|
logger3().error({ msg: "client websocket error", targetUrl, event });
|
|
4028
4099
|
if (state.targetWs) {
|
|
4029
4100
|
if (state.targetWs.readyState === WebSocket2.OPEN) {
|
|
@@ -4139,7 +4210,9 @@ var RemoteEngineControlClient = class {
|
|
|
4139
4210
|
name,
|
|
4140
4211
|
key: serializeActorKey(key),
|
|
4141
4212
|
runner_name_selector: this.#config.poolName,
|
|
4142
|
-
input: actorInput ? uint8ArrayToBase64(
|
|
4213
|
+
input: actorInput ? uint8ArrayToBase64(
|
|
4214
|
+
encodeCborCompat(actorInput)
|
|
4215
|
+
) : void 0,
|
|
4143
4216
|
crash_policy: crashPolicy ?? "sleep"
|
|
4144
4217
|
});
|
|
4145
4218
|
logger3().info({
|
|
@@ -4530,7 +4603,7 @@ function classifyActorError(error) {
|
|
|
4530
4603
|
return void 0;
|
|
4531
4604
|
}
|
|
4532
4605
|
function isRetryableGuardGatewayHttpError(code) {
|
|
4533
|
-
return code === "service_unavailable" || code === "actor_stopped_while_waiting" || code === "tunnel_request_aborted" || code === "tunnel_message_timeout" || code === "tunnel_response_closed" || code === "gateway_response_start_timeout";
|
|
4606
|
+
return code === "service_unavailable" || code === "actor_wake_retries_exceeded" || code === "actor_stopped_while_waiting" || code === "tunnel_request_aborted" || code === "tunnel_message_timeout" || code === "tunnel_response_closed" || code === "gateway_response_start_timeout";
|
|
4534
4607
|
}
|
|
4535
4608
|
function classifyTransportError(error) {
|
|
4536
4609
|
if (error.message.includes("database accessed after actor stopped")) {
|
|
@@ -4619,10 +4692,7 @@ async function retryOnLifecycleBoundary(run, opts) {
|
|
|
4619
4692
|
if (attempt === maxAttempts - 1) {
|
|
4620
4693
|
break;
|
|
4621
4694
|
}
|
|
4622
|
-
const delayMs = Math.min(
|
|
4623
|
-
initialDelayMs * 2 ** attempt,
|
|
4624
|
-
maxDelayMs
|
|
4625
|
-
);
|
|
4695
|
+
const delayMs = Math.min(initialDelayMs * 2 ** attempt, maxDelayMs);
|
|
4626
4696
|
await waitWithSignal(delayMs, opts?.signal);
|
|
4627
4697
|
}
|
|
4628
4698
|
}
|
|
@@ -4661,7 +4731,9 @@ function createQueueSender(senderOptions) {
|
|
|
4661
4731
|
}),
|
|
4662
4732
|
requestToBare: (value) => ({
|
|
4663
4733
|
name: value.name ?? name,
|
|
4664
|
-
body: bufferToArrayBuffer(
|
|
4734
|
+
body: bufferToArrayBuffer(
|
|
4735
|
+
encodeCborCompat(value.body)
|
|
4736
|
+
),
|
|
4665
4737
|
wait: value.wait ?? false,
|
|
4666
4738
|
timeout: value.timeout !== void 0 ? BigInt(value.timeout) : null
|
|
4667
4739
|
}),
|
|
@@ -4695,7 +4767,6 @@ function createQueueSender(senderOptions) {
|
|
|
4695
4767
|
}
|
|
4696
4768
|
|
|
4697
4769
|
// src/client/actor-conn.ts
|
|
4698
|
-
var DEFAULT_MAX_INCOMING_MESSAGE_SIZE = 65536;
|
|
4699
4770
|
var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
|
|
4700
4771
|
var ActorConnRaw = class {
|
|
4701
4772
|
#disposed = false;
|
|
@@ -5174,12 +5245,10 @@ var ActorConnRaw = class {
|
|
|
5174
5245
|
);
|
|
5175
5246
|
return;
|
|
5176
5247
|
}
|
|
5177
|
-
let errorToThrow = new RivetError(
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
{ metadata, actor }
|
|
5182
|
-
);
|
|
5248
|
+
let errorToThrow = new RivetError(group, code, message, {
|
|
5249
|
+
metadata,
|
|
5250
|
+
actor
|
|
5251
|
+
});
|
|
5183
5252
|
if (isSchedulingError(group, code) && this.#actorId) {
|
|
5184
5253
|
const schedulingError = await checkForSchedulingError(
|
|
5185
5254
|
group,
|
|
@@ -5575,31 +5644,8 @@ var ActorConnRaw = class {
|
|
|
5575
5644
|
}
|
|
5576
5645
|
}
|
|
5577
5646
|
);
|
|
5578
|
-
const serializedLength = messageLength(messageSerialized);
|
|
5579
|
-
if (serializedLength > DEFAULT_MAX_INCOMING_MESSAGE_SIZE && message.body.tag === "ActionRequest") {
|
|
5580
|
-
const actionId = Number(message.body.val.id);
|
|
5581
|
-
const inFlight = this.#takeActionInFlight(actionId);
|
|
5582
|
-
const error = new RivetError(
|
|
5583
|
-
"message",
|
|
5584
|
-
"incoming_too_long",
|
|
5585
|
-
"Incoming message too long",
|
|
5586
|
-
{
|
|
5587
|
-
maxSize: DEFAULT_MAX_INCOMING_MESSAGE_SIZE,
|
|
5588
|
-
actualSize: serializedLength
|
|
5589
|
-
}
|
|
5590
|
-
);
|
|
5591
|
-
logger2().warn({
|
|
5592
|
-
msg: "rejecting oversized connection action request",
|
|
5593
|
-
actionId,
|
|
5594
|
-
actionName: inFlight.name,
|
|
5595
|
-
actualSize: serializedLength,
|
|
5596
|
-
maxSize: DEFAULT_MAX_INCOMING_MESSAGE_SIZE
|
|
5597
|
-
});
|
|
5598
|
-
inFlight.reject(error);
|
|
5599
|
-
this.#dispatchActorError(error);
|
|
5600
|
-
return;
|
|
5601
|
-
}
|
|
5602
5647
|
this.#websocket.send(messageSerialized);
|
|
5648
|
+
const serializedLength = messageLength(messageSerialized);
|
|
5603
5649
|
logger2().trace({
|
|
5604
5650
|
msg: "sent websocket message",
|
|
5605
5651
|
len: serializedLength
|
|
@@ -6023,10 +6069,7 @@ var ActorHandleRaw = class {
|
|
|
6023
6069
|
}
|
|
6024
6070
|
}).send(name, body, options);
|
|
6025
6071
|
} catch (err) {
|
|
6026
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6027
|
-
err,
|
|
6028
|
-
true
|
|
6029
|
-
);
|
|
6072
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6030
6073
|
if (this.#shouldRetryQueueDispatchOverload(
|
|
6031
6074
|
group,
|
|
6032
6075
|
code,
|
|
@@ -6059,7 +6102,10 @@ var ActorHandleRaw = class {
|
|
|
6059
6102
|
await this.#waitForRetryWindow();
|
|
6060
6103
|
continue;
|
|
6061
6104
|
}
|
|
6062
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6105
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6106
|
+
group,
|
|
6107
|
+
code
|
|
6108
|
+
);
|
|
6063
6109
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6064
6110
|
useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
|
|
6065
6111
|
if (useQueryTarget) {
|
|
@@ -6067,7 +6113,10 @@ var ActorHandleRaw = class {
|
|
|
6067
6113
|
}
|
|
6068
6114
|
continue;
|
|
6069
6115
|
}
|
|
6070
|
-
throw new RivetError(group, code, message, {
|
|
6116
|
+
throw new RivetError(group, code, message, {
|
|
6117
|
+
metadata,
|
|
6118
|
+
actor
|
|
6119
|
+
});
|
|
6071
6120
|
}
|
|
6072
6121
|
}
|
|
6073
6122
|
throw new Error("unreachable queue retry state");
|
|
@@ -6147,7 +6196,9 @@ var ActorHandleRaw = class {
|
|
|
6147
6196
|
args
|
|
6148
6197
|
}),
|
|
6149
6198
|
requestToBare: (args) => ({
|
|
6150
|
-
args: bufferToArrayBuffer(
|
|
6199
|
+
args: bufferToArrayBuffer(
|
|
6200
|
+
encodeCborCompat(args)
|
|
6201
|
+
)
|
|
6151
6202
|
}),
|
|
6152
6203
|
responseFromJson: (json) => json.output,
|
|
6153
6204
|
responseFromBare: (bare5) => decodeCborCompat(new Uint8Array(bare5.output))
|
|
@@ -6157,10 +6208,7 @@ var ActorHandleRaw = class {
|
|
|
6157
6208
|
}
|
|
6158
6209
|
return output;
|
|
6159
6210
|
} catch (err) {
|
|
6160
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6161
|
-
err,
|
|
6162
|
-
true
|
|
6163
|
-
);
|
|
6211
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6164
6212
|
if (await this.#shouldRetrySchedulingError(
|
|
6165
6213
|
group,
|
|
6166
6214
|
code,
|
|
@@ -6191,11 +6239,16 @@ var ActorHandleRaw = class {
|
|
|
6191
6239
|
{ metadata, actor }
|
|
6192
6240
|
);
|
|
6193
6241
|
}
|
|
6194
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6242
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6243
|
+
group,
|
|
6244
|
+
code
|
|
6245
|
+
);
|
|
6195
6246
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6196
6247
|
if (group === "actor" && (code === "starting" || code === "stopping")) {
|
|
6197
6248
|
useQueryTarget = true;
|
|
6198
|
-
await new Promise(
|
|
6249
|
+
await new Promise(
|
|
6250
|
+
(resolve) => setTimeout(resolve, 100)
|
|
6251
|
+
);
|
|
6199
6252
|
}
|
|
6200
6253
|
continue;
|
|
6201
6254
|
}
|
|
@@ -6372,10 +6425,7 @@ var ActorHandleRaw = class {
|
|
|
6372
6425
|
}
|
|
6373
6426
|
return response;
|
|
6374
6427
|
} catch (err) {
|
|
6375
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6376
|
-
err,
|
|
6377
|
-
true
|
|
6378
|
-
);
|
|
6428
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6379
6429
|
if (await this.#shouldRetrySchedulingError(
|
|
6380
6430
|
group,
|
|
6381
6431
|
code,
|
|
@@ -6398,7 +6448,10 @@ var ActorHandleRaw = class {
|
|
|
6398
6448
|
await this.#waitForRetryWindow();
|
|
6399
6449
|
continue;
|
|
6400
6450
|
}
|
|
6401
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6451
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6452
|
+
group,
|
|
6453
|
+
code
|
|
6454
|
+
);
|
|
6402
6455
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6403
6456
|
useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
|
|
6404
6457
|
if (useQueryTarget) {
|
|
@@ -6498,8 +6551,9 @@ var ActorHandleRaw = class {
|
|
|
6498
6551
|
this.#gatewayOptions,
|
|
6499
6552
|
options
|
|
6500
6553
|
);
|
|
6554
|
+
const useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
|
|
6501
6555
|
const target = await this.#resolveGatewayRequestTarget(
|
|
6502
|
-
|
|
6556
|
+
useQueryTarget,
|
|
6503
6557
|
gatewayOptions
|
|
6504
6558
|
);
|
|
6505
6559
|
return await rawWebSocket(
|
|
@@ -6522,7 +6576,9 @@ var ActorHandleRaw = class {
|
|
|
6522
6576
|
if ("directId" in target) {
|
|
6523
6577
|
return target.directId;
|
|
6524
6578
|
}
|
|
6525
|
-
throw new Error(
|
|
6579
|
+
throw new Error(
|
|
6580
|
+
"dynamic actor resolution did not produce a direct actor id"
|
|
6581
|
+
);
|
|
6526
6582
|
}
|
|
6527
6583
|
/**
|
|
6528
6584
|
* Returns the raw URL for routing traffic to the actor.
|