rivetkit 3.0.0-preview.4 → 3.0.0-preview.6
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.js +25 -19
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +1 -1
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/{chunk-ZWBTTPP3.js → chunk-3UT27Z2Z.js} +2 -2
- package/dist/tsup/{chunk-IPDSE33U.js → chunk-45UKEIKT.js} +2 -2
- package/dist/tsup/{chunk-MAUVZIXL.js → chunk-6AECHZCH.js} +2 -2
- package/dist/tsup/{chunk-MAUVZIXL.js.map → chunk-6AECHZCH.js.map} +1 -1
- package/dist/tsup/{chunk-OR3LWJGW.js → chunk-6HNQ7EHR.js} +2 -2
- package/dist/tsup/{chunk-C45DIKGB.js → chunk-DBKL7LCY.js} +27 -21
- package/dist/tsup/chunk-DBKL7LCY.js.map +1 -0
- package/dist/tsup/{chunk-LTMP7OMQ.cjs → chunk-DRNZBNII.cjs} +3 -3
- package/dist/tsup/{chunk-LTMP7OMQ.cjs.map → chunk-DRNZBNII.cjs.map} +1 -1
- package/dist/tsup/{chunk-5IZ36V3N.cjs → chunk-ENUONGNH.cjs} +166 -160
- package/dist/tsup/chunk-ENUONGNH.cjs.map +1 -0
- package/dist/tsup/{chunk-KM34T23X.js → chunk-KKIWVL2H.js} +3 -3
- package/dist/tsup/{chunk-KSQ3VVZX.cjs → chunk-KOLH4CTU.cjs} +3 -3
- package/dist/tsup/{chunk-KSQ3VVZX.cjs.map → chunk-KOLH4CTU.cjs.map} +1 -1
- package/dist/tsup/{chunk-S5QNPQ6K.cjs → chunk-LJNYWEYG.cjs} +3 -3
- package/dist/tsup/{chunk-S5QNPQ6K.cjs.map → chunk-LJNYWEYG.cjs.map} +1 -1
- package/dist/tsup/{chunk-WQFXPN6S.js → chunk-M5QFGINP.js} +4 -4
- package/dist/tsup/{chunk-WE5DMJFV.cjs → chunk-M6KOBS77.cjs} +7 -7
- package/dist/tsup/{chunk-WE5DMJFV.cjs.map → chunk-M6KOBS77.cjs.map} +1 -1
- package/dist/tsup/{chunk-U2QBZJTL.cjs → chunk-MJGSJEQS.cjs} +10 -10
- package/dist/tsup/{chunk-U2QBZJTL.cjs.map → chunk-MJGSJEQS.cjs.map} +1 -1
- package/dist/tsup/{chunk-DCUTYXIX.js → chunk-MQKJ6DPU.js} +2 -2
- package/dist/tsup/{chunk-SR362FVR.cjs → chunk-QZHR7FM2.cjs} +2 -2
- package/dist/tsup/{chunk-SR362FVR.cjs.map → chunk-QZHR7FM2.cjs.map} +1 -1
- package/dist/tsup/{chunk-SLIGV2T4.cjs → chunk-ZEEDB2GK.cjs} +4 -4
- package/dist/tsup/{chunk-SLIGV2T4.cjs.map → chunk-ZEEDB2GK.cjs.map} +1 -1
- package/dist/tsup/client/mod.cjs +5 -5
- package/dist/tsup/client/mod.js +4 -4
- package/dist/tsup/common/log.cjs +2 -2
- package/dist/tsup/common/log.js +1 -1
- package/dist/tsup/common/websocket.cjs +3 -3
- package/dist/tsup/common/websocket.js +2 -2
- package/dist/tsup/db/drizzle.cjs +2 -2
- package/dist/tsup/db/drizzle.js +1 -1
- package/dist/tsup/db/mod.cjs +3 -3
- package/dist/tsup/db/mod.js +2 -2
- package/dist/tsup/inspector/mod.cjs +5 -5
- package/dist/tsup/inspector/mod.js +4 -4
- package/dist/tsup/inspector/workflow.cjs +4 -4
- package/dist/tsup/inspector/workflow.js +3 -3
- package/dist/tsup/mod.cjs +86 -86
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.js +5 -5
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +6 -6
- package/dist/tsup/test/mod.js +4 -4
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.js +1 -1
- package/dist/tsup/workflow/mod.cjs +7 -7
- package/dist/tsup/workflow/mod.js +4 -4
- package/package.json +9 -9
- package/src/client/actor-conn.ts +21 -24
- package/src/client/lifecycle-errors.ts +13 -0
- package/src/registry/napi-runtime.ts +1 -1
- package/src/registry/native.ts +1 -1
- package/dist/tsup/chunk-5IZ36V3N.cjs.map +0 -1
- package/dist/tsup/chunk-C45DIKGB.js.map +0 -1
- /package/dist/tsup/{chunk-ZWBTTPP3.js.map → chunk-3UT27Z2Z.js.map} +0 -0
- /package/dist/tsup/{chunk-IPDSE33U.js.map → chunk-45UKEIKT.js.map} +0 -0
- /package/dist/tsup/{chunk-OR3LWJGW.js.map → chunk-6HNQ7EHR.js.map} +0 -0
- /package/dist/tsup/{chunk-KM34T23X.js.map → chunk-KKIWVL2H.js.map} +0 -0
- /package/dist/tsup/{chunk-WQFXPN6S.js.map → chunk-M5QFGINP.js.map} +0 -0
- /package/dist/tsup/{chunk-DCUTYXIX.js.map → chunk-MQKJ6DPU.js.map} +0 -0
package/dist/tsup/test/mod.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkM6KOBS77cjs = require('../chunk-M6KOBS77.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkENUONGNHcjs = require('../chunk-ENUONGNH.cjs');
|
|
7
7
|
require('../chunk-RTWH3AX3.cjs');
|
|
8
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-LJNYWEYG.cjs');
|
|
9
9
|
require('../chunk-KVFIONKQ.cjs');
|
|
10
|
-
require('../chunk-
|
|
10
|
+
require('../chunk-QZHR7FM2.cjs');
|
|
11
11
|
require('../chunk-MGI2VVF6.cjs');
|
|
12
12
|
|
|
13
13
|
// src/test/ready.ts
|
|
@@ -36,8 +36,8 @@ async function setupTest(c, registry) {
|
|
|
36
36
|
registry.config.noWelcome = true;
|
|
37
37
|
registry.start();
|
|
38
38
|
await waitForRegistryReady(registry);
|
|
39
|
-
const client =
|
|
40
|
-
...
|
|
39
|
+
const client = _chunkM6KOBS77cjs.createClient.call(void 0, {
|
|
40
|
+
..._chunkENUONGNHcjs.convertRegistryConfigToClientConfig.call(void 0, registry.parseConfig()),
|
|
41
41
|
disableMetadataLookup: false
|
|
42
42
|
});
|
|
43
43
|
c.onTestFinished(async () => {
|
package/dist/tsup/test/mod.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createClient
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-KKIWVL2H.js";
|
|
4
4
|
import {
|
|
5
5
|
convertRegistryConfigToClientConfig
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-DBKL7LCY.js";
|
|
7
7
|
import "../chunk-A2CF6PFH.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-45UKEIKT.js";
|
|
9
9
|
import "../chunk-JTHHCZCZ.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-6AECHZCH.js";
|
|
11
11
|
import "../chunk-ZOVJDAOW.js";
|
|
12
12
|
|
|
13
13
|
// src/test/ready.ts
|
package/dist/tsup/utils.cjs
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkQZHR7FM2cjs = require('./chunk-QZHR7FM2.cjs');
|
|
23
23
|
require('./chunk-MGI2VVF6.cjs');
|
|
24
24
|
|
|
25
25
|
|
|
@@ -42,5 +42,5 @@ require('./chunk-MGI2VVF6.cjs');
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
exports.EXTRA_ERROR_LOG =
|
|
45
|
+
exports.EXTRA_ERROR_LOG = _chunkQZHR7FM2cjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkQZHR7FM2cjs.SinglePromiseQueue; exports.VERSION = _chunkQZHR7FM2cjs.VERSION; exports.arrayBuffersEqual = _chunkQZHR7FM2cjs.arrayBuffersEqual; exports.assertUnreachable = _chunkQZHR7FM2cjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkQZHR7FM2cjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkQZHR7FM2cjs.combineUrlPath; exports.dbg = _chunkQZHR7FM2cjs.dbg; exports.detectRuntime = _chunkQZHR7FM2cjs.detectRuntime; exports.getEnvUniversal = _chunkQZHR7FM2cjs.getEnvUniversal; exports.httpUserAgent = _chunkQZHR7FM2cjs.httpUserAgent; exports.interval = _chunkQZHR7FM2cjs.interval; exports.joinSignals = _chunkQZHR7FM2cjs.joinSignals; exports.jsonParseCompat = _chunkQZHR7FM2cjs.jsonParseCompat; exports.jsonStringifyCompat = _chunkQZHR7FM2cjs.jsonStringifyCompat; exports.promiseWithResolvers = _chunkQZHR7FM2cjs.promiseWithResolvers; exports.setLongTimeout = _chunkQZHR7FM2cjs.setLongTimeout; exports.sleep = _chunkQZHR7FM2cjs.sleep; exports.stringifyError = _chunkQZHR7FM2cjs.stringifyError; exports.toUint8Array = _chunkQZHR7FM2cjs.toUint8Array;
|
|
46
46
|
//# sourceMappingURL=utils.cjs.map
|
package/dist/tsup/utils.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } var _class; var _class2;
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
require('../chunk-
|
|
3
|
+
var _chunkMJGSJEQScjs = require('../chunk-MJGSJEQS.cjs');
|
|
4
|
+
require('../chunk-KOLH4CTU.cjs');
|
|
5
|
+
require('../chunk-ZEEDB2GK.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -13,7 +13,7 @@ var _chunkHDVZ6YZGcjs = require('../chunk-HDVZ6YZG.cjs');
|
|
|
13
13
|
var _chunkRTWH3AX3cjs = require('../chunk-RTWH3AX3.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkQZHR7FM2cjs = require('../chunk-QZHR7FM2.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
@@ -743,7 +743,7 @@ function workflow(fn, options = {}) {
|
|
|
743
743
|
function getWorkflowInspector(actorId) {
|
|
744
744
|
let workflowInspector = workflowInspectors.get(actorId);
|
|
745
745
|
if (!workflowInspector) {
|
|
746
|
-
workflowInspector =
|
|
746
|
+
workflowInspector = _chunkMJGSJEQScjs.createWorkflowInspectorAdapter.call(void 0, );
|
|
747
747
|
workflowInspectors.set(actorId, workflowInspector);
|
|
748
748
|
}
|
|
749
749
|
return workflowInspector;
|
|
@@ -816,13 +816,13 @@ function workflow(fn, options = {}) {
|
|
|
816
816
|
if (shouldRethrowWorkflowError(error)) {
|
|
817
817
|
runCtx.log.error({
|
|
818
818
|
msg: "workflow run failed",
|
|
819
|
-
error:
|
|
819
|
+
error: _chunkQZHR7FM2cjs.stringifyError.call(void 0, error)
|
|
820
820
|
});
|
|
821
821
|
throw error;
|
|
822
822
|
}
|
|
823
823
|
runCtx.log.warn({
|
|
824
824
|
msg: "workflow failed and will sleep until woken",
|
|
825
|
-
error:
|
|
825
|
+
error: _chunkQZHR7FM2cjs.stringifyError.call(void 0, error)
|
|
826
826
|
});
|
|
827
827
|
} finally {
|
|
828
828
|
runCtx.abortSignal.removeEventListener("abort", onAbort);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createWorkflowInspectorAdapter
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-M5QFGINP.js";
|
|
4
|
+
import "../chunk-MQKJ6DPU.js";
|
|
5
|
+
import "../chunk-3UT27Z2Z.js";
|
|
6
6
|
import {
|
|
7
7
|
ACTOR_CONTEXT_INTERNAL_SYMBOL,
|
|
8
8
|
defineRunHandler
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from "../chunk-A2CF6PFH.js";
|
|
14
14
|
import {
|
|
15
15
|
stringifyError
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-6AECHZCH.js";
|
|
17
17
|
import {
|
|
18
18
|
RivetError,
|
|
19
19
|
isActorAbortedError
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rivetkit",
|
|
3
|
-
"version": "3.0.0-preview.
|
|
3
|
+
"version": "3.0.0-preview.6",
|
|
4
4
|
"description": "Lightweight libraries for building stateful actors on edge platforms",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -211,15 +211,15 @@
|
|
|
211
211
|
"@hono/zod-openapi": "^1.1.5",
|
|
212
212
|
"@opentelemetry/api": "^1.1.0",
|
|
213
213
|
"@rivetkit/bare-ts": "^0.6.2",
|
|
214
|
-
"@rivetkit/engine-api-full": "3.0.0-preview.
|
|
215
|
-
"@rivetkit/engine-cli": "3.0.0-preview.
|
|
216
|
-
"@rivetkit/engine-envoy-protocol": "3.0.0-preview.
|
|
214
|
+
"@rivetkit/engine-api-full": "3.0.0-preview.6",
|
|
215
|
+
"@rivetkit/engine-cli": "3.0.0-preview.6",
|
|
216
|
+
"@rivetkit/engine-envoy-protocol": "3.0.0-preview.6",
|
|
217
217
|
"@rivetkit/on-change": "6.0.1",
|
|
218
|
-
"@rivetkit/rivetkit-napi": "3.0.0-preview.
|
|
219
|
-
"@rivetkit/rivetkit-wasm": "3.0.0-preview.
|
|
220
|
-
"@rivetkit/traces": "3.0.0-preview.
|
|
221
|
-
"@rivetkit/virtual-websocket": "3.0.0-preview.
|
|
222
|
-
"@rivetkit/workflow-engine": "3.0.0-preview.
|
|
218
|
+
"@rivetkit/rivetkit-napi": "3.0.0-preview.6",
|
|
219
|
+
"@rivetkit/rivetkit-wasm": "3.0.0-preview.6",
|
|
220
|
+
"@rivetkit/traces": "3.0.0-preview.6",
|
|
221
|
+
"@rivetkit/virtual-websocket": "3.0.0-preview.6",
|
|
222
|
+
"@rivetkit/workflow-engine": "3.0.0-preview.6",
|
|
223
223
|
"cbor-x": "^1.6.0",
|
|
224
224
|
"drizzle-orm": "0.45.2",
|
|
225
225
|
"hono": "^4.7.0",
|
package/src/client/actor-conn.ts
CHANGED
|
@@ -50,9 +50,7 @@ import {
|
|
|
50
50
|
import { ACTOR_CONNS_SYMBOL, type ClientRaw } from "./client";
|
|
51
51
|
import * as errors from "./errors";
|
|
52
52
|
import { isRetryableLifecycleReconnectSignal } from "./lifecycle-errors";
|
|
53
|
-
import { retryAfterMs } from "./retry-budget";
|
|
54
53
|
import { logger } from "./log";
|
|
55
|
-
import { isInvalidToken } from "./token-provider";
|
|
56
54
|
import { outboundTelemetryHeaders } from "./outbound-telemetry";
|
|
57
55
|
import {
|
|
58
56
|
createQueueSender,
|
|
@@ -61,6 +59,8 @@ import {
|
|
|
61
59
|
type QueueSendResult,
|
|
62
60
|
type QueueSendWaitOptions,
|
|
63
61
|
} from "./queue";
|
|
62
|
+
import { retryAfterMs } from "./retry-budget";
|
|
63
|
+
import { isInvalidToken } from "./token-provider";
|
|
64
64
|
import {
|
|
65
65
|
type WebSocketMessage as ConnMessage,
|
|
66
66
|
messageLength,
|
|
@@ -160,6 +160,8 @@ export class ActorConnRaw {
|
|
|
160
160
|
#abortController = new AbortController();
|
|
161
161
|
|
|
162
162
|
#connStatus: ActorConnStatus = "idle";
|
|
163
|
+
/** The opening failure that stopped retries. Later actions must fail instead of queueing. */
|
|
164
|
+
#connectionOpenError?: errors.ActorError;
|
|
163
165
|
|
|
164
166
|
#actorId?: string;
|
|
165
167
|
#connId?: string;
|
|
@@ -356,6 +358,8 @@ export class ActorConnRaw {
|
|
|
356
358
|
`Invalid action call: expected an options object { name, args }, got ${typeof opts}. Use conn.actionName(...args) for the shorthand API.`,
|
|
357
359
|
);
|
|
358
360
|
}
|
|
361
|
+
if (this.#disposed) throw new errors.ActorConnDisposed();
|
|
362
|
+
if (this.#connectionOpenError) throw this.#connectionOpenError;
|
|
359
363
|
logger().debug({ msg: "action", name: opts.name, args: opts.args });
|
|
360
364
|
|
|
361
365
|
// If we have an active connection, use the websockactionId
|
|
@@ -466,6 +470,7 @@ export class ActorConnRaw {
|
|
|
466
470
|
}
|
|
467
471
|
|
|
468
472
|
#connectWithRetry() {
|
|
473
|
+
this.#connectionOpenError = undefined;
|
|
469
474
|
this.#setConnStatus("connecting");
|
|
470
475
|
|
|
471
476
|
// Attempt to reconnect indefinitely
|
|
@@ -523,6 +528,11 @@ export class ActorConnRaw {
|
|
|
523
528
|
// Wait for result
|
|
524
529
|
await this.#waitForOpen(this.#onOpenPromise.promise);
|
|
525
530
|
} catch (error) {
|
|
531
|
+
this.#abandonCurrentSocket(
|
|
532
|
+
isConnectionOpenTimeout(error)
|
|
533
|
+
? "Connect timeout"
|
|
534
|
+
: "Connection opening failed",
|
|
535
|
+
);
|
|
526
536
|
if (this.#shouldRetryConnectionOpenError(error)) {
|
|
527
537
|
throw error;
|
|
528
538
|
}
|
|
@@ -537,7 +547,7 @@ export class ActorConnRaw {
|
|
|
537
547
|
{ error: stringifyError(error) },
|
|
538
548
|
);
|
|
539
549
|
|
|
540
|
-
this.#
|
|
550
|
+
this.#connectionOpenError = actorError;
|
|
541
551
|
this.#rejectPendingPromises(actorError, false);
|
|
542
552
|
this.#dispatchActorError(actorError);
|
|
543
553
|
this.#setConnStatus("idle");
|
|
@@ -573,29 +583,24 @@ export class ActorConnRaw {
|
|
|
573
583
|
});
|
|
574
584
|
try {
|
|
575
585
|
await Promise.race([open, timedOut]);
|
|
576
|
-
} catch (error) {
|
|
577
|
-
if (isConnectionOpenTimeout(error)) {
|
|
578
|
-
this.#abandonCurrentSocket();
|
|
579
|
-
}
|
|
580
|
-
throw error;
|
|
581
586
|
} finally {
|
|
582
587
|
clearTimeout(timer);
|
|
583
588
|
}
|
|
584
589
|
}
|
|
585
590
|
|
|
586
|
-
#abandonCurrentSocket() {
|
|
591
|
+
#abandonCurrentSocket(reason: string) {
|
|
587
592
|
const ws = this.#websocket;
|
|
588
593
|
if (!ws) return;
|
|
589
594
|
this.#websocket = undefined;
|
|
590
595
|
this.#abandonedSockets.add(ws);
|
|
591
|
-
logger().
|
|
592
|
-
msg: "
|
|
596
|
+
logger().debug({
|
|
597
|
+
msg: "closing failed connection attempt",
|
|
593
598
|
connId: this.#connId,
|
|
594
599
|
readyState: ws.readyState,
|
|
595
|
-
|
|
600
|
+
reason,
|
|
596
601
|
});
|
|
597
602
|
try {
|
|
598
|
-
ws.close(1000,
|
|
603
|
+
ws.close(1000, reason);
|
|
599
604
|
} catch (err) {
|
|
600
605
|
logger().debug({
|
|
601
606
|
msg: "failed to close abandoned websocket",
|
|
@@ -923,18 +928,8 @@ export class ActorConnRaw {
|
|
|
923
928
|
}
|
|
924
929
|
}
|
|
925
930
|
|
|
926
|
-
// If we have an onOpenPromise, reject it with the error
|
|
927
|
-
if (this.#onOpenPromise) {
|
|
928
|
-
this.#onOpenPromise.reject(errorToThrow);
|
|
929
|
-
}
|
|
930
|
-
|
|
931
931
|
this.#invalidateActorIfStale(group, code);
|
|
932
|
-
|
|
933
|
-
// Reject any in-flight requests
|
|
934
|
-
for (const [id, inFlight] of this.#actionsInFlight.entries()) {
|
|
935
|
-
inFlight.reject(errorToThrow);
|
|
936
|
-
this.#actionsInFlight.delete(id);
|
|
937
|
-
}
|
|
932
|
+
this.#rejectPendingPromises(errorToThrow, false);
|
|
938
933
|
|
|
939
934
|
this.#dispatchActorError(errorToThrow);
|
|
940
935
|
}
|
|
@@ -1100,6 +1095,8 @@ export class ActorConnRaw {
|
|
|
1100
1095
|
}
|
|
1101
1096
|
|
|
1102
1097
|
#rejectPendingPromises(error: Error, suppressUnhandled: boolean) {
|
|
1098
|
+
// Rejected actions must not survive in the queue and execute after a reconnect.
|
|
1099
|
+
this.#clearQueuedMessages();
|
|
1103
1100
|
if (this.#onOpenPromise) {
|
|
1104
1101
|
if (suppressUnhandled) {
|
|
1105
1102
|
this.#onOpenPromise.promise.catch(() => {});
|
|
@@ -77,6 +77,19 @@ function classifyActorError(
|
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
if (
|
|
81
|
+
(error.group === "ups" && error.code === "consumer_closed") ||
|
|
82
|
+
(error.group === "depot" && error.code === "request_deadline_exceeded")
|
|
83
|
+
) {
|
|
84
|
+
// The connection can recover, but an interrupted action may already have run.
|
|
85
|
+
return buildLifecycleBoundaryInfo(
|
|
86
|
+
"reconnect_only",
|
|
87
|
+
"actor_error",
|
|
88
|
+
error.message,
|
|
89
|
+
{ group: error.group, code: error.code },
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
80
93
|
if (
|
|
81
94
|
error.group === "guard" &&
|
|
82
95
|
isRetryableGuardGatewayHttpError(error.code)
|
|
@@ -1286,7 +1286,7 @@ export async function loadNapiRuntime(): Promise<{
|
|
|
1286
1286
|
}> {
|
|
1287
1287
|
// LOAD-BEARING: the specifier is computed (`.join("/")`) on purpose. Do NOT
|
|
1288
1288
|
// "simplify" it to a literal `import("@rivetkit/rivetkit-napi")`. Edge
|
|
1289
|
-
// adapters
|
|
1289
|
+
// adapters pre-bundle this module for Deno; a
|
|
1290
1290
|
// literal dynamic import is statically resolvable, so Deno's eszip bundler
|
|
1291
1291
|
// would snapshot the native `.node` addon into the deploy and 413. The
|
|
1292
1292
|
// computed specifier keeps it opaque to static analysis so it is never
|
package/src/registry/native.ts
CHANGED
|
@@ -836,7 +836,7 @@ function decodeNativeKvValue<T extends NativeKvValueType = "text">(
|
|
|
836
836
|
async function loadEngineCli(): Promise<typeof import("@rivetkit/engine-cli")> {
|
|
837
837
|
// LOAD-BEARING: the specifier is computed (`.join("/")`) on purpose. Do NOT
|
|
838
838
|
// "simplify" it to a literal `import("@rivetkit/engine-cli")`. Edge adapters
|
|
839
|
-
//
|
|
839
|
+
// pre-bundle this module for Deno; a literal
|
|
840
840
|
// dynamic import is statically resolvable, so Deno's eszip bundler would
|
|
841
841
|
// snapshot the ~117 MB engine-cli binary into the deploy and 413. The
|
|
842
842
|
// computed specifier keeps it opaque to static analysis so it is never
|