rivetkit 2.0.9 → 2.0.11

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.
Files changed (123) hide show
  1. package/dist/tsup/{chunk-F2YZNUPU.js → chunk-3JUN3IEH.js} +3 -3
  2. package/dist/tsup/{chunk-DL7TPF63.cjs → chunk-5ABUOI3V.cjs} +7 -7
  3. package/dist/tsup/{chunk-DL7TPF63.cjs.map → chunk-5ABUOI3V.cjs.map} +1 -1
  4. package/dist/tsup/{chunk-SDXTJDDR.cjs → chunk-5JZPEJVJ.cjs} +58 -14
  5. package/dist/tsup/chunk-5JZPEJVJ.cjs.map +1 -0
  6. package/dist/tsup/{chunk-SOC4HWCG.cjs → chunk-6PORXHSQ.cjs} +92 -39
  7. package/dist/tsup/chunk-6PORXHSQ.cjs.map +1 -0
  8. package/dist/tsup/{chunk-QGRYH6TU.cjs → chunk-765F7ILI.cjs} +7 -6
  9. package/dist/tsup/chunk-765F7ILI.cjs.map +1 -0
  10. package/dist/tsup/{chunk-DLPIL3VC.js → chunk-7DCESQ4O.js} +2 -2
  11. package/dist/tsup/{chunk-R7OP5N25.js → chunk-AZI2T6UF.js} +53 -9
  12. package/dist/tsup/chunk-AZI2T6UF.js.map +1 -0
  13. package/dist/tsup/{chunk-A44TWAS5.cjs → chunk-GGIW54I2.cjs} +6 -6
  14. package/dist/tsup/{chunk-A44TWAS5.cjs.map → chunk-GGIW54I2.cjs.map} +1 -1
  15. package/dist/tsup/{chunk-7OMMIAWP.cjs → chunk-HDCLOVOE.cjs} +17 -12
  16. package/dist/tsup/chunk-HDCLOVOE.cjs.map +1 -0
  17. package/dist/tsup/{chunk-2MJYYF2Q.cjs → chunk-I6AVFIVY.cjs} +12 -12
  18. package/dist/tsup/{chunk-2MJYYF2Q.cjs.map → chunk-I6AVFIVY.cjs.map} +1 -1
  19. package/dist/tsup/{chunk-WBSPHV5V.js → chunk-JTWD6ZT2.js} +2 -2
  20. package/dist/tsup/{chunk-4YV6RDZL.cjs → chunk-LXFOO25H.cjs} +722 -359
  21. package/dist/tsup/chunk-LXFOO25H.cjs.map +1 -0
  22. package/dist/tsup/{chunk-YR2VY4XS.js → chunk-MIP4PYTD.js} +5 -4
  23. package/dist/tsup/chunk-MIP4PYTD.js.map +1 -0
  24. package/dist/tsup/{chunk-KHZ2QSQ4.js → chunk-MT5ES4XD.js} +32 -10
  25. package/dist/tsup/chunk-MT5ES4XD.js.map +1 -0
  26. package/dist/tsup/{chunk-U2IXX6DY.cjs → chunk-NLYAKGML.cjs} +5 -6
  27. package/dist/tsup/chunk-NLYAKGML.cjs.map +1 -0
  28. package/dist/tsup/{chunk-FZP2IBIX.js → chunk-NOXYAPM2.js} +603 -240
  29. package/dist/tsup/chunk-NOXYAPM2.js.map +1 -0
  30. package/dist/tsup/{chunk-E63WU5PL.js → chunk-NQFIZSTR.js} +5 -6
  31. package/dist/tsup/chunk-NQFIZSTR.js.map +1 -0
  32. package/dist/tsup/{chunk-4PSLOAXR.cjs → chunk-O7BIBANW.cjs} +226 -204
  33. package/dist/tsup/chunk-O7BIBANW.cjs.map +1 -0
  34. package/dist/tsup/{chunk-VVCL5DXN.js → chunk-OHSP4BUE.js} +97 -44
  35. package/dist/tsup/{chunk-VVCL5DXN.js.map → chunk-OHSP4BUE.js.map} +1 -1
  36. package/dist/tsup/{chunk-APHV6WXU.js → chunk-SBUJ3KIM.js} +2 -2
  37. package/dist/tsup/{chunk-DZZQG7VH.cjs → chunk-WYTLLIJM.cjs} +3 -3
  38. package/dist/tsup/{chunk-DZZQG7VH.cjs.map → chunk-WYTLLIJM.cjs.map} +1 -1
  39. package/dist/tsup/{chunk-WRSWUDFA.js → chunk-XO7VX4MN.js} +14 -9
  40. package/dist/tsup/chunk-XO7VX4MN.js.map +1 -0
  41. package/dist/tsup/client/mod.cjs +9 -9
  42. package/dist/tsup/client/mod.d.cts +2 -2
  43. package/dist/tsup/client/mod.d.ts +2 -2
  44. package/dist/tsup/client/mod.js +8 -8
  45. package/dist/tsup/common/log.cjs +3 -3
  46. package/dist/tsup/common/log.js +2 -2
  47. package/dist/tsup/common/websocket.cjs +4 -4
  48. package/dist/tsup/common/websocket.js +3 -3
  49. package/dist/tsup/{conn-CEh3WKbA.d.cts → conn-CT_8ZBT_.d.cts} +204 -199
  50. package/dist/tsup/{conn-Bt8rkUzm.d.ts → conn-d5F0M95s.d.ts} +204 -199
  51. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  52. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  53. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  54. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  55. package/dist/tsup/driver-helpers/mod.js +6 -6
  56. package/dist/tsup/driver-test-suite/mod.cjs +117 -103
  57. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  58. package/dist/tsup/driver-test-suite/mod.d.cts +3 -2
  59. package/dist/tsup/driver-test-suite/mod.d.ts +3 -2
  60. package/dist/tsup/driver-test-suite/mod.js +62 -48
  61. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  62. package/dist/tsup/inspector/mod.cjs +6 -6
  63. package/dist/tsup/inspector/mod.d.cts +6 -6
  64. package/dist/tsup/inspector/mod.d.ts +6 -6
  65. package/dist/tsup/inspector/mod.js +5 -5
  66. package/dist/tsup/mod.cjs +10 -10
  67. package/dist/tsup/mod.d.cts +8 -39
  68. package/dist/tsup/mod.d.ts +8 -39
  69. package/dist/tsup/mod.js +9 -9
  70. package/dist/tsup/test/mod.cjs +11 -11
  71. package/dist/tsup/test/mod.d.cts +1 -1
  72. package/dist/tsup/test/mod.d.ts +1 -1
  73. package/dist/tsup/test/mod.js +10 -10
  74. package/dist/tsup/utils.cjs +2 -2
  75. package/dist/tsup/utils.d.cts +2 -1
  76. package/dist/tsup/utils.d.ts +2 -1
  77. package/dist/tsup/utils.js +1 -1
  78. package/package.json +4 -5
  79. package/src/actor/driver.ts +2 -2
  80. package/src/actor/protocol/serde.ts +75 -3
  81. package/src/actor/router-endpoints.ts +6 -6
  82. package/src/actor/router.ts +2 -2
  83. package/src/client/actor-conn.ts +24 -3
  84. package/src/client/config.ts +19 -26
  85. package/src/driver-helpers/mod.ts +4 -1
  86. package/src/driver-test-suite/mod.ts +66 -44
  87. package/src/driver-test-suite/utils.ts +4 -1
  88. package/src/drivers/default.ts +11 -9
  89. package/src/drivers/engine/actor-driver.ts +42 -39
  90. package/src/drivers/engine/config.ts +9 -22
  91. package/src/drivers/engine/mod.ts +9 -8
  92. package/src/drivers/file-system/global-state.ts +4 -4
  93. package/src/engine-process/log.ts +5 -0
  94. package/src/engine-process/mod.ts +316 -0
  95. package/src/inspector/utils.ts +6 -4
  96. package/src/manager/driver.ts +2 -2
  97. package/src/manager/gateway.ts +29 -11
  98. package/src/manager/router-schema.ts +20 -0
  99. package/src/manager/router.ts +116 -29
  100. package/src/registry/mod.ts +168 -113
  101. package/src/registry/run-config.ts +116 -47
  102. package/src/registry/serve.ts +3 -1
  103. package/src/serde.ts +3 -3
  104. package/src/test/config.ts +2 -2
  105. package/src/test/mod.ts +6 -3
  106. package/src/utils.ts +2 -0
  107. package/dist/tsup/chunk-4PSLOAXR.cjs.map +0 -1
  108. package/dist/tsup/chunk-4YV6RDZL.cjs.map +0 -1
  109. package/dist/tsup/chunk-7OMMIAWP.cjs.map +0 -1
  110. package/dist/tsup/chunk-E63WU5PL.js.map +0 -1
  111. package/dist/tsup/chunk-FZP2IBIX.js.map +0 -1
  112. package/dist/tsup/chunk-KHZ2QSQ4.js.map +0 -1
  113. package/dist/tsup/chunk-QGRYH6TU.cjs.map +0 -1
  114. package/dist/tsup/chunk-R7OP5N25.js.map +0 -1
  115. package/dist/tsup/chunk-SDXTJDDR.cjs.map +0 -1
  116. package/dist/tsup/chunk-SOC4HWCG.cjs.map +0 -1
  117. package/dist/tsup/chunk-U2IXX6DY.cjs.map +0 -1
  118. package/dist/tsup/chunk-WRSWUDFA.js.map +0 -1
  119. package/dist/tsup/chunk-YR2VY4XS.js.map +0 -1
  120. /package/dist/tsup/{chunk-F2YZNUPU.js.map → chunk-3JUN3IEH.js.map} +0 -0
  121. /package/dist/tsup/{chunk-DLPIL3VC.js.map → chunk-7DCESQ4O.js.map} +0 -0
  122. /package/dist/tsup/{chunk-WBSPHV5V.js.map → chunk-JTWD6ZT2.js.map} +0 -0
  123. /package/dist/tsup/{chunk-APHV6WXU.js.map → chunk-SBUJ3KIM.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkQGRYH6TUcjs = require('./chunk-QGRYH6TU.cjs');
7
+ var _chunk765F7ILIcjs = require('./chunk-765F7ILI.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 _chunkO7BIBANWcjs = require('./chunk-O7BIBANW.cjs');
19
19
 
20
- var _chunk2MJYYF2Qcjs = require('./chunk-2MJYYF2Q.cjs');
21
20
 
21
+ var _chunkI6AVFIVYcjs = require('./chunk-I6AVFIVY.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 _chunk6PORXHSQcjs = require('./chunk-6PORXHSQ.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 _chunk5JZPEJVJcjs = require('./chunk-5JZPEJVJ.cjs');
59
59
 
60
60
 
61
61
 
62
- var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
63
62
 
63
+ var _chunk5ABUOI3Vcjs = require('./chunk-5ABUOI3V.cjs');
64
64
 
65
65
 
66
66
 
@@ -69,7 +69,10 @@ var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
69
69
 
70
70
 
71
71
 
72
- var _chunkU2IXX6DYcjs = require('./chunk-U2IXX6DY.cjs');
72
+
73
+
74
+ var _chunkNLYAKGMLcjs = require('./chunk-NLYAKGML.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 _chunkDL7TPF63cjs.getLogger.call(void 0, "actor-manager");
157
+ return _chunk5ABUOI3Vcjs.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
- } = _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, );
445
+ } = _chunkNLYAKGMLcjs.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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
452
+ const { code } = _chunkNLYAKGMLcjs.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 = _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, );
469
- const socketId = _chunk4PSLOAXRcjs.generateConnSocketId.call(void 0, );
471
+ const closePromise = _chunkNLYAKGMLcjs.promiseWithResolvers.call(void 0, );
472
+ const socketId = _chunkO7BIBANWcjs.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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
503
+ const { code } = _chunkNLYAKGMLcjs.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
- _chunkSOC4HWCGcjs.parseMessage.call(void 0, value, {
519
+ _chunk6PORXHSQcjs.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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
524
+ const { code } = _chunkNLYAKGMLcjs.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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
535
+ const { code } = _chunkNLYAKGMLcjs.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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
546
+ const { code } = _chunkNLYAKGMLcjs.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
- _chunkU2IXX6DYcjs.deconstructError.call(void 0,
580
+ _chunkNLYAKGMLcjs.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
- _chunkU2IXX6DYcjs.deconstructError.call(void 0,
592
+ _chunkNLYAKGMLcjs.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 = _chunk4PSLOAXRcjs.generateConnSocketId.call(void 0, );
604
- const connId = c.req.header(_chunkSDXTJDDRcjs.HEADER_CONN_ID);
605
- const connToken = c.req.header(_chunkSDXTJDDRcjs.HEADER_CONN_TOKEN);
606
+ const socketId = _chunkO7BIBANWcjs.generateConnSocketId.call(void 0, );
607
+ const connId = c.req.header(_chunk5JZPEJVJcjs.HEADER_CONN_ID);
608
+ const connToken = c.req.header(_chunk5JZPEJVJcjs.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 = _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, );
633
+ const abortResolver = _chunkNLYAKGMLcjs.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, () => ( _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, )));
638
+ const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunk5JZPEJVJcjs.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
- _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, ).error({ msg: "error in sse connection", error });
663
+ _chunk5JZPEJVJcjs.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 = _chunkSDXTJDDRcjs.deserializeWithEncoding.call(void 0,
675
+ const request = _chunk5JZPEJVJcjs.deserializeWithEncoding.call(void 0,
673
676
  encoding,
674
677
  new Uint8Array(arrayBuffer),
675
- _chunkSOC4HWCGcjs.HTTP_ACTION_REQUEST_VERSIONED
678
+ _chunk6PORXHSQcjs.HTTP_ACTION_REQUEST_VERSIONED
676
679
  );
677
680
  const actionArgs = cbor.decode(new Uint8Array(request.args));
678
- const socketId = _chunk4PSLOAXRcjs.generateConnSocketId.call(void 0, );
681
+ const socketId = _chunkO7BIBANWcjs.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, _chunkSOC4HWCGcjs.ActionContext)(actor2.actorContext, conn);
696
+ const ctx = new (0, _chunk6PORXHSQcjs.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: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
704
+ output: _chunkNLYAKGMLcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
702
705
  };
703
- const serialized = _chunkSDXTJDDRcjs.serializeWithEncoding.call(void 0,
706
+ const serialized = _chunk5JZPEJVJcjs.serializeWithEncoding.call(void 0,
704
707
  encoding,
705
708
  responseData,
706
- _chunkSOC4HWCGcjs.HTTP_ACTION_RESPONSE_VERSIONED
709
+ _chunk6PORXHSQcjs.HTTP_ACTION_RESPONSE_VERSIONED
707
710
  );
708
711
  return c.body(serialized, 200, {
709
- "Content-Type": _chunkSDXTJDDRcjs.contentTypeForEncoding.call(void 0, encoding)
712
+ "Content-Type": _chunk5JZPEJVJcjs.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 = _chunkSDXTJDDRcjs.deserializeWithEncoding.call(void 0,
718
+ const message = _chunk5JZPEJVJcjs.deserializeWithEncoding.call(void 0,
716
719
  encoding,
717
720
  new Uint8Array(arrayBuffer),
718
- _chunkSOC4HWCGcjs.TO_SERVER_VERSIONED
721
+ _chunk6PORXHSQcjs.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, path3, actorDriver, actorId) {
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(path3, "http://actor");
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: path3,
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(_chunkSDXTJDDRcjs.HEADER_ENCODING);
802
+ const encodingParam = req.header(_chunk5JZPEJVJcjs.HEADER_ENCODING);
800
803
  if (!encodingParam) {
801
804
  throw new (0, _chunk5QGQK44Lcjs.InvalidEncoding)("undefined");
802
805
  }
803
- const result = _chunkSDXTJDDRcjs.EncodingSchema.safeParse(encodingParam);
806
+ const result = _chunk5JZPEJVJcjs.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(_chunkSDXTJDDRcjs.HEADER_CONN_PARAMS);
816
+ const paramsParam = req.header(_chunk5JZPEJVJcjs.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: ${_chunkU2IXX6DYcjs.stringifyError.call(void 0, err)}`
824
+ `Invalid params JSON: ${_chunkNLYAKGMLcjs.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 _chunkDL7TPF63cjs.getLogger.call(void 0, "router");
832
+ return _chunk5ABUOI3Vcjs.getLogger.call(void 0, "router");
830
833
  }
831
- function loggerMiddleware(logger7) {
834
+ function loggerMiddleware(logger8) {
832
835
  return async (c, next) => {
833
836
  const method = c.req.method;
834
- const path3 = c.req.path;
837
+ const path4 = c.req.path;
835
838
  const startTime = Date.now();
836
839
  await next();
837
840
  const duration = Date.now() - startTime;
838
- logger7.debug({
841
+ logger8.debug({
839
842
  msg: "http request",
840
843
  method,
841
- path: path3,
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 } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
858
+ const { statusCode, group, code, message, metadata } = _chunkNLYAKGMLcjs.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 = _chunkSDXTJDDRcjs.serializeWithEncoding.call(void 0,
873
+ const output = _chunk5JZPEJVJcjs.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: _chunkSDXTJDDRcjs.encodingIsBinary.call(void 0, encoding) ? _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
880
+ metadata: _chunk5JZPEJVJcjs.encodingIsBinary.call(void 0, encoding) ? _chunkNLYAKGMLcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
878
881
  },
879
- _chunkSOC4HWCGcjs.HTTP_RESPONSE_ERROR_VERSIONED
882
+ _chunk6PORXHSQcjs.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(_chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, )));
890
+ router.use("*", loggerMiddleware(_chunk5JZPEJVJcjs.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(_chunkSDXTJDDRcjs.PATH_CONNECT_WEBSOCKET, async (c) => {
921
+ router.get(_chunk5JZPEJVJcjs.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(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING)) {
932
- encodingRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING.length);
933
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS)) {
934
+ if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING)) {
935
+ encodingRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING.length);
936
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS)) {
934
937
  connParamsRaw = decodeURIComponent(
935
- protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS.length)
938
+ protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS.length)
936
939
  );
937
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID)) {
938
- connIdRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID.length);
939
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN)) {
940
- connTokenRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN.length);
940
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID)) {
941
+ connIdRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID.length);
942
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN)) {
943
+ connTokenRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN.length);
941
944
  }
