rivetkit 2.0.9 → 2.0.10

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