rivetkit 2.3.0-rc.10 → 2.3.0-rc.12
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 +448 -62
- package/dist/browser/client.js +131 -89
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +40 -20
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/actor/errors.cjs +2 -2
- package/dist/tsup/actor/errors.js +1 -1
- package/dist/tsup/agent-os/index.cjs +2103 -2090
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +446 -69
- package/dist/tsup/agent-os/index.d.ts +446 -69
- package/dist/tsup/agent-os/index.js +2102 -2089
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-TE4VCDNY.cjs → chunk-2U6RLFKX.cjs} +219 -234
- package/dist/tsup/chunk-2U6RLFKX.cjs.map +1 -0
- package/dist/tsup/{chunk-4K3MV2MW.cjs → chunk-2ZTBRZRS.cjs} +10 -10
- package/dist/tsup/chunk-2ZTBRZRS.cjs.map +1 -0
- package/dist/tsup/{chunk-KU6VKVEK.js → chunk-3EVVOYFD.js} +19 -7
- package/dist/tsup/chunk-3EVVOYFD.js.map +1 -0
- package/dist/tsup/{chunk-3LGP4JSO.cjs → chunk-6KTMKPNU.cjs} +8 -8
- package/dist/tsup/{chunk-3LGP4JSO.cjs.map → chunk-6KTMKPNU.cjs.map} +1 -1
- package/dist/tsup/{chunk-WU2O2KIE.js → chunk-7UZF56RS.js} +63 -78
- package/dist/tsup/chunk-7UZF56RS.js.map +1 -0
- package/dist/tsup/{chunk-KIWH5H3K.js → chunk-BRP62GZC.js} +3 -3
- package/dist/tsup/chunk-BRP62GZC.js.map +1 -0
- package/dist/tsup/{chunk-G5RULGYQ.cjs → chunk-C7AAIILH.cjs} +24 -9
- package/dist/tsup/chunk-C7AAIILH.cjs.map +1 -0
- package/dist/tsup/{chunk-XV52XUWU.js → chunk-EWVOWEMD.js} +4 -4
- package/dist/tsup/chunk-EWVOWEMD.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-PCBNKI2J.js → chunk-JZ7TWV65.js} +1 -1
- package/dist/tsup/chunk-JZ7TWV65.js.map +1 -0
- package/dist/tsup/{chunk-QAZLM4WT.cjs → chunk-KORQB2IR.cjs} +3 -3
- package/dist/tsup/{chunk-QAZLM4WT.cjs.map → chunk-KORQB2IR.cjs.map} +1 -1
- package/dist/tsup/{chunk-CMYS77J6.js → chunk-OLIJHKLL.js} +3 -3
- package/dist/tsup/{chunk-BM3EOY7M.js → chunk-OOB32JVG.js} +134 -20
- package/dist/tsup/chunk-OOB32JVG.js.map +1 -0
- package/dist/tsup/{chunk-G34LIR7S.js → chunk-QKSGGKGQ.js} +22 -7
- package/dist/tsup/chunk-QKSGGKGQ.js.map +1 -0
- package/dist/tsup/{chunk-PWFGP2US.cjs → chunk-SS56HFM2.cjs} +138 -24
- package/dist/tsup/chunk-SS56HFM2.cjs.map +1 -0
- package/dist/tsup/{chunk-Z4C3W2CQ.cjs → chunk-UETC5RF7.cjs} +3 -3
- package/dist/tsup/{chunk-Z4C3W2CQ.cjs.map → chunk-UETC5RF7.cjs.map} +1 -1
- 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-6BI2MS3S.js → chunk-VLXRFJ7P.js} +2 -2
- package/dist/tsup/{chunk-J5P6S2LC.cjs → chunk-VNMIAPPF.cjs} +26 -14
- package/dist/tsup/chunk-VNMIAPPF.cjs.map +1 -0
- package/dist/tsup/{chunk-WQ4HNA4W.cjs → chunk-WHYBAEWG.cjs} +4 -2
- package/dist/tsup/chunk-WHYBAEWG.cjs.map +1 -0
- package/dist/tsup/{chunk-T6YVRM4K.js → chunk-WIMUFZVJ.js} +3 -1
- package/dist/tsup/chunk-WIMUFZVJ.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/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +4 -4
- package/dist/tsup/client/mod.d.ts +4 -4
- 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-BtAh7oBu.d.cts} +409 -22
- 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-DKgPGC0f.d.ts} +409 -22
- package/dist/tsup/{context-B_IWbWne.d.ts → context-C-6dGebY.d.ts} +8 -8
- package/dist/tsup/{context-CUrQ9MHc.d.cts → context-Cfjl5pgz.d.cts} +8 -8
- 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/mod.cjs +606 -325
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +4 -4
- package/dist/tsup/mod.d.ts +4 -4
- package/dist/tsup/mod.js +510 -229
- 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 +3 -3
- package/dist/tsup/test/mod.d.ts +3 -3
- package/dist/tsup/test/mod.js +18 -15
- package/dist/tsup/test/mod.js.map +1 -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 +307 -282
- package/dist/tsup/workflow/mod.cjs.map +1 -1
- package/dist/tsup/workflow/mod.d.cts +5 -5
- package/dist/tsup/workflow/mod.d.ts +5 -5
- package/dist/tsup/workflow/mod.js +501 -476
- package/dist/tsup/workflow/mod.js.map +1 -1
- package/package.json +22 -11
- package/src/actor/config.ts +68 -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 +9 -3
- package/src/actor/instance/mod.ts +22 -30
- package/src/actor/keys.ts +1 -1
- package/src/actor/mod.ts +20 -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/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/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 +1 -1
- 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 +4 -4
- package/src/inspector/client.browser.ts +5 -11
- package/src/inspector/mod.ts +1 -3
- package/src/registry/config/envoy.ts +1 -2
- package/src/registry/config/index.ts +3 -9
- package/src/registry/index.ts +150 -72
- package/src/registry/napi-runtime.ts +13 -2
- package/src/registry/native-validation.ts +10 -12
- package/src/registry/native.ts +231 -173
- package/src/registry/process-metrics.ts +250 -0
- package/src/registry/runtime.ts +4 -0
- package/src/registry/wasm-runtime.ts +18 -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/router.ts +1 -1
- package/src/utils/serve.ts +4 -5
- package/src/utils.ts +1 -2
- package/src/workflow/context.ts +61 -33
- package/src/workflow/driver.ts +4 -6
- package/src/workflow/inspector.ts +4 -3
- package/src/workflow/mod.ts +15 -17
- package/dist/tsup/chunk-2NDZ7JCR.cjs.map +0 -1
- package/dist/tsup/chunk-3YY5S6TV.js.map +0 -1
- package/dist/tsup/chunk-4K3MV2MW.cjs.map +0 -1
- package/dist/tsup/chunk-BM3EOY7M.js.map +0 -1
- package/dist/tsup/chunk-G34LIR7S.js.map +0 -1
- package/dist/tsup/chunk-G5RULGYQ.cjs.map +0 -1
- package/dist/tsup/chunk-J5P6S2LC.cjs.map +0 -1
- package/dist/tsup/chunk-KIWH5H3K.js.map +0 -1
- package/dist/tsup/chunk-KU6VKVEK.js.map +0 -1
- package/dist/tsup/chunk-PCBNKI2J.js.map +0 -1
- package/dist/tsup/chunk-PWFGP2US.cjs.map +0 -1
- package/dist/tsup/chunk-T6YVRM4K.js.map +0 -1
- package/dist/tsup/chunk-TE4VCDNY.cjs.map +0 -1
- package/dist/tsup/chunk-WQ4HNA4W.cjs.map +0 -1
- package/dist/tsup/chunk-WU2O2KIE.js.map +0 -1
- package/dist/tsup/chunk-XV52XUWU.js.map +0 -1
- /package/dist/tsup/{chunk-CMYS77J6.js.map → chunk-OLIJHKLL.js.map} +0 -0
- /package/dist/tsup/{chunk-6BI2MS3S.js.map → chunk-VLXRFJ7P.js.map} +0 -0
package/dist/browser/client.js
CHANGED
|
@@ -145,7 +145,7 @@ function deconstructError(error, exposeInternalError = false) {
|
|
|
145
145
|
actor = error.actor;
|
|
146
146
|
}
|
|
147
147
|
metadata = {
|
|
148
|
-
//url: `https://
|
|
148
|
+
//url: `https://dashboard.rivet.dev/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`,
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
151
|
return {
|
|
@@ -200,7 +200,7 @@ function noopNext() {
|
|
|
200
200
|
// package.json
|
|
201
201
|
var package_default = {
|
|
202
202
|
name: "rivetkit",
|
|
203
|
-
version: "2.3.0-rc.
|
|
203
|
+
version: "2.3.0-rc.12",
|
|
204
204
|
description: "Lightweight libraries for building stateful actors on edge platforms",
|
|
205
205
|
license: "Apache-2.0",
|
|
206
206
|
keywords: [
|
|
@@ -272,6 +272,16 @@ var package_default = {
|
|
|
272
272
|
default: "./dist/tsup/db/drizzle.cjs"
|
|
273
273
|
}
|
|
274
274
|
},
|
|
275
|
+
"./dynamic": {
|
|
276
|
+
import: {
|
|
277
|
+
types: "./dist/tsup/dynamic/mod.d.ts",
|
|
278
|
+
default: "./dist/tsup/dynamic/mod.js"
|
|
279
|
+
},
|
|
280
|
+
require: {
|
|
281
|
+
types: "./dist/tsup/dynamic/mod.d.cts",
|
|
282
|
+
default: "./dist/tsup/dynamic/mod.cjs"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
275
285
|
"./client": {
|
|
276
286
|
import: {
|
|
277
287
|
browser: {
|
|
@@ -351,7 +361,7 @@ var package_default = {
|
|
|
351
361
|
"./dist/tsup/chunk-*.cjs"
|
|
352
362
|
],
|
|
353
363
|
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",
|
|
364
|
+
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 src/dynamic/mod.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
|
|
355
365
|
"build:browser": "tsup --config tsup.browser.config.ts",
|
|
356
366
|
"check-types": "tsc --noEmit",
|
|
357
367
|
lint: "biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments",
|
|
@@ -368,13 +378,14 @@ var package_default = {
|
|
|
368
378
|
"actor-config-schema-gen": "tsx scripts/actor-config-schema-gen.ts"
|
|
369
379
|
},
|
|
370
380
|
dependencies: {
|
|
371
|
-
"@rivet-dev/agent-os-core": "^0.1.1",
|
|
372
381
|
"@hono/node-server": "^1.18.2",
|
|
373
382
|
"@hono/node-ws": "^1.1.1",
|
|
374
383
|
"@hono/zod-openapi": "^1.1.5",
|
|
384
|
+
"@rivet-dev/agent-os-core": "^0.1.1",
|
|
375
385
|
"@rivetkit/bare-ts": "^0.6.2",
|
|
376
386
|
"@rivetkit/engine-cli": "workspace:*",
|
|
377
387
|
"@rivetkit/engine-envoy-protocol": "workspace:*",
|
|
388
|
+
"@rivetkit/on-change": "6.0.1",
|
|
378
389
|
"@rivetkit/rivetkit-napi": "workspace:*",
|
|
379
390
|
"@rivetkit/rivetkit-wasm": "workspace:*",
|
|
380
391
|
"@rivetkit/traces": "workspace:*",
|
|
@@ -392,10 +403,10 @@ var package_default = {
|
|
|
392
403
|
zod: "^4.1.0"
|
|
393
404
|
},
|
|
394
405
|
devDependencies: {
|
|
406
|
+
"@biomejs/biome": "^2.3",
|
|
395
407
|
"@copilotkit/llmock": "^1.6.0",
|
|
396
408
|
"@rivet-dev/agent-os-common": "*",
|
|
397
409
|
"@rivet-dev/agent-os-pi": "^0.1.1",
|
|
398
|
-
"@biomejs/biome": "^2.3",
|
|
399
410
|
"@standard-schema/spec": "^1.0.0",
|
|
400
411
|
"@types/invariant": "^2",
|
|
401
412
|
"@types/node": "^22.13.1",
|
|
@@ -471,6 +482,7 @@ function configureDefaultLogger(logLevel) {
|
|
|
471
482
|
messageKey: "msg",
|
|
472
483
|
// Do not include pid/hostname in output
|
|
473
484
|
base: {},
|
|
485
|
+
errorKey: "error",
|
|
474
486
|
// Keep the numeric level so the logfmt sink can match Pino's levels.
|
|
475
487
|
formatters: {
|
|
476
488
|
level(_label, number) {
|
|
@@ -762,7 +774,7 @@ function deserializeActorKey(keyString) {
|
|
|
762
774
|
}
|
|
763
775
|
}
|
|
764
776
|
if (escaping) {
|
|
765
|
-
parts.push(currentPart
|
|
777
|
+
parts.push(`${currentPart}\\`);
|
|
766
778
|
} else if (isEmptyStringMarker) {
|
|
767
779
|
parts.push("");
|
|
768
780
|
} else if (currentPart !== "" || parts.length > 0) {
|
|
@@ -805,6 +817,10 @@ var JSON_COMPAT_BIGINT = "$BigInt";
|
|
|
805
817
|
var JSON_COMPAT_ARRAY_BUFFER = "$ArrayBuffer";
|
|
806
818
|
var JSON_COMPAT_UINT8_ARRAY = "$Uint8Array";
|
|
807
819
|
var JSON_COMPAT_UNDEFINED = "$Undefined";
|
|
820
|
+
var JSON_COMPAT_SET = "$Set";
|
|
821
|
+
function isTypedArray(value) {
|
|
822
|
+
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;
|
|
823
|
+
}
|
|
808
824
|
var EncodingSchema = z2.enum(["json", "cbor", "bare"]);
|
|
809
825
|
async function inputDataToBuffer(data) {
|
|
810
826
|
if (typeof data === "string") {
|
|
@@ -839,9 +855,15 @@ function isPlainObject(value) {
|
|
|
839
855
|
return proto === Object.prototype || proto === null;
|
|
840
856
|
}
|
|
841
857
|
function encodeJsonCompatValue(input) {
|
|
858
|
+
if (input === null) {
|
|
859
|
+
return input;
|
|
860
|
+
}
|
|
842
861
|
if (input === void 0) {
|
|
843
862
|
return [JSON_COMPAT_UNDEFINED, 0];
|
|
844
863
|
}
|
|
864
|
+
if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
|
|
865
|
+
return input;
|
|
866
|
+
}
|
|
845
867
|
if (typeof input === "bigint") {
|
|
846
868
|
return [JSON_COMPAT_BIGINT, input.toString()];
|
|
847
869
|
}
|
|
@@ -851,10 +873,34 @@ function encodeJsonCompatValue(input) {
|
|
|
851
873
|
if (input instanceof Uint8Array) {
|
|
852
874
|
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];
|
|
853
875
|
}
|
|
876
|
+
if (isTypedArray(input)) {
|
|
877
|
+
return input;
|
|
878
|
+
}
|
|
879
|
+
if (input instanceof Date || input instanceof RegExp || input instanceof Error) {
|
|
880
|
+
return input;
|
|
881
|
+
}
|
|
882
|
+
if (input instanceof Set) {
|
|
883
|
+
const encoded = [...input.values()].map(
|
|
884
|
+
(v) => encodeJsonCompatValue(v)
|
|
885
|
+
);
|
|
886
|
+
return [JSON_COMPAT_SET, encoded];
|
|
887
|
+
}
|
|
888
|
+
if (input instanceof Map) {
|
|
889
|
+
const encoded = /* @__PURE__ */ new Map();
|
|
890
|
+
for (const [k, v] of input.entries()) {
|
|
891
|
+
encoded.set(
|
|
892
|
+
encodeJsonCompatValue(k),
|
|
893
|
+
encodeJsonCompatValue(v)
|
|
894
|
+
);
|
|
895
|
+
}
|
|
896
|
+
return encoded;
|
|
897
|
+
}
|
|
854
898
|
if (Array.isArray(input)) {
|
|
855
|
-
const encoded = input.map(
|
|
899
|
+
const encoded = input.map(
|
|
900
|
+
(value) => encodeJsonCompatValue(value)
|
|
901
|
+
);
|
|
856
902
|
if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
|
|
857
|
-
return [
|
|
903
|
+
return [`$${encoded[0]}`, encoded[1]];
|
|
858
904
|
}
|
|
859
905
|
return encoded;
|
|
860
906
|
}
|
|
@@ -865,7 +911,8 @@ function encodeJsonCompatValue(input) {
|
|
|
865
911
|
}
|
|
866
912
|
return encoded;
|
|
867
913
|
}
|
|
868
|
-
|
|
914
|
+
const typeName = typeof input === "object" && input !== null ? input.constructor?.name ?? typeof input : typeof input;
|
|
915
|
+
throw new TypeError(`Value of type "${typeName}" is not CBOR serializable`);
|
|
869
916
|
}
|
|
870
917
|
function reviveJsonCompatValue(input, options = {}) {
|
|
871
918
|
if (typeof input === "bigint") {
|
|
@@ -874,6 +921,16 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
874
921
|
}
|
|
875
922
|
return input;
|
|
876
923
|
}
|
|
924
|
+
if (input instanceof Map) {
|
|
925
|
+
const revived = /* @__PURE__ */ new Map();
|
|
926
|
+
for (const [k, v] of input.entries()) {
|
|
927
|
+
revived.set(
|
|
928
|
+
reviveJsonCompatValue(k, options),
|
|
929
|
+
reviveJsonCompatValue(v, options)
|
|
930
|
+
);
|
|
931
|
+
}
|
|
932
|
+
return revived;
|
|
933
|
+
}
|
|
877
934
|
if (Array.isArray(input)) {
|
|
878
935
|
if (input.length === 2 && typeof input[0] === "string" && input[0].startsWith("$")) {
|
|
879
936
|
if (input[0] === JSON_COMPAT_BIGINT) {
|
|
@@ -888,6 +945,12 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
888
945
|
if (input[0] === JSON_COMPAT_UNDEFINED) {
|
|
889
946
|
return void 0;
|
|
890
947
|
}
|
|
948
|
+
if (input[0] === JSON_COMPAT_SET) {
|
|
949
|
+
const items = input[1].map(
|
|
950
|
+
(v) => reviveJsonCompatValue(v, options)
|
|
951
|
+
);
|
|
952
|
+
return new Set(items);
|
|
953
|
+
}
|
|
891
954
|
if (input[0].startsWith("$$")) {
|
|
892
955
|
return [
|
|
893
956
|
input[0].substring(1),
|
|
@@ -929,19 +992,13 @@ function jsonStringifyCompat(input) {
|
|
|
929
992
|
return [JSON_COMPAT_BIGINT, value.toString()];
|
|
930
993
|
}
|
|
931
994
|
if (value instanceof ArrayBuffer) {
|
|
932
|
-
return [
|
|
933
|
-
JSON_COMPAT_ARRAY_BUFFER,
|
|
934
|
-
base64EncodeArrayBuffer(value)
|
|
935
|
-
];
|
|
995
|
+
return [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];
|
|
936
996
|
}
|
|
937
997
|
if (value instanceof Uint8Array) {
|
|
938
|
-
return [
|
|
939
|
-
JSON_COMPAT_UINT8_ARRAY,
|
|
940
|
-
base64EncodeUint8Array(value)
|
|
941
|
-
];
|
|
998
|
+
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
|
|
942
999
|
}
|
|
943
1000
|
if (Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0].startsWith("$")) {
|
|
944
|
-
return [
|
|
1001
|
+
return [`$${value[0]}`, value[1]];
|
|
945
1002
|
}
|
|
946
1003
|
return value;
|
|
947
1004
|
});
|
|
@@ -3905,11 +3962,11 @@ async function lookupMetadataCached(config) {
|
|
|
3905
3962
|
}
|
|
3906
3963
|
|
|
3907
3964
|
// src/engine-client/ws-proxy.ts
|
|
3908
|
-
async function createWebSocketProxy(
|
|
3965
|
+
async function createWebSocketProxy(_c, targetUrl, protocols) {
|
|
3909
3966
|
const WebSocket2 = await importWebSocket();
|
|
3910
3967
|
const state = {};
|
|
3911
3968
|
return {
|
|
3912
|
-
onOpen: async (
|
|
3969
|
+
onOpen: async (_event, clientWs) => {
|
|
3913
3970
|
logger3().debug({ msg: "client websocket connected", targetUrl });
|
|
3914
3971
|
if (clientWs.readyState !== 1) {
|
|
3915
3972
|
logger3().warn({
|
|
@@ -3947,23 +4004,23 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
3947
4004
|
reject(error);
|
|
3948
4005
|
});
|
|
3949
4006
|
});
|
|
3950
|
-
state.targetWs.addEventListener("message", (
|
|
3951
|
-
if (typeof
|
|
3952
|
-
clientWs.send(
|
|
3953
|
-
} else if (
|
|
3954
|
-
|
|
4007
|
+
state.targetWs.addEventListener("message", (event) => {
|
|
4008
|
+
if (typeof event.data === "string" || event.data instanceof ArrayBuffer) {
|
|
4009
|
+
clientWs.send(event.data);
|
|
4010
|
+
} else if (event.data instanceof Blob) {
|
|
4011
|
+
event.data.arrayBuffer().then((buffer) => {
|
|
3955
4012
|
clientWs.send(buffer);
|
|
3956
4013
|
});
|
|
3957
4014
|
}
|
|
3958
4015
|
});
|
|
3959
|
-
state.targetWs.addEventListener("close", (
|
|
4016
|
+
state.targetWs.addEventListener("close", (event) => {
|
|
3960
4017
|
logger3().debug({
|
|
3961
4018
|
msg: "target websocket closed",
|
|
3962
4019
|
targetUrl,
|
|
3963
|
-
code:
|
|
3964
|
-
reason:
|
|
4020
|
+
code: event.code,
|
|
4021
|
+
reason: event.reason
|
|
3965
4022
|
});
|
|
3966
|
-
closeWebSocketIfOpen(clientWs,
|
|
4023
|
+
closeWebSocketIfOpen(clientWs, event.code, event.reason);
|
|
3967
4024
|
});
|
|
3968
4025
|
state.targetWs.addEventListener("error", (error) => {
|
|
3969
4026
|
logger3().error({
|
|
@@ -4006,7 +4063,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
4006
4063
|
);
|
|
4007
4064
|
}
|
|
4008
4065
|
},
|
|
4009
|
-
onClose: (event,
|
|
4066
|
+
onClose: (event, _clientWs) => {
|
|
4010
4067
|
logger3().debug({
|
|
4011
4068
|
msg: "client websocket closed",
|
|
4012
4069
|
targetUrl,
|
|
@@ -4023,7 +4080,7 @@ async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
|
4023
4080
|
}
|
|
4024
4081
|
}
|
|
4025
4082
|
},
|
|
4026
|
-
onError: (event,
|
|
4083
|
+
onError: (event, _clientWs) => {
|
|
4027
4084
|
logger3().error({ msg: "client websocket error", targetUrl, event });
|
|
4028
4085
|
if (state.targetWs) {
|
|
4029
4086
|
if (state.targetWs.readyState === WebSocket2.OPEN) {
|
|
@@ -4139,7 +4196,9 @@ var RemoteEngineControlClient = class {
|
|
|
4139
4196
|
name,
|
|
4140
4197
|
key: serializeActorKey(key),
|
|
4141
4198
|
runner_name_selector: this.#config.poolName,
|
|
4142
|
-
input: actorInput ? uint8ArrayToBase64(
|
|
4199
|
+
input: actorInput ? uint8ArrayToBase64(
|
|
4200
|
+
encodeCborCompat(actorInput)
|
|
4201
|
+
) : void 0,
|
|
4143
4202
|
crash_policy: crashPolicy ?? "sleep"
|
|
4144
4203
|
});
|
|
4145
4204
|
logger3().info({
|
|
@@ -4530,7 +4589,7 @@ function classifyActorError(error) {
|
|
|
4530
4589
|
return void 0;
|
|
4531
4590
|
}
|
|
4532
4591
|
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";
|
|
4592
|
+
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
4593
|
}
|
|
4535
4594
|
function classifyTransportError(error) {
|
|
4536
4595
|
if (error.message.includes("database accessed after actor stopped")) {
|
|
@@ -4619,10 +4678,7 @@ async function retryOnLifecycleBoundary(run, opts) {
|
|
|
4619
4678
|
if (attempt === maxAttempts - 1) {
|
|
4620
4679
|
break;
|
|
4621
4680
|
}
|
|
4622
|
-
const delayMs = Math.min(
|
|
4623
|
-
initialDelayMs * 2 ** attempt,
|
|
4624
|
-
maxDelayMs
|
|
4625
|
-
);
|
|
4681
|
+
const delayMs = Math.min(initialDelayMs * 2 ** attempt, maxDelayMs);
|
|
4626
4682
|
await waitWithSignal(delayMs, opts?.signal);
|
|
4627
4683
|
}
|
|
4628
4684
|
}
|
|
@@ -4661,7 +4717,9 @@ function createQueueSender(senderOptions) {
|
|
|
4661
4717
|
}),
|
|
4662
4718
|
requestToBare: (value) => ({
|
|
4663
4719
|
name: value.name ?? name,
|
|
4664
|
-
body: bufferToArrayBuffer(
|
|
4720
|
+
body: bufferToArrayBuffer(
|
|
4721
|
+
encodeCborCompat(value.body)
|
|
4722
|
+
),
|
|
4665
4723
|
wait: value.wait ?? false,
|
|
4666
4724
|
timeout: value.timeout !== void 0 ? BigInt(value.timeout) : null
|
|
4667
4725
|
}),
|
|
@@ -4695,7 +4753,6 @@ function createQueueSender(senderOptions) {
|
|
|
4695
4753
|
}
|
|
4696
4754
|
|
|
4697
4755
|
// src/client/actor-conn.ts
|
|
4698
|
-
var DEFAULT_MAX_INCOMING_MESSAGE_SIZE = 65536;
|
|
4699
4756
|
var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
|
|
4700
4757
|
var ActorConnRaw = class {
|
|
4701
4758
|
#disposed = false;
|
|
@@ -5174,12 +5231,10 @@ var ActorConnRaw = class {
|
|
|
5174
5231
|
);
|
|
5175
5232
|
return;
|
|
5176
5233
|
}
|
|
5177
|
-
let errorToThrow = new RivetError(
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
{ metadata, actor }
|
|
5182
|
-
);
|
|
5234
|
+
let errorToThrow = new RivetError(group, code, message, {
|
|
5235
|
+
metadata,
|
|
5236
|
+
actor
|
|
5237
|
+
});
|
|
5183
5238
|
if (isSchedulingError(group, code) && this.#actorId) {
|
|
5184
5239
|
const schedulingError = await checkForSchedulingError(
|
|
5185
5240
|
group,
|
|
@@ -5575,31 +5630,8 @@ var ActorConnRaw = class {
|
|
|
5575
5630
|
}
|
|
5576
5631
|
}
|
|
5577
5632
|
);
|
|
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
5633
|
this.#websocket.send(messageSerialized);
|
|
5634
|
+
const serializedLength = messageLength(messageSerialized);
|
|
5603
5635
|
logger2().trace({
|
|
5604
5636
|
msg: "sent websocket message",
|
|
5605
5637
|
len: serializedLength
|
|
@@ -6023,10 +6055,7 @@ var ActorHandleRaw = class {
|
|
|
6023
6055
|
}
|
|
6024
6056
|
}).send(name, body, options);
|
|
6025
6057
|
} catch (err) {
|
|
6026
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6027
|
-
err,
|
|
6028
|
-
true
|
|
6029
|
-
);
|
|
6058
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6030
6059
|
if (this.#shouldRetryQueueDispatchOverload(
|
|
6031
6060
|
group,
|
|
6032
6061
|
code,
|
|
@@ -6059,7 +6088,10 @@ var ActorHandleRaw = class {
|
|
|
6059
6088
|
await this.#waitForRetryWindow();
|
|
6060
6089
|
continue;
|
|
6061
6090
|
}
|
|
6062
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6091
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6092
|
+
group,
|
|
6093
|
+
code
|
|
6094
|
+
);
|
|
6063
6095
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6064
6096
|
useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
|
|
6065
6097
|
if (useQueryTarget) {
|
|
@@ -6067,7 +6099,10 @@ var ActorHandleRaw = class {
|
|
|
6067
6099
|
}
|
|
6068
6100
|
continue;
|
|
6069
6101
|
}
|
|
6070
|
-
throw new RivetError(group, code, message, {
|
|
6102
|
+
throw new RivetError(group, code, message, {
|
|
6103
|
+
metadata,
|
|
6104
|
+
actor
|
|
6105
|
+
});
|
|
6071
6106
|
}
|
|
6072
6107
|
}
|
|
6073
6108
|
throw new Error("unreachable queue retry state");
|
|
@@ -6147,7 +6182,9 @@ var ActorHandleRaw = class {
|
|
|
6147
6182
|
args
|
|
6148
6183
|
}),
|
|
6149
6184
|
requestToBare: (args) => ({
|
|
6150
|
-
args: bufferToArrayBuffer(
|
|
6185
|
+
args: bufferToArrayBuffer(
|
|
6186
|
+
encodeCborCompat(args)
|
|
6187
|
+
)
|
|
6151
6188
|
}),
|
|
6152
6189
|
responseFromJson: (json) => json.output,
|
|
6153
6190
|
responseFromBare: (bare5) => decodeCborCompat(new Uint8Array(bare5.output))
|
|
@@ -6157,10 +6194,7 @@ var ActorHandleRaw = class {
|
|
|
6157
6194
|
}
|
|
6158
6195
|
return output;
|
|
6159
6196
|
} catch (err) {
|
|
6160
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6161
|
-
err,
|
|
6162
|
-
true
|
|
6163
|
-
);
|
|
6197
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6164
6198
|
if (await this.#shouldRetrySchedulingError(
|
|
6165
6199
|
group,
|
|
6166
6200
|
code,
|
|
@@ -6191,11 +6225,16 @@ var ActorHandleRaw = class {
|
|
|
6191
6225
|
{ metadata, actor }
|
|
6192
6226
|
);
|
|
6193
6227
|
}
|
|
6194
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6228
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6229
|
+
group,
|
|
6230
|
+
code
|
|
6231
|
+
);
|
|
6195
6232
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6196
6233
|
if (group === "actor" && (code === "starting" || code === "stopping")) {
|
|
6197
6234
|
useQueryTarget = true;
|
|
6198
|
-
await new Promise(
|
|
6235
|
+
await new Promise(
|
|
6236
|
+
(resolve) => setTimeout(resolve, 100)
|
|
6237
|
+
);
|
|
6199
6238
|
}
|
|
6200
6239
|
continue;
|
|
6201
6240
|
}
|
|
@@ -6372,10 +6411,7 @@ var ActorHandleRaw = class {
|
|
|
6372
6411
|
}
|
|
6373
6412
|
return response;
|
|
6374
6413
|
} catch (err) {
|
|
6375
|
-
const { group, code, message, metadata, actor } = deconstructError(
|
|
6376
|
-
err,
|
|
6377
|
-
true
|
|
6378
|
-
);
|
|
6414
|
+
const { group, code, message, metadata, actor } = deconstructError(err, true);
|
|
6379
6415
|
if (await this.#shouldRetrySchedulingError(
|
|
6380
6416
|
group,
|
|
6381
6417
|
code,
|
|
@@ -6398,7 +6434,10 @@ var ActorHandleRaw = class {
|
|
|
6398
6434
|
await this.#waitForRetryWindow();
|
|
6399
6435
|
continue;
|
|
6400
6436
|
}
|
|
6401
|
-
const invalidated = this.#invalidateResolvedActorId(
|
|
6437
|
+
const invalidated = this.#invalidateResolvedActorId(
|
|
6438
|
+
group,
|
|
6439
|
+
code
|
|
6440
|
+
);
|
|
6402
6441
|
if (invalidated && attempt < maxAttempts - 1) {
|
|
6403
6442
|
useQueryTarget = code === "starting" || code === "stopping" || code.startsWith("destroyed_");
|
|
6404
6443
|
if (useQueryTarget) {
|
|
@@ -6498,8 +6537,9 @@ var ActorHandleRaw = class {
|
|
|
6498
6537
|
this.#gatewayOptions,
|
|
6499
6538
|
options
|
|
6500
6539
|
);
|
|
6540
|
+
const useQueryTarget = isDynamicActorQuery(this.#actorResolutionState);
|
|
6501
6541
|
const target = await this.#resolveGatewayRequestTarget(
|
|
6502
|
-
|
|
6542
|
+
useQueryTarget,
|
|
6503
6543
|
gatewayOptions
|
|
6504
6544
|
);
|
|
6505
6545
|
return await rawWebSocket(
|
|
@@ -6522,7 +6562,9 @@ var ActorHandleRaw = class {
|
|
|
6522
6562
|
if ("directId" in target) {
|
|
6523
6563
|
return target.directId;
|
|
6524
6564
|
}
|
|
6525
|
-
throw new Error(
|
|
6565
|
+
throw new Error(
|
|
6566
|
+
"dynamic actor resolution did not produce a direct actor id"
|
|
6567
|
+
);
|
|
6526
6568
|
}
|
|
6527
6569
|
/**
|
|
6528
6570
|
* Returns the raw URL for routing traffic to the actor.
|