942
945
  }
943
946
  }
944
- const encoding = _chunkSDXTJDDRcjs.EncodingSchema.parse(encodingRaw);
947
+ const encoding = _chunk5JZPEJVJcjs.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, _chunkU2IXX6DYcjs.noopNext.call(void 0, ));
959
+ })(c, _chunkNLYAKGMLcjs.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(_chunkSDXTJDDRcjs.HEADER_CONN_ID);
973
- const connToken = c.req.header(_chunkSDXTJDDRcjs.HEADER_CONN_TOKEN);
975
+ const connId = c.req.header(_chunk5JZPEJVJcjs.HEADER_CONN_ID);
976
+ const connToken = c.req.header(_chunk5JZPEJVJcjs.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(_chunkSDXTJDDRcjs.HEADER_CONN_ID);
988
- const connToken = c.req.header(_chunkSDXTJDDRcjs.HEADER_CONN_TOKEN);
990
+ const connId = c.req.header(_chunk5JZPEJVJcjs.HEADER_CONN_ID);
991
+ const connToken = c.req.header(_chunk5JZPEJVJcjs.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
- _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, ).debug({
1015
+ _chunk5JZPEJVJcjs.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(`${_chunkSDXTJDDRcjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
1026
+ router.get(`${_chunk5JZPEJVJcjs.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
- _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, ).debug({
1033
+ _chunk5JZPEJVJcjs.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, _chunkU2IXX6DYcjs.noopNext.call(void 0, ));
1046
+ })(c, _chunkNLYAKGMLcjs.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 (_chunkQGRYH6TUcjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
1054
+ if (_chunk765F7ILIcjs.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
- _chunkQGRYH6TUcjs.secureInspector.call(void 0, runConfig),
1059
+ _chunk765F7ILIcjs.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("/", _chunk4PSLOAXRcjs.createActorInspectorRouter.call(void 0, ))
1066
+ ).route("/", _chunkO7BIBANWcjs.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, _chunk4PSLOAXRcjs.ActorDefinition)(config2);
1077
+ return new (0, _chunkO7BIBANWcjs.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 _chunkDL7TPF63cjs.getLogger.call(void 0, "fake-event-source2");
1083
+ return _chunk5ABUOI3Vcjs.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 _chunkDL7TPF63cjs.getLogger.call(void 0, "driver-engine");
1431
+ return _chunk5ABUOI3Vcjs.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, config2) {
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
- this.#config = config2;
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 runnerConfig = {
1463
+ const engineRunnerConfig = {
1459
1464
  version: this.#version,
1460
- endpoint: config2.endpoint,
1461
- token: _nullishCoalesce(runConfig.token, () => ( config2.token)),
1462
- pegboardEndpoint: config2.pegboardEndpoint,
1463
- namespace: config2.namespace,
1464
- totalSlots: _nullishCoalesce(runConfig.totalSlots, () => ( config2.totalSlots)),
1465
- runnerName: config2.runnerName,
1466
- runnerKey: config2.runnerKey,
1465
+ endpoint: _chunkO7BIBANWcjs.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.#config.namespace,
1481
- runnerName: this.#config.runnerName
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.#config.namespace,
1487
- runnerName: this.#config.runnerName
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.#config.namespace,
1496
- runnerName: this.#config.runnerName
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: _chunkDL7TPF63cjs.getLogger.call(void 0, "engine-runner")
1511
+ logger: _chunk5ABUOI3Vcjs.getLogger.call(void 0, "engine-runner")
1508
1512
  };
1509
- this.#runner = new (0, _enginerunner.Runner)(runnerConfig);
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: config2.endpoint,
1514
- namespace: config2.namespace,
1515
- runnerName: config2.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 = _chunkU2IXX6DYcjs.setLongTimeout.call(void 0, () => {
1561
+ this.#alarmTimeout = _chunkNLYAKGMLcjs.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, config2) {
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: config2.name,
1573
- key: config2.key,
1576
+ name: runConfig.name,
1577
+ key: runConfig.key,
1574
1578
  generation
1575
1579
  });
1576
1580
  let input;
1577
- if (config2.input) {
1578
- input = cbor3.decode(config2.input);
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: _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, ),
1584
- persistedData: _chunkSOC4HWCGcjs.serializeEmptyPersistData.call(void 0, input)
1587
+ actorStartPromise: _chunkNLYAKGMLcjs.promiseWithResolvers.call(void 0, ),
1588
+ persistedData: _chunk6PORXHSQcjs.serializeEmptyPersistData.call(void 0, input)
1585
1589
  };
1586
1590
  this.#actors.set(actorId, handler);
1587
1591
  }
1588
- const name = config2.name;
1589
- _invariant2.default.call(void 0, config2.key, "actor should have a key");
1590
- const key = _chunk4PSLOAXRcjs.deserializeActorKey.call(void 0, config2.key);
1591
- const definition = _chunk4PSLOAXRcjs.lookupInRegistry.call(void 0,
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 = _chunkO7BIBANWcjs.deserializeActorKey.call(void 0, runConfig.key);
1595
+ const definition = _chunkO7BIBANWcjs.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(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING)) {
1641
- encodingRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING.length);
1642
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS)) {
1640
+ if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING)) {
1641
+ encodingRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING.length);
1642
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS)) {
1643
1643
  connParamsRaw = decodeURIComponent(
1644
- protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS.length)
1644
+ protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS.length)
1645
1645
  );
