rivetkit 2.0.9 → 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-APHV6WXU.js → chunk-346X2XU4.js} +2 -2
- package/dist/tsup/{chunk-DLPIL3VC.js → chunk-7E5K3375.js} +2 -2
- package/dist/tsup/{chunk-SOC4HWCG.cjs → chunk-CA3X5M6H.cjs} +92 -39
- package/dist/tsup/{chunk-VVCL5DXN.js.map → chunk-CA3X5M6H.cjs.map} +1 -1
- package/dist/tsup/{chunk-2MJYYF2Q.cjs → chunk-DVPXSB4B.cjs} +12 -12
- package/dist/tsup/{chunk-2MJYYF2Q.cjs.map → chunk-DVPXSB4B.cjs.map} +1 -1
- package/dist/tsup/{chunk-U2IXX6DY.cjs → chunk-GIFHYL7A.cjs} +5 -6
- package/dist/tsup/chunk-GIFHYL7A.cjs.map +1 -0
- package/dist/tsup/{chunk-KHZ2QSQ4.js → chunk-H7E2UU23.js} +32 -10
- package/dist/tsup/chunk-H7E2UU23.js.map +1 -0
- package/dist/tsup/{chunk-E63WU5PL.js → chunk-HI55LHM3.js} +5 -6
- package/dist/tsup/chunk-HI55LHM3.js.map +1 -0
- package/dist/tsup/{chunk-SDXTJDDR.cjs → chunk-I3FB346I.cjs} +58 -14
- package/dist/tsup/chunk-I3FB346I.cjs.map +1 -0
- package/dist/tsup/{chunk-WBSPHV5V.js → chunk-KGDZYQYE.js} +2 -2
- package/dist/tsup/{chunk-A44TWAS5.cjs → chunk-KH5WFDUK.cjs} +6 -6
- package/dist/tsup/{chunk-A44TWAS5.cjs.map → chunk-KH5WFDUK.cjs.map} +1 -1
- package/dist/tsup/{chunk-YR2VY4XS.js → chunk-KL4V2ULR.js} +5 -4
- package/dist/tsup/chunk-KL4V2ULR.js.map +1 -0
- package/dist/tsup/{chunk-R7OP5N25.js → chunk-MLQIYKAZ.js} +53 -9
- package/dist/tsup/chunk-MLQIYKAZ.js.map +1 -0
- package/dist/tsup/{chunk-F2YZNUPU.js → chunk-N3A5GYJU.js} +3 -3
- package/dist/tsup/{chunk-4YV6RDZL.cjs → chunk-PDFL7FBL.cjs} +698 -358
- package/dist/tsup/chunk-PDFL7FBL.cjs.map +1 -0
- package/dist/tsup/{chunk-DZZQG7VH.cjs → chunk-PPLR53PP.cjs} +3 -3
- package/dist/tsup/{chunk-DZZQG7VH.cjs.map → chunk-PPLR53PP.cjs.map} +1 -1
- package/dist/tsup/{chunk-7OMMIAWP.cjs → chunk-PSCDCEXM.cjs} +17 -12
- package/dist/tsup/chunk-PSCDCEXM.cjs.map +1 -0
- package/dist/tsup/{chunk-VVCL5DXN.js → chunk-QRFXXTLG.js} +96 -43
- package/dist/tsup/chunk-QRFXXTLG.js.map +1 -0
- package/dist/tsup/{chunk-WRSWUDFA.js → chunk-R2S45MO6.js} +14 -9
- package/dist/tsup/chunk-R2S45MO6.js.map +1 -0
- package/dist/tsup/{chunk-QGRYH6TU.cjs → chunk-SIWYIRXP.cjs} +7 -6
- package/dist/tsup/chunk-SIWYIRXP.cjs.map +1 -0
- package/dist/tsup/{chunk-FZP2IBIX.js → chunk-VJRXZPTT.js} +579 -239
- package/dist/tsup/chunk-VJRXZPTT.js.map +1 -0
- package/dist/tsup/{chunk-4PSLOAXR.cjs → chunk-VZMXAZKC.cjs} +226 -204
- package/dist/tsup/chunk-VZMXAZKC.cjs.map +1 -0
- package/dist/tsup/{chunk-DL7TPF63.cjs → chunk-YKVTF7MP.cjs} +7 -7
- package/dist/tsup/{chunk-DL7TPF63.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-CEh3WKbA.d.cts → conn-Cc9WHuN4.d.cts} +196 -191
- package/dist/tsup/{conn-Bt8rkUzm.d.ts → conn-DfPG71FA.d.ts} +196 -191
- package/dist/tsup/driver-helpers/mod.cjs +5 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +1 -1
- package/dist/tsup/driver-helpers/mod.d.ts +1 -1
- package/dist/tsup/driver-helpers/mod.js +6 -6
- 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/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 +4 -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 +2 -2
- package/src/manager/gateway.ts +29 -11
- package/src/manager/router-schema.ts +20 -0
- package/src/manager/router.ts +105 -23
- package/src/registry/mod.ts +145 -119
- package/src/registry/run-config.ts +116 -47
- package/src/registry/serve.ts +3 -1
- package/src/serde.ts +3 -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-4PSLOAXR.cjs.map +0 -1
- package/dist/tsup/chunk-4YV6RDZL.cjs.map +0 -1
- package/dist/tsup/chunk-7OMMIAWP.cjs.map +0 -1
- package/dist/tsup/chunk-E63WU5PL.js.map +0 -1
- package/dist/tsup/chunk-FZP2IBIX.js.map +0 -1
- package/dist/tsup/chunk-KHZ2QSQ4.js.map +0 -1
- package/dist/tsup/chunk-QGRYH6TU.cjs.map +0 -1
- package/dist/tsup/chunk-R7OP5N25.js.map +0 -1
- package/dist/tsup/chunk-SDXTJDDR.cjs.map +0 -1
- package/dist/tsup/chunk-SOC4HWCG.cjs.map +0 -1
- package/dist/tsup/chunk-U2IXX6DY.cjs.map +0 -1
- package/dist/tsup/chunk-WRSWUDFA.js.map +0 -1
- package/dist/tsup/chunk-YR2VY4XS.js.map +0 -1
- /package/dist/tsup/{chunk-APHV6WXU.js.map → chunk-346X2XU4.js.map} +0 -0
- /package/dist/tsup/{chunk-DLPIL3VC.js.map → chunk-7E5K3375.js.map} +0 -0
- /package/dist/tsup/{chunk-WBSPHV5V.js.map → chunk-KGDZYQYE.js.map} +0 -0
- /package/dist/tsup/{chunk-F2YZNUPU.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 _chunkQGRYH6TUcjs = require('./chunk-QGRYH6TU.cjs');
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var _chunk4PSLOAXRcjs = require('./chunk-4PSLOAXR.cjs');
|
|
18
17
|
|
|
18
|
+
var _chunkVZMXAZKCcjs = require('./chunk-VZMXAZKC.cjs');
|
|
19
19
|
|
|
20
|
-
var _chunk2MJYYF2Qcjs = require('./chunk-2MJYYF2Q.cjs');
|
|
21
20
|
|
|
21
|
+
var _chunkDVPXSB4Bcjs = require('./chunk-DVPXSB4B.cjs');
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -28,8 +28,8 @@ var _chunk2MJYYF2Qcjs = require('./chunk-2MJYYF2Q.cjs');
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
var _chunkSOC4HWCGcjs = require('./chunk-SOC4HWCG.cjs');
|
|
32
31
|
|
|
32
|
+
var _chunkCA3X5M6Hcjs = require('./chunk-CA3X5M6H.cjs');
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
@@ -54,13 +54,13 @@ var _chunkSOC4HWCGcjs = require('./chunk-SOC4HWCG.cjs');
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
var _chunkSDXTJDDRcjs = require('./chunk-SDXTJDDR.cjs');
|
|
58
57
|
|
|
58
|
+
var _chunkI3FB346Icjs = require('./chunk-I3FB346I.cjs');
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
|
|
63
62
|
|
|
63
|
+
var _chunkYKVTF7MPcjs = require('./chunk-YKVTF7MP.cjs');
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
@@ -69,7 +69,10 @@ var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.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(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( "http://localhost:6420"))
|
|
1735
|
-
),
|
|
1736
|
-
token: _zod.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
|
|
1737
|
-
pegboardEndpoint: _zod.z.string().optional(),
|
|
1738
|
-
namespace: _zod.z.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
|
|
1739
|
-
runnerName: _zod.z.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.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(_chunkU2IXX6DYcjs.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 = _chunkSOC4HWCGcjs.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
|
|
|
@@ -2784,6 +3018,7 @@ var _zodopenapi = require('@hono/zod-openapi');
|
|
|
2784
3018
|
|
|
2785
3019
|
|
|
2786
3020
|
|
|
3021
|
+
var _factory = require('hono/factory');
|
|
2787
3022
|
|
|
2788
3023
|
|
|
2789
3024
|
|
|
@@ -2838,12 +3073,24 @@ async function actorGateway(runConfig, managerDriver, c, next) {
|
|
|
2838
3073
|
if (c.req.path.startsWith("/.test/")) {
|
|
2839
3074
|
return next();
|
|
2840
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
|
+
}
|
|
2841
3083
|
if (c.req.header("upgrade") === "websocket") {
|
|
2842
|
-
return await handleWebSocketGateway(
|
|
3084
|
+
return await handleWebSocketGateway(
|
|
3085
|
+
runConfig,
|
|
3086
|
+
managerDriver,
|
|
3087
|
+
c,
|
|
3088
|
+
strippedPath
|
|
3089
|
+
);
|
|
2843
3090
|
}
|
|
2844
|
-
return await handleHttpGateway(managerDriver, c, next);
|
|
3091
|
+
return await handleHttpGateway(managerDriver, c, next, strippedPath);
|
|
2845
3092
|
}
|
|
2846
|
-
async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
3093
|
+
async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath) {
|
|
2847
3094
|
var _a;
|
|
2848
3095
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
2849
3096
|
if (!upgradeWebSocket) {
|
|
@@ -2859,20 +3106,20 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2859
3106
|
if (protocols) {
|
|
2860
3107
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
2861
3108
|
for (const protocol of protocolList) {
|
|
2862
|
-
if (protocol.startsWith(
|
|
2863
|
-
target = protocol.substring(
|
|
2864
|
-
} else if (protocol.startsWith(
|
|
2865
|
-
actorId = protocol.substring(
|
|
2866
|
-
} else if (protocol.startsWith(
|
|
2867
|
-
encodingRaw = protocol.substring(
|
|
2868
|
-
} 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)) {
|
|
2869
3116
|
connParamsRaw = decodeURIComponent(
|
|
2870
|
-
protocol.substring(
|
|
3117
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
2871
3118
|
);
|
|
2872
|
-
} else if (protocol.startsWith(
|
|
2873
|
-
connIdRaw = protocol.substring(
|
|
2874
|
-
} else if (protocol.startsWith(
|
|
2875
|
-
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);
|
|
2876
3123
|
}
|
|
2877
3124
|
}
|
|
2878
3125
|
}
|
|
@@ -2885,12 +3132,12 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2885
3132
|
logger().debug({
|
|
2886
3133
|
msg: "proxying websocket to actor",
|
|
2887
3134
|
actorId,
|
|
2888
|
-
path:
|
|
3135
|
+
path: strippedPath,
|
|
2889
3136
|
encoding: encodingRaw
|
|
2890
3137
|
});
|
|
2891
3138
|
const encoding = encodingRaw || "json";
|
|
2892
3139
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
2893
|
-
const pathWithQuery = c.req.url.includes("?") ?
|
|
3140
|
+
const pathWithQuery = c.req.url.includes("?") ? strippedPath + c.req.url.substring(c.req.url.indexOf("?")) : strippedPath;
|
|
2894
3141
|
return await managerDriver.proxyWebSocket(
|
|
2895
3142
|
c,
|
|
2896
3143
|
pathWithQuery,
|
|
@@ -2902,9 +3149,9 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
|
2902
3149
|
connTokenRaw
|
|
2903
3150
|
);
|
|
2904
3151
|
}
|
|
2905
|
-
async function handleHttpGateway(managerDriver, c, next) {
|
|
2906
|
-
const target = c.req.header(
|
|
2907
|
-
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);
|
|
2908
3155
|
if (target !== "actor") {
|
|
2909
3156
|
return next();
|
|
2910
3157
|
}
|
|
@@ -2914,19 +3161,20 @@ async function handleHttpGateway(managerDriver, c, next) {
|
|
|
2914
3161
|
logger().debug({
|
|
2915
3162
|
msg: "proxying request to actor",
|
|
2916
3163
|
actorId,
|
|
2917
|
-
path:
|
|
3164
|
+
path: strippedPath,
|
|
2918
3165
|
method: c.req.method
|
|
2919
3166
|
});
|
|
2920
3167
|
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
2921
|
-
proxyHeaders.delete(
|
|
2922
|
-
proxyHeaders.delete(
|
|
3168
|
+
proxyHeaders.delete(_chunkI3FB346Icjs.HEADER_RIVET_TARGET);
|
|
3169
|
+
proxyHeaders.delete(_chunkI3FB346Icjs.HEADER_RIVET_ACTOR);
|
|
2923
3170
|
const url = new URL(c.req.url);
|
|
2924
|
-
const proxyUrl = new URL(`http://actor${
|
|
3171
|
+
const proxyUrl = new URL(`http://actor${strippedPath}${url.search}`);
|
|
2925
3172
|
const proxyRequest = new Request(proxyUrl, {
|
|
2926
3173
|
method: c.req.raw.method,
|
|
2927
3174
|
headers: proxyHeaders,
|
|
2928
3175
|
body: c.req.raw.body,
|
|
2929
|
-
signal: c.req.raw.signal
|
|
3176
|
+
signal: c.req.raw.signal,
|
|
3177
|
+
duplex: "half"
|
|
2930
3178
|
});
|
|
2931
3179
|
return await managerDriver.proxyRequest(c, proxyRequest, actorId);
|
|
2932
3180
|
}
|
|
@@ -2936,7 +3184,7 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
2936
3184
|
promise: serverWsPromise,
|
|
2937
3185
|
resolve: serverWsResolve,
|
|
2938
3186
|
reject: serverWsReject
|
|
2939
|
-
} =
|
|
3187
|
+
} = _chunkGIFHYL7Acjs.promiseWithResolvers.call(void 0, );
|
|
2940
3188
|
try {
|
|
2941
3189
|
logger().debug({ msg: "awaiting client websocket promise" });
|
|
2942
3190
|
const ws = await clientWsPromise;
|
|
@@ -3102,6 +3350,22 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
3102
3350
|
};
|
|
3103
3351
|
}
|
|
3104
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
|
+
|
|
3105
3369
|
// src/manager/router.ts
|
|
3106
3370
|
function buildOpenApiResponses(schema) {
|
|
3107
3371
|
return {
|
|
@@ -3121,21 +3385,42 @@ function buildOpenApiResponses(schema) {
|
|
|
3121
3385
|
}
|
|
3122
3386
|
};
|
|
3123
3387
|
}
|
|
3124
|
-
function createManagerRouter(registryConfig, runConfig, managerDriver,
|
|
3388
|
+
function createManagerRouter(registryConfig, runConfig, managerDriver, driverConfig, client) {
|
|
3125
3389
|
const router = new (0, _zodopenapi.OpenAPIHono)({ strict: false }).basePath(
|
|
3126
3390
|
runConfig.basePath
|
|
3127
3391
|
);
|
|
3128
3392
|
router.use("*", loggerMiddleware(logger()));
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
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") {
|
|
3132
3415
|
addManagerRoutes(registryConfig, runConfig, managerDriver, router);
|
|
3416
|
+
} else {
|
|
3417
|
+
_chunkGIFHYL7Acjs.assertUnreachable.call(void 0, runConfig.runnerKind);
|
|
3133
3418
|
}
|
|
3134
3419
|
router.notFound(handleRouteNotFound);
|
|
3135
3420
|
router.onError(handleRouteError);
|
|
3136
3421
|
return { router, openapi: router };
|
|
3137
3422
|
}
|
|
3138
|
-
function addServerlessRoutes(runConfig,
|
|
3423
|
+
function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDriver, client, router) {
|
|
3139
3424
|
if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
|
|
3140
3425
|
router.get("/", (c) => {
|
|
3141
3426
|
return c.text(
|
|
@@ -3143,12 +3428,39 @@ function addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router) {
|
|
|
3143
3428
|
);
|
|
3144
3429
|
});
|
|
3145
3430
|
router.get("/start", async (c) => {
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
c.req.header("x-
|
|
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
|
|
3149
3463
|
);
|
|
3150
|
-
if (isNaN(totalSlots)) totalSlots = void 0;
|
|
3151
|
-
const actorDriver = serverlessActorDriverBuilder(token, totalSlots);
|
|
3152
3464
|
_invariant2.default.call(void 0,
|
|
3153
3465
|
actorDriver.serverlessHandleStart,
|
|
3154
3466
|
"missing serverlessHandleStart on ActorDriver"
|
|
@@ -3156,18 +3468,22 @@ function addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router) {
|
|
|
3156
3468
|
return await actorDriver.serverlessHandleStart(c);
|
|
3157
3469
|
});
|
|
3158
3470
|
router.get("/health", (c) => {
|
|
3159
|
-
return c.
|
|
3471
|
+
return c.json({
|
|
3472
|
+
status: "ok",
|
|
3473
|
+
runtime: "rivetkit",
|
|
3474
|
+
version: _chunkGIFHYL7Acjs.VERSION
|
|
3475
|
+
});
|
|
3160
3476
|
});
|
|
3161
3477
|
}
|
|
3162
3478
|
function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
3163
3479
|
var _a;
|
|
3164
|
-
if (
|
|
3480
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
|
|
3165
3481
|
if (!managerDriver.inspector) {
|
|
3166
3482
|
throw new (0, _chunk5QGQK44Lcjs.Unsupported)("inspector");
|
|
3167
3483
|
}
|
|
3168
3484
|
router.route(
|
|
3169
3485
|
"/inspect",
|
|
3170
|
-
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(
|
|
3486
|
+
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkSIWYIRXPcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
|
|
3171
3487
|
c.set("inspector", managerDriver.inspector);
|
|
3172
3488
|
return next();
|
|
3173
3489
|
}).route("/", createManagerInspectorRouter())
|
|
@@ -3329,7 +3645,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3329
3645
|
const output = await managerDriver[method](...args);
|
|
3330
3646
|
response = { ok: output };
|
|
3331
3647
|
} catch (rawErr) {
|
|
3332
|
-
const err =
|
|
3648
|
+
const err = _chunkGIFHYL7Acjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
|
|
3333
3649
|
response = { err };
|
|
3334
3650
|
}
|
|
3335
3651
|
return c.body(cbor4.encode(response));
|
|
@@ -3344,34 +3660,34 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3344
3660
|
let actorId = "";
|
|
3345
3661
|
let encoding = "bare";
|
|
3346
3662
|
let transport = "websocket";
|
|
3347
|
-
let
|
|
3663
|
+
let path4 = "";
|
|
3348
3664
|
let params;
|
|
3349
3665
|
let connId;
|
|
3350
3666
|
let connToken;
|
|
3351
3667
|
for (const protocol of protocols) {
|
|
3352
|
-
if (protocol.startsWith(
|
|
3353
|
-
actorId = protocol.substring(
|
|
3354
|
-
} 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)) {
|
|
3355
3671
|
encoding = protocol.substring(
|
|
3356
|
-
|
|
3672
|
+
_chunkI3FB346Icjs.WS_PROTOCOL_ENCODING.length
|
|
3357
3673
|
);
|
|
3358
|
-
} else if (protocol.startsWith(
|
|
3674
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_TRANSPORT)) {
|
|
3359
3675
|
transport = protocol.substring(
|
|
3360
|
-
|
|
3676
|
+
_chunkI3FB346Icjs.WS_PROTOCOL_TRANSPORT.length
|
|
3361
3677
|
);
|
|
3362
|
-
} else if (protocol.startsWith(
|
|
3363
|
-
|
|
3364
|
-
protocol.substring(
|
|
3678
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_PATH)) {
|
|
3679
|
+
path4 = decodeURIComponent(
|
|
3680
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_PATH.length)
|
|
3365
3681
|
);
|
|
3366
|
-
} else if (protocol.startsWith(
|
|
3682
|
+
} else if (protocol.startsWith(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3367
3683
|
const paramsRaw = decodeURIComponent(
|
|
3368
|
-
protocol.substring(
|
|
3684
|
+
protocol.substring(_chunkI3FB346Icjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3369
3685
|
);
|
|
3370
3686
|
params = JSON.parse(paramsRaw);
|
|
3371
|
-
} else if (protocol.startsWith(
|
|
3372
|
-
connId = protocol.substring(
|
|
3373
|
-
} else if (protocol.startsWith(
|
|
3374
|
-
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);
|
|
3375
3691
|
}
|
|
3376
3692
|
}
|
|
3377
3693
|
logger().debug({
|
|
@@ -3380,10 +3696,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3380
3696
|
params,
|
|
3381
3697
|
encodingKind: encoding,
|
|
3382
3698
|
transport,
|
|
3383
|
-
path:
|
|
3699
|
+
path: path4
|
|
3384
3700
|
});
|
|
3385
3701
|
const clientWsPromise = managerDriver.openWebSocket(
|
|
3386
|
-
|
|
3702
|
+
path4,
|
|
3387
3703
|
actorId,
|
|
3388
3704
|
encoding,
|
|
3389
3705
|
params,
|
|
@@ -3391,10 +3707,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3391
3707
|
connToken
|
|
3392
3708
|
);
|
|
3393
3709
|
return await createTestWebSocketProxy(clientWsPromise);
|
|
3394
|
-
})(c,
|
|
3710
|
+
})(c, _chunkGIFHYL7Acjs.noopNext.call(void 0, ));
|
|
3395
3711
|
});
|
|
3396
3712
|
router.all(".test/inline-driver/send-request/*", async (c) => {
|
|
3397
|
-
const actorId = c.req.header(
|
|
3713
|
+
const actorId = c.req.header(_chunkI3FB346Icjs.HEADER_ACTOR_ID);
|
|
3398
3714
|
if (!actorId) {
|
|
3399
3715
|
return c.text("Missing required headers", 400);
|
|
3400
3716
|
}
|
|
@@ -3421,9 +3737,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3421
3737
|
} catch (error) {
|
|
3422
3738
|
logger().error({
|
|
3423
3739
|
msg: "error in test inline raw http",
|
|
3424
|
-
error:
|
|
3740
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, error)
|
|
3425
3741
|
});
|
|
3426
|
-
const err =
|
|
3742
|
+
const err = _chunkGIFHYL7Acjs.deconstructError.call(void 0, error, logger(), {}, true);
|
|
3427
3743
|
return c.json(
|
|
3428
3744
|
{
|
|
3429
3745
|
error: {
|
|
@@ -3465,14 +3781,19 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3465
3781
|
} catch (error) {
|
|
3466
3782
|
logger().error({
|
|
3467
3783
|
msg: "error forcing disconnect",
|
|
3468
|
-
error:
|
|
3784
|
+
error: _chunkGIFHYL7Acjs.stringifyError.call(void 0, error)
|
|
3469
3785
|
});
|
|
3470
3786
|
return c.text(`Error: ${error}`, 500);
|
|
3471
3787
|
}
|
|
3472
3788
|
});
|
|
3473
3789
|
}
|
|
3474
3790
|
router.get("/health", (c) => {
|
|
3475
|
-
return c.
|
|
3791
|
+
return c.json({
|
|
3792
|
+
status: "ok",
|
|
3793
|
+
rivetkit: {
|
|
3794
|
+
version: _chunkGIFHYL7Acjs.VERSION
|
|
3795
|
+
}
|
|
3796
|
+
});
|
|
3476
3797
|
});
|
|
3477
3798
|
(_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(
|
|
3478
3799
|
managerDriver,
|
|
@@ -3484,7 +3805,7 @@ function createApiActor(actor2) {
|
|
|
3484
3805
|
return {
|
|
3485
3806
|
actor_id: actor2.actorId,
|
|
3486
3807
|
name: actor2.name,
|
|
3487
|
-
key:
|
|
3808
|
+
key: _chunkVZMXAZKCcjs.serializeActorKey.call(void 0, actor2.key),
|
|
3488
3809
|
namespace_id: "default",
|
|
3489
3810
|
// Assert default namespace
|
|
3490
3811
|
runner_name_selector: "rivetkit",
|
|
@@ -3517,13 +3838,13 @@ var RegistryConfigSchema = _zod.z.object({
|
|
|
3517
3838
|
});
|
|
3518
3839
|
|
|
3519
3840
|
// src/registry/log.ts
|
|
3520
|
-
function
|
|
3521
|
-
return
|
|
3841
|
+
function logger7() {
|
|
3842
|
+
return _chunkYKVTF7MPcjs.getLogger.call(void 0, "registry");
|
|
3522
3843
|
}
|
|
3523
3844
|
|
|
3524
3845
|
// src/registry/serve.ts
|
|
3525
3846
|
|
|
3526
|
-
async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
3847
|
+
async function crossPlatformServe(runConfig, rivetKitRouter, userRouter) {
|
|
3527
3848
|
const app = _nullishCoalesce(userRouter, () => ( new (0, _hono.Hono)()));
|
|
3528
3849
|
let serve;
|
|
3529
3850
|
try {
|
|
@@ -3533,7 +3854,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3533
3854
|
)));
|
|
3534
3855
|
serve = dep.serve;
|
|
3535
3856
|
} catch (err) {
|
|
3536
|
-
|
|
3857
|
+
logger7().error(
|
|
3537
3858
|
"failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'"
|
|
3538
3859
|
);
|
|
3539
3860
|
process.exit(1);
|
|
@@ -3547,7 +3868,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3547
3868
|
)));
|
|
3548
3869
|
createNodeWebSocket = dep.createNodeWebSocket;
|
|
3549
3870
|
} catch (err) {
|
|
3550
|
-
|
|
3871
|
+
logger7().error(
|
|
3551
3872
|
"failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'"
|
|
3552
3873
|
);
|
|
3553
3874
|
process.exit(1);
|
|
@@ -3555,10 +3876,10 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
|
|
|
3555
3876
|
const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({
|
|
3556
3877
|
app
|
|
3557
3878
|
});
|
|
3558
|
-
const port =
|
|
3879
|
+
const port = runConfig.defaultServerPort;
|
|
3559
3880
|
const server = serve(
|
|
3560
3881
|
{ fetch: app.fetch, port },
|
|
3561
|
-
() =>
|
|
3882
|
+
() => logger7().info({ msg: "server listening", port })
|
|
3562
3883
|
);
|
|
3563
3884
|
injectWebSocket(server);
|
|
3564
3885
|
return { upgradeWebSocket };
|
|
@@ -3578,20 +3899,48 @@ var Registry = class {
|
|
|
3578
3899
|
*/
|
|
3579
3900
|
start(inputConfig) {
|
|
3580
3901
|
var _a, _b, _c;
|
|
3581
|
-
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
|
+
}
|
|
3582
3929
|
if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
|
|
3583
|
-
|
|
3930
|
+
_chunkYKVTF7MPcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
|
|
3584
3931
|
} else {
|
|
3585
|
-
|
|
3932
|
+
_chunkYKVTF7MPcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
|
|
3586
3933
|
}
|
|
3587
3934
|
const driver = chooseDefaultDriver(config2);
|
|
3588
3935
|
if (driver.name === "engine") {
|
|
3589
3936
|
config2.inspector.enabled = { manager: false, actor: true };
|
|
3590
|
-
config2.
|
|
3937
|
+
if (config2.runnerKind !== "serverless") {
|
|
3938
|
+
config2.disableDefaultServer = true;
|
|
3939
|
+
}
|
|
3591
3940
|
}
|
|
3592
3941
|
if (driver.name === "cloudflare-workers") {
|
|
3593
3942
|
config2.inspector.enabled = { manager: false, actor: true };
|
|
3594
|
-
config2.
|
|
3943
|
+
config2.disableDefaultServer = true;
|
|
3595
3944
|
config2.disableActorDriver = true;
|
|
3596
3945
|
config2.noWelcome = true;
|
|
3597
3946
|
}
|
|
@@ -3600,49 +3949,60 @@ var Registry = class {
|
|
|
3600
3949
|
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3601
3950
|
}
|
|
3602
3951
|
const managerDriver = driver.manager(this.#config, config2);
|
|
3603
|
-
|
|
3604
|
-
const client =
|
|
3952
|
+
_chunkSIWYIRXPcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
|
|
3953
|
+
const client = _chunkVZMXAZKCcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3605
3954
|
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3606
|
-
|
|
3955
|
+
logger7().info({
|
|
3607
3956
|
msg: "rivetkit ready",
|
|
3608
3957
|
driver: driver.name,
|
|
3609
3958
|
definitions: Object.keys(this.#config.use).length,
|
|
3610
3959
|
...driverLog
|
|
3611
3960
|
});
|
|
3612
|
-
if (
|
|
3613
|
-
|
|
3961
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3962
|
+
logger7().info({ msg: "inspector ready", url: _chunkSIWYIRXPcjs.getInspectorUrl.call(void 0, config2) });
|
|
3614
3963
|
}
|
|
3615
3964
|
if (!config2.noWelcome) {
|
|
3616
3965
|
const displayInfo = managerDriver.displayInformation();
|
|
3617
3966
|
console.log();
|
|
3618
|
-
console.log(` RivetKit ${
|
|
3619
|
-
|
|
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
|
+
}
|
|
3620
3977
|
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3621
3978
|
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3622
3979
|
console.log(` - ${k}:${padding}${v}`);
|
|
3623
3980
|
}
|
|
3624
|
-
if (
|
|
3625
|
-
console.log(` - Inspector: ${
|
|
3981
|
+
if (_chunkSIWYIRXPcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3982
|
+
console.log(` - Inspector: ${_chunkSIWYIRXPcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
3626
3983
|
}
|
|
3627
3984
|
console.log();
|
|
3628
3985
|
}
|
|
3629
3986
|
if (!config2.disableActorDriver) {
|
|
3630
|
-
|
|
3631
|
-
this.#config,
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
)
|
|
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
|
+
});
|
|
3636
3995
|
}
|
|
3637
3996
|
const { router: hono } = createManagerRouter(
|
|
3638
3997
|
this.#config,
|
|
3639
3998
|
config2,
|
|
3640
3999
|
managerDriver,
|
|
3641
|
-
|
|
4000
|
+
driver,
|
|
4001
|
+
client
|
|
3642
4002
|
);
|
|
3643
|
-
if (!config2.
|
|
4003
|
+
if (!config2.disableDefaultServer) {
|
|
3644
4004
|
(async () => {
|
|
3645
|
-
const out = await crossPlatformServe(hono, void 0);
|
|
4005
|
+
const out = await crossPlatformServe(config2, hono, void 0);
|
|
3646
4006
|
upgradeWebSocket = out.upgradeWebSocket;
|
|
3647
4007
|
})();
|
|
3648
4008
|
}
|
|
@@ -3651,83 +4011,63 @@ var Registry = class {
|
|
|
3651
4011
|
fetch: hono.fetch.bind(hono)
|
|
3652
4012
|
};
|
|
3653
4013
|
}
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
if (
|
|
3658
|
-
|
|
3659
|
-
}
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
if (
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3677
|
-
}
|
|
3678
|
-
const managerDriver = driver.manager(this.#config, config2);
|
|
3679
|
-
const client = _chunk4PSLOAXRcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3680
|
-
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3681
|
-
logger6().info({
|
|
3682
|
-
msg: "rivetkit ready",
|
|
3683
|
-
driver: driver.name,
|
|
3684
|
-
definitions: Object.keys(this.#config.use).length,
|
|
3685
|
-
...driverLog
|
|
3686
|
-
});
|
|
3687
|
-
if (((_d = config2.inspector) == null ? void 0 : _d.enabled) && managerDriver.inspector) {
|
|
3688
|
-
logger6().info({ msg: "inspector ready", url: _chunkQGRYH6TUcjs.getInspectorUrl.call(void 0, config2) });
|
|
3689
|
-
}
|
|
3690
|
-
if (!config2.noWelcome) {
|
|
3691
|
-
const displayInfo = managerDriver.displayInformation();
|
|
3692
|
-
console.log();
|
|
3693
|
-
console.log(` RivetKit ${_chunkU2IXX6DYcjs.package_default.version} (${displayInfo.name})`);
|
|
3694
|
-
console.log(` - Endpoint: http://127.0.0.1:6420`);
|
|
3695
|
-
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3696
|
-
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3697
|
-
console.log(` - ${k}:${padding}${v}`);
|
|
3698
|
-
}
|
|
3699
|
-
if (((_e = config2.inspector) == null ? void 0 : _e.enabled) && managerDriver.inspector) {
|
|
3700
|
-
console.log(` - Inspector: ${_chunkQGRYH6TUcjs.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))
|
|
3701
4036
|
}
|
|
3702
|
-
console.log();
|
|
3703
|
-
}
|
|
3704
|
-
let serverlessActorDriverBuilder = (token, totalSlots) => {
|
|
3705
|
-
if (token) config2.token = token;
|
|
3706
|
-
if (totalSlots) config2.totalSlots = totalSlots;
|
|
3707
|
-
return driver.actor(this.#config, config2, managerDriver, client);
|
|
3708
4037
|
};
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
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
|
+
);
|
|
3724
4057
|
}
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
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;
|
|
3729
4069
|
}
|
|
3730
|
-
}
|
|
4070
|
+
}
|
|
3731
4071
|
function setup(input) {
|
|
3732
4072
|
const config2 = RegistryConfigSchema.parse(input);
|
|
3733
4073
|
return new Registry(config2);
|
|
@@ -3749,4 +4089,4 @@ function setup(input) {
|
|
|
3749
4089
|
|
|
3750
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;
|
|
3751
4091
|
//! These configs configs hold anything that's not platform-specific about running actors.
|
|
3752
|
-
//# sourceMappingURL=chunk-
|
|
4092
|
+
//# sourceMappingURL=chunk-PDFL7FBL.cjs.map
|