rivetkit 2.0.8 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tsup/{chunk-2FAWAPRT.js → chunk-346X2XU4.js} +2 -2
- package/dist/tsup/{chunk-SFRRXLRM.js → chunk-7E5K3375.js} +2 -2
- package/dist/tsup/{chunk-3WRAGTDC.cjs → chunk-CA3X5M6H.cjs} +92 -39
- package/dist/tsup/{chunk-PVKV2O2E.js.map → chunk-CA3X5M6H.cjs.map} +1 -1
- package/dist/tsup/{chunk-L5MHM6JJ.cjs → chunk-DVPXSB4B.cjs} +12 -12
- package/dist/tsup/{chunk-L5MHM6JJ.cjs.map → chunk-DVPXSB4B.cjs.map} +1 -1
- package/dist/tsup/{chunk-DQVVH5ZK.cjs → chunk-GIFHYL7A.cjs} +5 -6
- package/dist/tsup/chunk-GIFHYL7A.cjs.map +1 -0
- package/dist/tsup/{chunk-N7OVEOMU.js → chunk-H7E2UU23.js} +38 -15
- package/dist/tsup/chunk-H7E2UU23.js.map +1 -0
- package/dist/tsup/{chunk-A6TV3QU6.js → chunk-HI55LHM3.js} +5 -6
- package/dist/tsup/chunk-HI55LHM3.js.map +1 -0
- package/dist/tsup/{chunk-FGOZELKN.cjs → chunk-I3FB346I.cjs} +112 -58
- package/dist/tsup/chunk-I3FB346I.cjs.map +1 -0
- package/dist/tsup/{chunk-DOZBWJRI.js → chunk-KGDZYQYE.js} +2 -2
- package/dist/tsup/{chunk-KYEEAVJO.cjs → chunk-KH5WFDUK.cjs} +6 -6
- package/dist/tsup/{chunk-KYEEAVJO.cjs.map → chunk-KH5WFDUK.cjs.map} +1 -1
- package/dist/tsup/{chunk-WP7YG7S5.js → chunk-KL4V2ULR.js} +5 -4
- package/dist/tsup/chunk-KL4V2ULR.js.map +1 -0
- package/dist/tsup/{chunk-S6EAEZQA.js → chunk-MLQIYKAZ.js} +106 -52
- package/dist/tsup/chunk-MLQIYKAZ.js.map +1 -0
- package/dist/tsup/{chunk-3ZMJUIL3.js → chunk-N3A5GYJU.js} +3 -3
- package/dist/tsup/{chunk-CKSA7NOS.cjs → chunk-PDFL7FBL.cjs} +717 -380
- package/dist/tsup/chunk-PDFL7FBL.cjs.map +1 -0
- package/dist/tsup/{chunk-ESD2JX3L.cjs → chunk-PPLR53PP.cjs} +3 -3
- package/dist/tsup/{chunk-ESD2JX3L.cjs.map → chunk-PPLR53PP.cjs.map} +1 -1
- package/dist/tsup/{chunk-6INXQCH7.cjs → chunk-PSCDCEXM.cjs} +17 -12
- package/dist/tsup/chunk-PSCDCEXM.cjs.map +1 -0
- package/dist/tsup/{chunk-PVKV2O2E.js → chunk-QRFXXTLG.js} +96 -43
- package/dist/tsup/chunk-QRFXXTLG.js.map +1 -0
- package/dist/tsup/{chunk-RM2V2IRK.js → chunk-R2S45MO6.js} +14 -9
- package/dist/tsup/chunk-R2S45MO6.js.map +1 -0
- package/dist/tsup/{chunk-QGUQB3NC.cjs → chunk-SIWYIRXP.cjs} +7 -6
- package/dist/tsup/chunk-SIWYIRXP.cjs.map +1 -0
- package/dist/tsup/{chunk-E77RVI3P.js → chunk-VJRXZPTT.js} +601 -264
- package/dist/tsup/chunk-VJRXZPTT.js.map +1 -0
- package/dist/tsup/{chunk-KDNB2BQX.cjs → chunk-VZMXAZKC.cjs} +229 -206
- package/dist/tsup/chunk-VZMXAZKC.cjs.map +1 -0
- package/dist/tsup/{chunk-TPJNKVFB.cjs → chunk-YKVTF7MP.cjs} +7 -7
- package/dist/tsup/{chunk-TPJNKVFB.cjs.map → chunk-YKVTF7MP.cjs.map} +1 -1
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +2 -2
- package/dist/tsup/client/mod.d.ts +2 -2
- 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/{conn-ChAuuTr0.d.cts → conn-Cc9WHuN4.d.cts} +196 -185
- package/dist/tsup/{conn-CjUkMEcm.d.ts → conn-DfPG71FA.d.ts} +196 -185
- package/dist/tsup/driver-helpers/mod.cjs +7 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +4 -2
- package/dist/tsup/driver-helpers/mod.d.ts +4 -2
- package/dist/tsup/driver-helpers/mod.js +9 -7
- package/dist/tsup/driver-test-suite/mod.cjs +116 -102
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +3 -2
- package/dist/tsup/driver-test-suite/mod.d.ts +3 -2
- package/dist/tsup/driver-test-suite/mod.js +61 -47
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -6
- package/dist/tsup/inspector/mod.d.cts +6 -6
- package/dist/tsup/inspector/mod.d.ts +6 -6
- package/dist/tsup/inspector/mod.js +5 -5
- package/dist/tsup/mod.cjs +10 -10
- package/dist/tsup/mod.d.cts +8 -39
- package/dist/tsup/mod.d.ts +8 -39
- package/dist/tsup/mod.js +9 -9
- package/dist/tsup/test/mod.cjs +11 -11
- package/dist/tsup/test/mod.d.cts +1 -1
- package/dist/tsup/test/mod.d.ts +1 -1
- package/dist/tsup/test/mod.js +10 -10
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.d.cts +2 -1
- package/dist/tsup/utils.d.ts +2 -1
- package/dist/tsup/utils.js +1 -1
- package/package.json +4 -5
- package/src/actor/driver.ts +2 -2
- package/src/actor/instance.ts +4 -4
- package/src/actor/protocol/serde.ts +75 -3
- package/src/actor/router-endpoints.ts +6 -6
- package/src/actor/router.ts +2 -2
- package/src/client/actor-conn.ts +24 -3
- package/src/client/config.ts +18 -25
- package/src/driver-helpers/mod.ts +5 -1
- package/src/driver-test-suite/mod.ts +65 -43
- package/src/driver-test-suite/utils.ts +4 -1
- package/src/drivers/default.ts +11 -9
- package/src/drivers/engine/actor-driver.ts +40 -39
- package/src/drivers/engine/config.ts +9 -22
- package/src/drivers/engine/mod.ts +9 -8
- package/src/drivers/file-system/global-state.ts +4 -4
- package/src/engine-process/log.ts +5 -0
- package/src/engine-process/mod.ts +316 -0
- package/src/inspector/utils.ts +6 -4
- package/src/manager/driver.ts +3 -3
- package/src/manager/gateway.ts +29 -11
- package/src/manager/router-schema.ts +20 -0
- package/src/manager/router.ts +139 -58
- package/src/registry/mod.ts +146 -120
- package/src/registry/run-config.ts +116 -47
- package/src/registry/serve.ts +3 -1
- package/src/remote-manager-driver/mod.ts +3 -2
- package/src/serde.ts +18 -3
- package/src/test/config.ts +2 -2
- package/src/test/mod.ts +6 -3
- package/src/utils.ts +2 -0
- package/dist/tsup/chunk-3WRAGTDC.cjs.map +0 -1
- package/dist/tsup/chunk-6INXQCH7.cjs.map +0 -1
- package/dist/tsup/chunk-A6TV3QU6.js.map +0 -1
- package/dist/tsup/chunk-CKSA7NOS.cjs.map +0 -1
- package/dist/tsup/chunk-DQVVH5ZK.cjs.map +0 -1
- package/dist/tsup/chunk-E77RVI3P.js.map +0 -1
- package/dist/tsup/chunk-FGOZELKN.cjs.map +0 -1
- package/dist/tsup/chunk-KDNB2BQX.cjs.map +0 -1
- package/dist/tsup/chunk-N7OVEOMU.js.map +0 -1
- package/dist/tsup/chunk-QGUQB3NC.cjs.map +0 -1
- package/dist/tsup/chunk-RM2V2IRK.js.map +0 -1
- package/dist/tsup/chunk-S6EAEZQA.js.map +0 -1
- package/dist/tsup/chunk-WP7YG7S5.js.map +0 -1
- /package/dist/tsup/{chunk-2FAWAPRT.js.map → chunk-346X2XU4.js.map} +0 -0
- /package/dist/tsup/{chunk-SFRRXLRM.js.map → chunk-7E5K3375.js.map} +0 -0
- /package/dist/tsup/{chunk-DOZBWJRI.js.map → chunk-KGDZYQYE.js.map} +0 -0
- /package/dist/tsup/{chunk-3ZMJUIL3.js.map → chunk-N3A5GYJU.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkSIWYIRXPcjs = require('./chunk-SIWYIRXP.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -14,11 +14,11 @@ var _chunkQGUQB3NCcjs = require('./chunk-QGUQB3NC.cjs');
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var _chunkKDNB2BQXcjs = require('./chunk-KDNB2BQX.cjs');
|
|
18
17
|
|
|
18
|
+
var _chunkVZMXAZKCcjs = require('./chunk-VZMXAZKC.cjs');
|
|
19
19
|
|
|
20
|
-
var _chunkL5MHM6JJcjs = require('./chunk-L5MHM6JJ.cjs');
|
|
21
20
|
|
|
21
|
+
var _chunkDVPXSB4Bcjs = require('./chunk-DVPXSB4B.cjs');
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -28,8 +28,8 @@ var _chunkL5MHM6JJcjs = require('./chunk-L5MHM6JJ.cjs');
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
var _chunk3WRAGTDCcjs = require('./chunk-3WRAGTDC.cjs');
|
|
32
31
|
|
|
32
|
+
var _chunkCA3X5M6Hcjs = require('./chunk-CA3X5M6H.cjs');
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
@@ -54,13 +54,13 @@ var _chunk3WRAGTDCcjs = require('./chunk-3WRAGTDC.cjs');
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
var _chunkFGOZELKNcjs = require('./chunk-FGOZELKN.cjs');
|
|
58
57
|
|
|
58
|
+
var _chunkI3FB346Icjs = require('./chunk-I3FB346I.cjs');
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
var _chunkTPJNKVFBcjs = require('./chunk-TPJNKVFB.cjs');
|
|
63
62
|
|
|
63
|
+
var _chunkYKVTF7MPcjs = require('./chunk-YKVTF7MP.cjs');
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
@@ -69,7 +69,10 @@ var _chunkTPJNKVFBcjs = require('./chunk-TPJNKVFB.cjs');
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
var _chunkGIFHYL7Acjs = require('./chunk-GIFHYL7A.cjs');
|
|
75
|
+
|
|
73
76
|
|
|
74
77
|
|
|
75
78
|
|
|
@@ -151,7 +154,7 @@ var _streaming = require('hono/streaming');
|
|
|
151
154
|
|
|
152
155
|
// src/manager/log.ts
|
|
153
156
|
function logger() {
|
|
154
|
-
return
|
|
157
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "actor-manager");
|
|
155
158
|
}
|
|
156
159
|
|
|
157
160
|
// src/manager/hono-websocket-adapter.ts
|
|
@@ -439,14 +442,14 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
439
442
|
promise: handlersPromise,
|
|
440
443
|
resolve: handlersResolve,
|
|
441
444
|
reject: handlersReject
|
|
442
|
-
} =
|
|
445
|
+
} = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
443
446
|
let actor2;
|
|
444
447
|
try {
|
|
445
448
|
actor2 = await actorDriver.loadActor(actorId);
|
|
446
449
|
} catch (error) {
|
|
447
450
|
return {
|
|
448
451
|
onOpen: (_evt, ws) => {
|
|
449
|
-
const { code } =
|
|
452
|
+
const { code } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
450
453
|
error,
|
|
451
454
|
actor2.rLog,
|
|
452
455
|
{
|
|
@@ -465,8 +468,8 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
465
468
|
}
|
|
466
469
|
};
|
|
467
470
|
}
|
|
468
|
-
const closePromise =
|
|
469
|
-
const socketId =
|
|
471
|
+
const closePromise = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
472
|
+
const socketId = _chunkVZMXAZKCcjs.generateConnSocketId.call(void 0, );
|
|
470
473
|
return {
|
|
471
474
|
onOpen: (_evt, ws) => {
|
|
472
475
|
actor2.rLog.debug("actor websocket open");
|
|
@@ -497,7 +500,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
497
500
|
handlersResolve({ conn, actor: actor2, connId: conn.id });
|
|
498
501
|
} catch (error) {
|
|
499
502
|
handlersReject(error);
|
|
500
|
-
const { code } =
|
|
503
|
+
const { code } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
501
504
|
error,
|
|
502
505
|
actor2.rLog,
|
|
503
506
|
{
|
|
@@ -513,12 +516,12 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
513
516
|
handlersPromise.then(({ conn, actor: actor3 }) => {
|
|
514
517
|
actor3.rLog.debug({ msg: "received message" });
|
|
515
518
|
const value = evt.data.valueOf();
|
|
516
|
-
|
|
519
|
+
_chunkCA3X5M6Hcjs.parseMessage.call(void 0, value, {
|
|
517
520
|
encoding,
|
|
518
521
|
maxIncomingMessageSize: runConfig.maxIncomingMessageSize
|
|
519
522
|
}).then((message) => {
|
|
520
523
|
actor3.processMessage(message, conn).catch((error) => {
|
|
521
|
-
const { code } =
|
|
524
|
+
const { code } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
522
525
|
error,
|
|
523
526
|
actor3.rLog,
|
|
524
527
|
{
|
|
@@ -529,7 +532,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
529
532
|
ws.close(1011, code);
|
|
530
533
|
});
|
|
531
534
|
}).catch((error) => {
|
|
532
|
-
const { code } =
|
|
535
|
+
const { code } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
533
536
|
error,
|
|
534
537
|
actor3.rLog,
|
|
535
538
|
{
|
|
@@ -540,7 +543,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
540
543
|
ws.close(1011, code);
|
|
541
544
|
});
|
|
542
545
|
}).catch((error) => {
|
|
543
|
-
const { code } =
|
|
546
|
+
const { code } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
544
547
|
error,
|
|
545
548
|
actor2.rLog,
|
|
546
549
|
{
|
|
@@ -574,7 +577,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
574
577
|
const wasClean = event.wasClean || event.code === 1e3;
|
|
575
578
|
actor3.__connDisconnected(conn, wasClean, socketId);
|
|
576
579
|
}).catch((error) => {
|
|
577
|
-
|
|
580
|
+
_chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
578
581
|
error,
|
|
579
582
|
actor2.rLog,
|
|
580
583
|
{ wsEvent: "close" },
|
|
@@ -586,7 +589,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
586
589
|
try {
|
|
587
590
|
actor2.rLog.warn({ msg: "websocket error" });
|
|
588
591
|
} catch (error) {
|
|
589
|
-
|
|
592
|
+
_chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
590
593
|
error,
|
|
591
594
|
actor2.rLog,
|
|
592
595
|
{ wsEvent: "error" },
|
|
@@ -600,9 +603,9 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
600
603
|
c.header("Content-Encoding", "Identity");
|
|
601
604
|
const encoding = getRequestEncoding(c.req);
|
|
602
605
|
const parameters = getRequestConnParams(c.req);
|
|
603
|
-
const socketId =
|
|
604
|
-
const connId = c.req.header(
|
|
605
|
-
const connToken = c.req.header(
|
|
606
|
+
const socketId = _chunkVZMXAZKCcjs.generateConnSocketId.call(void 0, );
|
|
607
|
+
const connId = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_ID);
|
|
608
|
+
const connToken = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_TOKEN);
|
|
606
609
|
return _streaming.streamSSE.call(void 0, c, async (stream) => {
|
|
607
610
|
let actor2;
|
|
608
611
|
let conn;
|
|
@@ -627,12 +630,12 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
627
630
|
connId,
|
|
628
631
|
connToken
|
|
629
632
|
);
|
|
630
|
-
const abortResolver =
|
|
633
|
+
const abortResolver = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
631
634
|
stream.onAbort(() => {
|
|
632
635
|
});
|
|
633
636
|
c.req.raw.signal.addEventListener("abort", async () => {
|
|
634
637
|
_invariant2.default.call(void 0, actor2, "actor should exist");
|
|
635
|
-
const rLog = _nullishCoalesce(actor2.rLog, () => (
|
|
638
|
+
const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunkI3FB346Icjs.loggerWithoutContext.call(void 0, )));
|
|
636
639
|
try {
|
|
637
640
|
rLog.debug("sse stream aborted");
|
|
638
641
|
if (conn) {
|
|
@@ -657,7 +660,7 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
657
660
|
await stream.sleep(SSE_PING_INTERVAL);
|
|
658
661
|
}
|
|
659
662
|
} catch (error) {
|
|
660
|
-
|
|
663
|
+
_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, ).error({ msg: "error in sse connection", error });
|
|
661
664
|
if (conn && actor2 !== void 0) {
|
|
662
665
|
actor2.__connDisconnected(conn, false, socketId);
|
|
663
666
|
}
|
|
@@ -669,13 +672,13 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
669
672
|
const encoding = getRequestEncoding(c.req);
|
|
670
673
|
const parameters = getRequestConnParams(c.req);
|
|
671
674
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
672
|
-
const request =
|
|
675
|
+
const request = _chunkI3FB346Icjs.deserializeWithEncoding.call(void 0,
|
|
673
676
|
encoding,
|
|
674
677
|
new Uint8Array(arrayBuffer),
|
|
675
|
-
|
|
678
|
+
_chunkCA3X5M6Hcjs.HTTP_ACTION_REQUEST_VERSIONED
|
|
676
679
|
);
|
|
677
680
|
const actionArgs = cbor.decode(new Uint8Array(request.args));
|
|
678
|
-
const socketId =
|
|
681
|
+
const socketId = _chunkVZMXAZKCcjs.generateConnSocketId.call(void 0, );
|
|
679
682
|
let actor2;
|
|
680
683
|
let conn;
|
|
681
684
|
let output;
|
|
@@ -690,7 +693,7 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
690
693
|
parameters,
|
|
691
694
|
c.req.raw
|
|
692
695
|
);
|
|
693
|
-
const ctx = new (0,
|
|
696
|
+
const ctx = new (0, _chunkCA3X5M6Hcjs.ActionContext)(actor2.actorContext, conn);
|
|
694
697
|
output = await actor2.executeAction(ctx, actionName, actionArgs);
|
|
695
698
|
} finally {
|
|
696
699
|
if (conn) {
|
|
@@ -698,24 +701,24 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
698
701
|
}
|
|
699
702
|
}
|
|
700
703
|
const responseData = {
|
|
701
|
-
output:
|
|
704
|
+
output: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
|
|
702
705
|
};
|
|
703
|
-
const serialized =
|
|
706
|
+
const serialized = _chunkI3FB346Icjs.serializeWithEncoding.call(void 0,
|
|
704
707
|
encoding,
|
|
705
708
|
responseData,
|
|
706
|
-
|
|
709
|
+
_chunkCA3X5M6Hcjs.HTTP_ACTION_RESPONSE_VERSIONED
|
|
707
710
|
);
|
|
708
711
|
return c.body(serialized, 200, {
|
|
709
|
-
"Content-Type":
|
|
712
|
+
"Content-Type": _chunkI3FB346Icjs.contentTypeForEncoding.call(void 0, encoding)
|
|
710
713
|
});
|
|
711
714
|
}
|
|
712
715
|
async function handleConnectionMessage(c, _runConfig, actorDriver, connId, connToken, actorId) {
|
|
713
716
|
const encoding = getRequestEncoding(c.req);
|
|
714
717
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
715
|
-
const message =
|
|
718
|
+
const message = _chunkI3FB346Icjs.deserializeWithEncoding.call(void 0,
|
|
716
719
|
encoding,
|
|
717
720
|
new Uint8Array(arrayBuffer),
|
|
718
|
-
|
|
721
|
+
_chunkCA3X5M6Hcjs.TO_SERVER_VERSIONED
|
|
719
722
|
);
|
|
720
723
|
const actor2 = await actorDriver.loadActor(actorId);
|
|
721
724
|
const conn = actor2.conns.get(connId);
|
|
@@ -746,13 +749,13 @@ async function handleConnectionClose(c, _runConfig, actorDriver, connId, connTok
|
|
|
746
749
|
await conn.disconnect("Connection closed by client request");
|
|
747
750
|
return c.json({});
|
|
748
751
|
}
|
|
749
|
-
async function handleRawWebSocketHandler(req,
|
|
752
|
+
async function handleRawWebSocketHandler(req, path4, actorDriver, actorId) {
|
|
750
753
|
const actor2 = await actorDriver.loadActor(actorId);
|
|
751
754
|
return {
|
|
752
755
|
onOpen: (_evt, ws) => {
|
|
753
756
|
const adapter = new HonoWebSocketAdapter(ws);
|
|
754
757
|
ws.__adapter = adapter;
|
|
755
|
-
const url = new URL(
|
|
758
|
+
const url = new URL(path4, "http://actor");
|
|
756
759
|
const pathname = url.pathname.replace(/^\/raw\/websocket\/?/, "") || "/";
|
|
757
760
|
const normalizedPath = (pathname.startsWith("/") ? pathname : "/" + pathname) + url.search;
|
|
758
761
|
let newRequest;
|
|
@@ -765,7 +768,7 @@ async function handleRawWebSocketHandler(req, path3, actorDriver, actorId) {
|
|
|
765
768
|
}
|
|
766
769
|
actor2.rLog.debug({
|
|
767
770
|
msg: "rewriting websocket url",
|
|
768
|
-
from:
|
|
771
|
+
from: path4,
|
|
769
772
|
to: newRequest.url,
|
|
770
773
|
pathname: url.pathname,
|
|
771
774
|
search: url.search,
|
|
@@ -796,11 +799,11 @@ async function handleRawWebSocketHandler(req, path3, actorDriver, actorId) {
|
|
|
796
799
|
};
|
|
797
800
|
}
|
|
798
801
|
function getRequestEncoding(req) {
|
|
799
|
-
const encodingParam = req.header(
|
|
802
|
+
const encodingParam = req.header(_chunkI3FB346Icjs.HEADER_ENCODING);
|
|
800
803
|
if (!encodingParam) {
|
|
801
804
|
throw new (0, _chunk5QGQK44Lcjs.InvalidEncoding)("undefined");
|
|
802
805
|
}
|
|
803
|
-
const result =
|
|
806
|
+
const result = _chunkI3FB346Icjs.EncodingSchema.safeParse(encodingParam);
|
|
804
807
|
if (!result.success) {
|
|
805
808
|
throw new (0, _chunk5QGQK44Lcjs.InvalidEncoding)(encodingParam);
|
|
806
809
|
}
|
|
@@ -810,7 +813,7 @@ function getRequestExposeInternalError(_req) {
|
|
|
810
813
|
return false;
|
|
811
814
|
}
|
|
812
815
|
function getRequestConnParams(req) {
|
|
813
|
-
const paramsParam = req.header(
|
|
816
|
+
const paramsParam = req.header(_chunkI3FB346Icjs.HEADER_CONN_PARAMS);
|
|
814
817
|
if (!paramsParam) {
|
|
815
818
|
return null;
|
|
816
819
|
}
|
|
@@ -818,7 +821,7 @@ function getRequestConnParams(req) {
|
|
|
818
821
|
return JSON.parse(paramsParam);
|
|
819
822
|
} catch (err) {
|
|
820
823
|
throw new (0, _chunk5QGQK44Lcjs.InvalidParams)(
|
|
821
|
-
`Invalid params JSON: ${
|
|
824
|
+
`Invalid params JSON: ${_chunkGIFHYL7Acjs.stringifyError.call(void 0, err)}`
|
|
822
825
|
);
|
|
823
826
|
}
|
|
824
827
|
}
|
|
@@ -826,19 +829,19 @@ function getRequestConnParams(req) {
|
|
|
826
829
|
// src/common/router.ts
|
|
827
830
|
|
|
828
831
|
function logger2() {
|
|
829
|
-
return
|
|
832
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "router");
|
|
830
833
|
}
|
|
831
|
-
function loggerMiddleware(
|
|
834
|
+
function loggerMiddleware(logger8) {
|
|
832
835
|
return async (c, next) => {
|
|
833
836
|
const method = c.req.method;
|
|
834
|
-
const
|
|
837
|
+
const path4 = c.req.path;
|
|
835
838
|
const startTime = Date.now();
|
|
836
839
|
await next();
|
|
837
840
|
const duration = Date.now() - startTime;
|
|
838
|
-
|
|
841
|
+
logger8.debug({
|
|
839
842
|
msg: "http request",
|
|
840
843
|
method,
|
|
841
|
-
path:
|
|
844
|
+
path: path4,
|
|
842
845
|
status: c.res.status,
|
|
843
846
|
dt: `${duration}ms`,
|
|
844
847
|
reqSize: c.req.header("content-length"),
|
|
@@ -852,7 +855,7 @@ function handleRouteNotFound(c) {
|
|
|
852
855
|
}
|
|
853
856
|
function handleRouteError(error, c) {
|
|
854
857
|
const exposeInternalError = getRequestExposeInternalError(c.req.raw);
|
|
855
|
-
const { statusCode, group, code, message, metadata } =
|
|
858
|
+
const { statusCode, group, code, message, metadata } = _chunkGIFHYL7Acjs.deconstructError.call(void 0,
|
|
856
859
|
error,
|
|
857
860
|
logger2(),
|
|
858
861
|
{
|
|
@@ -867,16 +870,16 @@ function handleRouteError(error, c) {
|
|
|
867
870
|
} catch (_) {
|
|
868
871
|
encoding = "json";
|
|
869
872
|
}
|
|
870
|
-
const output =
|
|
873
|
+
const output = _chunkI3FB346Icjs.serializeWithEncoding.call(void 0,
|
|
871
874
|
encoding,
|
|
872
875
|
{
|
|
873
876
|
group,
|
|
874
877
|
code,
|
|
875
878
|
message,
|
|
876
879
|
// TODO: Cannot serialize non-binary meta since it requires ArrayBuffer atm
|
|
877
|
-
metadata:
|
|
880
|
+
metadata: _chunkI3FB346Icjs.encodingIsBinary.call(void 0, encoding) ? _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
|
|
878
881
|
},
|
|
879
|
-
|
|
882
|
+
_chunkCA3X5M6Hcjs.HTTP_RESPONSE_ERROR_VERSIONED
|
|
880
883
|
);
|
|
881
884
|
return c.body(output, { status: statusCode });
|
|
882
885
|
}
|
|
@@ -884,7 +887,7 @@ function handleRouteError(error, c) {
|
|
|
884
887
|
// src/actor/router.ts
|
|
885
888
|
function createActorRouter(runConfig, actorDriver, isTest) {
|
|
886
889
|
const router = new (0, _hono.Hono)({ strict: false });
|
|
887
|
-
router.use("*", loggerMiddleware(
|
|
890
|
+
router.use("*", loggerMiddleware(_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, )));
|
|
888
891
|
router.get("/", (c) => {
|
|
889
892
|
return c.text(
|
|
890
893
|
"This is an RivetKit actor.\n\nLearn more at https://rivetkit.org"
|
|
@@ -915,7 +918,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
915
918
|
return c.json({ success: true });
|
|
916
919
|
});
|
|
917
920
|
}
|
|
918
|
-
router.get(
|
|
921
|
+
router.get(_chunkI3FB346Icjs.PATH_CONNECT_WEBSOCKET, async (c) => {
|
|
919
922
|
var _a;
|
|
920
923
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
921
924
|
if (upgradeWebSocket) {
|
|
@@ -928,20 +931,20 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
928
931
|
if (protocols) {
|
|
929
932
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
930
933
|
for (const protocol of protocolList) {
|
|
931
|
-
if (protocol.startsWith(
|
|
932
|
-
encodingRaw = protocol.substring(
|
|
933
|
-
} else if (protocol.startsWith(
|
|
934
|
+
if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING)) {
|
|
935
|
+
encodingRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING.length);
|
|
936
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
934
937
|
connParamsRaw = decodeURIComponent(
|
|
935
|
-
protocol.substring(
|
|
938
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
936
939
|
);
|
|
937
|
-
} else if (protocol.startsWith(
|
|
938
|
-
connIdRaw = protocol.substring(
|
|
939
|
-
} else if (protocol.startsWith(
|
|
940
|
-
connTokenRaw = protocol.substring(
|
|
940
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID)) {
|
|
941
|
+
connIdRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID.length);
|
|
942
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
943
|
+
connTokenRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
941
944
|
}
|
|
942
945
|
}
|
|
943
946
|
}
|
|
944
|
-
const encoding =
|
|
947
|
+
const encoding = _chunkI3FB346Icjs.EncodingSchema.parse(encodingRaw);
|
|
945
948
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
946
949
|
return await handleWebSocketConnect(
|
|
947
950
|
c2.req.raw,
|
|
@@ -953,7 +956,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
953
956
|
connIdRaw,
|
|
954
957
|
connTokenRaw
|
|
955
958
|
);
|
|
956
|
-
})(c,
|
|
959
|
+
})(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
957
960
|
} else {
|
|
958
961
|
return c.text(
|
|
959
962
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -969,8 +972,8 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
969
972
|
return handleAction(c, runConfig, actorDriver, actionName, c.env.actorId);
|
|
970
973
|
});
|
|
971
974
|
router.post("/connections/message", async (c) => {
|
|
972
|
-
const connId = c.req.header(
|
|
973
|
-
const connToken = c.req.header(
|
|
975
|
+
const connId = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_ID);
|
|
976
|
+
const connToken = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_TOKEN);
|
|
974
977
|
if (!connId || !connToken) {
|
|
975
978
|
throw new Error("Missing required parameters");
|
|
976
979
|
}
|
|
@@ -984,8 +987,8 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
984
987
|
);
|
|
985
988
|
});
|
|
986
989
|
router.post("/connections/close", async (c) => {
|
|
987
|
-
const connId = c.req.header(
|
|
988
|
-
const connToken = c.req.header(
|
|
990
|
+
const connId = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_ID);
|
|
991
|
+
const connToken = c.req.header(_chunkI3FB346Icjs.HEADER_CONN_TOKEN);
|
|
989
992
|
if (!connId || !connToken) {
|
|
990
993
|
throw new Error("Missing required parameters");
|
|
991
994
|
}
|
|
@@ -1009,7 +1012,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1009
1012
|
body: c.req.raw.body,
|
|
1010
1013
|
duplex: "half"
|
|
1011
1014
|
});
|
|
1012
|
-
|
|
1015
|
+
_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1013
1016
|
msg: "rewriting http url",
|
|
1014
1017
|
from: c.req.url,
|
|
1015
1018
|
to: correctedRequest.url
|
|
@@ -1020,14 +1023,14 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1020
1023
|
}
|
|
1021
1024
|
return response;
|
|
1022
1025
|
});
|
|
1023
|
-
router.get(`${
|
|
1026
|
+
router.get(`${_chunkI3FB346Icjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
|
|
1024
1027
|
var _a;
|
|
1025
1028
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
1026
1029
|
if (upgradeWebSocket) {
|
|
1027
1030
|
return upgradeWebSocket(async (c2) => {
|
|
1028
1031
|
const url = new URL(c2.req.url);
|
|
1029
1032
|
const pathWithQuery = c2.req.path + url.search;
|
|
1030
|
-
|
|
1033
|
+
_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1031
1034
|
msg: "actor router raw websocket",
|
|
1032
1035
|
path: c2.req.path,
|
|
1033
1036
|
url: c2.req.url,
|
|
@@ -1040,7 +1043,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1040
1043
|
actorDriver,
|
|
1041
1044
|
c2.env.actorId
|
|
1042
1045
|
);
|
|
1043
|
-
})(c,
|
|
1046
|
+
})(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
1044
1047
|
} else {
|
|
1045
1048
|
return c.text(
|
|
1046
1049
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -1048,19 +1051,19 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1048
1051
|
);
|
|
1049
1052
|
}
|
|
1050
1053
|
});
|
|
1051
|
-
if (
|
|
1054
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
|
|
1052
1055
|
router.route(
|
|
1053
1056
|
"/inspect",
|
|
1054
1057
|
new (0, _hono.Hono)().use(
|
|
1055
1058
|
_cors.cors.call(void 0, runConfig.inspector.cors),
|
|
1056
|
-
|
|
1059
|
+
_chunkSIWYIRXPcjs.secureInspector.call(void 0, runConfig),
|
|
1057
1060
|
async (c, next) => {
|
|
1058
1061
|
const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
|
|
1059
1062
|
_invariant2.default.call(void 0, inspector, "inspector not supported on this platform");
|
|
1060
1063
|
c.set("inspector", inspector);
|
|
1061
1064
|
return next();
|
|
1062
1065
|
}
|
|
1063
|
-
).route("/",
|
|
1066
|
+
).route("/", _chunkVZMXAZKCcjs.createActorInspectorRouter.call(void 0, ))
|
|
1064
1067
|
);
|
|
1065
1068
|
}
|
|
1066
1069
|
router.notFound(handleRouteNotFound);
|
|
@@ -1071,13 +1074,13 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1071
1074
|
// src/actor/mod.ts
|
|
1072
1075
|
function actor(input) {
|
|
1073
1076
|
const config2 = ActorConfigSchema.parse(input);
|
|
1074
|
-
return new (0,
|
|
1077
|
+
return new (0, _chunkVZMXAZKCcjs.ActorDefinition)(config2);
|
|
1075
1078
|
}
|
|
1076
1079
|
|
|
1077
1080
|
// src/common/inline-websocket-adapter2.ts
|
|
1078
1081
|
var _ws2 = require('hono/ws');
|
|
1079
1082
|
function logger3() {
|
|
1080
|
-
return
|
|
1083
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "fake-event-source2");
|
|
1081
1084
|
}
|
|
1082
1085
|
var InlineWebSocketAdapter2 = (_class2 = class {
|
|
1083
1086
|
// WebSocket readyState values
|
|
@@ -1425,7 +1428,7 @@ var KEYS = {
|
|
|
1425
1428
|
|
|
1426
1429
|
// src/drivers/engine/log.ts
|
|
1427
1430
|
function logger4() {
|
|
1428
|
-
return
|
|
1431
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "driver-engine");
|
|
1429
1432
|
}
|
|
1430
1433
|
|
|
1431
1434
|
// src/drivers/engine/actor-driver.ts
|
|
@@ -1434,7 +1437,6 @@ var EngineActorDriver = class {
|
|
|
1434
1437
|
#runConfig;
|
|
1435
1438
|
#managerDriver;
|
|
1436
1439
|
#inlineClient;
|
|
1437
|
-
#config;
|
|
1438
1440
|
#runner;
|
|
1439
1441
|
#actors = /* @__PURE__ */ new Map();
|
|
1440
1442
|
#actorRouter;
|
|
@@ -1443,27 +1445,29 @@ var EngineActorDriver = class {
|
|
|
1443
1445
|
#alarmTimeout;
|
|
1444
1446
|
#runnerStarted = Promise.withResolvers();
|
|
1445
1447
|
#runnerStopped = Promise.withResolvers();
|
|
1446
|
-
constructor(registryConfig, runConfig, managerDriver, inlineClient
|
|
1448
|
+
constructor(registryConfig, runConfig, managerDriver, inlineClient) {
|
|
1447
1449
|
this.#registryConfig = registryConfig;
|
|
1448
1450
|
this.#runConfig = runConfig;
|
|
1449
1451
|
this.#managerDriver = managerDriver;
|
|
1450
1452
|
this.#inlineClient = inlineClient;
|
|
1451
|
-
|
|
1453
|
+
const token = _nullishCoalesce(runConfig.token, () => ( runConfig.token));
|
|
1454
|
+
if (token && runConfig.inspector && runConfig.inspector.enabled) {
|
|
1455
|
+
runConfig.inspector.token = () => token;
|
|
1456
|
+
}
|
|
1452
1457
|
this.#actorRouter = createActorRouter(
|
|
1453
1458
|
runConfig,
|
|
1454
1459
|
this,
|
|
1455
1460
|
registryConfig.test.enabled
|
|
1456
1461
|
);
|
|
1457
1462
|
let hasDisconnected = false;
|
|
1458
|
-
const
|
|
1463
|
+
const engineRunnerConfig = {
|
|
1459
1464
|
version: this.#version,
|
|
1460
|
-
endpoint:
|
|
1461
|
-
token
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
runnerKey: config2.runnerKey,
|
|
1465
|
+
endpoint: _chunkVZMXAZKCcjs.getEndpoint.call(void 0, runConfig),
|
|
1466
|
+
token,
|
|
1467
|
+
namespace: _nullishCoalesce(runConfig.namespace, () => ( runConfig.namespace)),
|
|
1468
|
+
totalSlots: _nullishCoalesce(runConfig.totalSlots, () => ( runConfig.totalSlots)),
|
|
1469
|
+
runnerName: _nullishCoalesce(runConfig.runnerName, () => ( runConfig.runnerName)),
|
|
1470
|
+
runnerKey: runConfig.runnerKey,
|
|
1467
1471
|
metadata: {
|
|
1468
1472
|
inspectorToken: this.#runConfig.inspector.token()
|
|
1469
1473
|
},
|
|
@@ -1477,14 +1481,14 @@ var EngineActorDriver = class {
|
|
|
1477
1481
|
if (hasDisconnected) {
|
|
1478
1482
|
logger4().info({
|
|
1479
1483
|
msg: "runner reconnected",
|
|
1480
|
-
namespace: this.#
|
|
1481
|
-
runnerName: this.#
|
|
1484
|
+
namespace: this.#runConfig.namespace,
|
|
1485
|
+
runnerName: this.#runConfig.runnerName
|
|
1482
1486
|
});
|
|
1483
1487
|
} else {
|
|
1484
1488
|
logger4().debug({
|
|
1485
1489
|
msg: "runner connected",
|
|
1486
|
-
namespace: this.#
|
|
1487
|
-
runnerName: this.#
|
|
1490
|
+
namespace: this.#runConfig.namespace,
|
|
1491
|
+
runnerName: this.#runConfig.runnerName
|
|
1488
1492
|
});
|
|
1489
1493
|
}
|
|
1490
1494
|
this.#runnerStarted.resolve(void 0);
|
|
@@ -1492,8 +1496,8 @@ var EngineActorDriver = class {
|
|
|
1492
1496
|
onDisconnected: () => {
|
|
1493
1497
|
logger4().warn({
|
|
1494
1498
|
msg: "runner disconnected",
|
|
1495
|
-
namespace: this.#
|
|
1496
|
-
runnerName: this.#
|
|
1499
|
+
namespace: this.#runConfig.namespace,
|
|
1500
|
+
runnerName: this.#runConfig.runnerName
|
|
1497
1501
|
});
|
|
1498
1502
|
hasDisconnected = true;
|
|
1499
1503
|
},
|
|
@@ -1504,15 +1508,15 @@ var EngineActorDriver = class {
|
|
|
1504
1508
|
websocket: this.#runnerWebSocket.bind(this),
|
|
1505
1509
|
onActorStart: this.#runnerOnActorStart.bind(this),
|
|
1506
1510
|
onActorStop: this.#runnerOnActorStop.bind(this),
|
|
1507
|
-
logger:
|
|
1511
|
+
logger: _chunkYKVTF7MPcjs.getLogger.call(void 0, "engine-runner")
|
|
1508
1512
|
};
|
|
1509
|
-
this.#runner = new (0, _enginerunner.Runner)(
|
|
1513
|
+
this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
|
|
1510
1514
|
this.#runner.start();
|
|
1511
1515
|
logger4().debug({
|
|
1512
1516
|
msg: "engine runner started",
|
|
1513
|
-
endpoint:
|
|
1514
|
-
namespace:
|
|
1515
|
-
runnerName:
|
|
1517
|
+
endpoint: runConfig.endpoint,
|
|
1518
|
+
namespace: runConfig.namespace,
|
|
1519
|
+
runnerName: runConfig.runnerName
|
|
1516
1520
|
});
|
|
1517
1521
|
}
|
|
1518
1522
|
async #loadActorHandler(actorId) {
|
|
@@ -1554,7 +1558,7 @@ var EngineActorDriver = class {
|
|
|
1554
1558
|
this.#alarmTimeout = void 0;
|
|
1555
1559
|
}
|
|
1556
1560
|
const delay = Math.max(0, timestamp - Date.now());
|
|
1557
|
-
this.#alarmTimeout =
|
|
1561
|
+
this.#alarmTimeout = _chunkGIFHYL7Acjs.setLongTimeout.call(void 0, () => {
|
|
1558
1562
|
actor2._onAlarm();
|
|
1559
1563
|
this.#alarmTimeout = void 0;
|
|
1560
1564
|
}, delay);
|
|
@@ -1564,35 +1568,31 @@ var EngineActorDriver = class {
|
|
|
1564
1568
|
return void 0;
|
|
1565
1569
|
}
|
|
1566
1570
|
// Runner lifecycle callbacks
|
|
1567
|
-
async #runnerOnActorStart(actorId, generation,
|
|
1571
|
+
async #runnerOnActorStart(actorId, generation, runConfig) {
|
|
1568
1572
|
var _a;
|
|
1569
1573
|
logger4().debug({
|
|
1570
1574
|
msg: "runner actor starting",
|
|
1571
1575
|
actorId,
|
|
1572
|
-
name:
|
|
1573
|
-
key:
|
|
1576
|
+
name: runConfig.name,
|
|
1577
|
+
key: runConfig.key,
|
|
1574
1578
|
generation
|
|
1575
1579
|
});
|
|
1576
1580
|
let input;
|
|
1577
|
-
if (
|
|
1578
|
-
input = cbor3.decode(
|
|
1581
|
+
if (runConfig.input) {
|
|
1582
|
+
input = cbor3.decode(runConfig.input);
|
|
1579
1583
|
}
|
|
1580
1584
|
let handler = this.#actors.get(actorId);
|
|
1581
1585
|
if (!handler) {
|
|
1582
1586
|
handler = {
|
|
1583
|
-
actorStartPromise:
|
|
1584
|
-
persistedData:
|
|
1587
|
+
actorStartPromise: _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, ),
|
|
1588
|
+
persistedData: _chunkCA3X5M6Hcjs.serializeEmptyPersistData.call(void 0, input)
|
|
1585
1589
|
};
|
|
1586
1590
|
this.#actors.set(actorId, handler);
|
|
1587
1591
|
}
|
|
1588
|
-
const name =
|
|
1589
|
-
_invariant2.default.call(void 0,
|
|
1590
|
-
const key =
|
|
1591
|
-
const definition =
|
|
1592
|
-
this.#registryConfig,
|
|
1593
|
-
config2.name
|
|
1594
|
-
// TODO: Remove cast
|
|
1595
|
-
);
|
|
1592
|
+
const name = runConfig.name;
|
|
1593
|
+
_invariant2.default.call(void 0, runConfig.key, "actor should have a key");
|
|
1594
|
+
const key = _chunkVZMXAZKCcjs.deserializeActorKey.call(void 0, runConfig.key);
|
|
1595
|
+
const definition = _chunkVZMXAZKCcjs.lookupInRegistry.call(void 0, this.#registryConfig, runConfig.name);
|
|
1596
1596
|
handler.actor = definition.instantiate();
|
|
1597
1597
|
await handler.actor.start(
|
|
1598
1598
|
this,
|
|
@@ -1637,19 +1637,19 @@ var EngineActorDriver = class {
|
|
|
1637
1637
|
if (protocols) {
|
|
1638
1638
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
1639
1639
|
for (const protocol of protocolList) {
|
|
1640
|
-
if (protocol.startsWith(
|
|
1641
|
-
encodingRaw = protocol.substring(
|
|
1642
|
-
} else if (protocol.startsWith(
|
|
1640
|
+
if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING)) {
|
|
1641
|
+
encodingRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING.length);
|
|
1642
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
1643
1643
|
connParamsRaw = decodeURIComponent(
|
|
1644
|
-
protocol.substring(
|
|
1644
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
1645
1645
|
);
|
|
1646
1646
|
}
|
|
1647
1647
|
}
|
|
1648
1648
|
}
|
|
1649
|
-
const encoding =
|
|
1649
|
+
const encoding = _chunkI3FB346Icjs.EncodingSchema.parse(encodingRaw);
|
|
1650
1650
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1651
1651
|
let wsHandlerPromise;
|
|
1652
|
-
if (url.pathname ===
|
|
1652
|
+
if (url.pathname === _chunkI3FB346Icjs.PATH_CONNECT_WEBSOCKET) {
|
|
1653
1653
|
wsHandlerPromise = handleWebSocketConnect(
|
|
1654
1654
|
request,
|
|
1655
1655
|
this.#runConfig,
|
|
@@ -1661,7 +1661,7 @@ var EngineActorDriver = class {
|
|
|
1661
1661
|
void 0,
|
|
1662
1662
|
void 0
|
|
1663
1663
|
);
|
|
1664
|
-
} else if (url.pathname.startsWith(
|
|
1664
|
+
} else if (url.pathname.startsWith(_chunkI3FB346Icjs.PATH_RAW_WEBSOCKET_PREFIX)) {
|
|
1665
1665
|
wsHandlerPromise = handleRawWebSocketHandler(
|
|
1666
1666
|
request,
|
|
1667
1667
|
url.pathname + url.search,
|
|
@@ -1720,45 +1720,25 @@ var EngineActorDriver = class {
|
|
|
1720
1720
|
return _streaming.streamSSE.call(void 0, c, async (stream) => {
|
|
1721
1721
|
const payload = this.#runner.getServerlessInitPacket();
|
|
1722
1722
|
_invariant2.default.call(void 0, payload, "runnerId not set");
|
|
1723
|
-
stream.writeSSE({ data: payload });
|
|
1723
|
+
await stream.writeSSE({ data: payload });
|
|
1724
1724
|
return this.#runnerStopped.promise;
|
|
1725
1725
|
});
|
|
1726
1726
|
}
|
|
1727
1727
|
};
|
|
1728
1728
|
|
|
1729
|
-
// src/drivers/engine/config.ts
|
|
1730
|
-
|
|
1731
|
-
var ConfigSchema = _zod.z.object({
|
|
1732
|
-
app: _zod.z.custom().optional(),
|
|
1733
|
-
endpoint: _zod.z.string().default(
|
|
1734
|
-
() => _nullishCoalesce(_chunkDQVVH5ZKcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( "http://localhost:6420"))
|
|
1735
|
-
),
|
|
1736
|
-
token: _zod.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkDQVVH5ZKcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
|
|
1737
|
-
pegboardEndpoint: _zod.z.string().optional(),
|
|
1738
|
-
namespace: _zod.z.string().default(() => _nullishCoalesce(_chunkDQVVH5ZKcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
|
|
1739
|
-
runnerName: _zod.z.string().default(() => _nullishCoalesce(_chunkDQVVH5ZKcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
|
|
1740
|
-
// TODO: Automatically attempt to determine key by common env vars (e.g. k8s pod name)
|
|
1741
|
-
runnerKey: _zod.z.string().default(
|
|
1742
|
-
() => _nullishCoalesce(_chunkDQVVH5ZKcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KEY"), () => ( crypto.randomUUID()))
|
|
1743
|
-
),
|
|
1744
|
-
totalSlots: _zod.z.number().default(1e5)
|
|
1745
|
-
}).default({});
|
|
1746
|
-
|
|
1747
1729
|
// src/drivers/engine/mod.ts
|
|
1748
|
-
function createEngineDriver(
|
|
1749
|
-
const config2 = ConfigSchema.parse(inputConfig);
|
|
1730
|
+
function createEngineDriver() {
|
|
1750
1731
|
return {
|
|
1751
1732
|
name: "engine",
|
|
1752
1733
|
manager: (_registryConfig, runConfig) => {
|
|
1753
|
-
return new (0,
|
|
1734
|
+
return new (0, _chunkVZMXAZKCcjs.RemoteManagerDriver)(runConfig);
|
|
1754
1735
|
},
|
|
1755
1736
|
actor: (registryConfig, runConfig, managerDriver, inlineClient) => {
|
|
1756
1737
|
return new EngineActorDriver(
|
|
1757
1738
|
registryConfig,
|
|
1758
1739
|
runConfig,
|
|
1759
1740
|
managerDriver,
|
|
1760
|
-
inlineClient
|
|
1761
|
-
config2
|
|
1741
|
+
inlineClient
|
|
1762
1742
|
);
|
|
1763
1743
|
}
|
|
1764
1744
|
};
|
|
@@ -1805,7 +1785,7 @@ var FileSystemActorDriver = class {
|
|
|
1805
1785
|
const state = await this.#state.loadActorStateOrError(actorId);
|
|
1806
1786
|
await this.#state.writeActor(actorId, {
|
|
1807
1787
|
...state,
|
|
1808
|
-
persistedData:
|
|
1788
|
+
persistedData: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, data)
|
|
1809
1789
|
});
|
|
1810
1790
|
}
|
|
1811
1791
|
async setAlarm(actor2, timestamp) {
|
|
@@ -1822,8 +1802,8 @@ var FileSystemActorDriver = class {
|
|
|
1822
1802
|
// src/drivers/file-system/global-state.ts
|
|
1823
1803
|
var _crypto = require('crypto'); var crypto3 = _interopRequireWildcard(_crypto); var crypto2 = _interopRequireWildcard(_crypto);
|
|
1824
1804
|
var _fs = require('fs'); var fsSync2 = _interopRequireWildcard(_fs); var fsSync = _interopRequireWildcard(_fs);
|
|
1825
|
-
var _promises = require('fs/promises'); var fs2 = _interopRequireWildcard(_promises); var fs = _interopRequireWildcard(_promises);
|
|
1826
|
-
var _path = require('path'); var path2 = _interopRequireWildcard(_path); var path = _interopRequireWildcard(_path);
|
|
1805
|
+
var _promises = require('fs/promises'); var fs2 = _interopRequireWildcard(_promises); var fs = _interopRequireWildcard(_promises); var fs3 = _interopRequireWildcard(_promises);
|
|
1806
|
+
var _path = require('path'); var path2 = _interopRequireWildcard(_path); var path = _interopRequireWildcard(_path); var path3 = _interopRequireWildcard(_path);
|
|
1827
1807
|
|
|
1828
1808
|
|
|
1829
1809
|
// dist/schemas/file-system-driver/v1.ts
|
|
@@ -1908,13 +1888,13 @@ function decodeActorAlarm(bytes) {
|
|
|
1908
1888
|
// src/schemas/file-system-driver/versioned.ts
|
|
1909
1889
|
var CURRENT_VERSION = 1;
|
|
1910
1890
|
var migrations = /* @__PURE__ */ new Map();
|
|
1911
|
-
var ACTOR_STATE_VERSIONED =
|
|
1891
|
+
var ACTOR_STATE_VERSIONED = _chunkCA3X5M6Hcjs.createVersionedDataHandler.call(void 0, {
|
|
1912
1892
|
currentVersion: CURRENT_VERSION,
|
|
1913
1893
|
migrations,
|
|
1914
1894
|
serializeVersion: (data) => encodeActorState(data),
|
|
1915
1895
|
deserializeVersion: (bytes) => decodeActorState(bytes)
|
|
1916
1896
|
});
|
|
1917
|
-
var ACTOR_ALARM_VERSIONED =
|
|
1897
|
+
var ACTOR_ALARM_VERSIONED = _chunkCA3X5M6Hcjs.createVersionedDataHandler.call(void 0, {
|
|
1918
1898
|
currentVersion: CURRENT_VERSION,
|
|
1919
1899
|
migrations,
|
|
1920
1900
|
serializeVersion: (data) => encodeActorAlarm(data),
|
|
@@ -1923,7 +1903,7 @@ var ACTOR_ALARM_VERSIONED = _chunk3WRAGTDCcjs.createVersionedDataHandler.call(vo
|
|
|
1923
1903
|
|
|
1924
1904
|
// src/drivers/file-system/log.ts
|
|
1925
1905
|
function logger5() {
|
|
1926
|
-
return
|
|
1906
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "driver-fs");
|
|
1927
1907
|
}
|
|
1928
1908
|
|
|
1929
1909
|
// src/drivers/file-system/utils.ts
|
|
@@ -1949,9 +1929,9 @@ function getStoragePath(customPath) {
|
|
|
1949
1929
|
const dirHash = createHashForPath(pathToHash);
|
|
1950
1930
|
return path.join(dataPath, dirHash);
|
|
1951
1931
|
}
|
|
1952
|
-
async function pathExists(
|
|
1932
|
+
async function pathExists(path4) {
|
|
1953
1933
|
try {
|
|
1954
|
-
await fs.access(
|
|
1934
|
+
await fs.access(path4);
|
|
1955
1935
|
return true;
|
|
1956
1936
|
} catch (e) {
|
|
1957
1937
|
return false;
|
|
@@ -2093,7 +2073,7 @@ var FileSystemGlobalState = class {
|
|
|
2093
2073
|
name,
|
|
2094
2074
|
key,
|
|
2095
2075
|
createdAt: BigInt(Date.now()),
|
|
2096
|
-
persistedData:
|
|
2076
|
+
persistedData: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, _chunkCA3X5M6Hcjs.serializeEmptyPersistData.call(void 0, input))
|
|
2097
2077
|
};
|
|
2098
2078
|
await this.writeActor(actorId, entry.state);
|
|
2099
2079
|
return entry;
|
|
@@ -2141,7 +2121,7 @@ var FileSystemGlobalState = class {
|
|
|
2141
2121
|
name,
|
|
2142
2122
|
key,
|
|
2143
2123
|
createdAt: BigInt(Date.now()),
|
|
2144
|
-
persistedData:
|
|
2124
|
+
persistedData: _chunkGIFHYL7Acjs.bufferToArrayBuffer.call(void 0, _chunkCA3X5M6Hcjs.serializeEmptyPersistData.call(void 0, input))
|
|
2145
2125
|
};
|
|
2146
2126
|
await this.writeActor(actorId, entry.state);
|
|
2147
2127
|
}
|
|
@@ -2265,9 +2245,9 @@ var FileSystemGlobalState = class {
|
|
|
2265
2245
|
if (entry.actor) {
|
|
2266
2246
|
return entry.actor;
|
|
2267
2247
|
}
|
|
2268
|
-
entry.startPromise =
|
|
2248
|
+
entry.startPromise = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
2269
2249
|
try {
|
|
2270
|
-
const definition =
|
|
2250
|
+
const definition = _chunkVZMXAZKCcjs.lookupInRegistry.call(void 0, registryConfig, entry.state.name);
|
|
2271
2251
|
entry.actor = definition.instantiate();
|
|
2272
2252
|
await entry.actor.start(
|
|
2273
2253
|
actorDriver,
|
|
@@ -2327,7 +2307,7 @@ var FileSystemGlobalState = class {
|
|
|
2327
2307
|
logger5().error({
|
|
2328
2308
|
msg: "failed to read alarm file",
|
|
2329
2309
|
file,
|
|
2330
|
-
error:
|
|
2310
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, err)
|
|
2331
2311
|
});
|
|
2332
2312
|
}
|
|
2333
2313
|
}
|
|
@@ -2354,7 +2334,7 @@ var FileSystemGlobalState = class {
|
|
|
2354
2334
|
(_a = entry.alarmTimeout) == null ? void 0 : _a.abort();
|
|
2355
2335
|
entry.alarmTimestamp = timestamp;
|
|
2356
2336
|
const delay = Math.max(0, timestamp - Date.now());
|
|
2357
|
-
entry.alarmTimeout =
|
|
2337
|
+
entry.alarmTimeout = _chunkGIFHYL7Acjs.setLongTimeout.call(void 0, async () => {
|
|
2358
2338
|
entry.alarmTimestamp = void 0;
|
|
2359
2339
|
if (this.#persist) {
|
|
2360
2340
|
try {
|
|
@@ -2364,7 +2344,7 @@ var FileSystemGlobalState = class {
|
|
|
2364
2344
|
logger5().debug({
|
|
2365
2345
|
msg: "failed to remove alarm file",
|
|
2366
2346
|
actorId,
|
|
2367
|
-
error:
|
|
2347
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, err)
|
|
2368
2348
|
});
|
|
2369
2349
|
}
|
|
2370
2350
|
}
|
|
@@ -2390,7 +2370,7 @@ var FileSystemGlobalState = class {
|
|
|
2390
2370
|
logger5().error({
|
|
2391
2371
|
msg: "failed to handle alarm",
|
|
2392
2372
|
actorId,
|
|
2393
|
-
error:
|
|
2373
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, err)
|
|
2394
2374
|
});
|
|
2395
2375
|
}
|
|
2396
2376
|
}, delay);
|
|
@@ -2400,7 +2380,7 @@ var FileSystemGlobalState = class {
|
|
|
2400
2380
|
if (fsSync2.existsSync(tokenPath)) {
|
|
2401
2381
|
return fsSync2.readFileSync(tokenPath, "utf-8");
|
|
2402
2382
|
}
|
|
2403
|
-
const newToken =
|
|
2383
|
+
const newToken = _chunkI3FB346Icjs.generateRandomString.call(void 0, );
|
|
2404
2384
|
fsSync2.writeFileSync(tokenPath, newToken);
|
|
2405
2385
|
return newToken;
|
|
2406
2386
|
}
|
|
@@ -2462,10 +2442,10 @@ function createManagerInspectorRouter() {
|
|
|
2462
2442
|
});
|
|
2463
2443
|
return c.json(actors, 200);
|
|
2464
2444
|
} catch (error) {
|
|
2465
|
-
|
|
2445
|
+
_chunkSIWYIRXPcjs.inspectorLogger.call(void 0, ).error({ msg: "Failed to fetch actors", error });
|
|
2466
2446
|
return c.json("Failed to fetch actors", 500);
|
|
2467
2447
|
}
|
|
2468
|
-
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json",
|
|
2448
|
+
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunkDVPXSB4Bcjs.CreateActorSchema), async (c) => {
|
|
2469
2449
|
const actor2 = await c.var.inspector.accessors.createActor(
|
|
2470
2450
|
c.req.valid("json")
|
|
2471
2451
|
);
|
|
@@ -2491,7 +2471,7 @@ var ManagerInspector = class {
|
|
|
2491
2471
|
|
|
2492
2472
|
constructor(accessors) {
|
|
2493
2473
|
this.accessors = accessors();
|
|
2494
|
-
|
|
2474
|
+
_chunkSIWYIRXPcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
|
|
2495
2475
|
}
|
|
2496
2476
|
};
|
|
2497
2477
|
|
|
@@ -2566,7 +2546,7 @@ var FileSystemManagerDriver = class {
|
|
|
2566
2546
|
};
|
|
2567
2547
|
});
|
|
2568
2548
|
}
|
|
2569
|
-
const inlineClient =
|
|
2549
|
+
const inlineClient = _chunkVZMXAZKCcjs.createClientWithDriver.call(void 0, this);
|
|
2570
2550
|
this.#actorDriver = this.#driverConfig.actor(
|
|
2571
2551
|
registryConfig,
|
|
2572
2552
|
runConfig,
|
|
@@ -2584,10 +2564,10 @@ var FileSystemManagerDriver = class {
|
|
|
2584
2564
|
actorId
|
|
2585
2565
|
});
|
|
2586
2566
|
}
|
|
2587
|
-
async openWebSocket(
|
|
2588
|
-
const pathOnly =
|
|
2567
|
+
async openWebSocket(path4, actorId, encoding, params, connId, connToken) {
|
|
2568
|
+
const pathOnly = path4.split("?")[0];
|
|
2589
2569
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2590
|
-
if (normalizedPath ===
|
|
2570
|
+
if (normalizedPath === _chunkI3FB346Icjs.PATH_CONNECT_WEBSOCKET) {
|
|
2591
2571
|
const wsHandler = await handleWebSocketConnect(
|
|
2592
2572
|
void 0,
|
|
2593
2573
|
this.#runConfig,
|
|
@@ -2599,16 +2579,16 @@ var FileSystemManagerDriver = class {
|
|
|
2599
2579
|
connToken
|
|
2600
2580
|
);
|
|
2601
2581
|
return new InlineWebSocketAdapter2(wsHandler);
|
|
2602
|
-
} else if (normalizedPath.startsWith(
|
|
2582
|
+
} else if (normalizedPath.startsWith(_chunkI3FB346Icjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2603
2583
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2604
2584
|
void 0,
|
|
2605
|
-
|
|
2585
|
+
path4,
|
|
2606
2586
|
this.#actorDriver,
|
|
2607
2587
|
actorId
|
|
2608
2588
|
);
|
|
2609
2589
|
return new InlineWebSocketAdapter2(wsHandler);
|
|
2610
2590
|
} else {
|
|
2611
|
-
throw new Error(`Unreachable path: ${
|
|
2591
|
+
throw new Error(`Unreachable path: ${path4}`);
|
|
2612
2592
|
}
|
|
2613
2593
|
}
|
|
2614
2594
|
async proxyRequest(c, actorRequest, actorId) {
|
|
@@ -2616,13 +2596,13 @@ var FileSystemManagerDriver = class {
|
|
|
2616
2596
|
actorId
|
|
2617
2597
|
});
|
|
2618
2598
|
}
|
|
2619
|
-
async proxyWebSocket(c,
|
|
2599
|
+
async proxyWebSocket(c, path4, actorId, encoding, connParams, connId, connToken) {
|
|
2620
2600
|
var _a, _b;
|
|
2621
2601
|
const upgradeWebSocket = (_b = (_a = this.#runConfig).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
|
|
2622
2602
|
_invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
2623
|
-
const pathOnly =
|
|
2603
|
+
const pathOnly = path4.split("?")[0];
|
|
2624
2604
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2625
|
-
if (normalizedPath ===
|
|
2605
|
+
if (normalizedPath === _chunkI3FB346Icjs.PATH_CONNECT_WEBSOCKET) {
|
|
2626
2606
|
const wsHandler = await handleWebSocketConnect(
|
|
2627
2607
|
c.req.raw,
|
|
2628
2608
|
this.#runConfig,
|
|
@@ -2633,17 +2613,17 @@ var FileSystemManagerDriver = class {
|
|
|
2633
2613
|
connId,
|
|
2634
2614
|
connToken
|
|
2635
2615
|
);
|
|
2636
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2637
|
-
} else if (normalizedPath.startsWith(
|
|
2616
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
2617
|
+
} else if (normalizedPath.startsWith(_chunkI3FB346Icjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2638
2618
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2639
2619
|
c.req.raw,
|
|
2640
|
-
|
|
2620
|
+
path4,
|
|
2641
2621
|
this.#actorDriver,
|
|
2642
2622
|
actorId
|
|
2643
2623
|
);
|
|
2644
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2624
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
2645
2625
|
} else {
|
|
2646
|
-
throw new Error(`Unreachable path: ${
|
|
2626
|
+
throw new Error(`Unreachable path: ${path4}`);
|
|
2647
2627
|
}
|
|
2648
2628
|
}
|
|
2649
2629
|
async getForId({ actorId }) {
|
|
@@ -2753,30 +2733,284 @@ function createMemoryDriver() {
|
|
|
2753
2733
|
return createFileSystemOrMemoryDriver(false);
|
|
2754
2734
|
}
|
|
2755
2735
|
|
|
2736
|
+
// src/registry/mod.ts
|
|
2737
|
+
|
|
2738
|
+
|
|
2756
2739
|
// src/drivers/default.ts
|
|
2757
2740
|
function chooseDefaultDriver(runConfig) {
|
|
2758
2741
|
if (runConfig.endpoint && runConfig.driver) {
|
|
2759
2742
|
throw new (0, _chunk5QGQK44Lcjs.UserError)(
|
|
2760
|
-
"Cannot specify both '
|
|
2743
|
+
"Cannot specify both 'endpoint' and 'driver' in configuration"
|
|
2744
|
+
);
|
|
2745
|
+
}
|
|
2746
|
+
if (runConfig.runnerKind === "serverless" && !runConfig.endpoint) {
|
|
2747
|
+
throw new (0, _chunk5QGQK44Lcjs.UserError)(
|
|
2748
|
+
"Cannot use 'serverless' runnerKind without the 'endpoint' config set."
|
|
2761
2749
|
);
|
|
2762
2750
|
}
|
|
2763
2751
|
if (runConfig.driver) {
|
|
2764
2752
|
return runConfig.driver;
|
|
2765
2753
|
}
|
|
2766
|
-
if (runConfig.endpoint) {
|
|
2767
|
-
|
|
2754
|
+
if (runConfig.endpoint || runConfig.token) {
|
|
2755
|
+
_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, ).debug({
|
|
2768
2756
|
msg: "using rivet engine driver",
|
|
2769
2757
|
endpoint: runConfig.endpoint
|
|
2770
2758
|
});
|
|
2771
|
-
return createEngineDriver(
|
|
2772
|
-
endpoint: runConfig.endpoint,
|
|
2773
|
-
token: runConfig.token
|
|
2774
|
-
});
|
|
2759
|
+
return createEngineDriver();
|
|
2775
2760
|
}
|
|
2776
|
-
|
|
2761
|
+
_chunkI3FB346Icjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
|
|
2777
2762
|
return createFileSystemOrMemoryDriver(true);
|
|
2778
2763
|
}
|
|
2779
2764
|
|
|
2765
|
+
// src/engine-process/mod.ts
|
|
2766
|
+
var _child_process = require('child_process');
|
|
2767
|
+
|
|
2768
|
+
|
|
2769
|
+
|
|
2770
|
+
var _promises2 = require('stream/promises');
|
|
2771
|
+
|
|
2772
|
+
// src/engine-process/log.ts
|
|
2773
|
+
function logger6() {
|
|
2774
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "engine-process");
|
|
2775
|
+
}
|
|
2776
|
+
|
|
2777
|
+
// src/engine-process/mod.ts
|
|
2778
|
+
var ENGINE_PORT = 6420;
|
|
2779
|
+
var ENGINE_ENDPOINT = `http://localhost:${ENGINE_PORT}`;
|
|
2780
|
+
var ENGINE_BASE_URL = "https://releases.rivet.gg/engine";
|
|
2781
|
+
var ENGINE_BINARY_NAME = "rivet-engine";
|
|
2782
|
+
async function ensureEngineProcess(options) {
|
|
2783
|
+
logger6().debug({ msg: "ensuring engine process", version: options.version });
|
|
2784
|
+
const storageRoot = getStoragePath();
|
|
2785
|
+
const binDir = path3.join(storageRoot, "bin");
|
|
2786
|
+
const varDir = path3.join(storageRoot, "var");
|
|
2787
|
+
const logsDir = path3.join(varDir, "logs", "rivet-engine");
|
|
2788
|
+
await ensureDirectoryExists(binDir);
|
|
2789
|
+
await ensureDirectoryExists(varDir);
|
|
2790
|
+
await ensureDirectoryExists(logsDir);
|
|
2791
|
+
const executableName = process.platform === "win32" ? `${ENGINE_BINARY_NAME}-${options.version}.exe` : `${ENGINE_BINARY_NAME}-${options.version}`;
|
|
2792
|
+
const binaryPath = path3.join(binDir, executableName);
|
|
2793
|
+
await downloadEngineBinaryIfNeeded(binaryPath, options.version, varDir);
|
|
2794
|
+
if (await isEngineRunning()) {
|
|
2795
|
+
try {
|
|
2796
|
+
await waitForEngineHealth();
|
|
2797
|
+
logger6().debug({
|
|
2798
|
+
msg: "engine already running and healthy",
|
|
2799
|
+
version: options.version
|
|
2800
|
+
});
|
|
2801
|
+
return;
|
|
2802
|
+
} catch (error) {
|
|
2803
|
+
logger6().warn({
|
|
2804
|
+
msg: "existing engine process not healthy, cannot restart automatically",
|
|
2805
|
+
error
|
|
2806
|
+
});
|
|
2807
|
+
throw new Error(
|
|
2808
|
+
"Engine process exists but is not healthy. Please manually stop the process on port 6420 and retry."
|
|
2809
|
+
);
|
|
2810
|
+
}
|
|
2811
|
+
}
|
|
2812
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-").replace(/\./g, "-");
|
|
2813
|
+
const stdoutLogPath = path3.join(logsDir, `engine-${timestamp}-stdout.log`);
|
|
2814
|
+
const stderrLogPath = path3.join(logsDir, `engine-${timestamp}-stderr.log`);
|
|
2815
|
+
const stdoutStream = _fs.createWriteStream.call(void 0, stdoutLogPath, { flags: "a" });
|
|
2816
|
+
const stderrStream = _fs.createWriteStream.call(void 0, stderrLogPath, { flags: "a" });
|
|
2817
|
+
logger6().debug({
|
|
2818
|
+
msg: "creating engine log files",
|
|
2819
|
+
stdout: stdoutLogPath,
|
|
2820
|
+
stderr: stderrLogPath
|
|
2821
|
+
});
|
|
2822
|
+
const child = _child_process.spawn.call(void 0, binaryPath, ["start"], {
|
|
2823
|
+
cwd: path3.dirname(binaryPath),
|
|
2824
|
+
stdio: ["inherit", "pipe", "pipe"],
|
|
2825
|
+
env: {
|
|
2826
|
+
...process.env
|
|
2827
|
+
}
|
|
2828
|
+
});
|
|
2829
|
+
if (!child.pid) {
|
|
2830
|
+
throw new Error("failed to spawn rivet engine process");
|
|
2831
|
+
}
|
|
2832
|
+
if (child.stdout) {
|
|
2833
|
+
child.stdout.pipe(stdoutStream);
|
|
2834
|
+
}
|
|
2835
|
+
if (child.stderr) {
|
|
2836
|
+
child.stderr.pipe(stderrStream);
|
|
2837
|
+
}
|
|
2838
|
+
logger6().debug({
|
|
2839
|
+
msg: "spawned engine process",
|
|
2840
|
+
pid: child.pid,
|
|
2841
|
+
cwd: path3.dirname(binaryPath)
|
|
2842
|
+
});
|
|
2843
|
+
child.once("exit", (code, signal) => {
|
|
2844
|
+
logger6().warn({
|
|
2845
|
+
msg: "engine process exited",
|
|
2846
|
+
code,
|
|
2847
|
+
signal
|
|
2848
|
+
});
|
|
2849
|
+
stdoutStream.end();
|
|
2850
|
+
stderrStream.end();
|
|
2851
|
+
});
|
|
2852
|
+
child.once("error", (error) => {
|
|
2853
|
+
logger6().error({
|
|
2854
|
+
msg: "engine process failed",
|
|
2855
|
+
error
|
|
2856
|
+
});
|
|
2857
|
+
stdoutStream.end();
|
|
2858
|
+
stderrStream.end();
|
|
2859
|
+
});
|
|
2860
|
+
await waitForEngineHealth();
|
|
2861
|
+
logger6().info({
|
|
2862
|
+
msg: "engine process started",
|
|
2863
|
+
pid: child.pid,
|
|
2864
|
+
version: options.version,
|
|
2865
|
+
logs: {
|
|
2866
|
+
stdout: stdoutLogPath,
|
|
2867
|
+
stderr: stderrLogPath
|
|
2868
|
+
}
|
|
2869
|
+
});
|
|
2870
|
+
}
|
|
2871
|
+
async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
|
|
2872
|
+
const binaryExists = await fileExists(binaryPath);
|
|
2873
|
+
if (binaryExists) {
|
|
2874
|
+
logger6().debug({
|
|
2875
|
+
msg: "engine binary already cached",
|
|
2876
|
+
version,
|
|
2877
|
+
path: binaryPath
|
|
2878
|
+
});
|
|
2879
|
+
return;
|
|
2880
|
+
}
|
|
2881
|
+
const { targetTriplet, extension } = resolveTargetTriplet();
|
|
2882
|
+
const remoteFile = `${ENGINE_BINARY_NAME}-${targetTriplet}${extension}`;
|
|
2883
|
+
const downloadUrl = `${ENGINE_BASE_URL}/${version}/${remoteFile}`;
|
|
2884
|
+
logger6().info({
|
|
2885
|
+
msg: "downloading engine binary",
|
|
2886
|
+
url: downloadUrl,
|
|
2887
|
+
path: binaryPath,
|
|
2888
|
+
version
|
|
2889
|
+
});
|
|
2890
|
+
const response = await fetch(downloadUrl);
|
|
2891
|
+
if (!response.ok || !response.body) {
|
|
2892
|
+
throw new Error(
|
|
2893
|
+
`failed to download rivet engine binary from ${downloadUrl}: ${response.status} ${response.statusText}`
|
|
2894
|
+
);
|
|
2895
|
+
}
|
|
2896
|
+
const tempPath = `${binaryPath}.${process.pid}.tmp`;
|
|
2897
|
+
await _promises2.pipeline.call(void 0, response.body, _fs.createWriteStream.call(void 0, tempPath));
|
|
2898
|
+
if (process.platform !== "win32") {
|
|
2899
|
+
await fs3.chmod(tempPath, 493);
|
|
2900
|
+
}
|
|
2901
|
+
await fs3.rename(tempPath, binaryPath);
|
|
2902
|
+
logger6().debug({
|
|
2903
|
+
msg: "engine binary download complete",
|
|
2904
|
+
version,
|
|
2905
|
+
path: binaryPath
|
|
2906
|
+
});
|
|
2907
|
+
logger6().info({
|
|
2908
|
+
msg: "engine binary downloaded",
|
|
2909
|
+
version,
|
|
2910
|
+
path: binaryPath
|
|
2911
|
+
});
|
|
2912
|
+
}
|
|
2913
|
+
function resolveTargetTriplet() {
|
|
2914
|
+
return resolveTargetTripletFor(process.platform, process.arch);
|
|
2915
|
+
}
|
|
2916
|
+
function resolveTargetTripletFor(platform, arch) {
|
|
2917
|
+
switch (platform) {
|
|
2918
|
+
case "darwin":
|
|
2919
|
+
if (arch === "arm64") {
|
|
2920
|
+
return { targetTriplet: "aarch64-apple-darwin", extension: "" };
|
|
2921
|
+
}
|
|
2922
|
+
if (arch === "x64") {
|
|
2923
|
+
return { targetTriplet: "x86_64-apple-darwin", extension: "" };
|
|
2924
|
+
}
|
|
2925
|
+
break;
|
|
2926
|
+
case "linux":
|
|
2927
|
+
if (arch === "x64") {
|
|
2928
|
+
return { targetTriplet: "x86_64-unknown-linux-musl", extension: "" };
|
|
2929
|
+
}
|
|
2930
|
+
break;
|
|
2931
|
+
case "win32":
|
|
2932
|
+
if (arch === "x64") {
|
|
2933
|
+
return { targetTriplet: "x86_64-pc-windows-gnu", extension: ".exe" };
|
|
2934
|
+
}
|
|
2935
|
+
break;
|
|
2936
|
+
}
|
|
2937
|
+
throw new Error(
|
|
2938
|
+
`unsupported platform for rivet engine binary: ${platform}/${arch}`
|
|
2939
|
+
);
|
|
2940
|
+
}
|
|
2941
|
+
async function isEngineRunning() {
|
|
2942
|
+
return await checkIfEngineAlreadyRunningOnPort(ENGINE_PORT);
|
|
2943
|
+
}
|
|
2944
|
+
async function checkIfEngineAlreadyRunningOnPort(port) {
|
|
2945
|
+
let response;
|
|
2946
|
+
try {
|
|
2947
|
+
response = await fetch(`http://localhost:${port}/health`);
|
|
2948
|
+
} catch (err) {
|
|
2949
|
+
return false;
|
|
2950
|
+
}
|
|
2951
|
+
if (response.ok) {
|
|
2952
|
+
const health = await response.json();
|
|
2953
|
+
if (health.runtime === "engine") {
|
|
2954
|
+
logger6().debug({
|
|
2955
|
+
msg: "rivet engine already running on port",
|
|
2956
|
+
port
|
|
2957
|
+
});
|
|
2958
|
+
return true;
|
|
2959
|
+
} else if (health.runtime === "rivetkit") {
|
|
2960
|
+
logger6().error({
|
|
2961
|
+
msg: "another rivetkit process is already running on port",
|
|
2962
|
+
port
|
|
2963
|
+
});
|
|
2964
|
+
throw new Error(
|
|
2965
|
+
"RivetKit process already running on port 6420, stop that process and restart this."
|
|
2966
|
+
);
|
|
2967
|
+
} else {
|
|
2968
|
+
throw new Error(
|
|
2969
|
+
"Unknown process running on port 6420, cannot identify what it is."
|
|
2970
|
+
);
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
return false;
|
|
2974
|
+
}
|
|
2975
|
+
async function fileExists(filePath) {
|
|
2976
|
+
try {
|
|
2977
|
+
await fs3.access(filePath);
|
|
2978
|
+
return true;
|
|
2979
|
+
} catch (e6) {
|
|
2980
|
+
return false;
|
|
2981
|
+
}
|
|
2982
|
+
}
|
|
2983
|
+
var HEALTH_MAX_WAIT = 1e4;
|
|
2984
|
+
var HEALTH_INTERVAL = 100;
|
|
2985
|
+
async function waitForEngineHealth() {
|
|
2986
|
+
const maxRetries = Math.ceil(HEALTH_MAX_WAIT / HEALTH_INTERVAL);
|
|
2987
|
+
logger6().debug({ msg: "waiting for engine health check" });
|
|
2988
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
2989
|
+
try {
|
|
2990
|
+
const response = await fetch(`${ENGINE_ENDPOINT}/health`);
|
|
2991
|
+
if (response.ok) {
|
|
2992
|
+
logger6().debug({ msg: "engine health check passed" });
|
|
2993
|
+
return;
|
|
2994
|
+
}
|
|
2995
|
+
} catch (error) {
|
|
2996
|
+
if (i === maxRetries - 1) {
|
|
2997
|
+
throw new Error(
|
|
2998
|
+
`engine health check failed after ${maxRetries} retries: ${error}`
|
|
2999
|
+
);
|
|
3000
|
+
}
|
|
3001
|
+
}
|
|
3002
|
+
if (i < maxRetries - 1) {
|
|
3003
|
+
logger6().trace({
|
|
3004
|
+
msg: "engine not ready, retrying",
|
|
3005
|
+
attempt: i + 1,
|
|
3006
|
+
maxRetries
|
|
3007
|
+
});
|
|
3008
|
+
await new Promise((resolve) => setTimeout(resolve, HEALTH_INTERVAL));
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
throw new Error(`engine health check failed after ${maxRetries} retries`);
|
|
3012
|
+
}
|
|
3013
|
+
|
|
2780
3014
|
// src/manager/router.ts
|
|
2781
3015
|
var _zodopenapi = require('@hono/zod-openapi');
|
|
2782
3016
|
|
|
@@ -2839,12 +3073,24 @@ async function actorGateway(runConfig, managerDriver, c, next) {
|
|
|
2839
3073
|
if (c.req.path.startsWith("/.test/")) {
|
|
2840
3074
|
return next();
|
|
2841
3075
|
}
|
|
3076
|
+
let strippedPath = c.req.path;
|
|
3077
|
+
if (runConfig.basePath && strippedPath.startsWith(runConfig.basePath)) {
|
|
3078
|
+
strippedPath = strippedPath.slice(runConfig.basePath.length);
|
|
3079
|
+
if (!strippedPath.startsWith("/")) {
|
|
3080
|
+
strippedPath = "/" + strippedPath;
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
2842
3083
|
if (c.req.header("upgrade") === "websocket") {
|
|
2843
|
-
return await handleWebSocketGateway(
|
|
3084
|
+
return await handleWebSocketGateway(
|
|
3085
|
+
runConfig,
|
|
3086
|
+
managerDriver,
|
|
3087
|
+
c,
|
|
3088
|
+
strippedPath
|
|
3089
|
+
);
|
|
2844
3090
|
}
|
|
2845
|
-
return await handleHttpGateway(managerDriver, c, next);
|
|
3091
|
+
return await handleHttpGateway(managerDriver, c, next, strippedPath);
|
|
2846
3092
|
}
|
|
2847
|
-
async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
3093
|
+
async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath) {
|
|
2848
3094
|
var _a;
|
|
2849
3095
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
2850
3096
|
if (!upgradeWebSocket) {
|
|
@@ -2860,20 +3106,20 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2860
3106
|
if (protocols) {
|
|
2861
3107
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
2862
3108
|
for (const protocol of protocolList) {
|
|
2863
|
-
if (protocol.startsWith(
|
|
2864
|
-
target = protocol.substring(
|
|
2865
|
-
} else if (protocol.startsWith(
|
|
2866
|
-
actorId = protocol.substring(
|
|
2867
|
-
} else if (protocol.startsWith(
|
|
2868
|
-
encodingRaw = protocol.substring(
|
|
2869
|
-
} else if (protocol.startsWith(
|
|
3109
|
+
if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_TARGET)) {
|
|
3110
|
+
target = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_TARGET.length);
|
|
3111
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ACTOR)) {
|
|
3112
|
+
actorId = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_ACTOR.length);
|
|
3113
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING)) {
|
|
3114
|
+
encodingRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING.length);
|
|
3115
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
2870
3116
|
connParamsRaw = decodeURIComponent(
|
|
2871
|
-
protocol.substring(
|
|
3117
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
2872
3118
|
);
|
|
2873
|
-
} else if (protocol.startsWith(
|
|
2874
|
-
connIdRaw = protocol.substring(
|
|
2875
|
-
} else if (protocol.startsWith(
|
|
2876
|
-
connTokenRaw = protocol.substring(
|
|
3119
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID)) {
|
|
3120
|
+
connIdRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID.length);
|
|
3121
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3122
|
+
connTokenRaw = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
2877
3123
|
}
|
|
2878
3124
|
}
|
|
2879
3125
|
}
|
|
@@ -2886,12 +3132,12 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2886
3132
|
logger().debug({
|
|
2887
3133
|
msg: "proxying websocket to actor",
|
|
2888
3134
|
actorId,
|
|
2889
|
-
path:
|
|
3135
|
+
path: strippedPath,
|
|
2890
3136
|
encoding: encodingRaw
|
|
2891
3137
|
});
|
|
2892
3138
|
const encoding = encodingRaw || "json";
|
|
2893
3139
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
2894
|
-
const pathWithQuery = c.req.url.includes("?") ?
|
|
3140
|
+
const pathWithQuery = c.req.url.includes("?") ? strippedPath + c.req.url.substring(c.req.url.indexOf("?")) : strippedPath;
|
|
2895
3141
|
return await managerDriver.proxyWebSocket(
|
|
2896
3142
|
c,
|
|
2897
3143
|
pathWithQuery,
|
|
@@ -2903,9 +3149,9 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2903
3149
|
connTokenRaw
|
|
2904
3150
|
);
|
|
2905
3151
|
}
|
|
2906
|
-
async function handleHttpGateway(managerDriver, c, next) {
|
|
2907
|
-
const target = c.req.header(
|
|
2908
|
-
const actorId = c.req.header(
|
|
3152
|
+
async function handleHttpGateway(managerDriver, c, next, strippedPath) {
|
|
3153
|
+
const target = c.req.header(_chunkI3FB346Icjs.HEADER_RIVET_TARGET);
|
|
3154
|
+
const actorId = c.req.header(_chunkI3FB346Icjs.HEADER_RIVET_ACTOR);
|
|
2909
3155
|
if (target !== "actor") {
|
|
2910
3156
|
return next();
|
|
2911
3157
|
}
|
|
@@ -2915,19 +3161,20 @@ async function handleHttpGateway(managerDriver, c, next) {
|
|
|
2915
3161
|
logger().debug({
|
|
2916
3162
|
msg: "proxying request to actor",
|
|
2917
3163
|
actorId,
|
|
2918
|
-
path:
|
|
3164
|
+
path: strippedPath,
|
|
2919
3165
|
method: c.req.method
|
|
2920
3166
|
});
|
|
2921
3167
|
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
2922
|
-
proxyHeaders.delete(
|
|
2923
|
-
proxyHeaders.delete(
|
|
3168
|
+
proxyHeaders.delete(_chunkI3FB346Icjs.HEADER_RIVET_TARGET);
|
|
3169
|
+
proxyHeaders.delete(_chunkI3FB346Icjs.HEADER_RIVET_ACTOR);
|
|
2924
3170
|
const url = new URL(c.req.url);
|
|
2925
|
-
const proxyUrl = new URL(`http://actor${
|
|
3171
|
+
const proxyUrl = new URL(`http://actor${strippedPath}${url.search}`);
|
|
2926
3172
|
const proxyRequest = new Request(proxyUrl, {
|
|
2927
3173
|
method: c.req.raw.method,
|
|
2928
3174
|
headers: proxyHeaders,
|
|
2929
3175
|
body: c.req.raw.body,
|
|
2930
|
-
signal: c.req.raw.signal
|
|
3176
|
+
signal: c.req.raw.signal,
|
|
3177
|
+
duplex: "half"
|
|
2931
3178
|
});
|
|
2932
3179
|
return await managerDriver.proxyRequest(c, proxyRequest, actorId);
|
|
2933
3180
|
}
|
|
@@ -2937,7 +3184,7 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
2937
3184
|
promise: serverWsPromise,
|
|
2938
3185
|
resolve: serverWsResolve,
|
|
2939
3186
|
reject: serverWsReject
|
|
2940
|
-
} =
|
|
3187
|
+
} = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
2941
3188
|
try {
|
|
2942
3189
|
logger().debug({ msg: "awaiting client websocket promise" });
|
|
2943
3190
|
const ws = await clientWsPromise;
|
|
@@ -3103,6 +3350,22 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
3103
3350
|
};
|
|
3104
3351
|
}
|
|
3105
3352
|
|
|
3353
|
+
// src/manager/router-schema.ts
|
|
3354
|
+
|
|
3355
|
+
var ServerlessStartHeadersSchema = _zod.z.object({
|
|
3356
|
+
endpoint: _zod.z.string({ required_error: "x-rivet-endpoint header is required" }),
|
|
3357
|
+
token: _zod.z.string({ invalid_type_error: "x-rivet-token header must be a string" }).optional(),
|
|
3358
|
+
totalSlots: _zod.z.coerce.number({
|
|
3359
|
+
invalid_type_error: "x-rivet-total-slots header must be a number"
|
|
3360
|
+
}).int("x-rivet-total-slots header must be an integer").gte(1, "x-rivet-total-slots header must be positive"),
|
|
3361
|
+
runnerName: _zod.z.string({
|
|
3362
|
+
required_error: "x-rivet-runner-name header is required"
|
|
3363
|
+
}),
|
|
3364
|
+
namespace: _zod.z.string({
|
|
3365
|
+
required_error: "x-rivet-namespace-id header is required"
|
|
3366
|
+
})
|
|
3367
|
+
});
|
|
3368
|
+
|
|
3106
3369
|
// src/manager/router.ts
|
|
3107
3370
|
function buildOpenApiResponses(schema) {
|
|
3108
3371
|
return {
|
|
@@ -3122,55 +3385,119 @@ function buildOpenApiResponses(schema) {
|
|
|
3122
3385
|
}
|
|
3123
3386
|
};
|
|
3124
3387
|
}
|
|
3125
|
-
function createManagerRouter(registryConfig, runConfig, managerDriver,
|
|
3388
|
+
function createManagerRouter(registryConfig, runConfig, managerDriver, driverConfig, client) {
|
|
3126
3389
|
const router = new (0, _zodopenapi.OpenAPIHono)({ strict: false }).basePath(
|
|
3127
3390
|
runConfig.basePath
|
|
3128
3391
|
);
|
|
3129
3392
|
router.use("*", loggerMiddleware(logger()));
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3393
|
+
router.use(
|
|
3394
|
+
"*",
|
|
3395
|
+
_factory.createMiddleware.call(void 0, async (c, next) => {
|
|
3396
|
+
const upgrade = c.req.header("upgrade");
|
|
3397
|
+
const isWebSocket = (upgrade == null ? void 0 : upgrade.toLowerCase()) === "websocket";
|
|
3398
|
+
const isGet = c.req.method === "GET";
|
|
3399
|
+
if (isGet && isWebSocket) {
|
|
3400
|
+
c.header("Sec-WebSocket-Protocol", "rivet");
|
|
3401
|
+
}
|
|
3402
|
+
await next();
|
|
3403
|
+
})
|
|
3404
|
+
);
|
|
3405
|
+
if (runConfig.runnerKind === "serverless") {
|
|
3406
|
+
addServerlessRoutes(
|
|
3407
|
+
driverConfig,
|
|
3408
|
+
registryConfig,
|
|
3409
|
+
runConfig,
|
|
3410
|
+
managerDriver,
|
|
3411
|
+
client,
|
|
3412
|
+
router
|
|
3413
|
+
);
|
|
3414
|
+
} else if (runConfig.runnerKind === "normal") {
|
|
3415
|
+
addManagerRoutes(registryConfig, runConfig, managerDriver, router);
|
|
3133
3416
|
} else {
|
|
3134
|
-
|
|
3417
|
+
_chunkGIFHYL7Acjs.assertUnreachable.call(void 0, runConfig.runnerKind);
|
|
3135
3418
|
}
|
|
3136
3419
|
router.notFound(handleRouteNotFound);
|
|
3137
3420
|
router.onError(handleRouteError);
|
|
3138
|
-
return { router, openapi: router
|
|
3421
|
+
return { router, openapi: router };
|
|
3139
3422
|
}
|
|
3140
|
-
function addServerlessRoutes(
|
|
3141
|
-
router.
|
|
3423
|
+
function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDriver, client, router) {
|
|
3424
|
+
if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
|
|
3425
|
+
router.get("/", (c) => {
|
|
3142
3426
|
return c.text(
|
|
3143
3427
|
"This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
|
|
3144
3428
|
);
|
|
3145
3429
|
});
|
|
3146
|
-
router.get("/start",
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
c.req.header("x-
|
|
3430
|
+
router.get("/start", async (c) => {
|
|
3431
|
+
var _a;
|
|
3432
|
+
const parseResult = ServerlessStartHeadersSchema.safeParse({
|
|
3433
|
+
endpoint: c.req.header("x-rivet-endpoint"),
|
|
3434
|
+
token: _nullishCoalesce(c.req.header("x-rivet-token"), () => ( void 0)),
|
|
3435
|
+
totalSlots: c.req.header("x-rivet-total-slots"),
|
|
3436
|
+
runnerName: c.req.header("x-rivet-runner-name"),
|
|
3437
|
+
namespace: c.req.header("x-rivet-namespace-id")
|
|
3438
|
+
});
|
|
3439
|
+
if (!parseResult.success) {
|
|
3440
|
+
throw new (0, _chunk5QGQK44Lcjs.InvalidRequest)(
|
|
3441
|
+
_nullishCoalesce(((_a = parseResult.error.issues[0]) == null ? void 0 : _a.message), () => ( "invalid serverless start headers"))
|
|
3442
|
+
);
|
|
3443
|
+
}
|
|
3444
|
+
const { endpoint, token, totalSlots, runnerName, namespace } = parseResult.data;
|
|
3445
|
+
logger().debug({
|
|
3446
|
+
msg: "received serverless runner start request",
|
|
3447
|
+
endpoint,
|
|
3448
|
+
totalSlots,
|
|
3449
|
+
runnerName,
|
|
3450
|
+
namespace
|
|
3451
|
+
});
|
|
3452
|
+
const newRunConfig = Object.assign({}, runConfig);
|
|
3453
|
+
newRunConfig.endpoint = endpoint;
|
|
3454
|
+
newRunConfig.token = token;
|
|
3455
|
+
newRunConfig.totalSlots = totalSlots;
|
|
3456
|
+
newRunConfig.runnerName = runnerName;
|
|
3457
|
+
newRunConfig.namespace = namespace;
|
|
3458
|
+
const actorDriver = driverConfig.actor(
|
|
3459
|
+
registryConfig,
|
|
3460
|
+
newRunConfig,
|
|
3461
|
+
managerDriver,
|
|
3462
|
+
client
|
|
3150
3463
|
);
|
|
3151
|
-
if (isNaN(totalSlots)) totalSlots = void 0;
|
|
3152
|
-
const actorDriver = serverlessActorDriverBuilder(token, totalSlots);
|
|
3153
3464
|
_invariant2.default.call(void 0,
|
|
3154
3465
|
actorDriver.serverlessHandleStart,
|
|
3155
3466
|
"missing serverlessHandleStart on ActorDriver"
|
|
3156
3467
|
);
|
|
3157
3468
|
return await actorDriver.serverlessHandleStart(c);
|
|
3158
3469
|
});
|
|
3159
|
-
router.get("/health",
|
|
3160
|
-
return c.
|
|
3470
|
+
router.get("/health", (c) => {
|
|
3471
|
+
return c.json({
|
|
3472
|
+
status: "ok",
|
|
3473
|
+
runtime: "rivetkit",
|
|
3474
|
+
version: _chunkGIFHYL7Acjs.VERSION
|
|
3475
|
+
});
|
|
3161
3476
|
});
|
|
3162
3477
|
}
|
|
3163
|
-
function addManagerRoutes(registryConfig, runConfig, managerDriver, router
|
|
3478
|
+
function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
3164
3479
|
var _a;
|
|
3165
|
-
|
|
3166
|
-
|
|
3480
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
|
|
3481
|
+
if (!managerDriver.inspector) {
|
|
3482
|
+
throw new (0, _chunk5QGQK44Lcjs.Unsupported)("inspector");
|
|
3483
|
+
}
|
|
3484
|
+
router.route(
|
|
3485
|
+
"/inspect",
|
|
3486
|
+
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkSIWYIRXPcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
|
|
3487
|
+
c.set("inspector", managerDriver.inspector);
|
|
3488
|
+
return next();
|
|
3489
|
+
}).route("/", createManagerInspectorRouter())
|
|
3490
|
+
);
|
|
3491
|
+
}
|
|
3492
|
+
if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
|
|
3493
|
+
router.use("*", actorGateway.bind(void 0, runConfig, managerDriver));
|
|
3494
|
+
router.get("/", (c) => {
|
|
3167
3495
|
return c.text(
|
|
3168
3496
|
"This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
|
|
3169
3497
|
);
|
|
3170
3498
|
});
|
|
3171
3499
|
{
|
|
3172
3500
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3173
|
-
middleware: [cors2],
|
|
3174
3501
|
method: "get",
|
|
3175
3502
|
path: "/actors",
|
|
3176
3503
|
request: {
|
|
@@ -3230,7 +3557,6 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3230
3557
|
}
|
|
3231
3558
|
{
|
|
3232
3559
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3233
|
-
middleware: [cors2],
|
|
3234
3560
|
method: "put",
|
|
3235
3561
|
path: "/actors",
|
|
3236
3562
|
request: {
|
|
@@ -3275,7 +3601,6 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3275
3601
|
}
|
|
3276
3602
|
{
|
|
3277
3603
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3278
|
-
middleware: [cors2],
|
|
3279
3604
|
method: "post",
|
|
3280
3605
|
path: "/actors",
|
|
3281
3606
|
request: {
|
|
@@ -3320,7 +3645,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3320
3645
|
const output = await managerDriver[method](...args);
|
|
3321
3646
|
response = { ok: output };
|
|
3322
3647
|
} catch (rawErr) {
|
|
3323
|
-
const err =
|
|
3648
|
+
const err = _chunkGIFHYL7Acjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
|
|
3324
3649
|
response = { err };
|
|
3325
3650
|
}
|
|
3326
3651
|
return c.body(cbor4.encode(response));
|
|
@@ -3335,34 +3660,34 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3335
3660
|
let actorId = "";
|
|
3336
3661
|
let encoding = "bare";
|
|
3337
3662
|
let transport = "websocket";
|
|
3338
|
-
let
|
|
3663
|
+
let path4 = "";
|
|
3339
3664
|
let params;
|
|
3340
3665
|
let connId;
|
|
3341
3666
|
let connToken;
|
|
3342
3667
|
for (const protocol of protocols) {
|
|
3343
|
-
if (protocol.startsWith(
|
|
3344
|
-
actorId = protocol.substring(
|
|
3345
|
-
} else if (protocol.startsWith(
|
|
3668
|
+
if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ACTOR)) {
|
|
3669
|
+
actorId = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_ACTOR.length);
|
|
3670
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING)) {
|
|
3346
3671
|
encoding = protocol.substring(
|
|
3347
|
-
|
|
3672
|
+
_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING.length
|
|
3348
3673
|
);
|
|
3349
|
-
} else if (protocol.startsWith(
|
|
3674
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_TRANSPORT)) {
|
|
3350
3675
|
transport = protocol.substring(
|
|
3351
|
-
|
|
3676
|
+
_chunkI3FB346Icjs.WS_PROTOCOL_TRANSPORT.length
|
|
3352
3677
|
);
|
|
3353
|
-
} else if (protocol.startsWith(
|
|
3354
|
-
|
|
3355
|
-
protocol.substring(
|
|
3678
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_PATH)) {
|
|
3679
|
+
path4 = decodeURIComponent(
|
|
3680
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_PATH.length)
|
|
3356
3681
|
);
|
|
3357
|
-
} else if (protocol.startsWith(
|
|
3682
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3358
3683
|
const paramsRaw = decodeURIComponent(
|
|
3359
|
-
protocol.substring(
|
|
3684
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3360
3685
|
);
|
|
3361
3686
|
params = JSON.parse(paramsRaw);
|
|
3362
|
-
} else if (protocol.startsWith(
|
|
3363
|
-
connId = protocol.substring(
|
|
3364
|
-
} else if (protocol.startsWith(
|
|
3365
|
-
connToken = protocol.substring(
|
|
3687
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID)) {
|
|
3688
|
+
connId = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_ID.length);
|
|
3689
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3690
|
+
connToken = protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
3366
3691
|
}
|
|
3367
3692
|
}
|
|
3368
3693
|
logger().debug({
|
|
@@ -3371,10 +3696,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3371
3696
|
params,
|
|
3372
3697
|
encodingKind: encoding,
|
|
3373
3698
|
transport,
|
|
3374
|
-
path:
|
|
3699
|
+
path: path4
|
|
3375
3700
|
});
|
|
3376
3701
|
const clientWsPromise = managerDriver.openWebSocket(
|
|
3377
|
-
|
|
3702
|
+
path4,
|
|
3378
3703
|
actorId,
|
|
3379
3704
|
encoding,
|
|
3380
3705
|
params,
|
|
@@ -3382,10 +3707,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3382
3707
|
connToken
|
|
3383
3708
|
);
|
|
3384
3709
|
return await createTestWebSocketProxy(clientWsPromise);
|
|
3385
|
-
})(c,
|
|
3710
|
+
})(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
3386
3711
|
});
|
|
3387
3712
|
router.all(".test/inline-driver/send-request/*", async (c) => {
|
|
3388
|
-
const actorId = c.req.header(
|
|
3713
|
+
const actorId = c.req.header(_chunkI3FB346Icjs.HEADER_ACTOR_ID);
|
|
3389
3714
|
if (!actorId) {
|
|
3390
3715
|
return c.text("Missing required headers", 400);
|
|
3391
3716
|
}
|
|
@@ -3412,9 +3737,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3412
3737
|
} catch (error) {
|
|
3413
3738
|
logger().error({
|
|
3414
3739
|
msg: "error in test inline raw http",
|
|
3415
|
-
error:
|
|
3740
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, error)
|
|
3416
3741
|
});
|
|
3417
|
-
const err =
|
|
3742
|
+
const err = _chunkGIFHYL7Acjs.deconstructError.call(void 0, error, logger(), {}, true);
|
|
3418
3743
|
return c.json(
|
|
3419
3744
|
{
|
|
3420
3745
|
error: {
|
|
@@ -3456,38 +3781,31 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors
|
|
|
3456
3781
|
} catch (error) {
|
|
3457
3782
|
logger().error({
|
|
3458
3783
|
msg: "error forcing disconnect",
|
|
3459
|
-
error:
|
|
3784
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, error)
|
|
3460
3785
|
});
|
|
3461
3786
|
return c.text(`Error: ${error}`, 500);
|
|
3462
3787
|
}
|
|
3463
3788
|
});
|
|
3464
3789
|
}
|
|
3465
|
-
router.get("/health",
|
|
3466
|
-
return c.
|
|
3790
|
+
router.get("/health", (c) => {
|
|
3791
|
+
return c.json({
|
|
3792
|
+
status: "ok",
|
|
3793
|
+
rivetkit: {
|
|
3794
|
+
version: _chunkGIFHYL7Acjs.VERSION
|
|
3795
|
+
}
|
|
3796
|
+
});
|
|
3467
3797
|
});
|
|
3468
3798
|
(_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(
|
|
3469
3799
|
managerDriver,
|
|
3470
3800
|
registryConfig,
|
|
3471
3801
|
router
|
|
3472
3802
|
);
|
|
3473
|
-
if (_chunkQGUQB3NCcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
|
|
3474
|
-
if (!managerDriver.inspector) {
|
|
3475
|
-
throw new (0, _chunk5QGQK44Lcjs.Unsupported)("inspector");
|
|
3476
|
-
}
|
|
3477
|
-
router.route(
|
|
3478
|
-
"/inspect",
|
|
3479
|
-
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkQGUQB3NCcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
|
|
3480
|
-
c.set("inspector", managerDriver.inspector);
|
|
3481
|
-
return next();
|
|
3482
|
-
}).route("/", createManagerInspectorRouter())
|
|
3483
|
-
);
|
|
3484
|
-
}
|
|
3485
3803
|
}
|
|
3486
3804
|
function createApiActor(actor2) {
|
|
3487
3805
|
return {
|
|
3488
3806
|
actor_id: actor2.actorId,
|
|
3489
3807
|
name: actor2.name,
|
|
3490
|
-
key:
|
|
3808
|
+
key: _chunkVZMXAZKCcjs.serializeActorKey.call(void 0, actor2.key),
|
|
3491
3809
|
namespace_id: "default",
|
|
3492
3810
|
// Assert default namespace
|
|
3493
3811
|
runner_name_selector: "rivetkit",
|
|
@@ -3520,13 +3838,13 @@ var RegistryConfigSchema = _zod.z.object({
|
|
|
3520
3838
|
});
|
|
3521
3839
|
|
|
3522
3840
|
// src/registry/log.ts
|
|
3523
|
-
function
|
|
3524
|
-
return
|
|
3841
|
+
function logger7() {
|
|
3842
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "registry");
|
|
3525
3843
|
}
|
|
3526
3844
|
|
|
3527
3845
|
// src/registry/serve.ts
|
|
3528
3846
|
|
|
3529
|
-
async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
3847
|
+
async function crossPlatformServe(runConfig, rivetKitRouter, userRouter) {
|
|
3530
3848
|
const app = _nullishCoalesce(userRouter, () => ( new (0, _hono.Hono)()));
|
|
3531
3849
|
let serve;
|
|
3532
3850
|
try {
|
|
@@ -3536,7 +3854,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3536
3854
|
)));
|
|
3537
3855
|
serve = dep.serve;
|
|
3538
3856
|
} catch (err) {
|
|
3539
|
-
|
|
3857
|
+
logger7().error(
|
|
3540
3858
|
"failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'"
|
|
3541
3859
|
);
|
|
3542
3860
|
process.exit(1);
|
|
@@ -3550,7 +3868,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3550
3868
|
)));
|
|
3551
3869
|
createNodeWebSocket = dep.createNodeWebSocket;
|
|
3552
3870
|
} catch (err) {
|
|
3553
|
-
|
|
3871
|
+
logger7().error(
|
|
3554
3872
|
"failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'"
|
|
3555
3873
|
);
|
|
3556
3874
|
process.exit(1);
|
|
@@ -3558,10 +3876,10 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3558
3876
|
const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({
|
|
3559
3877
|
app
|
|
3560
3878
|
});
|
|
3561
|
-
const port =
|
|
3879
|
+
const port = runConfig.defaultServerPort;
|
|
3562
3880
|
const server = serve(
|
|
3563
3881
|
{ fetch: app.fetch, port },
|
|
3564
|
-
() =>
|
|
3882
|
+
() => logger7().info({ msg: "server listening", port })
|
|
3565
3883
|
);
|
|
3566
3884
|
injectWebSocket(server);
|
|
3567
3885
|
return { upgradeWebSocket };
|
|
@@ -3581,20 +3899,48 @@ var Registry = class {
|
|
|
3581
3899
|
*/
|
|
3582
3900
|
start(inputConfig) {
|
|
3583
3901
|
var _a, _b, _c;
|
|
3584
|
-
const config2 =
|
|
3902
|
+
const config2 = _chunkCA3X5M6Hcjs.RunnerConfigSchema.parse(inputConfig);
|
|
3903
|
+
if (config2.autoConfigureServerless && config2.runnerKind !== "serverless") {
|
|
3904
|
+
throw new Error(
|
|
3905
|
+
"autoConfigureServerless can only be configured when runnerKind is 'serverless'"
|
|
3906
|
+
);
|
|
3907
|
+
}
|
|
3908
|
+
const readyPromises = [];
|
|
3909
|
+
if (config2.runEngine) {
|
|
3910
|
+
logger7().debug({
|
|
3911
|
+
msg: "run engine requested",
|
|
3912
|
+
version: config2.runEngineVersion
|
|
3913
|
+
});
|
|
3914
|
+
_invariant2.default.call(void 0,
|
|
3915
|
+
config2.endpoint === void 0,
|
|
3916
|
+
"cannot specify 'endpoint' with 'runEngine'"
|
|
3917
|
+
);
|
|
3918
|
+
config2.endpoint = ENGINE_ENDPOINT;
|
|
3919
|
+
config2.disableActorDriver = true;
|
|
3920
|
+
const engineProcessPromise = ensureEngineProcess({
|
|
3921
|
+
version: config2.runEngineVersion
|
|
3922
|
+
});
|
|
3923
|
+
readyPromises.push(engineProcessPromise);
|
|
3924
|
+
}
|
|
3925
|
+
if (config2.runnerKind === "serverless") {
|
|
3926
|
+
config2.defaultServerPort = 8080;
|
|
3927
|
+
config2.overrideServerAddress = config2.endpoint;
|
|
3928
|
+
}
|
|
3585
3929
|
if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
|
|
3586
|
-
|
|
3930
|
+
_chunkYKVTF7MPcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
|
|
3587
3931
|
} else {
|
|
3588
|
-
|
|
3932
|
+
_chunkYKVTF7MPcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
|
|
3589
3933
|
}
|
|
3590
3934
|
const driver = chooseDefaultDriver(config2);
|
|
3591
3935
|
if (driver.name === "engine") {
|
|
3592
3936
|
config2.inspector.enabled = { manager: false, actor: true };
|
|
3593
|
-
config2.
|
|
3937
|
+
if (config2.runnerKind !== "serverless") {
|
|
3938
|
+
config2.disableDefaultServer = true;
|
|
3939
|
+
}
|
|
3594
3940
|
}
|
|
3595
3941
|
if (driver.name === "cloudflare-workers") {
|
|
3596
3942
|
config2.inspector.enabled = { manager: false, actor: true };
|
|
3597
|
-
config2.
|
|
3943
|
+
config2.disableDefaultServer = true;
|
|
3598
3944
|
config2.disableActorDriver = true;
|
|
3599
3945
|
config2.noWelcome = true;
|
|
3600
3946
|
}
|
|
@@ -3603,49 +3949,60 @@ var Registry = class {
|
|
|
3603
3949
|
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3604
3950
|
}
|
|
3605
3951
|
const managerDriver = driver.manager(this.#config, config2);
|
|
3606
|
-
|
|
3607
|
-
const client =
|
|
3952
|
+
_chunkSIWYIRXPcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
|
|
3953
|
+
const client = _chunkVZMXAZKCcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3608
3954
|
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3609
|
-
|
|
3955
|
+
logger7().info({
|
|
3610
3956
|
msg: "rivetkit ready",
|
|
3611
3957
|
driver: driver.name,
|
|
3612
3958
|
definitions: Object.keys(this.#config.use).length,
|
|
3613
3959
|
...driverLog
|
|
3614
3960
|
});
|
|
3615
|
-
if (
|
|
3616
|
-
|
|
3961
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3962
|
+
logger7().info({ msg: "inspector ready", url: _chunkSIWYIRXPcjs.getInspectorUrl.call(void 0, config2) });
|
|
3617
3963
|
}
|
|
3618
3964
|
if (!config2.noWelcome) {
|
|
3619
3965
|
const displayInfo = managerDriver.displayInformation();
|
|
3620
3966
|
console.log();
|
|
3621
|
-
console.log(` RivetKit ${
|
|
3622
|
-
|
|
3967
|
+
console.log(` RivetKit ${_chunkGIFHYL7Acjs.package_default.version} (${displayInfo.name})`);
|
|
3968
|
+
if (!config2.disableDefaultServer) {
|
|
3969
|
+
console.log(` - Endpoint: ${config2.endpoint}`);
|
|
3970
|
+
} else if (config2.overrideServerAddress) {
|
|
3971
|
+
console.log(` - Endpoint: ${config2.overrideServerAddress}`);
|
|
3972
|
+
}
|
|
3973
|
+
if (config2.runEngine) {
|
|
3974
|
+
const padding = " ".repeat(Math.max(0, 13 - "Engine".length));
|
|
3975
|
+
console.log(` - Engine:${padding}v${config2.runEngineVersion}`);
|
|
3976
|
+
}
|
|
3623
3977
|
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3624
3978
|
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3625
3979
|
console.log(` - ${k}:${padding}${v}`);
|
|
3626
3980
|
}
|
|
3627
|
-
if (
|
|
3628
|
-
console.log(` - Inspector:
|
|
3981
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3982
|
+
console.log(` - Inspector: ${_chunkSIWYIRXPcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
3629
3983
|
}
|
|
3630
3984
|
console.log();
|
|
3631
3985
|
}
|
|
3632
3986
|
if (!config2.disableActorDriver) {
|
|
3633
|
-
|
|
3634
|
-
this.#config,
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
)
|
|
3987
|
+
Promise.all(readyPromises).then(async () => {
|
|
3988
|
+
driver.actor(this.#config, config2, managerDriver, client);
|
|
3989
|
+
});
|
|
3990
|
+
}
|
|
3991
|
+
if (config2.runnerKind === "serverless" && config2.autoConfigureServerless) {
|
|
3992
|
+
Promise.all(readyPromises).then(async () => {
|
|
3993
|
+
await configureServerlessRunner(config2);
|
|
3994
|
+
});
|
|
3639
3995
|
}
|
|
3640
3996
|
const { router: hono } = createManagerRouter(
|
|
3641
3997
|
this.#config,
|
|
3642
3998
|
config2,
|
|
3643
3999
|
managerDriver,
|
|
3644
|
-
|
|
4000
|
+
driver,
|
|
4001
|
+
client
|
|
3645
4002
|
);
|
|
3646
|
-
if (!config2.
|
|
4003
|
+
if (!config2.disableDefaultServer) {
|
|
3647
4004
|
(async () => {
|
|
3648
|
-
const out = await crossPlatformServe(hono, void 0);
|
|
4005
|
+
const out = await crossPlatformServe(config2, hono, void 0);
|
|
3649
4006
|
upgradeWebSocket = out.upgradeWebSocket;
|
|
3650
4007
|
})();
|
|
3651
4008
|
}
|
|
@@ -3654,83 +4011,63 @@ var Registry = class {
|
|
|
3654
4011
|
fetch: hono.fetch.bind(hono)
|
|
3655
4012
|
};
|
|
3656
4013
|
}
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
if (
|
|
3661
|
-
|
|
3662
|
-
}
|
|
3663
|
-
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
if (
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3680
|
-
}
|
|
3681
|
-
const managerDriver = driver.manager(this.#config, config2);
|
|
3682
|
-
const client = _chunkKDNB2BQXcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3683
|
-
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3684
|
-
logger6().info({
|
|
3685
|
-
msg: "rivetkit ready",
|
|
3686
|
-
driver: driver.name,
|
|
3687
|
-
definitions: Object.keys(this.#config.use).length,
|
|
3688
|
-
...driverLog
|
|
3689
|
-
});
|
|
3690
|
-
if (((_d = config2.inspector) == null ? void 0 : _d.enabled) && managerDriver.inspector) {
|
|
3691
|
-
logger6().info({ msg: "inspector ready", url: _chunkQGUQB3NCcjs.getInspectorUrl.call(void 0, config2) });
|
|
3692
|
-
}
|
|
3693
|
-
if (!config2.noWelcome) {
|
|
3694
|
-
const displayInfo = managerDriver.displayInformation();
|
|
3695
|
-
console.log();
|
|
3696
|
-
console.log(` RivetKit ${_chunkDQVVH5ZKcjs.package_default.version} (${displayInfo.name})`);
|
|
3697
|
-
console.log(` - Endpoint: http://127.0.0.1:6420`);
|
|
3698
|
-
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3699
|
-
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3700
|
-
console.log(` - ${k}:${padding}${v}`);
|
|
3701
|
-
}
|
|
3702
|
-
if (((_e = config2.inspector) == null ? void 0 : _e.enabled) && managerDriver.inspector) {
|
|
3703
|
-
console.log(` - Inspector: ${_chunkQGUQB3NCcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
4014
|
+
};
|
|
4015
|
+
async function configureServerlessRunner(config2) {
|
|
4016
|
+
try {
|
|
4017
|
+
if (!config2.runnerName) {
|
|
4018
|
+
throw new Error("runnerName is required for serverless configuration");
|
|
4019
|
+
}
|
|
4020
|
+
if (!config2.namespace) {
|
|
4021
|
+
throw new Error("namespace is required for serverless configuration");
|
|
4022
|
+
}
|
|
4023
|
+
if (!config2.endpoint) {
|
|
4024
|
+
throw new Error("endpoint is required for serverless configuration");
|
|
4025
|
+
}
|
|
4026
|
+
const customConfig = typeof config2.autoConfigureServerless === "object" ? config2.autoConfigureServerless : {};
|
|
4027
|
+
const requestBody = {
|
|
4028
|
+
serverless: {
|
|
4029
|
+
url: customConfig.url || `http://localhost:${config2.defaultServerPort}/start`,
|
|
4030
|
+
headers: customConfig.headers || {},
|
|
4031
|
+
max_runners: _nullishCoalesce(customConfig.maxRunners, () => ( 100)),
|
|
4032
|
+
min_runners: _nullishCoalesce(customConfig.minRunners, () => ( 0)),
|
|
4033
|
+
request_lifespan: _nullishCoalesce(customConfig.requestLifespan, () => ( 15 * 60)),
|
|
4034
|
+
runners_margin: _nullishCoalesce(customConfig.runnersMargin, () => ( 0)),
|
|
4035
|
+
slots_per_runner: _nullishCoalesce(_nullishCoalesce(customConfig.slotsPerRunner, () => ( config2.totalSlots)), () => ( 1e3))
|
|
3704
4036
|
}
|
|
3705
|
-
console.log();
|
|
3706
|
-
}
|
|
3707
|
-
let serverlessActorDriverBuilder = (token, totalSlots) => {
|
|
3708
|
-
if (token) config2.token = token;
|
|
3709
|
-
if (totalSlots) config2.totalSlots = totalSlots;
|
|
3710
|
-
return driver.actor(this.#config, config2, managerDriver, client);
|
|
3711
4037
|
};
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
4038
|
+
const configUrl = `${config2.endpoint}/runner-configs/${config2.runnerName}?namespace=${config2.namespace}`;
|
|
4039
|
+
logger7().debug({
|
|
4040
|
+
msg: "configuring serverless runner",
|
|
4041
|
+
url: configUrl,
|
|
4042
|
+
config: requestBody.serverless
|
|
4043
|
+
});
|
|
4044
|
+
const response = await fetch(configUrl, {
|
|
4045
|
+
method: "PUT",
|
|
4046
|
+
headers: {
|
|
4047
|
+
"Content-Type": "application/json",
|
|
4048
|
+
...config2.token ? { Authorization: `Bearer ${config2.token}` } : {}
|
|
4049
|
+
},
|
|
4050
|
+
body: JSON.stringify(requestBody)
|
|
4051
|
+
});
|
|
4052
|
+
if (!response.ok) {
|
|
4053
|
+
const errorText = await response.text();
|
|
4054
|
+
throw new Error(
|
|
4055
|
+
`failed to configure serverless runner: ${response.status} ${response.statusText} - ${errorText}`
|
|
4056
|
+
);
|
|
3727
4057
|
}
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
4058
|
+
logger7().info({
|
|
4059
|
+
msg: "serverless runner configured successfully",
|
|
4060
|
+
runnerName: config2.runnerName,
|
|
4061
|
+
namespace: config2.namespace
|
|
4062
|
+
});
|
|
4063
|
+
} catch (error) {
|
|
4064
|
+
logger7().error({
|
|
4065
|
+
msg: "failed to configure serverless runner",
|
|
4066
|
+
error
|
|
4067
|
+
});
|
|
4068
|
+
throw error;
|
|
3732
4069
|
}
|
|
3733
|
-
}
|
|
4070
|
+
}
|
|
3734
4071
|
function setup(input) {
|
|
3735
4072
|
const config2 = RegistryConfigSchema.parse(input);
|
|
3736
4073
|
return new Registry(config2);
|
|
@@ -3752,4 +4089,4 @@ function setup(input) {
|
|
|
3752
4089
|
|
|
3753
4090
|
exports.handleWebSocketConnect = handleWebSocketConnect; exports.handleRawWebSocketHandler = handleRawWebSocketHandler; exports.createActorRouter = createActorRouter; exports.actor = actor; exports.InlineWebSocketAdapter2 = InlineWebSocketAdapter2; exports.createEngineDriver = createEngineDriver; exports.createFileSystemOrMemoryDriver = createFileSystemOrMemoryDriver; exports.createFileSystemDriver = createFileSystemDriver; exports.createMemoryDriver = createMemoryDriver; exports.createManagerRouter = createManagerRouter; exports.RegistryConfigSchema = RegistryConfigSchema; exports.Registry = Registry; exports.setup = setup;
|
|
3754
4091
|
//! These configs configs hold anything that's not platform-specific about running actors.
|
|
3755
|
-
//# sourceMappingURL=chunk-
|
|
4092
|
+
//# sourceMappingURL=chunk-PDFL7FBL.cjs.map
|