1646
1646
  }
1647
1647
  }
1648
1648
  }
1649
- const encoding = _chunkSDXTJDDRcjs.EncodingSchema.parse(encodingRaw);
1649
+ const encoding = _chunk5JZPEJVJcjs.EncodingSchema.parse(encodingRaw);
1650
1650
  const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
1651
1651
  let wsHandlerPromise;
1652
- if (url.pathname === _chunkSDXTJDDRcjs.PATH_CONNECT_WEBSOCKET) {
1652
+ if (url.pathname === _chunk5JZPEJVJcjs.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(_chunkSDXTJDDRcjs.PATH_RAW_WEBSOCKET_PREFIX)) {
1664
+ } else if (url.pathname.startsWith(_chunk5JZPEJVJcjs.PATH_RAW_WEBSOCKET_PREFIX)) {
1665
1665
  wsHandlerPromise = handleRawWebSocketHandler(
1666
1666
  request,
1667
1667
  url.pathname + url.search,
@@ -1718,47 +1718,28 @@ var EngineActorDriver = class {
1718
1718
  async serverlessHandleStart(c) {
1719
1719
  await this.#runnerStarted.promise;
1720
1720
  return _streaming.streamSSE.call(void 0, c, async (stream) => {
1721
+ stream.onAbort(() => this.shutdown(true));
1721
1722
  const payload = this.#runner.getServerlessInitPacket();
1722
1723
  _invariant2.default.call(void 0, payload, "runnerId not set");
1723
- stream.writeSSE({ data: payload });
1724
+ await stream.writeSSE({ data: payload });
1724
1725
  return this.#runnerStopped.promise;
1725
1726
  });
1726
1727
  }
1727
1728
  };
1728
1729
 
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
1730
  // src/drivers/engine/mod.ts
1748
- function createEngineDriver(inputConfig) {
1749
- const config2 = ConfigSchema.parse(inputConfig);
1731
+ function createEngineDriver() {
1750
1732
  return {
1751
1733
  name: "engine",
1752
1734
  manager: (_registryConfig, runConfig) => {
1753
- return new (0, _chunk4PSLOAXRcjs.RemoteManagerDriver)(runConfig);
1735
+ return new (0, _chunkO7BIBANWcjs.RemoteManagerDriver)(runConfig);
1754
1736
  },
1755
1737
  actor: (registryConfig, runConfig, managerDriver, inlineClient) => {
1756
1738
  return new EngineActorDriver(
1757
1739
  registryConfig,
1758
1740
  runConfig,
1759
1741
  managerDriver,
1760
- inlineClient,
1761
- config2
1742
+ inlineClient
1762
1743
  );
1763
1744
  }
1764
1745
  };
@@ -1805,7 +1786,7 @@ var FileSystemActorDriver = class {
1805
1786
  const state = await this.#state.loadActorStateOrError(actorId);
1806
1787
  await this.#state.writeActor(actorId, {
1807
1788
  ...state,
1808
- persistedData: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, data)
1789
+ persistedData: _chunkNLYAKGMLcjs.bufferToArrayBuffer.call(void 0, data)
1809
1790
  });
1810
1791
  }
1811
1792
  async setAlarm(actor2, timestamp) {
@@ -1822,8 +1803,8 @@ var FileSystemActorDriver = class {
1822
1803
  // src/drivers/file-system/global-state.ts
1823
1804
  var _crypto = require('crypto'); var crypto3 = _interopRequireWildcard(_crypto); var crypto2 = _interopRequireWildcard(_crypto);
1824
1805
  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);
1806
+ var _promises = require('fs/promises'); var fs2 = _interopRequireWildcard(_promises); var fs = _interopRequireWildcard(_promises); var fs3 = _interopRequireWildcard(_promises);
1807
+ var _path = require('path'); var path2 = _interopRequireWildcard(_path); var path = _interopRequireWildcard(_path); var path3 = _interopRequireWildcard(_path);
1827
1808
 
1828
1809
 
1829
1810
  // dist/schemas/file-system-driver/v1.ts
@@ -1908,13 +1889,13 @@ function decodeActorAlarm(bytes) {
1908
1889
  // src/schemas/file-system-driver/versioned.ts
1909
1890
  var CURRENT_VERSION = 1;
1910
1891
  var migrations = /* @__PURE__ */ new Map();
1911
- var ACTOR_STATE_VERSIONED = _chunkSOC4HWCGcjs.createVersionedDataHandler.call(void 0, {
1892
+ var ACTOR_STATE_VERSIONED = _chunk6PORXHSQcjs.createVersionedDataHandler.call(void 0, {
1912
1893
  currentVersion: CURRENT_VERSION,
1913
1894
  migrations,
1914
1895
  serializeVersion: (data) => encodeActorState(data),
1915
1896
  deserializeVersion: (bytes) => decodeActorState(bytes)
1916
1897
  });
1917
- var ACTOR_ALARM_VERSIONED = _chunkSOC4HWCGcjs.createVersionedDataHandler.call(void 0, {
1898
+ var ACTOR_ALARM_VERSIONED = _chunk6PORXHSQcjs.createVersionedDataHandler.call(void 0, {
1918
1899
  currentVersion: CURRENT_VERSION,
1919
1900
  migrations,
1920
1901
  serializeVersion: (data) => encodeActorAlarm(data),
@@ -1923,7 +1904,7 @@ var ACTOR_ALARM_VERSIONED = _chunkSOC4HWCGcjs.createVersionedDataHandler.call(vo
1923
1904
 
1924
1905
  // src/drivers/file-system/log.ts
1925
1906
  function logger5() {
1926
- return _chunkDL7TPF63cjs.getLogger.call(void 0, "driver-fs");
1907
+ return _chunk5ABUOI3Vcjs.getLogger.call(void 0, "driver-fs");
1927
1908
  }
1928
1909
 
1929
1910
  // src/drivers/file-system/utils.ts
@@ -1949,9 +1930,9 @@ function getStoragePath(customPath) {
1949
1930
  const dirHash = createHashForPath(pathToHash);
1950
1931
  return path.join(dataPath, dirHash);
1951
1932
  }
1952
- async function pathExists(path3) {
1933
+ async function pathExists(path4) {
1953
1934
  try {
1954
- await fs.access(path3);
1935
+ await fs.access(path4);
1955
1936
  return true;
1956
1937
  } catch (e) {
1957
1938
  return false;
@@ -2093,7 +2074,7 @@ var FileSystemGlobalState = class {
2093
2074
  name,
2094
2075
  key,
2095
2076
  createdAt: BigInt(Date.now()),
2096
- persistedData: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, _chunkSOC4HWCGcjs.serializeEmptyPersistData.call(void 0, input))
2077
+ persistedData: _chunkNLYAKGMLcjs.bufferToArrayBuffer.call(void 0, _chunk6PORXHSQcjs.serializeEmptyPersistData.call(void 0, input))
2097
2078
  };
2098
2079
  await this.writeActor(actorId, entry.state);
2099
2080
  return entry;
@@ -2141,7 +2122,7 @@ var FileSystemGlobalState = class {
2141
2122
  name,
2142
2123
  key,
2143
2124
  createdAt: BigInt(Date.now()),
2144
- persistedData: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, _chunkSOC4HWCGcjs.serializeEmptyPersistData.call(void 0, input))
2125
+ persistedData: _chunkNLYAKGMLcjs.bufferToArrayBuffer.call(void 0, _chunk6PORXHSQcjs.serializeEmptyPersistData.call(void 0, input))
2145
2126
  };
2146
2127
  await this.writeActor(actorId, entry.state);
2147
2128
  }
@@ -2265,9 +2246,9 @@ var FileSystemGlobalState = class {
2265
2246
  if (entry.actor) {
2266
2247
  return entry.actor;
2267
2248
  }
2268
- entry.startPromise = _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, );
2249
+ entry.startPromise = _chunkNLYAKGMLcjs.promiseWithResolvers.call(void 0, );
2269
2250
  try {
2270
- const definition = _chunk4PSLOAXRcjs.lookupInRegistry.call(void 0, registryConfig, entry.state.name);
2251
+ const definition = _chunkO7BIBANWcjs.lookupInRegistry.call(void 0, registryConfig, entry.state.name);
2271
2252
  entry.actor = definition.instantiate();
2272
2253
  await entry.actor.start(
2273
2254
  actorDriver,
@@ -2327,7 +2308,7 @@ var FileSystemGlobalState = class {
2327
2308
  logger5().error({
2328
2309
  msg: "failed to read alarm file",
2329
2310
  file,
2330
- error: _chunkU2IXX6DYcjs.stringifyError.call(void 0, err)
2311
+ error: _chunkNLYAKGMLcjs.stringifyError.call(void 0, err)
2331
2312
  });
2332
2313
  }
2333
2314
  }
@@ -2354,7 +2335,7 @@ var FileSystemGlobalState = class {
2354
2335
  (_a = entry.alarmTimeout) == null ? void 0 : _a.abort();
2355
2336
  entry.alarmTimestamp = timestamp;
2356
2337
  const delay = Math.max(0, timestamp - Date.now());
2357
- entry.alarmTimeout = _chunkU2IXX6DYcjs.setLongTimeout.call(void 0, async () => {
2338
+ entry.alarmTimeout = _chunkNLYAKGMLcjs.setLongTimeout.call(void 0, async () => {
2358
2339
  entry.alarmTimestamp = void 0;
2359
2340
  if (this.#persist) {
2360
2341
  try {
@@ -2364,7 +2345,7 @@ var FileSystemGlobalState = class {
2364
2345
  logger5().debug({
2365
2346
  msg: "failed to remove alarm file",
2366
2347
  actorId,
2367
- error: _chunkU2IXX6DYcjs.stringifyError.call(void 0, err)
2348
+ error: _chunkNLYAKGMLcjs.stringifyError.call(void 0, err)
2368
2349
  });
2369
2350
  }
2370
2351
  }
@@ -2390,7 +2371,7 @@ var FileSystemGlobalState = class {
2390
2371
  logger5().error({
2391
2372
  msg: "failed to handle alarm",
2392
2373
  actorId,
2393
- error: _chunkU2IXX6DYcjs.stringifyError.call(void 0, err)
2374
+ error: _chunkNLYAKGMLcjs.stringifyError.call(void 0, err)
2394
2375
  });
2395
2376
  }
2396
2377
  }, delay);
@@ -2400,7 +2381,7 @@ var FileSystemGlobalState = class {
2400
2381
  if (fsSync2.existsSync(tokenPath)) {
2401
2382
  return fsSync2.readFileSync(tokenPath, "utf-8");
2402
2383
  }
2403
- const newToken = _chunkSDXTJDDRcjs.generateRandomString.call(void 0, );
2384
+ const newToken = _chunk5JZPEJVJcjs.generateRandomString.call(void 0, );
2404
2385
  fsSync2.writeFileSync(tokenPath, newToken);
2405
2386
  return newToken;
2406
2387
  }
@@ -2462,10 +2443,10 @@ function createManagerInspectorRouter() {
2462
2443
  });
2463
2444
  return c.json(actors, 200);
2464
2445
  } catch (error) {
2465
- _chunkQGRYH6TUcjs.inspectorLogger.call(void 0, ).error({ msg: "Failed to fetch actors", error });
2446
+ _chunk765F7ILIcjs.inspectorLogger.call(void 0, ).error({ msg: "Failed to fetch actors", error });
2466
2447
  return c.json("Failed to fetch actors", 500);
2467
2448
  }
2468
- }).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunk2MJYYF2Qcjs.CreateActorSchema), async (c) => {
2449
+ }).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunkI6AVFIVYcjs.CreateActorSchema), async (c) => {
2469
2450
  const actor2 = await c.var.inspector.accessors.createActor(
2470
2451
  c.req.valid("json")
2471
2452
  );
@@ -2491,7 +2472,7 @@ var ManagerInspector = class {
2491
2472
 
2492
2473
  constructor(accessors) {
2493
2474
  this.accessors = accessors();
2494
- _chunkQGRYH6TUcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
2475
+ _chunk765F7ILIcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
2495
2476
  }
2496
2477
  };
2497
2478
 
@@ -2566,7 +2547,7 @@ var FileSystemManagerDriver = class {
2566
2547
  };
2567
2548
  });
2568
2549
  }
2569
- const inlineClient = _chunk4PSLOAXRcjs.createClientWithDriver.call(void 0, this);
2550
+ const inlineClient = _chunkO7BIBANWcjs.createClientWithDriver.call(void 0, this);
2570
2551
  this.#actorDriver = this.#driverConfig.actor(
2571
2552
  registryConfig,
2572
2553
  runConfig,
@@ -2584,10 +2565,10 @@ var FileSystemManagerDriver = class {
2584
2565
  actorId
2585
2566
  });
2586
2567
  }
2587
- async openWebSocket(path3, actorId, encoding, params, connId, connToken) {
2588
- const pathOnly = path3.split("?")[0];
2568
+ async openWebSocket(path4, actorId, encoding, params, connId, connToken) {
2569
+ const pathOnly = path4.split("?")[0];
2589
2570
  const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
2590
- if (normalizedPath === _chunkSDXTJDDRcjs.PATH_CONNECT_WEBSOCKET) {
2571
+ if (normalizedPath === _chunk5JZPEJVJcjs.PATH_CONNECT_WEBSOCKET) {
2591
2572
  const wsHandler = await handleWebSocketConnect(
2592
2573
  void 0,
2593
2574
  this.#runConfig,
@@ -2599,16 +2580,16 @@ var FileSystemManagerDriver = class {
2599
2580
  connToken
2600
2581
  );
2601
2582
  return new InlineWebSocketAdapter2(wsHandler);
2602
- } else if (normalizedPath.startsWith(_chunkSDXTJDDRcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2583
+ } else if (normalizedPath.startsWith(_chunk5JZPEJVJcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2603
2584
  const wsHandler = await handleRawWebSocketHandler(
2604
2585
  void 0,
2605
- path3,
2586
+ path4,
2606
2587
  this.#actorDriver,
2607
2588
  actorId
2608
2589
  );
2609
2590
  return new InlineWebSocketAdapter2(wsHandler);
2610
2591
  } else {
2611
- throw new Error(`Unreachable path: ${path3}`);
2592
+ throw new Error(`Unreachable path: ${path4}`);
2612
2593
  }
2613
2594
  }
2614
2595
  async proxyRequest(c, actorRequest, actorId) {
@@ -2616,13 +2597,13 @@ var FileSystemManagerDriver = class {
2616
2597
  actorId
2617
2598
  });
2618
2599
  }
2619
- async proxyWebSocket(c, path3, actorId, encoding, connParams, connId, connToken) {
2600
+ async proxyWebSocket(c, path4, actorId, encoding, connParams, connId, connToken) {
2620
2601
  var _a, _b;
2621
2602
  const upgradeWebSocket = (_b = (_a = this.#runConfig).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
2622
2603
  _invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
2623
- const pathOnly = path3.split("?")[0];
2604
+ const pathOnly = path4.split("?")[0];
2624
2605
  const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
2625
- if (normalizedPath === _chunkSDXTJDDRcjs.PATH_CONNECT_WEBSOCKET) {
2606
+ if (normalizedPath === _chunk5JZPEJVJcjs.PATH_CONNECT_WEBSOCKET) {
2626
2607
  const wsHandler = await handleWebSocketConnect(
2627
2608
  c.req.raw,
2628
2609
  this.#runConfig,
@@ -2633,17 +2614,17 @@ var FileSystemManagerDriver = class {
2633
2614
  connId,
2634
2615
  connToken
2635
2616
  );
2636
- return upgradeWebSocket(() => wsHandler)(c, _chunkU2IXX6DYcjs.noopNext.call(void 0, ));
2637
- } else if (normalizedPath.startsWith(_chunkSDXTJDDRcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2617
+ return upgradeWebSocket(() => wsHandler)(c, _chunkNLYAKGMLcjs.noopNext.call(void 0, ));
2618
+ } else if (normalizedPath.startsWith(_chunk5JZPEJVJcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2638
2619
  const wsHandler = await handleRawWebSocketHandler(
2639
2620
  c.req.raw,
2640
- path3,
2621
+ path4,
2641
2622
  this.#actorDriver,
2642
2623
  actorId
2643
2624
  );
2644
- return upgradeWebSocket(() => wsHandler)(c, _chunkU2IXX6DYcjs.noopNext.call(void 0, ));
2625
+ return upgradeWebSocket(() => wsHandler)(c, _chunkNLYAKGMLcjs.noopNext.call(void 0, ));
2645
2626
  } else {
2646
- throw new Error(`Unreachable path: ${path3}`);
2627
+ throw new Error(`Unreachable path: ${path4}`);
2647
2628
  }
2648
2629
  }
2649
2630
  async getForId({ actorId }) {
@@ -2753,30 +2734,284 @@ function createMemoryDriver() {
2753
2734
  return createFileSystemOrMemoryDriver(false);
2754
2735
  }
2755
2736
 
2737
+ // src/registry/mod.ts
2738
+
2739
+
2756
2740
  // src/drivers/default.ts
2757
2741
  function chooseDefaultDriver(runConfig) {
2758
2742
  if (runConfig.endpoint && runConfig.driver) {
2759
2743
  throw new (0, _chunk5QGQK44Lcjs.UserError)(
2760
- "Cannot specify both 'engine' and 'driver' in configuration"
2744
+ "Cannot specify both 'endpoint' and 'driver' in configuration"
2745
+ );
2746
+ }
2747
+ if (runConfig.runnerKind === "serverless" && !runConfig.endpoint) {
2748
+ throw new (0, _chunk5QGQK44Lcjs.UserError)(
2749
+ "Cannot use 'serverless' runnerKind without the 'endpoint' config set."
2761
2750
  );
2762
2751
  }
2763
2752
  if (runConfig.driver) {
2764
2753
  return runConfig.driver;
2765
2754
  }
2766
- if (runConfig.endpoint) {
2767
- _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, ).debug({
2755
+ if (runConfig.endpoint || runConfig.token) {
2756
+ _chunk5JZPEJVJcjs.loggerWithoutContext.call(void 0, ).debug({
2768
2757
  msg: "using rivet engine driver",
2769
2758
  endpoint: runConfig.endpoint
2770
2759
  });
2771
- return createEngineDriver({
2772
- endpoint: runConfig.endpoint,
2773
- token: runConfig.token
2774
- });
2760
+ return createEngineDriver();
2775
2761
  }
2776
- _chunkSDXTJDDRcjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
2762
+ _chunk5JZPEJVJcjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
2777
2763
  return createFileSystemOrMemoryDriver(true);
2778
2764
  }
2779
2765
 
2766
+ // src/engine-process/mod.ts
2767
+ var _child_process = require('child_process');
2768
+
2769
+
2770
+
2771
+ var _promises2 = require('stream/promises');
2772
+
2773
+ // src/engine-process/log.ts
2774
+ function logger6() {
2775
+ return _chunk5ABUOI3Vcjs.getLogger.call(void 0, "engine-process");
2776
+ }
2777
+
2778
+ // src/engine-process/mod.ts
2779
+ var ENGINE_PORT = 6420;
2780
+ var ENGINE_ENDPOINT = `http://localhost:${ENGINE_PORT}`;
2781
+ var ENGINE_BASE_URL = "https://releases.rivet.gg/engine";
2782
+ var ENGINE_BINARY_NAME = "rivet-engine";
2783
+ async function ensureEngineProcess(options) {
2784
+ logger6().debug({ msg: "ensuring engine process", version: options.version });
2785
+ const storageRoot = getStoragePath();
2786
+ const binDir = path3.join(storageRoot, "bin");
2787
+ const varDir = path3.join(storageRoot, "var");
2788
+ const logsDir = path3.join(varDir, "logs", "rivet-engine");
2789
+ await ensureDirectoryExists(binDir);
2790
+ await ensureDirectoryExists(varDir);
2791
+ await ensureDirectoryExists(logsDir);
2792
+ const executableName = process.platform === "win32" ? `${ENGINE_BINARY_NAME}-${options.version}.exe` : `${ENGINE_BINARY_NAME}-${options.version}`;
2793
+ const binaryPath = path3.join(binDir, executableName);
2794
+ await downloadEngineBinaryIfNeeded(binaryPath, options.version, varDir);
2795
+ if (await isEngineRunning()) {
2796
+ try {
2797
+ await waitForEngineHealth();
2798
+ logger6().debug({
2799
+ msg: "engine already running and healthy",
2800
+ version: options.version
2801
+ });
2802
+ return;
2803
+ } catch (error) {
2804
+ logger6().warn({
2805
+ msg: "existing engine process not healthy, cannot restart automatically",
2806
+ error
2807
+ });
2808
+ throw new Error(
2809
+ "Engine process exists but is not healthy. Please manually stop the process on port 6420 and retry."
2810
+ );
2811
+ }
2812
+ }
2813
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-").replace(/\./g, "-");
2814
+ const stdoutLogPath = path3.join(logsDir, `engine-${timestamp}-stdout.log`);
2815
+ const stderrLogPath = path3.join(logsDir, `engine-${timestamp}-stderr.log`);
2816
+ const stdoutStream = _fs.createWriteStream.call(void 0, stdoutLogPath, { flags: "a" });
2817
+ const stderrStream = _fs.createWriteStream.call(void 0, stderrLogPath, { flags: "a" });
2818
+ logger6().debug({
2819
+ msg: "creating engine log files",
2820
+ stdout: stdoutLogPath,
2821
+ stderr: stderrLogPath
2822
+ });
2823
+ const child = _child_process.spawn.call(void 0, binaryPath, ["start"], {
2824
+ cwd: path3.dirname(binaryPath),
2825
+ stdio: ["inherit", "pipe", "pipe"],
2826
+ env: {
2827
+ ...process.env
2828
+ }
2829
+ });
2830
+ if (!child.pid) {
2831
+ throw new Error("failed to spawn rivet engine process");
2832
+ }
2833
+ if (child.stdout) {
2834
+ child.stdout.pipe(stdoutStream);
2835
+ }
2836
+ if (child.stderr) {
2837
+ child.stderr.pipe(stderrStream);
2838
+ }
2839
+ logger6().debug({
2840
+ msg: "spawned engine process",
2841
+ pid: child.pid,
2842
+ cwd: path3.dirname(binaryPath)
2843
+ });
2844
+ child.once("exit", (code, signal) => {
2845
+ logger6().warn({
2846
+ msg: "engine process exited",
2847
+ code,
2848
+ signal
2849
+ });
2850
+ stdoutStream.end();
2851
+ stderrStream.end();
2852
+ });
2853
+ child.once("error", (error) => {
2854
+ logger6().error({
2855
+ msg: "engine process failed",
2856
+ error
2857
+ });
2858
+ stdoutStream.end();
2859
+ stderrStream.end();
2860
+ });
2861
+ await waitForEngineHealth();
2862
+ logger6().info({
2863
+ msg: "engine process started",
2864
+ pid: child.pid,
2865
+ version: options.version,
2866
+ logs: {
2867
+ stdout: stdoutLogPath,
2868
+ stderr: stderrLogPath
2869
+ }
2870
+ });
2871
+ }
2872
+ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
2873
+ const binaryExists = await fileExists(binaryPath);
2874
+ if (binaryExists) {
2875
+ logger6().debug({
2876
+ msg: "engine binary already cached",
2877
+ version,
2878
+ path: binaryPath
2879
+ });
2880
+ return;
2881
+ }
2882
+ const { targetTriplet, extension } = resolveTargetTriplet();
2883
+ const remoteFile = `${ENGINE_BINARY_NAME}-${targetTriplet}${extension}`;
2884
+ const downloadUrl = `${ENGINE_BASE_URL}/${version}/${remoteFile}`;
2885
+ logger6().info({
2886
+ msg: "downloading engine binary",
2887
+ url: downloadUrl,
2888
+ path: binaryPath,
2889
+ version
2890
+ });
2891
+ const response = await fetch(downloadUrl);
2892
+ if (!response.ok || !response.body) {
2893
+ throw new Error(
2894
+ `failed to download rivet engine binary from ${downloadUrl}: ${response.status} ${response.statusText}`
2895
+ );
2896
+ }
2897
+ const tempPath = `${binaryPath}.${process.pid}.tmp`;
2898
+ await _promises2.pipeline.call(void 0, response.body, _fs.createWriteStream.call(void 0, tempPath));
2899
+ if (process.platform !== "win32") {
2900
+ await fs3.chmod(tempPath, 493);
2901
+ }
2902
+ await fs3.rename(tempPath, binaryPath);
2903
+ logger6().debug({
2904
+ msg: "engine binary download complete",
2905
+ version,
2906
+ path: binaryPath
2907
+ });
2908
+ logger6().info({
2909
+ msg: "engine binary downloaded",
2910
+ version,
2911
+ path: binaryPath
2912
+ });
2913
+ }
2914
+ function resolveTargetTriplet() {
2915
+ return resolveTargetTripletFor(process.platform, process.arch);
2916
+ }
2917
+ function resolveTargetTripletFor(platform, arch) {
2918
+ switch (platform) {
2919
+ case "darwin":
2920
+ if (arch === "arm64") {
2921
+ return { targetTriplet: "aarch64-apple-darwin", extension: "" };
2922
+ }
2923
+ if (arch === "x64") {
2924
+ return { targetTriplet: "x86_64-apple-darwin", extension: "" };
2925
+ }
2926
+ break;
2927
+ case "linux":
2928
+ if (arch === "x64") {
2929
+ return { targetTriplet: "x86_64-unknown-linux-musl", extension: "" };
2930
+ }
2931
+ break;
2932
+ case "win32":
2933
+ if (arch === "x64") {
2934
+ return { targetTriplet: "x86_64-pc-windows-gnu", extension: ".exe" };
2935
+ }
2936
+ break;
2937
+ }
2938
+ throw new Error(
2939
+ `unsupported platform for rivet engine binary: ${platform}/${arch}`
2940
+ );
2941
+ }
2942
+ async function isEngineRunning() {
2943
+ return await checkIfEngineAlreadyRunningOnPort(ENGINE_PORT);
2944
+ }
2945
+ async function checkIfEngineAlreadyRunningOnPort(port) {
2946
+ let response;
2947
+ try {
2948
+ response = await fetch(`http://localhost:${port}/health`);
2949
+ } catch (err) {
2950
+ return false;
2951
+ }
2952
+ if (response.ok) {
2953
+ const health = await response.json();
2954
+ if (health.runtime === "engine") {
2955
+ logger6().debug({
2956
+ msg: "rivet engine already running on port",
2957
+ port
2958
+ });
2959
+ return true;
2960
+ } else if (health.runtime === "rivetkit") {
2961
+ logger6().error({
2962
+ msg: "another rivetkit process is already running on port",
2963
+ port
2964
+ });
2965
+ throw new Error(
2966
+ "RivetKit process already running on port 6420, stop that process and restart this."
2967
+ );
2968
+ } else {
2969
+ throw new Error(
2970
+ "Unknown process running on port 6420, cannot identify what it is."
2971
+ );
2972
+ }
2973
+ }
2974
+ return false;
2975
+ }
2976
+ async function fileExists(filePath) {
2977
+ try {
2978
+ await fs3.access(filePath);
2979
+ return true;
2980
+ } catch (e6) {
2981
+ return false;
2982
+ }
2983
+ }
2984
+ var HEALTH_MAX_WAIT = 1e4;
2985
+ var HEALTH_INTERVAL = 100;
2986
+ async function waitForEngineHealth() {
2987
+ const maxRetries = Math.ceil(HEALTH_MAX_WAIT / HEALTH_INTERVAL);
2988
+ logger6().debug({ msg: "waiting for engine health check" });
2989
+ for (let i = 0; i < maxRetries; i++) {
2990
+ try {
2991
+ const response = await fetch(`${ENGINE_ENDPOINT}/health`);
2992
+ if (response.ok) {
2993
+ logger6().debug({ msg: "engine health check passed" });
2994
+ return;
2995
+ }
2996
+ } catch (error) {
2997
+ if (i === maxRetries - 1) {
2998
+ throw new Error(
2999
+ `engine health check failed after ${maxRetries} retries: ${error}`
3000
+ );
3001
+ }
3002
+ }
3003
+ if (i < maxRetries - 1) {
3004
+ logger6().trace({
3005
+ msg: "engine not ready, retrying",
3006
+ attempt: i + 1,
3007
+ maxRetries
3008
+ });
3009
+ await new Promise((resolve) => setTimeout(resolve, HEALTH_INTERVAL));
3010
+ }
3011
+ }
3012
+ throw new Error(`engine health check failed after ${maxRetries} retries`);
3013
+ }
3014
+
2780
3015
  // src/manager/router.ts
2781
3016
  var _zodopenapi = require('@hono/zod-openapi');
2782
3017
 
@@ -2784,6 +3019,7 @@ var _zodopenapi = require('@hono/zod-openapi');
2784
3019
 
2785
3020
 
2786
3021
 
3022
+ var _factory = require('hono/factory');
2787
3023
 
2788
3024
 
2789
3025
 
@@ -2838,12 +3074,24 @@ async function actorGateway(runConfig, managerDriver, c, next) {
2838
3074
  if (c.req.path.startsWith("/.test/")) {
2839
3075
  return next();
2840
3076
  }
3077
+ let strippedPath = c.req.path;
3078
+ if (runConfig.basePath && strippedPath.startsWith(runConfig.basePath)) {
3079
+ strippedPath = strippedPath.slice(runConfig.basePath.length);
3080
+ if (!strippedPath.startsWith("/")) {
3081
+ strippedPath = "/" + strippedPath;
3082
+ }
3083
+ }
2841
3084
  if (c.req.header("upgrade") === "websocket") {
2842
- return await handleWebSocketGateway(runConfig, managerDriver, c);
3085
+ return await handleWebSocketGateway(
3086
+ runConfig,
3087
+ managerDriver,
3088
+ c,
3089
+ strippedPath
3090
+ );
2843
3091
  }
2844
- return await handleHttpGateway(managerDriver, c, next);
3092
+ return await handleHttpGateway(managerDriver, c, next, strippedPath);
2845
3093
  }
2846
- async function handleWebSocketGateway(runConfig, managerDriver, c) {
3094
+ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath) {
2847
3095
  var _a;
2848
3096
  const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
2849
3097
  if (!upgradeWebSocket) {
@@ -2859,20 +3107,20 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
2859
3107
  if (protocols) {
2860
3108
  const protocolList = protocols.split(",").map((p) => p.trim());
2861
3109
  for (const protocol of protocolList) {
2862
- if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_TARGET)) {
2863
- target = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_TARGET.length);
2864
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_ACTOR)) {
2865
- actorId = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_ACTOR.length);
2866
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING)) {
2867
- encodingRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING.length);
2868
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS)) {
3110
+ if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_TARGET)) {
3111
+ target = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_TARGET.length);
3112
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ACTOR)) {
3113
+ actorId = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_ACTOR.length);
3114
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING)) {
3115
+ encodingRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING.length);
3116
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS)) {
2869
3117
  connParamsRaw = decodeURIComponent(
2870
- protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS.length)
3118
+ protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS.length)
2871
3119
  );
2872
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID)) {
2873
- connIdRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID.length);
2874
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN)) {
2875
- connTokenRaw = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN.length);
3120
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID)) {
3121
+ connIdRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID.length);
3122
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN)) {
3123
+ connTokenRaw = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN.length);
2876
3124
  }
