rivetkit 2.0.21 → 2.0.22-rc.2

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 (140) hide show
  1. package/dist/schemas/actor-persist/v2.ts +259 -0
  2. package/dist/tsup/actor/errors.cjs.map +1 -1
  3. package/dist/tsup/{chunk-HN7UXCYQ.cjs → chunk-5N6F5PXD.cjs} +31 -12
  4. package/dist/tsup/chunk-5N6F5PXD.cjs.map +1 -0
  5. package/dist/tsup/{chunk-FDJ3AVNB.cjs → chunk-5TRXLS6X.cjs} +71 -67
  6. package/dist/tsup/chunk-5TRXLS6X.cjs.map +1 -0
  7. package/dist/tsup/{chunk-HUGSRAGL.js → chunk-7RUROQAZ.js} +36 -16
  8. package/dist/tsup/chunk-7RUROQAZ.js.map +1 -0
  9. package/dist/tsup/{chunk-Y2QONT7B.js → chunk-AMK3AACS.js} +272 -89
  10. package/dist/tsup/chunk-AMK3AACS.js.map +1 -0
  11. package/dist/tsup/{chunk-RZZDFDB6.js → chunk-BHLQTKOD.js} +51 -47
  12. package/dist/tsup/chunk-BHLQTKOD.js.map +1 -0
  13. package/dist/tsup/{chunk-DYA34FHW.js → chunk-C4FPCW7T.js} +2 -2
  14. package/dist/tsup/{chunk-D2LS4X6E.js → chunk-CVLO2OOK.js} +3 -3
  15. package/dist/tsup/{chunk-6G76WIWL.js → chunk-EJXZYQ3N.js} +2 -2
  16. package/dist/tsup/{chunk-VLR3TDHT.js → chunk-F7WVJXPB.js} +2 -2
  17. package/dist/tsup/{chunk-4OINFQBR.js → chunk-FLVL7RGH.js} +3 -3
  18. package/dist/tsup/{chunk-JKOUXDK6.cjs → chunk-GXIO5YOT.cjs} +8 -8
  19. package/dist/tsup/chunk-GXIO5YOT.cjs.map +1 -0
  20. package/dist/tsup/{chunk-2POQCWMA.js → chunk-HLZT5C6A.js} +385 -104
  21. package/dist/tsup/chunk-HLZT5C6A.js.map +1 -0
  22. package/dist/tsup/chunk-KSRXX3Z4.cjs.map +1 -1
  23. package/dist/tsup/{chunk-JTIBPF7N.cjs → chunk-LFP446KS.cjs} +14 -14
  24. package/dist/tsup/chunk-LFP446KS.cjs.map +1 -0
  25. package/dist/tsup/{chunk-3UIGKLZW.js → chunk-MQDXPGNE.js} +6 -6
  26. package/dist/tsup/{chunk-O4GUKGK4.cjs → chunk-NDOG6IQ5.cjs} +6 -6
  27. package/dist/tsup/chunk-NDOG6IQ5.cjs.map +1 -0
  28. package/dist/tsup/{chunk-LMJHBF26.cjs → chunk-Q5CAVEKC.cjs} +467 -284
  29. package/dist/tsup/chunk-Q5CAVEKC.cjs.map +1 -0
  30. package/dist/tsup/{chunk-65SAIRRY.cjs → chunk-UBMUBNS2.cjs} +12 -12
  31. package/dist/tsup/chunk-UBMUBNS2.cjs.map +1 -0
  32. package/dist/tsup/{chunk-FUX6U6TL.js → chunk-VMFBKBJL.js} +26 -7
  33. package/dist/tsup/chunk-VMFBKBJL.js.map +1 -0
  34. package/dist/tsup/{chunk-M5BHNJHB.cjs → chunk-YLWF6RFL.cjs} +558 -277
  35. package/dist/tsup/chunk-YLWF6RFL.cjs.map +1 -0
  36. package/dist/tsup/{chunk-ELDFBXDV.cjs → chunk-YUBR6XCJ.cjs} +35 -15
  37. package/dist/tsup/chunk-YUBR6XCJ.cjs.map +1 -0
  38. package/dist/tsup/{chunk-ZNWE3XBT.cjs → chunk-ZL6NSKF2.cjs} +3 -3
  39. package/dist/tsup/chunk-ZL6NSKF2.cjs.map +1 -0
  40. package/dist/tsup/{chunk-LWGCMELP.cjs → chunk-ZY4DKLMT.cjs} +3 -3
  41. package/dist/tsup/chunk-ZY4DKLMT.cjs.map +1 -0
  42. package/dist/tsup/client/mod.cjs +9 -9
  43. package/dist/tsup/client/mod.cjs.map +1 -1
  44. package/dist/tsup/client/mod.d.cts +2 -2
  45. package/dist/tsup/client/mod.d.ts +2 -2
  46. package/dist/tsup/client/mod.js +8 -8
  47. package/dist/tsup/common/log.cjs +3 -3
  48. package/dist/tsup/common/log.cjs.map +1 -1
  49. package/dist/tsup/common/log.js +2 -2
  50. package/dist/tsup/common/websocket.cjs +4 -4
  51. package/dist/tsup/common/websocket.cjs.map +1 -1
  52. package/dist/tsup/common/websocket.js +3 -3
  53. package/dist/tsup/{conn-Clu655RU.d.ts → conn-BYXlxnh0.d.ts} +111 -102
  54. package/dist/tsup/{conn-lUvFLo_q.d.cts → conn-BiazosE_.d.cts} +111 -102
  55. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  56. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  57. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  58. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  59. package/dist/tsup/driver-helpers/mod.js +4 -4
  60. package/dist/tsup/driver-test-suite/mod.cjs +71 -71
  61. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  62. package/dist/tsup/driver-test-suite/mod.d.cts +1 -1
  63. package/dist/tsup/driver-test-suite/mod.d.ts +1 -1
  64. package/dist/tsup/driver-test-suite/mod.js +11 -11
  65. package/dist/tsup/inspector/mod.cjs +6 -6
  66. package/dist/tsup/inspector/mod.cjs.map +1 -1
  67. package/dist/tsup/inspector/mod.d.cts +2 -2
  68. package/dist/tsup/inspector/mod.d.ts +2 -2
  69. package/dist/tsup/inspector/mod.js +5 -5
  70. package/dist/tsup/mod.cjs +10 -10
  71. package/dist/tsup/mod.cjs.map +1 -1
  72. package/dist/tsup/mod.d.cts +3 -3
  73. package/dist/tsup/mod.d.ts +3 -3
  74. package/dist/tsup/mod.js +9 -9
  75. package/dist/tsup/test/mod.cjs +11 -11
  76. package/dist/tsup/test/mod.cjs.map +1 -1
  77. package/dist/tsup/test/mod.d.cts +1 -1
  78. package/dist/tsup/test/mod.d.ts +1 -1
  79. package/dist/tsup/test/mod.js +10 -10
  80. package/dist/tsup/utils.cjs +8 -2
  81. package/dist/tsup/utils.cjs.map +1 -1
  82. package/dist/tsup/utils.d.cts +8 -1
  83. package/dist/tsup/utils.d.ts +8 -1
  84. package/dist/tsup/utils.js +7 -1
  85. package/package.json +5 -4
  86. package/src/actor/config.ts +10 -0
  87. package/src/actor/conn-drivers.ts +43 -1
  88. package/src/actor/conn-socket.ts +1 -1
  89. package/src/actor/conn.ts +22 -2
  90. package/src/actor/context.ts +1 -1
  91. package/src/actor/driver.ts +13 -2
  92. package/src/actor/instance.ts +248 -57
  93. package/src/actor/persisted.ts +7 -0
  94. package/src/actor/router-endpoints.ts +67 -45
  95. package/src/actor/router.ts +25 -17
  96. package/src/client/actor-conn.ts +9 -5
  97. package/src/common/cors.ts +57 -0
  98. package/src/common/log.ts +26 -5
  99. package/src/common/utils.ts +5 -9
  100. package/src/common/websocket-interface.ts +10 -0
  101. package/src/driver-helpers/utils.ts +1 -0
  102. package/src/drivers/engine/actor-driver.ts +261 -14
  103. package/src/drivers/engine/config.ts +2 -4
  104. package/src/drivers/file-system/actor.ts +3 -2
  105. package/src/drivers/file-system/global-state.ts +1 -1
  106. package/src/drivers/file-system/manager.ts +3 -0
  107. package/src/engine-process/mod.ts +22 -4
  108. package/src/inspector/config.ts +0 -45
  109. package/src/manager/gateway.ts +45 -32
  110. package/src/manager/hono-websocket-adapter.ts +31 -3
  111. package/src/manager/router.ts +11 -17
  112. package/src/registry/run-config.ts +2 -8
  113. package/src/remote-manager-driver/actor-http-client.ts +5 -8
  114. package/src/remote-manager-driver/actor-websocket-client.ts +2 -14
  115. package/src/remote-manager-driver/mod.ts +0 -1
  116. package/src/schemas/actor-persist/mod.ts +1 -1
  117. package/src/schemas/actor-persist/versioned.ts +22 -10
  118. package/src/utils.ts +26 -0
  119. package/dist/tsup/chunk-2POQCWMA.js.map +0 -1
  120. package/dist/tsup/chunk-65SAIRRY.cjs.map +0 -1
  121. package/dist/tsup/chunk-ELDFBXDV.cjs.map +0 -1
  122. package/dist/tsup/chunk-FDJ3AVNB.cjs.map +0 -1
  123. package/dist/tsup/chunk-FUX6U6TL.js.map +0 -1
  124. package/dist/tsup/chunk-HN7UXCYQ.cjs.map +0 -1
  125. package/dist/tsup/chunk-HUGSRAGL.js.map +0 -1
  126. package/dist/tsup/chunk-JKOUXDK6.cjs.map +0 -1
  127. package/dist/tsup/chunk-JTIBPF7N.cjs.map +0 -1
  128. package/dist/tsup/chunk-LMJHBF26.cjs.map +0 -1
  129. package/dist/tsup/chunk-LWGCMELP.cjs.map +0 -1
  130. package/dist/tsup/chunk-M5BHNJHB.cjs.map +0 -1
  131. package/dist/tsup/chunk-O4GUKGK4.cjs.map +0 -1
  132. package/dist/tsup/chunk-RZZDFDB6.js.map +0 -1
  133. package/dist/tsup/chunk-Y2QONT7B.js.map +0 -1
  134. package/dist/tsup/chunk-ZNWE3XBT.cjs.map +0 -1
  135. /package/dist/tsup/{chunk-DYA34FHW.js.map → chunk-C4FPCW7T.js.map} +0 -0
  136. /package/dist/tsup/{chunk-D2LS4X6E.js.map → chunk-CVLO2OOK.js.map} +0 -0
  137. /package/dist/tsup/{chunk-6G76WIWL.js.map → chunk-EJXZYQ3N.js.map} +0 -0
  138. /package/dist/tsup/{chunk-VLR3TDHT.js.map → chunk-F7WVJXPB.js.map} +0 -0
  139. /package/dist/tsup/{chunk-4OINFQBR.js.map → chunk-FLVL7RGH.js.map} +0 -0
  140. /package/dist/tsup/{chunk-3UIGKLZW.js.map → chunk-MQDXPGNE.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkZNWE3XBTcjs = require('./chunk-ZNWE3XBT.cjs');
7
+ var _chunkZL6NSKF2cjs = require('./chunk-ZL6NSKF2.cjs');
8
8
 
9
9
 
10
10
 
@@ -17,11 +17,11 @@ var _chunkZNWE3XBTcjs = require('./chunk-ZNWE3XBT.cjs');
17
17
 
18
18
 
19
19
 
20
- var _chunkLMJHBF26cjs = require('./chunk-LMJHBF26.cjs');
21
20
 
21
+ var _chunkQ5CAVEKCcjs = require('./chunk-Q5CAVEKC.cjs');
22
22
 
23
- var _chunk65SAIRRYcjs = require('./chunk-65SAIRRY.cjs');
24
23
 
24
+ var _chunkUBMUBNS2cjs = require('./chunk-UBMUBNS2.cjs');
25
25
 
26
26
 
27
27
 
@@ -32,8 +32,8 @@ var _chunk65SAIRRYcjs = require('./chunk-65SAIRRY.cjs');
32
32
 
33
33
 
34
34
 
35
- var _chunkFDJ3AVNBcjs = require('./chunk-FDJ3AVNB.cjs');
36
35
 
36
+ var _chunk5TRXLS6Xcjs = require('./chunk-5TRXLS6X.cjs');
37
37
 
38
38
 
39
39
 
@@ -58,13 +58,13 @@ var _chunkFDJ3AVNBcjs = require('./chunk-FDJ3AVNB.cjs');
58
58
 
59
59
 
60
60
 
61
- var _chunkJKOUXDK6cjs = require('./chunk-JKOUXDK6.cjs');
62
61
 
62
+ var _chunkGXIO5YOTcjs = require('./chunk-GXIO5YOT.cjs');
63
63
 
64
64
 
65
65
 
66
- var _chunkHN7UXCYQcjs = require('./chunk-HN7UXCYQ.cjs');
67
66
 
67
+ var _chunk5N6F5PXDcjs = require('./chunk-5N6F5PXD.cjs');
68
68
 
69
69
 
70
70
 
@@ -75,7 +75,11 @@ var _chunkHN7UXCYQcjs = require('./chunk-HN7UXCYQ.cjs');
75
75
 
76
76
 
77
77
 
78
- var _chunkELDFBXDVcjs = require('./chunk-ELDFBXDV.cjs');
78
+
79
+
80
+
81
+
82
+ var _chunkYUBR6XCJcjs = require('./chunk-YUBR6XCJ.cjs');
79
83
 
80
84
 
81
85
 
@@ -124,7 +128,12 @@ var ActorConfigSchema = _zod.z.object({
124
128
  connectionLivenessTimeout: _zod.z.number().positive().default(2500),
125
129
  connectionLivenessInterval: _zod.z.number().positive().default(5e3),
126
130
  noSleep: _zod.z.boolean().default(false),
127
- sleepTimeout: _zod.z.number().positive().default(3e4)
131
+ sleepTimeout: _zod.z.number().positive().default(3e4),
132
+ /** @experimental */
133
+ canHibernatWebSocket: _zod.z.union([
134
+ _zod.z.boolean(),
135
+ _zod.z.function().args(_zod.z.custom()).returns(_zod.z.boolean())
136
+ ]).default(false)
128
137
  }).strict().default({})
129
138
  }).strict().refine(
130
139
  (data) => !(data.state !== void 0 && data.createState !== void 0),
@@ -148,7 +157,6 @@ var ActorConfigSchema = _zod.z.object({
148
157
 
149
158
  // src/actor/router.ts
150
159
  var _hono = require('hono');
151
- var _cors = require('hono/cors');
152
160
  var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
153
161
 
154
162
  // src/actor/router-endpoints.ts
@@ -158,7 +166,7 @@ var _streaming = require('hono/streaming');
158
166
 
159
167
  // src/manager/log.ts
160
168
  function logger() {
161
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "actor-manager");
169
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "actor-manager");
162
170
  }
163
171
 
164
172
  // src/manager/hono-websocket-adapter.ts
@@ -174,11 +182,19 @@ var HonoWebSocketAdapter = (_class = class {
174
182
  #eventListeners = /* @__PURE__ */ new Map();
175
183
  #closeCode;
176
184
  #closeReason;
177
- constructor(ws) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);
185
+
186
+
187
+ constructor(ws, rivetRequestId, isHibernatable) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);
178
188
  this.#ws = ws;
189
+ this.rivetRequestId = rivetRequestId;
190
+ this.isHibernatable = isHibernatable;
179
191
  this.#readyState = this.OPEN;
180
192
  setTimeout(() => {
181
- this.#fireEvent("open", { type: "open", target: this });
193
+ this.#fireEvent("open", {
194
+ type: "open",
195
+ target: this,
196
+ rivetRequestId: this.rivetRequestId
197
+ });
182
198
  }, 0);