2877
3125
  }
2878
3126
  }
@@ -2885,12 +3133,12 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
2885
3133
  logger().debug({
2886
3134
  msg: "proxying websocket to actor",
2887
3135
  actorId,
2888
- path: c.req.path,
3136
+ path: strippedPath,
2889
3137
  encoding: encodingRaw
2890
3138
  });
2891
3139
  const encoding = encodingRaw || "json";
2892
3140
  const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
2893
- const pathWithQuery = c.req.url.includes("?") ? c.req.path + c.req.url.substring(c.req.url.indexOf("?")) : c.req.path;
3141
+ const pathWithQuery = c.req.url.includes("?") ? strippedPath + c.req.url.substring(c.req.url.indexOf("?")) : strippedPath;
2894
3142
  return await managerDriver.proxyWebSocket(
2895
3143
  c,
2896
3144
  pathWithQuery,
@@ -2902,9 +3150,9 @@ async function handleWebSocketGateway(runConfig, managerDriver, c) {
2902
3150
  connTokenRaw
2903
3151
  );
2904
3152
  }
2905
- async function handleHttpGateway(managerDriver, c, next) {
2906
- const target = c.req.header(_chunkSDXTJDDRcjs.HEADER_RIVET_TARGET);
2907
- const actorId = c.req.header(_chunkSDXTJDDRcjs.HEADER_RIVET_ACTOR);
3153
+ async function handleHttpGateway(managerDriver, c, next, strippedPath) {
3154
+ const target = c.req.header(_chunk5JZPEJVJcjs.HEADER_RIVET_TARGET);
3155
+ const actorId = c.req.header(_chunk5JZPEJVJcjs.HEADER_RIVET_ACTOR);
2908
3156
  if (target !== "actor") {
2909
3157
  return next();
2910
3158
  }
@@ -2914,19 +3162,20 @@ async function handleHttpGateway(managerDriver, c, next) {
2914
3162
  logger().debug({
2915
3163
  msg: "proxying request to actor",
2916
3164
  actorId,
2917
- path: c.req.path,
3165
+ path: strippedPath,
2918
3166
  method: c.req.method
2919
3167
  });
2920
3168
  const proxyHeaders = new Headers(c.req.raw.headers);
2921
- proxyHeaders.delete(_chunkSDXTJDDRcjs.HEADER_RIVET_TARGET);
2922
- proxyHeaders.delete(_chunkSDXTJDDRcjs.HEADER_RIVET_ACTOR);
3169
+ proxyHeaders.delete(_chunk5JZPEJVJcjs.HEADER_RIVET_TARGET);
3170
+ proxyHeaders.delete(_chunk5JZPEJVJcjs.HEADER_RIVET_ACTOR);
2923
3171
  const url = new URL(c.req.url);
2924
- const proxyUrl = new URL(`http://actor${url.pathname}${url.search}`);
3172
+ const proxyUrl = new URL(`http://actor${strippedPath}${url.search}`);
2925
3173
  const proxyRequest = new Request(proxyUrl, {
2926
3174
  method: c.req.raw.method,
2927
3175
  headers: proxyHeaders,
2928
3176
  body: c.req.raw.body,
2929
- signal: c.req.raw.signal
3177
+ signal: c.req.raw.signal,
3178
+ duplex: "half"
2930
3179
  });
2931
3180
  return await managerDriver.proxyRequest(c, proxyRequest, actorId);
2932
3181
  }
@@ -2936,7 +3185,7 @@ async function createTestWebSocketProxy(clientWsPromise) {
2936
3185
  promise: serverWsPromise,
2937
3186
  resolve: serverWsResolve,
2938
3187
  reject: serverWsReject
2939
- } = _chunkU2IXX6DYcjs.promiseWithResolvers.call(void 0, );
3188
+ } = _chunkNLYAKGMLcjs.promiseWithResolvers.call(void 0, );
2940
3189
  try {
2941
3190
  logger().debug({ msg: "awaiting client websocket promise" });
2942
3191
  const ws = await clientWsPromise;
@@ -3102,6 +3351,22 @@ async function createTestWebSocketProxy(clientWsPromise) {
3102
3351
  };
3103
3352
  }
3104
3353
 
3354
+ // src/manager/router-schema.ts
3355
+
3356
+ var ServerlessStartHeadersSchema = _zod.z.object({
3357
+ endpoint: _zod.z.string({ required_error: "x-rivet-endpoint header is required" }),
3358
+ token: _zod.z.string({ invalid_type_error: "x-rivet-token header must be a string" }).optional(),
3359
+ totalSlots: _zod.z.coerce.number({
3360
+ invalid_type_error: "x-rivet-total-slots header must be a number"
3361
+ }).int("x-rivet-total-slots header must be an integer").gte(1, "x-rivet-total-slots header must be positive"),
3362
+ runnerName: _zod.z.string({
3363
+ required_error: "x-rivet-runner-name header is required"
3364
+ }),
3365
+ namespace: _zod.z.string({
3366
+ required_error: "x-rivet-namespace-id header is required"
3367
+ })
3368
+ });
3369
+
3105
3370
  // src/manager/router.ts
3106
3371
  function buildOpenApiResponses(schema) {
3107
3372
  return {
@@ -3121,21 +3386,42 @@ function buildOpenApiResponses(schema) {
3121
3386
  }
3122
3387
  };
3123
3388
  }
3124
- function createManagerRouter(registryConfig, runConfig, managerDriver, serverlessActorDriverBuilder) {
3389
+ function createManagerRouter(registryConfig, runConfig, managerDriver, driverConfig, client) {
3125
3390
  const router = new (0, _zodopenapi.OpenAPIHono)({ strict: false }).basePath(
3126
3391
  runConfig.basePath
3127
3392
  );
3128
3393
  router.use("*", loggerMiddleware(logger()));
3129
- if (serverlessActorDriverBuilder) {
3130
- addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router);
3131
- } else {
3394
+ router.use(
3395
+ "*",
3396
+ _factory.createMiddleware.call(void 0, async (c, next) => {
3397
+ const upgrade = c.req.header("upgrade");
3398
+ const isWebSocket = (upgrade == null ? void 0 : upgrade.toLowerCase()) === "websocket";
3399
+ const isGet = c.req.method === "GET";
3400
+ if (isGet && isWebSocket) {
3401
+ c.header("Sec-WebSocket-Protocol", "rivet");
3402
+ }
3403
+ await next();
3404
+ })
3405
+ );
3406
+ if (runConfig.runnerKind === "serverless") {
3407
+ addServerlessRoutes(
3408
+ driverConfig,
3409
+ registryConfig,
3410
+ runConfig,
3411
+ managerDriver,
3412
+ client,
3413
+ router
3414
+ );
3415
+ } else if (runConfig.runnerKind === "normal") {
3132
3416
  addManagerRoutes(registryConfig, runConfig, managerDriver, router);
3417
+ } else {
3418
+ _chunkNLYAKGMLcjs.assertUnreachable.call(void 0, runConfig.runnerKind);
3133
3419
  }
3134
3420
  router.notFound(handleRouteNotFound);
3135
3421
  router.onError(handleRouteError);
3136
3422
  return { router, openapi: router };
3137
3423
  }
3138
- function addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router) {
3424
+ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDriver, client, router) {
3139
3425
  if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
3140
3426
  router.get("/", (c) => {
3141
3427
  return c.text(
@@ -3143,12 +3429,39 @@ function addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router) {
3143
3429
  );
3144
3430
  });
3145
3431
  router.get("/start", async (c) => {
3146
- const token = c.req.header("x-rivet-token");
3147
- let totalSlots = parseInt(
3148
- c.req.header("x-rivetkit-total-slots")
3432
+ var _a;
3433
+ const parseResult = ServerlessStartHeadersSchema.safeParse({
3434
+ endpoint: c.req.header("x-rivet-endpoint"),
3435
+ token: _nullishCoalesce(c.req.header("x-rivet-token"), () => ( void 0)),
3436
+ totalSlots: c.req.header("x-rivet-total-slots"),
3437
+ runnerName: c.req.header("x-rivet-runner-name"),
3438
+ namespace: c.req.header("x-rivet-namespace-id")
3439
+ });
3440
+ if (!parseResult.success) {
3441
+ throw new (0, _chunk5QGQK44Lcjs.InvalidRequest)(
3442
+ _nullishCoalesce(((_a = parseResult.error.issues[0]) == null ? void 0 : _a.message), () => ( "invalid serverless start headers"))
3443
+ );
3444
+ }
3445
+ const { endpoint, token, totalSlots, runnerName, namespace } = parseResult.data;
3446
+ logger().debug({
3447
+ msg: "received serverless runner start request",
3448
+ endpoint,
3449
+ totalSlots,
3450
+ runnerName,
3451
+ namespace
3452
+ });
3453
+ const newRunConfig = Object.assign({}, runConfig);
3454
+ newRunConfig.endpoint = endpoint;
3455
+ newRunConfig.token = token;
3456
+ newRunConfig.totalSlots = totalSlots;
3457
+ newRunConfig.runnerName = runnerName;
3458
+ newRunConfig.namespace = namespace;
3459
+ const actorDriver = driverConfig.actor(
3460
+ registryConfig,
3461
+ newRunConfig,
3462
+ managerDriver,
3463
+ client
3149
3464
  );
3150
- if (isNaN(totalSlots)) totalSlots = void 0;
3151
- const actorDriver = serverlessActorDriverBuilder(token, totalSlots);
3152
3465
  _invariant2.default.call(void 0,
3153
3466
  actorDriver.serverlessHandleStart,
3154
3467
  "missing serverlessHandleStart on ActorDriver"
@@ -3156,18 +3469,22 @@ function addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router) {
3156
3469
  return await actorDriver.serverlessHandleStart(c);
3157
3470
  });
3158
3471
  router.get("/health", (c) => {
3159
- return c.text("ok");
3472
+ return c.json({
3473
+ status: "ok",
3474
+ runtime: "rivetkit",
3475
+ version: _chunkNLYAKGMLcjs.VERSION
3476
+ });
3160
3477
  });
3161
3478
  }
3162
3479
  function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3163
3480
  var _a;
3164
- if (_chunkQGRYH6TUcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
3481
+ if (_chunk765F7ILIcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
3165
3482
  if (!managerDriver.inspector) {
3166
3483
  throw new (0, _chunk5QGQK44Lcjs.Unsupported)("inspector");
3167
3484
  }
3168
3485
  router.route(
3169
3486
  "/inspect",
3170
- new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkQGRYH6TUcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
3487
+ new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunk765F7ILIcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
3171
3488
  c.set("inspector", managerDriver.inspector);
3172
3489
  return next();
3173
3490
  }).route("/", createManagerInspectorRouter())
@@ -3235,7 +3552,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3235
3552
  }
3236
3553
  }
3237
3554
  return c.json({
3238
- actors: actors.map(createApiActor)
3555
+ actors: actors.map(
3556
+ (actor2) => createApiActor(actor2, runConfig.runnerName)
3557
+ )
3239
3558
  });
3240
3559
  });