183
199
  }
184
200
  get readyState() {
@@ -272,7 +288,8 @@ var HonoWebSocketAdapter = (_class = class {
272
288
  target: this,
273
289
  code,
274
290
  reason,
275
- wasClean: code === 1e3
291
+ wasClean: code === 1e3,
292
+ rivetRequestId: this.rivetRequestId
276
293
  });
277
294
  } catch (error) {
278
295
  logger().error({ msg: "error closing websocket", error });
@@ -282,7 +299,8 @@ var HonoWebSocketAdapter = (_class = class {
282
299
  target: this,
283
300
  code: 1006,
284
301
  reason: "Abnormal closure",
285
- wasClean: false
302
+ wasClean: false,
303
+ rivetRequestId: this.rivetRequestId
286
304
  });
287
305
  }
288
306
  }
@@ -317,12 +335,20 @@ var HonoWebSocketAdapter = (_class = class {
317
335
  // Internal method to handle incoming messages from WSContext
318
336
  _handleMessage(data) {
319
337
  let messageData;
338
+ let rivetRequestId;
339
+ let rivetMessageIndex;
320
340
  if (typeof data === "string") {
321
341
  messageData = data;
322
342
  } else if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
323
343
  messageData = data;
324
344
  } else if (data && typeof data === "object" && "data" in data) {
325
345
  messageData = data.data;
346
+ if ("rivetRequestId" in data) {
347
+ rivetRequestId = data.rivetRequestId;
348
+ }
349
+ if ("rivetMessageIndex" in data) {
350
+ rivetMessageIndex = data.rivetMessageIndex;
351
+ }
326
352
  } else {
327
353
  messageData = String(data);
328
354
  }
@@ -330,12 +356,15 @@ var HonoWebSocketAdapter = (_class = class {
330
356
  msg: "bridge handling message",
331
357
  dataType: typeof messageData,
332
358
  isArrayBuffer: messageData instanceof ArrayBuffer,
333
- dataStr: typeof messageData === "string" ? messageData : "<binary>"
359
+ dataStr: typeof messageData === "string" ? messageData : "<binary>",
360
+ rivetMessageIndex
334
361
  });
335
362
  this.#fireEvent("message", {
336
363
  type: "message",
337
364
  target: this,
338
- data: messageData
365
+ data: messageData,
366
+ rivetRequestId,
367
+ rivetMessageIndex
339
368
  });
340
369
  }
341
370
  // Internal method to handle close from WSContext
@@ -350,7 +379,8 @@ var HonoWebSocketAdapter = (_class = class {
350
379
  target: this,
351
380
  code,
352
381
  reason,
353
- wasClean: code === 1e3
382
+ wasClean: code === 1e3,
383
+ rivetRequestId: this.rivetRequestId
354
384
  });
355
385
  }
356
386
  // Internal method to handle errors from WSContext