3241
3560
  }
@@ -3264,7 +3583,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3264
3583
  });
3265
3584
  if (existingActor) {
3266
3585
  return c.json({
3267
- actor: createApiActor(existingActor),
3586
+ actor: createApiActor(existingActor, runConfig.runnerName),
3268
3587
  created: false
3269
3588
  });
3270
3589
  }
@@ -3278,7 +3597,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3278
3597
  // Not provided in the request schema
3279
3598
  });
3280
3599
  return c.json({
3281
- actor: createApiActor(newActor),
3600
+ actor: createApiActor(newActor, runConfig.runnerName),
3282
3601
  created: true
3283
3602
  });
3284
3603
  });
@@ -3309,7 +3628,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3309
3628
  region: void 0
3310
3629
  // Not provided in the request schema
3311
3630
  });
3312
- const actor2 = createApiActor(actorOutput);
3631
+ const actor2 = createApiActor(actorOutput, runConfig.runnerName);
3313
3632
  return c.json({ actor: actor2 });
3314
3633
  });
3315
3634
  }
@@ -3329,7 +3648,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3329
3648
  const output = await managerDriver[method](...args);
3330
3649
  response = { ok: output };
3331
3650
  } catch (rawErr) {
3332
- const err = _chunkU2IXX6DYcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
3651
+ const err = _chunkNLYAKGMLcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
3333
3652
  response = { err };
3334
3653
  }
3335
3654
  return c.body(cbor4.encode(response));
@@ -3344,34 +3663,34 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3344
3663
  let actorId = "";
3345
3664
  let encoding = "bare";
3346
3665
  let transport = "websocket";
3347
- let path3 = "";
3666
+ let path4 = "";
3348
3667
  let params;
3349
3668
  let connId;
3350
3669
  let connToken;
3351
3670
  for (const protocol of protocols) {
3352
- if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_ACTOR)) {
3353
- actorId = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_ACTOR.length);
3354
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING)) {
3671
+ if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ACTOR)) {
3672
+ actorId = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_ACTOR.length);
3673
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING)) {
3355
3674
  encoding = protocol.substring(
3356
- _chunkSDXTJDDRcjs.WS_PROTOCOL_ENCODING.length
3675
+ _chunk5JZPEJVJcjs.WS_PROTOCOL_ENCODING.length
3357
3676
  );
3358
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_TRANSPORT)) {
3677
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_TRANSPORT)) {
3359
3678
  transport = protocol.substring(
3360
- _chunkSDXTJDDRcjs.WS_PROTOCOL_TRANSPORT.length
3679
+ _chunk5JZPEJVJcjs.WS_PROTOCOL_TRANSPORT.length
3361
3680
  );
3362
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_PATH)) {
3363
- path3 = decodeURIComponent(
3364
- protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_PATH.length)
3681
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_PATH)) {
3682
+ path4 = decodeURIComponent(
3683
+ protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_PATH.length)
3365
3684
  );