@@ -459,20 +489,20 @@ var HonoWebSocketAdapter = (_class = class {
459
489
 
460
490
  // src/actor/router-endpoints.ts
461
491
  var SSE_PING_INTERVAL = 1e3;
462
- async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, encoding, parameters, connId, connToken) {
492
+ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, encoding, parameters, requestId, connId, connToken) {
463
493
  const exposeInternalError = req ? getRequestExposeInternalError(req) : false;
464
494
  const {
465
495
  promise: handlersPromise,
466
496
  resolve: handlersResolve,
467
497
  reject: handlersReject
468
- } = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
498
+ } = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
469
499
  let actor2;
470
500
  try {
471
501
  actor2 = await actorDriver.loadActor(actorId);
472
502
  } catch (error) {
473
503
  return {
474
504
  onOpen: (_evt, ws) => {
475
- const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
505
+ const { code } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
476
506
  error,
477
507
  actor2.rLog,
478
508
  {
@@ -491,8 +521,8 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
491
521
  }
492
522
  };
493
523
  }
494
- const closePromise = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
495
- const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
524
+ const closePromise = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
525
+ let createdConn;
496
526
  return {
497
527
  onOpen: (_evt, ws) => {
498
528
  actor2.rLog.debug("actor websocket open");
@@ -506,7 +536,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
506
536
  });
507
537
  conn = await actor2.createConn(
508
538
  {
509
- socketId,
539
+ requestId,
510
540
  driverState: {
511
541
  [0 /* WEBSOCKET */]: {
512
542
  encoding,
@@ -520,10 +550,11 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
520
550
  connId,
521
551
  connToken
522
552
  );
553
+ createdConn = conn;
523
554
  handlersResolve({ conn, actor: actor2, connId: conn.id });
524
555
  } catch (error) {
525
556
  handlersReject(error);
526
- const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
557
+ const { code } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
527
558
  error,
528
559
  actor2.rLog,
529
560
  {
@@ -539,12 +570,12 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
539
570
  handlersPromise.then(({ conn, actor: actor3 }) => {
540
571
  actor3.rLog.debug({ msg: "received message" });
541
572
  const value = evt.data.valueOf();
542
- _chunkFDJ3AVNBcjs.parseMessage.call(void 0, value, {
573
+ _chunk5TRXLS6Xcjs.parseMessage.call(void 0, value, {
543
574
  encoding,
544
575
  maxIncomingMessageSize: runConfig.maxIncomingMessageSize
545
576
  }).then((message) => {
546
577
  actor3.processMessage(message, conn).catch((error) => {
547
- const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
578
+ const { code } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
548
579
  error,
549
580
  actor3.rLog,
550
581
  {
@@ -555,7 +586,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
555
586
  ws.close(1011, code);
556
587
  });
557
588
  }).catch((error) => {
558
- const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
589
+ const { code } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
559
590
  error,
560
591
  actor3.rLog,
561
592
  {
@@ -566,7 +597,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
566
597
  ws.close(1011, code);
567
598
  });
568
599
  }).catch((error) => {
569
- const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
600
+ const { code } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
570
601
  error,
571
602
  actor2.rLog,
572
603
  {
@@ -596,23 +627,18 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
596
627
  });
597
628
  }
598
629
  ws.close(1e3, "hack_force_close");
599
- handlersPromise.then(({ conn, actor: actor3 }) => {
600
- const wasClean = event.wasClean || event.code === 1e3;
601
- actor3.__connDisconnected(conn, wasClean, socketId);
602
- }).catch((error) => {
603
- _chunkELDFBXDVcjs.deconstructError.call(void 0,
604
- error,
605
- actor2.rLog,
606
- { wsEvent: "close" },
607
- exposeInternalError
608
- );
630
+ handlersPromise.finally(() => {
631
+ if (createdConn) {
632
+ const wasClean = event.wasClean || event.code === 1e3;
633
+ actor2.__connDisconnected(createdConn, wasClean, requestId);
634
+ }
609
635
  });
610
636
  },
611
637
  onError: (_error) => {
612
638
  try {
613
639
  actor2.rLog.warn({ msg: "websocket error" });
614
640
  } catch (error) {
615
- _chunkELDFBXDVcjs.deconstructError.call(void 0,
641
+ _chunkYUBR6XCJcjs.deconstructError.call(void 0,
616
642
  error,
617
643
  actor2.rLog,
618
644
  { wsEvent: "error" },
@@ -626,9 +652,9 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
626
652
  c.header("Content-Encoding", "Identity");
627
653
  const encoding = getRequestEncoding(c.req);
628
654
  const parameters = getRequestConnParams(c.req);
629
- const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
630
- const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
631
- const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
655
+ const requestId = _chunkQ5CAVEKCcjs.generateConnRequestId.call(void 0, );
656
+ const connId = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_ID);
657
+ const connToken = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_TOKEN);
632
658
  return _streaming.streamSSE.call(void 0, c, async (stream) => {
633
659
  let actor2;
634
660
  let conn;
@@ -640,7 +666,7 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
640
666
  });
641
667
  conn = await actor2.createConn(
642
668
  {
643
- socketId,
669
+ requestId,
644
670
  driverState: {
645
671
  [1 /* SSE */]: {
646
672
  encoding,
@@ -653,16 +679,16 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
653
679
  connId,
654
680
  connToken
655
681
  );
656
- const abortResolver = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
682
+ const abortResolver = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
657
683
  stream.onAbort(() => {
658
684
  });
659
685
  c.req.raw.signal.addEventListener("abort", async () => {
660
686
  _invariant2.default.call(void 0, actor2, "actor should exist");
661
- const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, )));
687
+ const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, )));
662
688
  try {
663
689
  rLog.debug("sse stream aborted");
664
690
  if (conn) {
665
- actor2.__connDisconnected(conn, false, socketId);
691
+ actor2.__connDisconnected(conn, false, requestId);
666
692
  }
667
693
  abortResolver.resolve(void 0);
668
694
  } catch (error) {
@@ -683,12 +709,12 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
683
709
  await stream.sleep(SSE_PING_INTERVAL);
684
710
  }
685
711
  } catch (error) {
686
- _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).error({
712
+ _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, ).error({
687
713
  msg: "error in sse connection",
688
714
  error
689
715
  });
690
716
  if (conn && actor2 !== void 0) {
691
- actor2.__connDisconnected(conn, false, socketId);
717
+ actor2.__connDisconnected(conn, false, requestId);
692
718
  }
693
719
  stream.close();
694
720
  }
@@ -698,13 +724,13 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
698
724
  const encoding = getRequestEncoding(c.req);
699
725
  const parameters = getRequestConnParams(c.req);
700
726
  const arrayBuffer = await c.req.arrayBuffer();
701
- const request = _chunkJKOUXDK6cjs.deserializeWithEncoding.call(void 0,
727
+ const request = _chunkGXIO5YOTcjs.deserializeWithEncoding.call(void 0,
702
728
  encoding,
703
729
  new Uint8Array(arrayBuffer),
704
- _chunkFDJ3AVNBcjs.HTTP_ACTION_REQUEST_VERSIONED
730
+ _chunk5TRXLS6Xcjs.HTTP_ACTION_REQUEST_VERSIONED
705
731
  );
706
732
  const actionArgs = cbor.decode(new Uint8Array(request.args));
707
- const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
733
+ const requestId = _chunkQ5CAVEKCcjs.generateConnRequestId.call(void 0, );
708
734
  let actor2;
709
735
  let conn;
710
736
  let output;
@@ -713,38 +739,38 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
713
739
  actor2.rLog.debug({ msg: "handling action", actionName, encoding });
714
740
  conn = await actor2.createConn(
715
741
  {
716
- socketId,
742
+ requestId,
717
743
  driverState: { [2 /* HTTP */]: {} }
718
744
  },
719
745
  parameters,
720
746
  c.req.raw
721
747
  );
722
- const ctx = new (0, _chunkFDJ3AVNBcjs.ActionContext)(actor2.actorContext, conn);
748
+ const ctx = new (0, _chunk5TRXLS6Xcjs.ActionContext)(actor2.actorContext, conn);
723
749
  output = await actor2.executeAction(ctx, actionName, actionArgs);
724
750
  } finally {
725
751
  if (conn) {
726
- actor2 == null ? void 0 : actor2.__connDisconnected(conn, true, socketId);
752
+ actor2 == null ? void 0 : actor2.__connDisconnected(conn, true, requestId);
727
753
  }
728
754
  }
729
755
  const responseData = {
730
- output: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
756
+ output: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
731
757
  };
732
- const serialized = _chunkJKOUXDK6cjs.serializeWithEncoding.call(void 0,
758
+ const serialized = _chunkGXIO5YOTcjs.serializeWithEncoding.call(void 0,
733
759
  encoding,
734
760
  responseData,
735
- _chunkFDJ3AVNBcjs.HTTP_ACTION_RESPONSE_VERSIONED
761
+ _chunk5TRXLS6Xcjs.HTTP_ACTION_RESPONSE_VERSIONED
736
762
  );
737
763
  return c.body(serialized, 200, {
738
- "Content-Type": _chunkJKOUXDK6cjs.contentTypeForEncoding.call(void 0, encoding)
764
+ "Content-Type": _chunkGXIO5YOTcjs.contentTypeForEncoding.call(void 0, encoding)
739
765
  });
740
766
  }
741
767
  async function handleConnectionMessage(c, _runConfig, actorDriver, connId, connToken, actorId) {
742
768
  const encoding = getRequestEncoding(c.req);
743
769
  const arrayBuffer = await c.req.arrayBuffer();
744
- const message = _chunkJKOUXDK6cjs.deserializeWithEncoding.call(void 0,
770
+ const message = _chunkGXIO5YOTcjs.deserializeWithEncoding.call(void 0,
745
771
  encoding,
746
772
  new Uint8Array(arrayBuffer),
747
- _chunkFDJ3AVNBcjs.TO_SERVER_VERSIONED
773
+ _chunk5TRXLS6Xcjs.TO_SERVER_VERSIONED
748
774
  );
749
775
  const actor2 = await actorDriver.loadActor(actorId);
750
776
  const conn = actor2.conns.get(connId);
@@ -778,27 +804,30 @@ async function handleConnectionClose(c, _runConfig, actorDriver, connId, connTok
778
804
  async function handleRawWebSocketHandler(req, path4, actorDriver, actorId) {
779
805
  const actor2 = await actorDriver.loadActor(actorId);
780
806
  return {
781
- onOpen: (_evt, ws) => {
782
- const adapter = new HonoWebSocketAdapter(ws);
807
+ onOpen: (evt, ws) => {
808
+ const rivetRequestId = evt == null ? void 0 : evt.rivetRequestId;
809
+ const isHibernatable = actor2[_chunkQ5CAVEKCcjs.PERSIST_SYMBOL].hibernatableWebSocket.findIndex(
810
+ (ws2) => _chunkYUBR6XCJcjs.arrayBuffersEqual.call(void 0, ws2.requestId, rivetRequestId)
811
+ ) !== -1;
812
+ const adapter = new HonoWebSocketAdapter(
813
+ ws,
814
+ rivetRequestId,
815
+ isHibernatable
816
+ );
783
817
  ws.__adapter = adapter;
784
- const url = new URL(path4, "http://actor");
785
- const pathname = url.pathname.replace(/^\/raw\/websocket\/?/, "") || "/";
786
- const normalizedPath = (pathname.startsWith("/") ? pathname : "/" + pathname) + url.search;
818
+ const newPath = truncateRawWebSocketPathPrefix(path4);
787
819
  let newRequest;
788
820
  if (req) {
789
- newRequest = new Request(`http://actor${normalizedPath}`, req);
821
+ newRequest = new Request(`http://actor${newPath}`, req);
790
822
  } else {
791
- newRequest = new Request(`http://actor${normalizedPath}`, {
823
+ newRequest = new Request(`http://actor${newPath}`, {
792
824
  method: "GET"
793
825
  });
794
826
  }
795
827
  actor2.rLog.debug({
796
828
  msg: "rewriting websocket url",
797
- from: path4,
798
- to: newRequest.url,
799
- pathname: url.pathname,
800
- search: url.search,
801
- normalizedPath
829
+ fromPath: path4,
830
+ toUrl: newRequest.url
802
831
  });
803
832
  actor2.handleWebSocket(adapter, {
804
833
  request: newRequest
@@ -825,11 +854,11 @@ async function handleRawWebSocketHandler(req, path4, actorDriver, actorId) {
825
854
  };
826
855
  }
827
856
  function getRequestEncoding(req) {
828
- const encodingParam = req.header(_chunkJKOUXDK6cjs.HEADER_ENCODING);
857
+ const encodingParam = req.header(_chunkGXIO5YOTcjs.HEADER_ENCODING);
829
858
  if (!encodingParam) {
830
859
  throw new (0, _chunkKSRXX3Z4cjs.InvalidEncoding)("undefined");
831
860
  }
832
- const result = _chunkJKOUXDK6cjs.EncodingSchema.safeParse(encodingParam);
861
+ const result = _chunkGXIO5YOTcjs.EncodingSchema.safeParse(encodingParam);
833
862
  if (!result.success) {
834
863
  throw new (0, _chunkKSRXX3Z4cjs.InvalidEncoding)(encodingParam);
835
864
  }
@@ -839,7 +868,7 @@ function getRequestExposeInternalError(_req) {
839
868
  return false;
840
869
  }
841
870
  function getRequestConnParams(req) {
842
- const paramsParam = req.header(_chunkJKOUXDK6cjs.HEADER_CONN_PARAMS);
871
+ const paramsParam = req.header(_chunkGXIO5YOTcjs.HEADER_CONN_PARAMS);
843
872
  if (!paramsParam) {
844
873
  return null;
845
874
  }
@@ -847,10 +876,16 @@ function getRequestConnParams(req) {
847
876
  return JSON.parse(paramsParam);
848
877
  } catch (err) {
849
878
  throw new (0, _chunkKSRXX3Z4cjs.InvalidParams)(
850
- `Invalid params JSON: ${_chunkELDFBXDVcjs.stringifyError.call(void 0, err)}`
879
+ `Invalid params JSON: ${_chunkYUBR6XCJcjs.stringifyError.call(void 0, err)}`
851
880
  );
852
881
  }
853
882
  }
883
+ function truncateRawWebSocketPathPrefix(path4) {
884
+ const url = new URL(path4, "http://actor");
885
+ const pathname = url.pathname.replace(/^\/raw\/websocket\/?/, "") || "/";
886
+ const normalizedPath = (pathname.startsWith("/") ? pathname : "/" + pathname) + url.search;
887
+ return normalizedPath;
888
+ }
854
889
 
855
890
  // src/common/router.ts
856
891
 
@@ -881,7 +916,7 @@ function buildActorNames(registryConfig) {
881
916
 
882
917
  // src/common/router.ts
883
918
  function logger2() {
884
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "router");
919
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "router");
885
920
  }
886
921
  function loggerMiddleware(logger8) {
887
922
  return async (c, next) => {
@@ -899,7 +934,7 @@ function loggerMiddleware(logger8) {
899
934
  reqSize: c.req.header("content-length"),
900
935
  resSize: c.res.headers.get("content-length"),
901
936
  userAgent: c.req.header("user-agent"),
902
- ..._chunkELDFBXDVcjs.getEnvUniversal.call(void 0, "_RIVET_LOG_HEADERS") ? { allHeaders: JSON.stringify(c.req.header()) } : {}
937
+ ..._chunkYUBR6XCJcjs.getEnvUniversal.call(void 0, "_RIVET_LOG_HEADERS") ? { allHeaders: JSON.stringify(c.req.header()) } : {}
903
938
  });
904
939
  };
905
940
  }
@@ -908,7 +943,7 @@ function handleRouteNotFound(c) {
908
943
  }
909
944
  function handleRouteError(error, c) {
910
945
  const exposeInternalError = getRequestExposeInternalError(c.req.raw);
911
- const { statusCode, group, code, message, metadata } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
946
+ const { statusCode, group, code, message, metadata } = _chunkYUBR6XCJcjs.deconstructError.call(void 0,
912
947
  error,
913
948
  logger2(),
914
949
  {
@@ -923,29 +958,29 @@ function handleRouteError(error, c) {
923
958
  } catch (_) {
924
959
  encoding = "json";
925
960
  }
926
- const output = _chunkJKOUXDK6cjs.serializeWithEncoding.call(void 0,
961
+ const output = _chunkGXIO5YOTcjs.serializeWithEncoding.call(void 0,
927
962
  encoding,
928
963
  {
929
964
  group,
930
965
  code,
931
966
  message,
932
967
  // TODO: Cannot serialize non-binary meta since it requires ArrayBuffer atm
933
- metadata: _chunkJKOUXDK6cjs.encodingIsBinary.call(void 0, encoding) ? _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
968
+ metadata: _chunkGXIO5YOTcjs.encodingIsBinary.call(void 0, encoding) ? _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
934
969
  },
935
- _chunkFDJ3AVNBcjs.HTTP_RESPONSE_ERROR_VERSIONED
970
+ _chunk5TRXLS6Xcjs.HTTP_RESPONSE_ERROR_VERSIONED
936
971
  );
937
972
  return c.body(output, { status: statusCode });
938
973
  }
939
974
  function handleMetadataRequest(c, registryConfig, runConfig) {
940
975
  const response = {
941
976
  runtime: "rivetkit",
942
- version: _chunkELDFBXDVcjs.VERSION,
977
+ version: _chunkYUBR6XCJcjs.VERSION,
943
978
  runner: {
944
979
  kind: runConfig.runnerKind === "serverless" ? { serverless: {} } : { normal: {} }
945
980
  },
946
981
  actorNames: buildActorNames(registryConfig),
947
982
  // Do not return client endpoint if default server disabled
948
- clientEndpoint: _nullishCoalesce(runConfig.overrideServerAddress, () => ( (runConfig.disableDefaultServer ? void 0 : _chunkLMJHBF26cjs.getEndpoint.call(void 0, runConfig))))
983
+ clientEndpoint: _nullishCoalesce(runConfig.overrideServerAddress, () => ( (runConfig.disableDefaultServer ? void 0 : _chunkQ5CAVEKCcjs.getEndpoint.call(void 0, runConfig))))
949
984
  };
950
985
  return c.json(response);
951
986
  }
@@ -953,7 +988,7 @@ function handleHealthRequest(c) {
953
988
  return c.json({
954
989
  status: "ok",
955
990
  runtime: "rivetkit",
956
- version: _chunkELDFBXDVcjs.VERSION
991
+ version: _chunkYUBR6XCJcjs.VERSION
957
992
  });
958
993
  }
959
994
 
@@ -962,7 +997,16 @@ function createActorRouter(runConfig, actorDriver, isTest) {
962
997
  const router = new (0, _hono.Hono)({
963
998
  strict: false
964
999
  });
965
- router.use("*", loggerMiddleware(_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, )));
1000
+ router.use("*", loggerMiddleware(_chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, )));
1001
+ router.use("*", async (c, next) => {
1002
+ const actor2 = await actorDriver.loadActor(c.env.actorId);
1003
+ actor2.__beginHonoHttpRequest();
1004
+ try {
1005
+ await next();
1006
+ } finally {
1007
+ actor2.__endHonoHttpRequest();
1008
+ }
1009
+ });
966
1010
  router.get("/", (c) => {
967
1011
  return c.text(
968
1012
  "This is an RivetKit actor.\n\nLearn more at https://rivetkit.org"
@@ -993,7 +1037,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
993
1037
  return c.json({ success: true });
994
1038
  });
995
1039
  }
996
- router.get(_chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET, async (c) => {
1040
+ router.get(_chunkGXIO5YOTcjs.PATH_CONNECT_WEBSOCKET, async (c) => {
997
1041
  var _a;
998
1042
  const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
999
1043
  if (upgradeWebSocket) {
@@ -1006,28 +1050,28 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1006
1050
  if (protocols) {
1007
1051
  const protocolList = protocols.split(",").map((p) => p.trim());
1008
1052
  for (const protocol of protocolList) {
1009
- if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
1053
+ if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING)) {
1010
1054
  encodingRaw = protocol.substring(
1011
- _chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
1055
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING.length
1012
1056
  );
1013
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
1057
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS)) {
1014
1058
  connParamsRaw = decodeURIComponent(
1015
1059
  protocol.substring(
1016
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length
1060
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS.length
1017
1061
  )
1018
1062
  );
1019
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
1063
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID)) {
1020
1064
  connIdRaw = protocol.substring(
1021
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length
1065
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID.length
1022
1066
  );
1023
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
1067
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN)) {
1024
1068
  connTokenRaw = protocol.substring(
1025
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
1069
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN.length
1026
1070
  );
1027
1071
  }
1028
1072
  }
1029
1073
  }
1030
- const encoding = _chunkJKOUXDK6cjs.EncodingSchema.parse(encodingRaw);
1074
+ const encoding = _chunkGXIO5YOTcjs.EncodingSchema.parse(encodingRaw);
1031
1075
  const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
1032
1076
  return await handleWebSocketConnect(
1033
1077
  c2.req.raw,
@@ -1036,10 +1080,11 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1036
1080
  c2.env.actorId,
1037
1081
  encoding,
1038
1082
  connParams,
1083
+ _chunkQ5CAVEKCcjs.generateConnRequestId.call(void 0, ),
1039
1084
  connIdRaw,
1040
1085
  connTokenRaw
1041
1086
  );
1042
- })(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
1087
+ })(c, _chunkYUBR6XCJcjs.noopNext.call(void 0, ));
1043
1088
  } else {
1044
1089
  return c.text(
1045
1090
  "WebSockets are not enabled for this driver. Use SSE instead.",
@@ -1061,8 +1106,8 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1061
1106
  );
1062
1107
  });
1063
1108
  router.post("/connections/message", async (c) => {
1064
- const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
1065
- const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
1109
+ const connId = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_ID);
1110
+ const connToken = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_TOKEN);
1066
1111
  if (!connId || !connToken) {
1067
1112
  throw new Error("Missing required parameters");
1068
1113
  }
@@ -1076,8 +1121,8 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1076
1121
  );
1077
1122
  });
1078
1123
  router.post("/connections/close", async (c) => {
1079
- const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
1080
- const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
1124
+ const connId = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_ID);
1125
+ const connToken = c.req.header(_chunkGXIO5YOTcjs.HEADER_CONN_TOKEN);
1081
1126
  if (!connId || !connToken) {
1082
1127
  throw new Error("Missing required parameters");
1083
1128
  }
@@ -1101,7 +1146,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1101
1146
  body: c.req.raw.body,
1102
1147
  duplex: "half"
1103
1148
  });
1104
- _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
1149
+ _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, ).debug({
1105
1150
  msg: "rewriting http url",
1106
1151
  from: c.req.url,
1107
1152
  to: correctedRequest.url
@@ -1112,14 +1157,14 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1112
1157
  }
1113
1158
  return response;
1114
1159
  });
1115
- router.get(`${_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
1160
+ router.get(`${_chunkGXIO5YOTcjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
1116
1161
  var _a;
1117
1162
  const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
1118
1163
  if (upgradeWebSocket) {
1119
1164
  return upgradeWebSocket(async (c2) => {
1120
1165
  const url = new URL(c2.req.url);
1121
1166
  const pathWithQuery = c2.req.path + url.search;
1122
- _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
1167
+ _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, ).debug({
1123
1168
  msg: "actor router raw websocket",
1124
1169
  path: c2.req.path,
1125
1170
  url: c2.req.url,
@@ -1132,7 +1177,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1132
1177
  actorDriver,
1133
1178
  c2.env.actorId
1134
1179
  );
1135
- })(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
1180
+ })(c, _chunkYUBR6XCJcjs.noopNext.call(void 0, ));
1136
1181
  } else {
1137
1182
  return c.text(
1138
1183
  "WebSockets are not enabled for this driver. Use SSE instead.",
@@ -1140,22 +1185,18 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1140
1185
  );
1141
1186
  }
1142
1187
  });
1143
- if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
1188
+ if (_chunkZL6NSKF2cjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
1144
1189
  router.route(
1145
1190
  "/inspect",
1146
- new (0, _hono.Hono)().use(
1147
- _cors.cors.call(void 0, runConfig.inspector.cors),
1148
- _chunkZNWE3XBTcjs.secureInspector.call(void 0, runConfig),
1149
- async (c, next) => {
1150
- const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
1151
- _invariant2.default.call(void 0,
1152
- inspector,
1153
- "inspector not supported on this platform"
1154
- );
1155
- c.set("inspector", inspector);
1156
- return next();
1157
- }
1158
- ).route("/", _chunkLMJHBF26cjs.createActorInspectorRouter.call(void 0, ))
1191
+ new (0, _hono.Hono)().use(_chunkZL6NSKF2cjs.secureInspector.call(void 0, runConfig), async (c, next) => {
1192
+ const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
1193
+ _invariant2.default.call(void 0,
1194
+ inspector,
1195
+ "inspector not supported on this platform"
1196
+ );
1197
+ c.set("inspector", inspector);
1198
+ return next();
1199
+ }).route("/", _chunkQ5CAVEKCcjs.createActorInspectorRouter.call(void 0, ))
1159
1200
  );
1160
1201
  }
1161
1202
  router.notFound(handleRouteNotFound);
@@ -1166,13 +1207,13 @@ function createActorRouter(runConfig, actorDriver, isTest) {
1166
1207
  // src/actor/mod.ts
1167
1208
  function actor(input) {
1168
1209
  const config2 = ActorConfigSchema.parse(input);
1169
- return new (0, _chunkLMJHBF26cjs.ActorDefinition)(config2);
1210
+ return new (0, _chunkQ5CAVEKCcjs.ActorDefinition)(config2);
1170
1211
  }
1171
1212
 
1172
1213
  // src/common/inline-websocket-adapter2.ts
1173
1214
  var _ws2 = require('hono/ws');
1174
1215
  function logger3() {
1175
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "fake-event-source2");
1216
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "fake-event-source2");
1176
1217
  }
1177
1218
  var InlineWebSocketAdapter2 = (_class2 = class {
1178
1219
  // WebSocket readyState values
@@ -1535,10 +1576,11 @@ var KEYS = {
1535
1576
 
1536
1577
  // src/drivers/engine/log.ts
1537
1578
  function logger4() {
1538
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "driver-engine");
1579
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "driver-engine");
1539
1580
  }
1540
1581
 
1541
1582
  // src/drivers/engine/actor-driver.ts
1583
+ var RUNNER_SSE_PING_INTERVAL = 1e3;
1542
1584
  var EngineActorDriver = class {
1543
1585
  #registryConfig;
1544
1586
  #runConfig;
@@ -1550,14 +1592,18 @@ var EngineActorDriver = class {
1550
1592
  #version = 1;
1551
1593
  // Version for the runner protocol
1552
1594
  #alarmTimeout;
1553
- #runnerStarted = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
1554
- #runnerStopped = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
1595
+ #runnerStarted = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
1596
+ #runnerStopped = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
1597
+ #isRunnerStopped = false;
1598
+ // WebSocket message acknowledgment debouncing
1599
+ #wsAckQueue = /* @__PURE__ */ new Map();
1600
+ #wsAckFlushInterval;
1555
1601
  constructor(registryConfig, runConfig, managerDriver, inlineClient) {
1556
1602
  this.#registryConfig = registryConfig;
1557
1603
  this.#runConfig = runConfig;
1558
1604
  this.#managerDriver = managerDriver;
1559
1605
  this.#inlineClient = inlineClient;
1560
- const token = _nullishCoalesce(runConfig.token, () => ( runConfig.token));
1606
+ const token = runConfig.token;
1561
1607
  if (token && runConfig.inspector && runConfig.inspector.enabled) {
1562
1608
  runConfig.inspector.token = () => token;
1563
1609
  }
@@ -1569,12 +1615,12 @@ var EngineActorDriver = class {
1569
1615
  let hasDisconnected = false;
1570
1616
  const engineRunnerConfig = {
1571
1617
  version: this.#version,
1572
- endpoint: _chunkLMJHBF26cjs.getEndpoint.call(void 0, runConfig),
1618
+ endpoint: _chunkQ5CAVEKCcjs.getEndpoint.call(void 0, runConfig),
1573
1619
  token,
1574
- namespace: _nullishCoalesce(runConfig.namespace, () => ( runConfig.namespace)),
1575
- totalSlots: _nullishCoalesce(runConfig.totalSlots, () => ( runConfig.totalSlots)),
1576
- runnerName: _nullishCoalesce(runConfig.runnerName, () => ( runConfig.runnerName)),
1577
- runnerKey: runConfig.runnerKey,
1620
+ namespace: runConfig.namespace,
1621
+ totalSlots: runConfig.totalSlots,
1622
+ runnerName: runConfig.runnerName,
1623
+ runnerKey: _nullishCoalesce(runConfig.runnerKey, () => ( crypto.randomUUID())),
1578
1624
  metadata: {
1579
1625
  inspectorToken: this.#runConfig.inspector.token()
1580
1626
  },
@@ -1595,22 +1641,126 @@ var EngineActorDriver = class {
1595
1641
  }
1596
1642
  this.#runnerStarted.resolve(void 0);
1597
1643
  },
1598
- onDisconnected: () => {
1644
+ onDisconnected: (code, reason) => {
1599
1645
  logger4().warn({
1600
1646
  msg: "runner disconnected",
1601
1647
  namespace: this.#runConfig.namespace,
1602
- runnerName: this.#runConfig.runnerName
1648
+ runnerName: this.#runConfig.runnerName,
1649
+ code,
1650
+ reason
1603
1651
  });
1604
1652
  hasDisconnected = true;
1605
1653
  },
1606
1654
  onShutdown: () => {
1607
1655
  this.#runnerStopped.resolve(void 0);
1656
+ this.#isRunnerStopped = true;
1608
1657
  },
1609
1658
  fetch: this.#runnerFetch.bind(this),
1610
1659
  websocket: this.#runnerWebSocket.bind(this),
1611
1660
  onActorStart: this.#runnerOnActorStart.bind(this),
1612
1661
  onActorStop: this.#runnerOnActorStop.bind(this),
1613
- logger: _chunkHN7UXCYQcjs.getLogger.call(void 0, "engine-runner")
1662
+ logger: _chunk5N6F5PXDcjs.getLogger.call(void 0, "engine-runner"),
1663
+ getActorHibernationConfig: (actorId, requestId, request) => {
1664
+ var _a;
1665
+ const url = new URL(request.url);
1666
+ const path4 = url.pathname;
1667
+ const actorInstance = this.#runner.getActor(actorId);
1668
+ if (!actorInstance) {
1669
+ logger4().warn({
1670
+ msg: "actor not found in getActorHibernationConfig",
1671
+ actorId
1672
+ });
1673
+ return { enabled: false, lastMsgIndex: void 0 };
1674
+ }
1675
+ const handler = this.#actors.get(actorId);
1676
+ if (!handler) {
1677
+ logger4().warn({
1678
+ msg: "actor handler not found in getActorHibernationConfig",
1679
+ actorId
1680
+ });
1681
+ return { enabled: false, lastMsgIndex: void 0 };
1682
+ }
1683
+ if (!handler.actor) {
1684
+ logger4().warn({
1685
+ msg: "actor not found in getActorHibernationConfig",
1686
+ actorId
1687
+ });
1688
+ return { enabled: false, lastMsgIndex: void 0 };
1689
+ }
1690
+ const existingWs = handler.actor[_chunkQ5CAVEKCcjs.PERSIST_SYMBOL].hibernatableWebSocket.find(
1691
+ (ws) => _chunkYUBR6XCJcjs.arrayBuffersEqual.call(void 0, ws.requestId, requestId)
1692
+ );
1693
+ let hibernationConfig;
1694
+ if (existingWs) {
1695
+ hibernationConfig = {
1696
+ enabled: true,
1697
+ lastMsgIndex: Number(existingWs.msgIndex)
1698
+ };
1699
+ } else {
1700
+ if (path4 === _chunkGXIO5YOTcjs.PATH_CONNECT_WEBSOCKET) {
1701
+ hibernationConfig = {
1702
+ enabled: true,
1703
+ lastMsgIndex: void 0
1704
+ };
1705
+ } else if (path4.startsWith(_chunkGXIO5YOTcjs.PATH_RAW_WEBSOCKET_PREFIX)) {
1706
+ const definition = _chunkQ5CAVEKCcjs.lookupInRegistry.call(void 0,
1707
+ this.#registryConfig,
1708
+ actorInstance.config.name
1709
+ );
1710
+ const canHibernatWebSocket = (_a = definition.config.options) == null ? void 0 : _a.canHibernatWebSocket;
1711
+ if (canHibernatWebSocket === true) {
1712
+ hibernationConfig = {
1713
+ enabled: true,
1714
+ lastMsgIndex: void 0
1715
+ };
1716
+ } else if (typeof canHibernatWebSocket === "function") {
1717
+ try {
1718
+ const newPath = truncateRawWebSocketPathPrefix(
1719
+ url.pathname
1720
+ );
1721
+ const truncatedRequest = new Request(
1722
+ `http://actor${newPath}`,
1723
+ request
1724
+ );
1725
+ const canHibernate = canHibernatWebSocket(truncatedRequest);
1726
+ hibernationConfig = {
1727
+ enabled: canHibernate,
1728
+ lastMsgIndex: void 0
1729
+ };
1730
+ } catch (error) {
1731
+ logger4().error({
1732
+ msg: "error calling canHibernatWebSocket",
1733
+ error
1734
+ });
1735
+ hibernationConfig = {
1736
+ enabled: false,
1737
+ lastMsgIndex: void 0
1738
+ };
1739
+ }
1740
+ } else {
1741
+ hibernationConfig = {
1742
+ enabled: false,
1743
+ lastMsgIndex: void 0
1744
+ };
1745
+ }
1746
+ } else {
1747
+ logger4().warn({
1748
+ msg: "unexpected path for getActorHibernationConfig",
1749
+ path: path4
1750
+ });
1751
+ hibernationConfig = {
1752
+ enabled: false,
1753
+ lastMsgIndex: void 0
1754
+ };
1755
+ }
1756
+ }
1757
+ handler.actor[_chunkQ5CAVEKCcjs.PERSIST_SYMBOL].hibernatableWebSocket.push({
1758
+ requestId,
1759
+ lastSeenTimestamp: BigInt(Date.now()),
1760
+ msgIndex: -1n
1761
+ });
1762
+ return hibernationConfig;
1763
+ }
1614
1764
  };
1615
1765
  this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
1616
1766
  this.#runner.start();
@@ -1620,6 +1770,7 @@ var EngineActorDriver = class {
1620
1770
  namespace: runConfig.namespace,
1621
1771
  runnerName: runConfig.runnerName
1622
1772
  });
1773
+ this.#wsAckFlushInterval = setInterval(() => this.#flushWsAcks(), 1e3);
1623
1774
  }
1624
1775
  async #loadActorHandler(actorId) {
1625
1776
  const handler = this.#actors.get(actorId);
@@ -1634,6 +1785,16 @@ var EngineActorDriver = class {
1634
1785
  if (!handler.actor) throw new Error(`Actor ${actorId} failed to load`);
1635
1786
  return handler.actor;
1636
1787
  }
1788
+ #flushWsAcks() {
1789
+ if (this.#wsAckQueue.size === 0) return;
1790
+ for (const {
1791
+ requestIdBuf: requestId,
1792
+ messageIndex: index
1793
+ } of this.#wsAckQueue.values()) {
1794
+ this.#runner.sendWebsocketMessageAck(requestId, index);
1795
+ }
1796
+ this.#wsAckQueue.clear();
1797
+ }
1637
1798
  getContext(actorId) {
1638
1799
  return {};
1639
1800
  }
@@ -1654,7 +1815,7 @@ var EngineActorDriver = class {
1654
1815
  this.#alarmTimeout = void 0;
1655
1816
  }
1656
1817
  const delay = Math.max(0, timestamp - Date.now());
1657
- this.#alarmTimeout = _chunkELDFBXDVcjs.setLongTimeout.call(void 0, () => {
1818
+ this.#alarmTimeout = _chunkYUBR6XCJcjs.setLongTimeout.call(void 0, () => {
1658
1819
  actor2._onAlarm();
1659
1820
  this.#alarmTimeout = void 0;
1660
1821
  }, delay);
@@ -1680,19 +1841,19 @@ var EngineActorDriver = class {
1680
1841
  let handler = this.#actors.get(actorId);
1681
1842
  if (!handler) {
1682
1843
  handler = {
1683
- actorStartPromise: _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, ),
1844
+ actorStartPromise: _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, ),
1684
1845
  persistedData: void 0
1685
1846
  };
1686
1847
  this.#actors.set(actorId, handler);
1687
1848
  const [persistedValue] = await this.#runner.kvGet(actorId, [
1688
1849
  KEYS.PERSIST_DATA
1689
1850
  ]);
1690
- handler.persistedData = persistedValue !== null ? persistedValue : _chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, input);
1851
+ handler.persistedData = persistedValue !== null ? persistedValue : _chunk5TRXLS6Xcjs.serializeEmptyPersistData.call(void 0, input);
1691
1852
  }
1692
1853
  const name = actorConfig.name;
1693
1854
  _invariant2.default.call(void 0, actorConfig.key, "actor should have a key");
1694
- const key = _chunkLMJHBF26cjs.deserializeActorKey.call(void 0, actorConfig.key);
1695
- const definition = _chunkLMJHBF26cjs.lookupInRegistry.call(void 0,
1855
+ const key = _chunkQ5CAVEKCcjs.deserializeActorKey.call(void 0, actorConfig.key);
1856
+ const definition = _chunkQ5CAVEKCcjs.lookupInRegistry.call(void 0,
1696
1857
  this.#registryConfig,
1697
1858
  actorConfig.name
1698
1859
  );
@@ -1714,12 +1875,19 @@ var EngineActorDriver = class {
1714
1875
  logger4().debug({ msg: "runner actor stopping", actorId, generation });
1715
1876
  const handler = this.#actors.get(actorId);
1716
1877
  if (handler == null ? void 0 : handler.actor) {
1717
- await handler.actor._stop();
1878
+ try {
1879
+ await handler.actor._onStop();
1880
+ } catch (err) {
1881
+ logger4().error({
1882
+ msg: "error in _onStop, proceeding with removing actor",
1883
+ err: _chunkYUBR6XCJcjs.stringifyError.call(void 0, err)
1884
+ });
1885
+ }
1718
1886
  this.#actors.delete(actorId);
1719
1887
  }
1720
1888
  logger4().debug({ msg: "runner actor stopped", actorId });
1721
1889
  }
1722
- async #runnerFetch(runner, actorId, request) {
1890
+ async #runnerFetch(_runner, actorId, _requestIdBuf, request) {
1723
1891
  logger4().debug({
1724
1892
  msg: "runner fetch",
1725
1893
  actorId,
@@ -1728,8 +1896,9 @@ var EngineActorDriver = class {
1728
1896
  });
1729
1897
  return await this.#actorRouter.fetch(request, { actorId });
1730
1898
  }
1731
- async #runnerWebSocket(runner, actorId, websocketRaw, request) {
1899
+ async #runnerWebSocket(_runner, actorId, websocketRaw, requestIdBuf, request) {
1732
1900
  const websocket = websocketRaw;
1901
+ const requestId = _chunkYUBR6XCJcjs.idToStr.call(void 0, requestIdBuf);
1733
1902
  logger4().debug({ msg: "runner websocket", actorId, url: request.url });
1734
1903
  const url = new URL(request.url);
1735
1904
  const protocols = request.headers.get("sec-websocket-protocol");
@@ -1738,21 +1907,21 @@ var EngineActorDriver = class {
1738
1907
  if (protocols) {
1739
1908
  const protocolList = protocols.split(",").map((p) => p.trim());
1740
1909
  for (const protocol of protocolList) {
1741
- if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
1910
+ if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING)) {
1742
1911
  encodingRaw = protocol.substring(
1743
- _chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
1912
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING.length
1744
1913
  );
1745
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
1914
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS)) {
1746
1915
  connParamsRaw = decodeURIComponent(
1747
- protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
1916
+ protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS.length)
1748
1917
  );
1749
1918
  }
1750
1919
  }
1751
1920
  }
1752
- const encoding = _chunkJKOUXDK6cjs.EncodingSchema.parse(encodingRaw);
1921
+ const encoding = _chunkGXIO5YOTcjs.EncodingSchema.parse(encodingRaw);
1753
1922
  const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
1754
1923
  let wsHandlerPromise;
1755
- if (url.pathname === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
1924
+ if (url.pathname === _chunkGXIO5YOTcjs.PATH_CONNECT_WEBSOCKET) {
1756
1925
  wsHandlerPromise = handleWebSocketConnect(
1757
1926
  request,
1758
1927
  this.#runConfig,
@@ -1760,11 +1929,12 @@ var EngineActorDriver = class {
1760
1929
  actorId,
1761
1930
  encoding,
1762
1931
  connParams,
1932
+ requestId,
1763
1933
  // Extract connId and connToken from protocols if needed
1764
1934
  void 0,
1765
1935
  void 0
1766
1936
  );
1767
- } else if (url.pathname.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX)) {
1937
+ } else if (url.pathname.startsWith(_chunkGXIO5YOTcjs.PATH_RAW_WEBSOCKET_PREFIX)) {
1768
1938
  wsHandlerPromise = handleRawWebSocketHandler(
1769
1939
  request,
1770
1940
  url.pathname + url.search,
@@ -1799,8 +1969,29 @@ var EngineActorDriver = class {
1799
1969
  var _a;
1800
1970
  return (_a = x.onMessage) == null ? void 0 : _a.call(x, event, wsContext);
1801
1971
  });
1972
+ _invariant2.default.call(void 0, event.rivetRequestId, "missing rivetRequestId");
1973
+ _invariant2.default.call(void 0, event.rivetMessageIndex, "missing rivetMessageIndex");
1974
+ const currentEntry = this.#wsAckQueue.get(requestId);
1975
+ if (currentEntry) {
1976
+ if (event.rivetMessageIndex > currentEntry.messageIndex) {
1977
+ currentEntry.messageIndex = event.rivetMessageIndex;
1978
+ } else {
1979
+ logger4().warn({
1980
+ msg: "received lower index than ack queue for message",
1981
+ requestId,
1982
+ queuedMessageIndex: currentEntry,
1983
+ eventMessageIndex: event.rivetMessageIndex
1984
+ });
1985
+ }
1986
+ } else {
1987
+ this.#wsAckQueue.set(requestId, {
1988
+ requestIdBuf,
1989
+ messageIndex: event.rivetMessageIndex
1990
+ });
1991
+ }
1802
1992
  });
1803
1993
  websocket.addEventListener("close", (event) => {
1994
+ this.#flushWsAcks();
1804
1995
  wsHandlerPromise.then((x) => {
1805
1996
  var _a;
1806
1997
  return (_a = x.onClose) == null ? void 0 : _a.call(x, event, wsContext);
@@ -1813,11 +2004,16 @@ var EngineActorDriver = class {
1813
2004
  });
1814
2005
  });
1815
2006
  }
1816
- async sleep(actorId) {
2007
+ startSleep(actorId) {
1817
2008
  this.#runner.sleepActor(actorId);
1818
2009
  }
1819
- async shutdown(immediate) {
2010
+ async shutdownRunner(immediate) {
1820
2011
  logger4().info({ msg: "stopping engine actor driver" });
2012
+ if (this.#wsAckFlushInterval) {
2013
+ clearInterval(this.#wsAckFlushInterval);
2014
+ this.#wsAckFlushInterval = void 0;
2015
+ }
2016
+ this.#flushWsAcks();
1821
2017
  await this.#runner.shutdown(immediate);
1822
2018
  }
1823
2019
  async serverlessHandleStart(c) {
@@ -1826,15 +2022,36 @@ var EngineActorDriver = class {
1826
2022
  });
1827
2023
  c.req.raw.signal.addEventListener("abort", () => {
1828
2024
  logger4().debug("SSE aborted, shutting down runner");
1829
- this.shutdown(true);
2025
+ this.shutdownRunner(false);
1830
2026
  });
1831
2027
  await this.#runnerStarted.promise;
1832
2028
  const payload = this.#runner.getServerlessInitPacket();
1833
2029
  _invariant2.default.call(void 0, payload, "runnerId not set");
1834
2030
  await stream.writeSSE({ data: payload });
2031
+ while (true) {
2032
+ if (this.#isRunnerStopped) {
2033
+ logger4().debug({
2034
+ msg: "runner is stopped"
2035
+ });
2036
+ break;
2037
+ }
2038
+ if (stream.closed || stream.aborted) {
2039
+ logger4().debug({
2040
+ msg: "runner sse stream closed",
2041
+ closed: stream.closed,
2042
+ aborted: stream.aborted
2043
+ });
2044
+ break;
2045
+ }
2046
+ await stream.writeSSE({ event: "ping", data: "" });
2047
+ await stream.sleep(RUNNER_SSE_PING_INTERVAL);
2048
+ }
1835
2049
  await this.#runnerStopped.promise;
1836
2050
  });
1837
2051
  }
2052
+ getExtraActorLogParams() {
2053
+ return { runnerId: _nullishCoalesce(this.#runner.runnerId, () => ( "-")) };
2054
+ }
1838
2055
  };
1839
2056
 
1840
2057
  // src/drivers/engine/mod.ts
@@ -1842,7 +2059,7 @@ function createEngineDriver() {
1842
2059
  return {
1843
2060
  name: "engine",
1844
2061
  manager: (_registryConfig, runConfig) => {
1845
- return new (0, _chunkLMJHBF26cjs.RemoteManagerDriver)(runConfig);
2062
+ return new (0, _chunkQ5CAVEKCcjs.RemoteManagerDriver)(runConfig);
1846
2063
  },
1847
2064
  actor: (registryConfig, runConfig, managerDriver, inlineClient) => {
1848
2065
  return new EngineActorDriver(
@@ -1896,7 +2113,7 @@ var FileSystemActorDriver = class {
1896
2113
  const state = await this.#state.loadActorStateOrError(actorId);
1897
2114
  await this.#state.writeActor(actorId, {
1898
2115
  ...state,
1899
- persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, data)
2116
+ persistedData: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0, data)
1900
2117
  });
1901
2118
  }
1902
2119
  async setAlarm(actor2, timestamp) {
@@ -1905,8 +2122,8 @@ var FileSystemActorDriver = class {
1905
2122
  getDatabase(actorId) {
1906
2123
  return this.#state.createDatabase(actorId);
1907
2124
  }
1908
- sleep(actorId) {
1909
- return this.#state.sleepActor(actorId);
2125
+ startSleep(actorId) {
2126
+ this.#state.sleepActor(actorId);
1910
2127
  }
1911
2128
  };
1912
2129
 
@@ -1999,13 +2216,13 @@ function decodeActorAlarm(bytes) {
1999
2216
  // src/schemas/file-system-driver/versioned.ts
2000
2217
  var CURRENT_VERSION = 1;
2001
2218
  var migrations = /* @__PURE__ */ new Map();
2002
- var ACTOR_STATE_VERSIONED = _chunkFDJ3AVNBcjs.createVersionedDataHandler.call(void 0, {
2219
+ var ACTOR_STATE_VERSIONED = _chunk5TRXLS6Xcjs.createVersionedDataHandler.call(void 0, {
2003
2220
  currentVersion: CURRENT_VERSION,
2004
2221
  migrations,
2005
2222
  serializeVersion: (data) => encodeActorState(data),
2006
2223
  deserializeVersion: (bytes) => decodeActorState(bytes)
2007
2224
  });
2008
- var ACTOR_ALARM_VERSIONED = _chunkFDJ3AVNBcjs.createVersionedDataHandler.call(void 0, {
2225
+ var ACTOR_ALARM_VERSIONED = _chunk5TRXLS6Xcjs.createVersionedDataHandler.call(void 0, {
2009
2226
  currentVersion: CURRENT_VERSION,
2010
2227
  migrations,
2011
2228
  serializeVersion: (data) => encodeActorAlarm(data),
@@ -2014,7 +2231,7 @@ var ACTOR_ALARM_VERSIONED = _chunkFDJ3AVNBcjs.createVersionedDataHandler.call(vo
2014
2231
 
2015
2232
  // src/drivers/file-system/log.ts
2016
2233
  function logger5() {
2017
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "driver-fs");
2234
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "driver-fs");
2018
2235
  }
2019
2236
 
2020
2237
  // src/drivers/file-system/utils.ts
@@ -2044,7 +2261,7 @@ async function pathExists(path4) {
2044
2261
  try {
2045
2262
  await fs.access(path4);
2046
2263
  return true;
2047
- } catch (e) {
2264
+ } catch (e2) {
2048
2265
  return false;
2049
2266
  }
2050
2267
  }
@@ -2196,8 +2413,8 @@ var FileSystemGlobalState = class {
2196
2413
  name,
2197
2414
  key,
2198
2415
  createdAt: BigInt(Date.now()),
2199
- persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0,
2200
- _chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, input)
2416
+ persistedData: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0,
2417
+ _chunk5TRXLS6Xcjs.serializeEmptyPersistData.call(void 0, input)
2201
2418
  )
2202
2419
  };
2203
2420
  await this.writeActor(actorId, entry.state);
@@ -2248,8 +2465,8 @@ var FileSystemGlobalState = class {
2248
2465
  name,
2249
2466
  key,
2250
2467
  createdAt: BigInt(Date.now()),
2251
- persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0,
2252
- _chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, input)
2468
+ persistedData: _chunkYUBR6XCJcjs.bufferToArrayBuffer.call(void 0,
2469
+ _chunk5TRXLS6Xcjs.serializeEmptyPersistData.call(void 0, input)
2253
2470
  )
2254
2471
  };
2255
2472
  await this.writeActor(actorId, entry.state);
@@ -2269,7 +2486,7 @@ var FileSystemGlobalState = class {
2269
2486
  await actor2.startPromise.promise.catch();
2270
2487
  actor2.removed = true;
2271
2488
  _invariant2.default.call(void 0, actor2.actor, "actor should be loaded");
2272
- await actor2.actor._stop();
2489
+ await actor2.actor._onStop();
2273
2490
  this.#actors.delete(actorId);
2274
2491
  }
2275
2492
  /**
@@ -2303,7 +2520,7 @@ var FileSystemGlobalState = class {
2303
2520
  } catch (error) {
2304
2521
  try {
2305
2522
  await fs2.unlink(tempPath);
2306
- } catch (e2) {
2523
+ } catch (e3) {
2307
2524
  }
2308
2525
  logger5().error({
2309
2526
  msg: "failed to write alarm",
@@ -2336,7 +2553,7 @@ var FileSystemGlobalState = class {
2336
2553
  } catch (error) {
2337
2554
  try {
2338
2555
  await fs2.unlink(tempPath);
2339
- } catch (e3) {
2556
+ } catch (e4) {
2340
2557
  }
2341
2558
  logger5().error({
2342
2559
  msg: "failed to save actor state",
@@ -2388,9 +2605,9 @@ var FileSystemGlobalState = class {
2388
2605
  if (entry.actor) {
2389
2606
  return entry.actor;
2390
2607
  }
2391
- entry.startPromise = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
2608
+ entry.startPromise = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
2392
2609
  try {
2393
- const definition = _chunkLMJHBF26cjs.lookupInRegistry.call(void 0,
2610
+ const definition = _chunkQ5CAVEKCcjs.lookupInRegistry.call(void 0,
2394
2611
  registryConfig,
2395
2612
  entry.state.name
2396
2613
  );
@@ -2459,7 +2676,7 @@ var FileSystemGlobalState = class {
2459
2676
  logger5().error({
2460
2677
  msg: "failed to read alarm file",
2461
2678
  file,
2462
- error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
2679
+ error: _chunkYUBR6XCJcjs.stringifyError.call(void 0, err)
2463
2680
  });
2464
2681
  }
2465
2682
  }
@@ -2489,7 +2706,7 @@ var FileSystemGlobalState = class {
2489
2706
  (_a = entry.alarmTimeout) == null ? void 0 : _a.abort();
2490
2707
  entry.alarmTimestamp = timestamp;
2491
2708
  const delay = Math.max(0, timestamp - Date.now());
2492
- entry.alarmTimeout = _chunkELDFBXDVcjs.setLongTimeout.call(void 0, async () => {
2709
+ entry.alarmTimeout = _chunkYUBR6XCJcjs.setLongTimeout.call(void 0, async () => {
2493
2710
  entry.alarmTimestamp = void 0;
2494
2711
  if (this.#persist) {
2495
2712
  try {
@@ -2499,7 +2716,7 @@ var FileSystemGlobalState = class {
2499
2716
  logger5().debug({
2500
2717
  msg: "failed to remove alarm file",
2501
2718
  actorId,
2502
- error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
2719
+ error: _chunkYUBR6XCJcjs.stringifyError.call(void 0, err)
2503
2720
  });
2504
2721
  }
2505
2722
  }
@@ -2526,7 +2743,7 @@ var FileSystemGlobalState = class {
2526
2743
  logger5().error({
2527
2744
  msg: "failed to handle alarm",
2528
2745
  actorId,
2529
- error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
2746
+ error: _chunkYUBR6XCJcjs.stringifyError.call(void 0, err)
2530
2747
  });
2531
2748
  }
2532
2749
  }, delay);
@@ -2536,7 +2753,7 @@ var FileSystemGlobalState = class {
2536
2753
  if (fsSync2.existsSync(tokenPath)) {
2537
2754
  return fsSync2.readFileSync(tokenPath, "utf-8");
2538
2755
  }
2539
- const newToken = _chunkJKOUXDK6cjs.generateRandomString.call(void 0, );
2756
+ const newToken = _chunkGXIO5YOTcjs.generateRandomString.call(void 0, );
2540
2757
  fsSync2.writeFileSync(tokenPath, newToken);
2541
2758
  return newToken;
2542
2759
  }
@@ -2598,13 +2815,13 @@ function createManagerInspectorRouter() {
2598
2815
  });
2599
2816
  return c.json(actors, 200);
2600
2817
  } catch (error) {
2601
- _chunkZNWE3XBTcjs.inspectorLogger.call(void 0, ).error({
2818
+ _chunkZL6NSKF2cjs.inspectorLogger.call(void 0, ).error({
2602
2819
  msg: "Failed to fetch actors",
2603
2820
  error
2604
2821
  });
2605
2822
  return c.json("Failed to fetch actors", 500);
2606
2823
  }
2607
- }).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunk65SAIRRYcjs.CreateActorSchema), async (c) => {
2824
+ }).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunkUBMUBNS2cjs.CreateActorSchema), async (c) => {
2608
2825
  const actor2 = await c.var.inspector.accessors.createActor(
2609
2826
  c.req.valid("json")
2610
2827
  );
@@ -2630,7 +2847,7 @@ var ManagerInspector = class {
2630
2847
 
2631
2848
  constructor(accessors) {
2632
2849
  this.accessors = accessors();
2633
- _chunkZNWE3XBTcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
2850
+ _chunkZL6NSKF2cjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
2634
2851
  }
2635
2852
  };
2636
2853
 
@@ -2686,7 +2903,7 @@ var FileSystemManagerDriver = class {
2686
2903
  try {
2687
2904
  const result = await this.#state.loadActorStateOrError(id);
2688
2905
  return transformActor2(result);
2689
- } catch (e4) {
2906
+ } catch (e5) {
2690
2907
  return null;
2691
2908
  }
2692
2909
  },
@@ -2704,16 +2921,16 @@ var FileSystemManagerDriver = class {
2704
2921
  actorId
2705
2922
  );
2706
2923
  return transformActor2(result);
2707
- } catch (e5) {
2924
+ } catch (e6) {
2708
2925
  return null;
2709
2926
  }
2710
2927
  }
2711
2928
  };
2712
2929
  });
2713
2930
  }
2714
- const inlineClient = _chunkLMJHBF26cjs.createClientWithDriver.call(void 0,
2931
+ const inlineClient = _chunkQ5CAVEKCcjs.createClientWithDriver.call(void 0,
2715
2932
  this,
2716
- _chunkFDJ3AVNBcjs.ClientConfigSchema.parse({})
2933
+ _chunk5TRXLS6Xcjs.ClientConfigSchema.parse({})
2717
2934
  );
2718
2935
  this.#actorDriver = this.#driverConfig.actor(
2719
2936
  registryConfig,
@@ -2735,7 +2952,7 @@ var FileSystemManagerDriver = class {
2735
2952
  async openWebSocket(path4, actorId, encoding, params, connId, connToken) {
2736
2953
  const pathOnly = path4.split("?")[0];
2737
2954
  const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
2738
- if (normalizedPath === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
2955
+ if (normalizedPath === _chunkGXIO5YOTcjs.PATH_CONNECT_WEBSOCKET) {
2739
2956
  const wsHandler = await handleWebSocketConnect(
2740
2957
  void 0,
2741
2958
  this.#runConfig,
@@ -2743,11 +2960,12 @@ var FileSystemManagerDriver = class {
2743
2960
  actorId,
2744
2961
  encoding,
2745
2962
  params,
2963
+ _chunkQ5CAVEKCcjs.generateConnRequestId.call(void 0, ),
2746
2964
  connId,
2747
2965
  connToken
2748
2966
  );
2749
2967
  return new InlineWebSocketAdapter2(wsHandler);
2750
- } else if (normalizedPath.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2968
+ } else if (normalizedPath.startsWith(_chunkGXIO5YOTcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2751
2969
  const wsHandler = await handleRawWebSocketHandler(
2752
2970
  void 0,
2753
2971
  path4,
@@ -2770,7 +2988,7 @@ var FileSystemManagerDriver = class {
2770
2988
  _invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
2771
2989
  const pathOnly = path4.split("?")[0];
2772
2990
  const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
2773
- if (normalizedPath === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
2991
+ if (normalizedPath === _chunkGXIO5YOTcjs.PATH_CONNECT_WEBSOCKET) {
2774
2992
  const wsHandler = await handleWebSocketConnect(
2775
2993
  c.req.raw,
2776
2994
  this.#runConfig,
@@ -2778,18 +2996,19 @@ var FileSystemManagerDriver = class {
2778
2996
  actorId,
2779
2997
  encoding,
2780
2998
  connParams,
2999
+ _chunkQ5CAVEKCcjs.generateConnRequestId.call(void 0, ),
2781
3000
  connId,
2782
3001
  connToken
2783
3002
  );
2784
- return upgradeWebSocket(() => wsHandler)(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
2785
- } else if (normalizedPath.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
3003
+ return upgradeWebSocket(() => wsHandler)(c, _chunkYUBR6XCJcjs.noopNext.call(void 0, ));
3004
+ } else if (normalizedPath.startsWith(_chunkGXIO5YOTcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
2786
3005
  const wsHandler = await handleRawWebSocketHandler(
2787
3006
  c.req.raw,
2788
3007
  path4,
2789
3008
  this.#actorDriver,
2790
3009
  actorId
2791
3010
  );
2792
- return upgradeWebSocket(() => wsHandler)(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
3011
+ return upgradeWebSocket(() => wsHandler)(c, _chunkYUBR6XCJcjs.noopNext.call(void 0, ));
2793
3012
  } else {
2794
3013
  throw new Error(`Unreachable path: ${path4}`);
2795
3014
  }
@@ -2926,13 +3145,13 @@ function chooseDefaultDriver(runConfig) {
2926
3145
  return runConfig.driver;
2927
3146
  }
2928
3147
  if (runConfig.endpoint || runConfig.token || runConfig.runnerKind === "serverless") {
2929
- _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
3148
+ _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, ).debug({
2930
3149
  msg: "using rivet engine driver",
2931
3150
  endpoint: runConfig.endpoint
2932
3151
  });
2933
3152
  return createEngineDriver();
2934
3153
  }
2935
- _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
3154
+ _chunkGXIO5YOTcjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
2936
3155
  return createFileSystemOrMemoryDriver(true);
2937
3156
  }
2938
3157
 
@@ -2946,7 +3165,7 @@ var _promises2 = require('stream/promises');
2946
3165
 
2947
3166
  // src/engine-process/log.ts
2948
3167
  function logger6() {
2949
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "engine-process");
3168
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "engine-process");
2950
3169
  }
2951
3170
 
2952
3171
  // src/engine-process/mod.ts
@@ -3001,7 +3220,26 @@ async function ensureEngineProcess(options) {
3001
3220
  cwd: path3.dirname(binaryPath),
3002
3221
  stdio: ["inherit", "pipe", "pipe"],
3003
3222
  env: {
3004
- ...process.env
3223
+ ...process.env,
3224
+ // In development, runners can be terminated without a graceful
3225
+ // shutdown (i.e. SIGKILL instead of SIGTERM). This is treated as a
3226
+ // crash by Rivet Engine in production and implements a backoff for
3227
+ // rescheduling actors in case of a crash loop.
3228
+ //
3229
+ // This is problematic in development since this will cause actors
3230
+ // to become unresponsive if frequently killing your dev server.
3231
+ //
3232
+ // We reduce the timeouts for resetting a runner as healthy in
3233
+ // order to account for this.
3234
+ RIVET__PEGBOARD__RETRY_RESET_DURATION: "100",
3235
+ RIVET__PEGBOARD__BASE_RETRY_TIMEOUT: "100",
3236
+ // Set max exponent to 1 to have a maximum of base_retry_timeout
3237
+ RIVET__PEGBOARD__RESCHEDULE_BACKOFF_MAX_EXPONENT: "1",
3238
+ // Reduce thresholds for faster development iteration
3239
+ //
3240
+ // Default ping interval is 3s, this gives a 2s & 4s grace
3241
+ RIVET__PEGBOARD__RUNNER_ELIGIBLE_THRESHOLD: "5000",
3242
+ RIVET__PEGBOARD__RUNNER_LOST_THRESHOLD: "7000"
3005
3243
  }
3006
3244
  });
3007
3245
  if (!child.pid) {
@@ -3023,8 +3261,7 @@ async function ensureEngineProcess(options) {
3023
3261
  msg: "engine process exited, please report this error",
3024
3262
  code,
3025
3263
  signal,
3026
- issues: "https://github.com/rivet-dev/rivetkit/issues",
3027
- support: "https://rivet.dev/discord"
3264
+ ..._chunkYUBR6XCJcjs.EXTRA_ERROR_LOG
3028
3265
  });
3029
3266
  stdoutStream.end();
3030
3267
  stderrStream.end();
@@ -3113,8 +3350,7 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
3113
3350
  msg: "engine download failed, please report this error",
3114
3351
  tempPath,
3115
3352
  error,
3116
- issues: "https://github.com/rivet-dev/rivetkit/issues",
3117
- support: "https://rivet.dev/discord"
3353
+ ..._chunkYUBR6XCJcjs.EXTRA_ERROR_LOG
3118
3354
  });
3119
3355
  try {
3120
3356
  await fs3.unlink(tempPath);
@@ -3195,7 +3431,7 @@ async function fileExists(filePath) {
3195
3431
  try {
3196
3432
  await fs3.access(filePath);
3197
3433
  return true;
3198
- } catch (e6) {
3434
+ } catch (e7) {
3199
3435
  return false;
3200
3436
  }
3201
3437
  }
@@ -3238,11 +3474,42 @@ var _zodopenapi = require('@hono/zod-openapi');
3238
3474
 
3239
3475
 
3240
3476
 
3241
-
3242
3477
  var _factory = require('hono/factory');
3243
3478
 
3244
3479
 
3245
3480
 
3481
+ // src/common/cors.ts
3482
+ var cors = () => {
3483
+ return async (c, next) => {
3484
+ const origin = c.req.header("origin") || "*";
3485
+ if (c.req.method === "OPTIONS") {
3486
+ const requestHeaders = c.req.header("access-control-request-headers") || "*";
3487
+ c.header("access-control-allow-origin", origin);
3488
+ c.header("access-control-allow-credentials", "true");
3489
+ c.header(
3490
+ "access-control-allow-methods",
3491
+ "GET, POST, PUT, DELETE, OPTIONS, PATCH"
3492
+ );
3493
+ c.header("access-control-allow-headers", requestHeaders);
3494
+ c.header("access-control-expose-headers", "*");
3495
+ c.header("access-control-max-age", "86400");
3496
+ if (origin !== "*") {
3497
+ c.header("vary", "Origin");
3498
+ }
3499
+ c.res.headers.delete("content-length");
3500
+ c.res.headers.delete("content-type");
3501
+ return c.body(null, 204);
3502
+ }
3503
+ await next();
3504
+ c.header("access-control-allow-origin", origin);
3505
+ c.header("access-control-allow-credentials", "true");
3506
+ c.header("access-control-expose-headers", "*");
3507
+ if (origin !== "*") {
3508
+ c.header("vary", "Origin");
3509
+ }
3510
+ };
3511
+ };
3512
+
3246
3513
  // src/manager-api/actors.ts
3247
3514
 
3248
3515
 
@@ -3306,17 +3573,17 @@ async function handleWebSocketGatewayPathBased(runConfig, managerDriver, c, acto
3306
3573
  if (protocols) {
3307
3574
  const protocolList = protocols.split(",").map((p) => p.trim());
3308
3575
  for (const protocol of protocolList) {
3309
- if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
3310
- encodingRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length);
3311
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
3576
+ if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING)) {
3577
+ encodingRaw = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING.length);
3578
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS)) {
3312
3579
  connParamsRaw = decodeURIComponent(
3313
- protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
3580
+ protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS.length)
3314
3581
  );
3315
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
3316
- connIdRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
3317
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
3582
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID)) {
3583
+ connIdRaw = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID.length);
3584
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN)) {
3318
3585
  connTokenRaw = protocol.substring(
3319
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
3586
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN.length
3320
3587
  );
3321
3588
  }
3322
3589
  }
@@ -3421,21 +3688,21 @@ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath)
3421
3688
  if (protocols) {
3422
3689
  const protocolList = protocols.split(",").map((p) => p.trim());
3423
3690
  for (const protocol of protocolList) {
3424
- if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_TARGET)) {
3425
- target = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_TARGET.length);
3426
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR)) {
3427
- actorId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR.length);
3428
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
3429
- encodingRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length);
3430
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
3691
+ if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_TARGET)) {
3692
+ target = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_TARGET.length);
3693
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ACTOR)) {
3694
+ actorId = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_ACTOR.length);
3695
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING)) {
3696
+ encodingRaw = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING.length);
3697
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS)) {
3431
3698
  connParamsRaw = decodeURIComponent(
3432
- protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
3699
+ protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS.length)
3433
3700
  );
3434
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
3435
- connIdRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
3436
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
3701
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID)) {
3702
+ connIdRaw = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID.length);
3703
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN)) {
3437
3704
  connTokenRaw = protocol.substring(
3438
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
3705
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN.length
3439
3706
  );
3440
3707
  }
3441
3708
  }
@@ -3467,8 +3734,8 @@ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath)
3467
3734
  );
3468
3735
  }
3469
3736
  async function handleHttpGateway(managerDriver, c, next, strippedPath) {
3470
- const target = c.req.header(_chunkJKOUXDK6cjs.HEADER_RIVET_TARGET);
3471
- const actorId = c.req.header(_chunkJKOUXDK6cjs.HEADER_RIVET_ACTOR);
3737
+ const target = c.req.header(_chunkGXIO5YOTcjs.HEADER_RIVET_TARGET);
3738
+ const actorId = c.req.header(_chunkGXIO5YOTcjs.HEADER_RIVET_ACTOR);
3472
3739
  if (target !== "actor") {
3473
3740
  return next();
3474
3741
  }
@@ -3482,8 +3749,8 @@ async function handleHttpGateway(managerDriver, c, next, strippedPath) {
3482
3749
  method: c.req.method
3483
3750
  });
3484
3751
  const proxyHeaders = new Headers(c.req.raw.headers);
3485
- proxyHeaders.delete(_chunkJKOUXDK6cjs.HEADER_RIVET_TARGET);
3486
- proxyHeaders.delete(_chunkJKOUXDK6cjs.HEADER_RIVET_ACTOR);
3752
+ proxyHeaders.delete(_chunkGXIO5YOTcjs.HEADER_RIVET_TARGET);
3753
+ proxyHeaders.delete(_chunkGXIO5YOTcjs.HEADER_RIVET_ACTOR);
3487
3754
  const url = new URL(c.req.url);
3488
3755
  const proxyUrl = new URL(`http://actor${strippedPath}${url.search}`);
3489
3756
  const proxyRequest = new Request(proxyUrl, {
@@ -3516,32 +3783,41 @@ function parseActorPath(path4) {
3516
3783
  return null;
3517
3784
  }
3518
3785
  const segments = basePath.split("/").filter((s) => s.length > 0);
3519
- if (segments.length < 4) {
3786
+ if (segments.length < 2) {
3520
3787
  return null;
3521
3788
  }
3522
- if (segments[0] !== "gateway" || segments[1] !== "actors") {
3789
+ if (segments[0] !== "gateway") {
3523
3790
  return null;
3524
3791
  }
3525
- if (segments[2].length === 0) {
3792
+ const actorSegment = segments[1];
3793
+ if (actorSegment.length === 0) {
3526
3794
  return null;
3527
3795
  }
3528
- const actorId = segments[2];
3796
+ let actorId;
3529
3797
  let token;
3530
- let remainingPathStartIdx;
3531
- if (segments.length >= 6 && segments[3] === "tokens" && segments[5] === "route") {
3532
- if (segments[4].length === 0) {
3798
+ const atPos = actorSegment.indexOf("@");
3799
+ if (atPos !== -1) {
3800
+ const rawActorId = actorSegment.slice(0, atPos);
3801
+ const rawToken = actorSegment.slice(atPos + 1);
3802
+ if (rawActorId.length === 0 || rawToken.length === 0) {
3803
+ return null;
3804
+ }
3805
+ try {
3806
+ actorId = decodeURIComponent(rawActorId);
3807
+ token = decodeURIComponent(rawToken);
3808
+ } catch (e) {
3533
3809
  return null;
3534
3810
  }
3535
- token = segments[4];
3536
- remainingPathStartIdx = 6;
3537
- } else if (segments.length >= 4 && segments[3] === "route") {
3538
- token = void 0;
3539
- remainingPathStartIdx = 4;
3540
3811
  } else {
3541
- return null;
3812
+ try {
3813
+ actorId = decodeURIComponent(actorSegment);
3814
+ } catch (e) {
3815
+ return null;
3816
+ }
3817
+ token = void 0;
3542
3818
  }
3543
3819
  let prefixLen = 0;
3544
- for (let i = 0; i < remainingPathStartIdx; i++) {
3820
+ for (let i = 0; i < 2; i++) {
3545
3821
  prefixLen += 1 + segments[i].length;
3546
3822
  }
3547
3823
  let remainingBase;
@@ -3568,7 +3844,7 @@ async function createTestWebSocketProxy(clientWsPromise) {
3568
3844
  promise: serverWsPromise,
3569
3845
  resolve: serverWsResolve,
3570
3846
  reject: serverWsReject
3571
- } = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
3847
+ } = _chunkYUBR6XCJcjs.promiseWithResolvers.call(void 0, );
3572
3848
  try {
3573
3849
  logger().debug({ msg: "awaiting client websocket promise" });
3574
3850
  const ws = await clientWsPromise;
@@ -3782,7 +4058,7 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, driverCon
3782
4058
  const router = new (0, _zodopenapi.OpenAPIHono)({ strict: false }).basePath(
3783
4059
  runConfig.basePath
3784
4060
  );
3785
- router.use("*", loggerMiddleware(logger()));
4061
+ router.use("*", loggerMiddleware(logger()), cors());
3786
4062
  router.use(
3787
4063
  "*",
3788
4064
  _factory.createMiddleware.call(void 0, async (c, next) => {
@@ -3807,14 +4083,13 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, driverCon
3807
4083
  } else if (runConfig.runnerKind === "normal") {
3808
4084
  addManagerRoutes(registryConfig, runConfig, managerDriver, router);
3809
4085
  } else {
3810
- _chunkELDFBXDVcjs.assertUnreachable.call(void 0, runConfig.runnerKind);
4086
+ _chunkYUBR6XCJcjs.assertUnreachable.call(void 0, runConfig.runnerKind);
3811
4087
  }
3812
4088
  router.notFound(handleRouteNotFound);
3813
4089
  router.onError(handleRouteError);
3814
4090
  return { router, openapi: router };
3815
4091
  }
3816
4092
  function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDriver, client, router) {
3817
- if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
3818
4093
  router.get("/", (c) => {
3819
4094
  return c.text(
3820
4095
  "This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
@@ -3848,6 +4123,13 @@ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDri
3848
4123
  newRunConfig.totalSlots = totalSlots;
3849
4124
  newRunConfig.runnerName = runnerName;
3850
4125
  newRunConfig.namespace = namespace;
4126
+ if (newRunConfig.runnerKey) {
4127
+ logger().warn({
4128
+ msg: "runner keys are not supported by serverless runners, this will be overwritten with a random runner key",
4129
+ oldRunnerKey: newRunConfig.runnerKey
4130
+ });
4131
+ newRunConfig.runnerKey = void 0;
4132
+ }
3851
4133
  const actorDriver = driverConfig.actor(
3852
4134
  registryConfig,
3853
4135
  newRunConfig,
@@ -3868,19 +4150,18 @@ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDri
3868
4150
  }
3869
4151
  function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
3870
4152
  var _a;
3871
- if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
4153
+ if (_chunkZL6NSKF2cjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
3872
4154
  if (!managerDriver.inspector) {
3873
4155
  throw new (0, _chunkKSRXX3Z4cjs.Unsupported)("inspector");
3874
4156
  }
3875
4157
  router.route(
3876
4158
  "/inspect",
3877
- new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkZNWE3XBTcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
4159
+ new (0, _hono.Hono)().use(_chunkZL6NSKF2cjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
3878
4160
  c.set("inspector", managerDriver.inspector);
3879
4161
  return next();
3880
4162
  }).route("/", createManagerInspectorRouter())
3881
4163
  );
3882
4164
  }
3883
- if (runConfig.cors) router.use("*", _cors.cors.call(void 0, runConfig.cors));
3884
4165
  router.use("*", actorGateway.bind(void 0, runConfig, managerDriver));
3885
4166
  router.get("/", (c) => {
3886
4167
  return c.text(
@@ -4085,7 +4366,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
4085
4366
  );
4086
4367
  response = { ok: output };
4087
4368
  } catch (rawErr) {
4088
- const err = _chunkELDFBXDVcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
4369
+ const err = _chunkYUBR6XCJcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
4089
4370
  response = { err };
4090
4371
  }
4091
4372
  return c.body(cbor4.encode(response));
@@ -4108,30 +4389,30 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
4108
4389
  let connId;
4109
4390
  let connToken;
4110
4391
  for (const protocol of protocols) {
4111
- if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR)) {
4112
- actorId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR.length);
4113
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
4392
+ if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ACTOR)) {
4393
+ actorId = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_ACTOR.length);
4394
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING)) {
4114
4395
  encoding = protocol.substring(
4115
- _chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
4396
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_ENCODING.length
4116
4397
  );
4117
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_TRANSPORT)) {
4398
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_TRANSPORT)) {
4118
4399
  transport = protocol.substring(
4119
- _chunkJKOUXDK6cjs.WS_PROTOCOL_TRANSPORT.length
4400
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_TRANSPORT.length
4120
4401
  );
4121
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_PATH)) {
4402
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_PATH)) {
4122
4403
  path4 = decodeURIComponent(
4123
- protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_PATH.length)
4404
+ protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_PATH.length)
4124
4405
  );
4125
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
4406
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS)) {
4126
4407
  const paramsRaw = decodeURIComponent(
4127
- protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
4408
+ protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_PARAMS.length)
4128
4409
  );
4129
4410
  params = JSON.parse(paramsRaw);
4130
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
4131
- connId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
4132
- } else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
4411
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID)) {
4412
+ connId = protocol.substring(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_ID.length);
4413
+ } else if (protocol.startsWith(_chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN)) {
4133
4414
  connToken = protocol.substring(
4134
- _chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
4415
+ _chunkGXIO5YOTcjs.WS_PROTOCOL_CONN_TOKEN.length
4135
4416
  );
4136
4417
  }
4137
4418
  }
@@ -4152,10 +4433,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
4152
4433
  connToken
4153
4434
  );
4154
4435
  return await createTestWebSocketProxy(clientWsPromise);
4155
- })(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
4436
+ })(c, _chunkYUBR6XCJcjs.noopNext.call(void 0, ));
4156
4437
  });
4157
4438
  router.all(".test/inline-driver/send-request/*", async (c) => {
4158
- const actorId = c.req.header(_chunkJKOUXDK6cjs.HEADER_ACTOR_ID);
4439
+ const actorId = c.req.header(_chunkGXIO5YOTcjs.HEADER_ACTOR_ID);
4159
4440
  if (!actorId) {
4160
4441
  return c.text("Missing required headers", 400);
4161
4442
  }
@@ -4182,9 +4463,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
4182
4463
  } catch (error) {
4183
4464
  logger().error({
4184
4465
  msg: "error in test inline raw http",
4185
- error: _chunkELDFBXDVcjs.stringifyError.call(void 0, error)
4466
+ error: _chunkYUBR6XCJcjs.stringifyError.call(void 0, error)
4186
4467
  });
4187
- const err = _chunkELDFBXDVcjs.deconstructError.call(void 0, error, logger(), {}, true);
4468
+ const err = _chunkYUBR6XCJcjs.deconstructError.call(void 0, error, logger(), {}, true);
4188
4469
  return c.json(
4189
4470
  {
4190
4471
  error: {
@@ -4229,7 +4510,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
4229
4510
  } catch (error) {
4230
4511
  logger().error({
4231
4512
  msg: "error forcing disconnect",
4232
- error: _chunkELDFBXDVcjs.stringifyError.call(void 0, error)
4513
+ error: _chunkYUBR6XCJcjs.stringifyError.call(void 0, error)
4233
4514
  });
4234
4515
  return c.text(`Error: ${error}`, 500);
4235
4516
  }
@@ -4250,7 +4531,7 @@ function createApiActor(actor2, runnerName = "default") {
4250
4531
  return {
4251
4532
  actor_id: actor2.actorId,
4252
4533
  name: actor2.name,
4253
- key: _chunkLMJHBF26cjs.serializeActorKey.call(void 0, actor2.key),
4534
+ key: _chunkQ5CAVEKCcjs.serializeActorKey.call(void 0, actor2.key),
4254
4535
  namespace_id: "default",
4255
4536
  // Assert default namespace
4256
4537
  runner_name_selector: runnerName,
@@ -4264,7 +4545,7 @@ function createApiActor(actor2, runnerName = "default") {
4264
4545
 
4265
4546
  // src/registry/log.ts
4266
4547
  function logger7() {
4267
- return _chunkHN7UXCYQcjs.getLogger.call(void 0, "registry");
4548
+ return _chunk5N6F5PXDcjs.getLogger.call(void 0, "registry");
4268
4549
  }
4269
4550
 
4270
4551
  // src/registry/serve.ts
@@ -4324,7 +4605,7 @@ var Registry = class {
4324
4605
  */
4325
4606
  start(inputConfig) {
4326
4607
  var _a, _b, _c;
4327
- const config2 = _chunkFDJ3AVNBcjs.RunnerConfigSchema.parse(inputConfig);
4608
+ const config2 = _chunk5TRXLS6Xcjs.RunnerConfigSchema.parse(inputConfig);
4328
4609
  if (config2.autoConfigureServerless && config2.runnerKind !== "serverless") {
4329
4610
  throw new Error(
4330
4611
  "autoConfigureServerless can only be configured when runnerKind is 'serverless'"
@@ -4362,9 +4643,9 @@ var Registry = class {
4362
4643
  config2.disableActorDriver = true;
4363
4644
  }
4364
4645
  if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
4365
- _chunkHN7UXCYQcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
4646
+ _chunk5N6F5PXDcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
4366
4647
  } else {
4367
- _chunkHN7UXCYQcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
4648
+ _chunk5N6F5PXDcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
4368
4649
  }
4369
4650
  const driver = chooseDefaultDriver(config2);
4370
4651
  if (driver.name === "engine") {
@@ -4384,8 +4665,8 @@ var Registry = class {
4384
4665
  config2.getUpgradeWebSocket = () => upgradeWebSocket;
4385
4666
  }
4386
4667
  const managerDriver = driver.manager(this.#config, config2);
4387
- _chunkZNWE3XBTcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
4388
- const client = _chunkLMJHBF26cjs.createClientWithDriver.call(void 0, managerDriver, config2);
4668
+ _chunkZL6NSKF2cjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
4669
+ const client = _chunkQ5CAVEKCcjs.createClientWithDriver.call(void 0, managerDriver, config2);
4389
4670
  const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
4390
4671
  logger7().info({
4391
4672
  msg: "rivetkit ready",
@@ -4393,18 +4674,18 @@ var Registry = class {
4393
4674
  definitions: Object.keys(this.#config.use).length,
4394
4675
  ...driverLog
4395
4676
  });
4396
- if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
4677
+ if (_chunkZL6NSKF2cjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
4397
4678
  logger7().info({
4398
4679
  msg: "inspector ready",
4399
- url: _chunkZNWE3XBTcjs.getInspectorUrl.call(void 0, config2)
4680
+ url: _chunkZL6NSKF2cjs.getInspectorUrl.call(void 0, config2)
4400
4681
  });
4401
4682
  }
4402
4683
  if (!config2.noWelcome) {
4403
4684
  const displayInfo = managerDriver.displayInformation();
4404
4685
  console.log();
4405
- console.log(` RivetKit ${_chunkELDFBXDVcjs.package_default.version} (${displayInfo.name})`);
4686
+ console.log(` RivetKit ${_chunkYUBR6XCJcjs.package_default.version} (${displayInfo.name})`);
4406
4687
  if (!config2.disableDefaultServer) {
4407
- console.log(` - Endpoint: ${_chunkLMJHBF26cjs.getEndpoint.call(void 0, config2)}`);
4688
+ console.log(` - Endpoint: ${_chunkQ5CAVEKCcjs.getEndpoint.call(void 0, config2)}`);
4408
4689
  } else if (config2.overrideServerAddress) {
4409
4690
  console.log(
4410
4691
  ` - Endpoint: ${config2.overrideServerAddress}`
@@ -4418,8 +4699,8 @@ var Registry = class {
4418
4699
  const padding = " ".repeat(Math.max(0, 13 - k.length));
4419
4700
  console.log(` - ${k}:${padding}${v}`);
4420
4701
  }
4421
- if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
4422
- console.log(` - Inspector: ${_chunkZNWE3XBTcjs.getInspectorUrl.call(void 0, config2)}`);
4702
+ if (_chunkZL6NSKF2cjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
4703
+ console.log(` - Inspector: ${_chunkZL6NSKF2cjs.getInspectorUrl.call(void 0, config2)}`);
4423
4704
  }
4424
4705
  console.log();
4425
4706
  }
@@ -4488,7 +4769,7 @@ async function configureServerlessRunner(config2) {
4488
4769
  msg: "fetching datacenters",
4489
4770
  endpoint: config2.endpoint
4490
4771
  });
4491
- const dcsRes = await _chunkLMJHBF26cjs.getDatacenters.call(void 0, clientConfig);
4772
+ const dcsRes = await _chunkQ5CAVEKCcjs.getDatacenters.call(void 0, clientConfig);
4492
4773
  logger7().debug({
4493
4774
  msg: "configuring serverless runner",
4494
4775
  runnerName: config2.runnerName,
@@ -4506,7 +4787,7 @@ async function configureServerlessRunner(config2) {
4506
4787
  },
4507
4788
  metadata: _nullishCoalesce(customConfig.metadata, () => ( {}))
4508
4789
  };
4509
- await _chunkLMJHBF26cjs.updateRunnerConfig.call(void 0, clientConfig, config2.runnerName, {
4790
+ await _chunkQ5CAVEKCcjs.updateRunnerConfig.call(void 0, clientConfig, config2.runnerName, {
4510
4791
  datacenters: Object.fromEntries(
4511
4792
  dcsRes.datacenters.map((dc) => [dc.name, serverlessConfig])
4512
4793
  )
@@ -4544,4 +4825,4 @@ function setup(input) {
4544
4825
 
4545
4826
  exports.handleWebSocketConnect = handleWebSocketConnect; exports.handleRawWebSocketHandler = handleRawWebSocketHandler; exports.RegistryConfigSchema = RegistryConfigSchema; 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.Registry = Registry; exports.setup = setup;
4546
4827
  //! These configs configs hold anything that's not platform-specific about running actors.
4547
- //# sourceMappingURL=chunk-M5BHNJHB.cjs.map
4828
+ //# sourceMappingURL=chunk-YLWF6RFL.cjs.map