3366
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS)) {
3685
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS)) {
3367
3686
  const paramsRaw = decodeURIComponent(
3368
- protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_PARAMS.length)
3687
+ protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_PARAMS.length)
3369
3688
  );
3370
3689
  params = JSON.parse(paramsRaw);
3371
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID)) {
3372
- connId = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_ID.length);
3373
- } else if (protocol.startsWith(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN)) {
3374
- connToken = protocol.substring(_chunkSDXTJDDRcjs.WS_PROTOCOL_CONN_TOKEN.length);
3690
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID)) {
3691
+ connId = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_ID.length);
3692
+ } else if (protocol.startsWith(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN)) {
3693
+ connToken = protocol.substring(_chunk5JZPEJVJcjs.WS_PROTOCOL_CONN_TOKEN.length);
3375
3694
  }
3376
3695
  }
3377
3696
  logger().debug({
@@ -3380,10 +3699,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3380
3699
  params,
3381
3700
  encodingKind: encoding,
3382
3701
  transport,
3383
- path: path3
3702
+ path: path4
3384
3703
  });
3385
3704
  const clientWsPromise = managerDriver.openWebSocket(
3386
- path3,
3705
+ path4,
3387
3706
  actorId,
3388
3707
  encoding,
3389
3708
  params,
@@ -3391,10 +3710,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3391
3710
  connToken
3392
3711
  );
3393
3712
  return await createTestWebSocketProxy(clientWsPromise);
3394
- })(c, _chunkU2IXX6DYcjs.noopNext.call(void 0, ));
3713
+ })(c, _chunkNLYAKGMLcjs.noopNext.call(void 0, ));
3395
3714
  });
3396
3715
  router.all(".test/inline-driver/send-request/*", async (c) => {
3397
- const actorId = c.req.header(_chunkSDXTJDDRcjs.HEADER_ACTOR_ID);
3716
+ const actorId = c.req.header(_chunk5JZPEJVJcjs.HEADER_ACTOR_ID);
3398
3717
  if (!actorId) {
3399
3718
  return c.text("Missing required headers", 400);
3400
3719
  }
@@ -3421,9 +3740,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3421
3740
  } catch (error) {
3422
3741
  logger().error({
3423
3742
  msg: "error in test inline raw http",
3424
- error: _chunkU2IXX6DYcjs.stringifyError.call(void 0, error)
3743
+ error: _chunkNLYAKGMLcjs.stringifyError.call(void 0, error)
3425
3744
  });
3426
- const err = _chunkU2IXX6DYcjs.deconstructError.call(void 0, error, logger(), {}, true);
3745
+ const err = _chunkNLYAKGMLcjs.deconstructError.call(void 0, error, logger(), {}, true);
3427
3746
  return c.json(
3428
3747
  {
3429
3748
  error: {
@@ -3465,14 +3784,19 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3465
3784
  } catch (error) {
3466
3785
  logger().error({
3467
3786
  msg: "error forcing disconnect",
3468
- error: _chunkU2IXX6DYcjs.stringifyError.call(void 0, error)
3787
+ error: _chunkNLYAKGMLcjs.stringifyError.call(void 0, error)
3469
3788
  });
3470
3789
  return c.text(`Error: ${error}`, 500);
3471
3790
  }
3472
3791
  });
3473
3792
  }
3474
3793
  router.get("/health", (c) => {
3475
- return c.text("ok");
3794
+ return c.json({
3795
+ status: "ok",
3796
+ rivetkit: {
3797
+ version: _chunkNLYAKGMLcjs.VERSION
3798
+ }
3799
+ });
3476
3800
  });
3477
3801
  (_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(
3478
3802
  managerDriver,
@@ -3480,15 +3804,14 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3480
3804
  router
3481
3805
  );
3482
3806
  }
3483
- function createApiActor(actor2) {
3807
+ function createApiActor(actor2, runnerName = "default") {
3484
3808
  return {
3485
3809
  actor_id: actor2.actorId,
3486
3810
  name: actor2.name,
3487
- key: _chunk4PSLOAXRcjs.serializeActorKey.call(void 0, actor2.key),
3811
+ key: _chunkO7BIBANWcjs.serializeActorKey.call(void 0, actor2.key),
3488
3812
  namespace_id: "default",
3489
3813
  // Assert default namespace
3490
- runner_name_selector: "rivetkit",
3491
- // Assert rivetkit runner
3814
+ runner_name_selector: runnerName,
3492
3815
  create_ts: Date.now(),
3493
3816
  connectable_ts: null,
3494
3817
  destroy_ts: null,
@@ -3517,13 +3840,13 @@ var RegistryConfigSchema = _zod.z.object({
3517
3840
  });
3518
3841
 
3519
3842
  // src/registry/log.ts
3520
- function logger6() {
3521
- return _chunkDL7TPF63cjs.getLogger.call(void 0, "registry");
3843
+ function logger7() {
3844
+ return _chunk5ABUOI3Vcjs.getLogger.call(void 0, "registry");
3522
3845
  }
3523
3846
 
3524
3847
  // src/registry/serve.ts
3525
3848
 
3526
- async function crossPlatformServe(rivetKitRouter, userRouter) {
3849
+ async function crossPlatformServe(runConfig, rivetKitRouter, userRouter) {
3527
3850
  const app = _nullishCoalesce(userRouter, () => ( new (0, _hono.Hono)()));
3528
3851
  let serve;
3529
3852
  try {
@@ -3533,7 +3856,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
3533
3856
  )));
3534
3857
  serve = dep.serve;
3535
3858
  } catch (err) {
3536
- logger6().error(
3859
+ logger7().error(
3537
3860
  "failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'"
3538
3861
  );
3539
3862
  process.exit(1);
@@ -3547,7 +3870,7 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
3547
3870
  )));
3548
3871
  createNodeWebSocket = dep.createNodeWebSocket;
3549
3872
  } catch (err) {
3550
- logger6().error(
3873
+ logger7().error(
3551
3874
  "failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'"
3552
3875
  );
3553
3876
  process.exit(1);
@@ -3555,10 +3878,10 @@ async function crossPlatformServe(rivetKitRouter, userRouter) {
3555
3878
  const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({
3556
3879
  app
3557
3880
  });
3558
- const port = 6420;
3881
+ const port = runConfig.defaultServerPort;
3559
3882
  const server = serve(
3560
3883
  { fetch: app.fetch, port },
3561
- () => logger6().info({ msg: "server listening", port })
3884
+ () => logger7().info({ msg: "server listening", port })
3562
3885
  );
3563
3886
  injectWebSocket(server);
3564
3887
  return { upgradeWebSocket };
@@ -3578,20 +3901,49 @@ var Registry = class {
3578
3901
  */
3579
3902
  start(inputConfig) {
3580
3903
  var _a, _b, _c;
3581
- const config2 = _chunkSOC4HWCGcjs.RunConfigSchema.parse(inputConfig);
3904
+ const config2 = _chunk6PORXHSQcjs.RunnerConfigSchema.parse(inputConfig);
3905
+ if (config2.autoConfigureServerless && config2.runnerKind !== "serverless") {
3906
+ throw new Error(
3907
+ "autoConfigureServerless can only be configured when runnerKind is 'serverless'"
3908
+ );
3909
+ }
3910
+ const readyPromises = [];
3911
+ if (config2.runEngine) {
3912
+ logger7().debug({
3913
+ msg: "run engine requested",
3914
+ version: config2.runEngineVersion
3915
+ });
3916
+ _invariant2.default.call(void 0,
3917
+ config2.endpoint === void 0,
3918
+ "cannot specify 'endpoint' with 'runEngine'"
3919
+ );
3920
+ config2.endpoint = ENGINE_ENDPOINT;
3921
+ config2.disableActorDriver = true;
3922
+ const engineProcessPromise = ensureEngineProcess({
3923
+ version: config2.runEngineVersion
3924
+ });
3925
+ readyPromises.push(engineProcessPromise);
3926
+ }
3927
+ if (config2.runnerKind === "serverless") {
3928
+ config2.defaultServerPort = 8080;
3929
+ config2.overrideServerAddress = config2.endpoint;
3930
+ config2.disableActorDriver = true;
3931
+ }
3582
3932
  if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
3583
- _chunkDL7TPF63cjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
3933
+ _chunk5ABUOI3Vcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
3584
3934
  } else {
3585
- _chunkDL7TPF63cjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
3935
+ _chunk5ABUOI3Vcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
3586
3936
  }
3587
3937
  const driver = chooseDefaultDriver(config2);
3588
3938
  if (driver.name === "engine") {
3589
3939
  config2.inspector.enabled = { manager: false, actor: true };
3590
- config2.disableServer = true;
3940
+ if (config2.runnerKind !== "serverless") {
3941
+ config2.disableDefaultServer = true;
3942
+ }
3591
3943
  }
3592
3944
  if (driver.name === "cloudflare-workers") {
3593
3945
  config2.inspector.enabled = { manager: false, actor: true };
3594
- config2.disableServer = true;
3946
+ config2.disableDefaultServer = true;
3595
3947
  config2.disableActorDriver = true;
3596
3948
  config2.noWelcome = true;
3597
3949
  }
@@ -3600,49 +3952,60 @@ var Registry = class {
3600
3952
  config2.getUpgradeWebSocket = () => upgradeWebSocket;
3601
3953
  }
3602
3954
  const managerDriver = driver.manager(this.#config, config2);
3603
- _chunkQGRYH6TUcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
3604
- const client = _chunk4PSLOAXRcjs.createClientWithDriver.call(void 0, managerDriver, config2);
3955
+ _chunk765F7ILIcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
3956
+ const client = _chunkO7BIBANWcjs.createClientWithDriver.call(void 0, managerDriver, config2);
3605
3957
  const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
3606
- logger6().info({
3958
+ logger7().info({
3607
3959
  msg: "rivetkit ready",
3608
3960
  driver: driver.name,
3609
3961
  definitions: Object.keys(this.#config.use).length,
3610
3962
  ...driverLog
3611
3963
  });
3612
- if (_chunkQGRYH6TUcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
3613
- logger6().info({ msg: "inspector ready", url: _chunkQGRYH6TUcjs.getInspectorUrl.call(void 0, config2) });
3964
+ if (_chunk765F7ILIcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
3965
+ logger7().info({ msg: "inspector ready", url: _chunk765F7ILIcjs.getInspectorUrl.call(void 0, config2) });
3614
3966
  }
3615
3967
  if (!config2.noWelcome) {
3616
3968
  const displayInfo = managerDriver.displayInformation();
3617
3969
  console.log();
3618
- console.log(` RivetKit ${_chunkU2IXX6DYcjs.package_default.version} (${displayInfo.name})`);
3619
- console.log(` - Endpoint: http://127.0.0.1:6420`);
3970
+ console.log(` RivetKit ${_chunkNLYAKGMLcjs.package_default.version} (${displayInfo.name})`);
3971
+ if (!config2.disableDefaultServer) {
3972
+ console.log(` - Endpoint: ${config2.endpoint}`);
3973
+ } else if (config2.overrideServerAddress) {
3974
+ console.log(` - Endpoint: ${config2.overrideServerAddress}`);
3975
+ }
3976
+ if (config2.runEngine) {
3977
+ const padding = " ".repeat(Math.max(0, 13 - "Engine".length));
3978
+ console.log(` - Engine:${padding}v${config2.runEngineVersion}`);
3979
+ }
3620
3980
  for (const [k, v] of Object.entries(displayInfo.properties)) {
3621
3981
  const padding = " ".repeat(Math.max(0, 13 - k.length));
3622
3982
  console.log(` - ${k}:${padding}${v}`);
3623
3983
  }
3624
- if (_chunkQGRYH6TUcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
3625
- console.log(` - Inspector: ${_chunkQGRYH6TUcjs.getInspectorUrl.call(void 0, config2)}`);
3984
+ if (_chunk765F7ILIcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
3985
+ console.log(` - Inspector: ${_chunk765F7ILIcjs.getInspectorUrl.call(void 0, config2)}`);
3626
3986
  }
3627
3987
  console.log();
3628
3988
  }
3629
3989
  if (!config2.disableActorDriver) {
3630
- const _actorDriver = driver.actor(
3631
- this.#config,
3632
- config2,
3633
- managerDriver,
3634
- client
3635
- );
3990
+ Promise.all(readyPromises).then(async () => {
3991
+ driver.actor(this.#config, config2, managerDriver, client);
3992
+ });
3993
+ }
3994
+ if (config2.runnerKind === "serverless" && config2.autoConfigureServerless) {
3995
+ Promise.all(readyPromises).then(async () => {
3996
+ await configureServerlessRunner(config2);
3997
+ });
3636
3998
  }
3637
3999
  const { router: hono } = createManagerRouter(
3638
4000
  this.#config,
3639
4001
  config2,
3640
4002
  managerDriver,
3641
- void 0
4003
+ driver,
4004
+ client
3642
4005
  );
3643
- if (!config2.disableServer) {
4006
+ if (!config2.disableDefaultServer) {
3644
4007
  (async () => {
3645
- const out = await crossPlatformServe(hono, void 0);
4008
+ const out = await crossPlatformServe(config2, hono, void 0);
3646
4009
  upgradeWebSocket = out.upgradeWebSocket;
3647
4010
  })();
3648
4011
  }
@@ -3651,83 +4014,83 @@ var Registry = class {
3651
4014
  fetch: hono.fetch.bind(hono)
3652
4015
  };
3653
4016
  }
3654
- startServerless(inputConfig) {
3655
- var _a, _b, _c, _d, _e;
3656
- const config2 = _chunkSOC4HWCGcjs.RunConfigSchema.parse(inputConfig);
3657
- if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
3658
- _chunkDL7TPF63cjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
3659
- } else {
3660
- _chunkDL7TPF63cjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
3661
- }
3662
- const driver = chooseDefaultDriver(config2);
3663
- if (driver.name === "engine") {
3664
- config2.inspector.enabled = false;
3665
- config2.disableServer = true;
3666
- config2.disableActorDriver = true;
4017
+ };
4018
+ async function configureServerlessRunner(config2) {
4019
+ try {
4020
+ if (!config2.runnerName) {
4021
+ throw new Error("runnerName is required for serverless configuration");
3667
4022
  }
3668
- if (driver.name === "cloudflare-workers") {
3669
- config2.inspector.enabled = false;
3670
- config2.disableServer = true;
3671
- config2.disableActorDriver = true;
3672
- config2.noWelcome = true;
4023
+ if (!config2.namespace) {
4024
+ throw new Error("namespace is required for serverless configuration");
3673
4025
  }
3674
- let upgradeWebSocket;
3675
- if (!config2.getUpgradeWebSocket) {
3676
- config2.getUpgradeWebSocket = () => upgradeWebSocket;
4026
+ if (!config2.endpoint) {
4027
+ throw new Error("endpoint is required for serverless configuration");
3677
4028
  }
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
4029
+ const customConfig = typeof config2.autoConfigureServerless === "object" ? config2.autoConfigureServerless : {};
4030
+ const dcsUrl = `${config2.endpoint}/datacenters`;
4031
+ logger7().debug({
4032
+ msg: "fetching datacenters",
4033
+ url: dcsUrl
3686
4034
  });
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)}`);
4035
+ const dcsResponse = await fetch(dcsUrl, {
4036
+ headers: {
4037
+ ...config2.token ? { Authorization: `Bearer ${config2.token}` } : {}
3701
4038
  }
3702
- console.log();
4039
+ });
4040
+ if (!dcsResponse.ok) {
4041
+ const errorText = await dcsResponse.text();
4042
+ throw new Error(
4043
+ `failed to configure serverless runner: ${dcsResponse.status} ${dcsResponse.statusText} - ${errorText}`
4044
+ );
3703
4045
  }
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);
4046
+ const dcsRes = await dcsResponse.json();
4047
+ const serverlessConfig = {
4048
+ serverless: {
4049
+ url: customConfig.url || `http://localhost:${config2.defaultServerPort}/start`,
4050
+ headers: customConfig.headers || {},
4051
+ max_runners: _nullishCoalesce(customConfig.maxRunners, () => ( 100)),
4052
+ min_runners: _nullishCoalesce(customConfig.minRunners, () => ( 0)),
4053
+ request_lifespan: _nullishCoalesce(customConfig.requestLifespan, () => ( 15 * 60)),
4054
+ runners_margin: _nullishCoalesce(customConfig.runnersMargin, () => ( 0)),
4055
+ slots_per_runner: _nullishCoalesce(_nullishCoalesce(customConfig.slotsPerRunner, () => ( config2.totalSlots)), () => ( 1e3))
4056
+ }
3708
4057
  };
3709
- if (!config2.disableActorDriver) {
3710
- const _actorDriver = serverlessActorDriverBuilder();
3711
- serverlessActorDriverBuilder = void 0;
3712
- }
3713
- const { router: hono } = createManagerRouter(
3714
- this.#config,
3715
- config2,
3716
- managerDriver,
3717
- serverlessActorDriverBuilder
4058
+ const requestBody = Object.fromEntries(
4059
+ dcsRes.datacenters.map((dc) => [dc.name, serverlessConfig])
3718
4060
  );
3719
- if (!config2.disableServer) {
3720
- (async () => {
3721
- const out = await crossPlatformServe(hono, void 0);
3722
- upgradeWebSocket = out.upgradeWebSocket;
3723
- })();
4061
+ const configUrl = `${config2.endpoint}/runner-configs/${config2.runnerName}?namespace=${config2.namespace}`;
4062
+ logger7().debug({
4063
+ msg: "configuring serverless runner",
4064
+ url: configUrl,
4065
+ config: serverlessConfig.serverless
4066
+ });
4067
+ const response = await fetch(configUrl, {
4068
+ method: "PUT",
4069
+ headers: {
4070
+ "Content-Type": "application/json",
4071
+ ...config2.token ? { Authorization: `Bearer ${config2.token}` } : {}
4072
+ },
4073
+ body: JSON.stringify(requestBody)
4074
+ });
4075
+ if (!response.ok) {
4076
+ const errorText = await response.text();
4077
+ throw new Error(
4078
+ `failed to configure serverless runner: ${response.status} ${response.statusText} - ${errorText}`
4079
+ );
3724
4080
  }
3725
- return {
3726
- client,
3727
- fetch: hono.fetch.bind(hono)
3728
- };
4081
+ logger7().info({
4082
+ msg: "serverless runner configured successfully",
4083
+ runnerName: config2.runnerName,
4084
+ namespace: config2.namespace
4085
+ });
4086
+ } catch (error) {
4087
+ logger7().error({
4088
+ msg: "failed to configure serverless runner",
4089
+ error
4090
+ });
4091
+ throw error;
3729
4092
  }
3730
- };
4093
+ }
3731
4094
  function setup(input) {
3732
4095
  const config2 = RegistryConfigSchema.parse(input);
3733
4096
  return new Registry(config2);
@@ -3749,4 +4112,4 @@ function setup(input) {
3749
4112
 
3750
4113
  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
4114
  //! These configs configs hold anything that's not platform-specific about running actors.
3752
- //# sourceMappingURL=chunk-4YV6RDZL.cjs.map
4115
+ //# sourceMappingURL=chunk-LXFOO25H.cjs.map