rivetkit 2.1.3 → 2.1.5

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 (112) hide show
  1. package/dist/browser/client.d.ts +11 -0
  2. package/dist/browser/client.js +1 -1
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +1 -1
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/inspector.tar.gz +0 -0
  7. package/dist/tsup/{chunk-OAOF23ZY.js → chunk-2OK7S6QF.js} +2 -2
  8. package/dist/tsup/{chunk-5AZ6UPEF.cjs → chunk-7WF2QSIC.cjs} +24 -20
  9. package/dist/tsup/chunk-7WF2QSIC.cjs.map +1 -0
  10. package/dist/tsup/{chunk-IJAGZS57.cjs → chunk-D2SPAJVT.cjs} +30 -30
  11. package/dist/tsup/{chunk-IJAGZS57.cjs.map → chunk-D2SPAJVT.cjs.map} +1 -1
  12. package/dist/tsup/{chunk-YET3IZD6.js → chunk-EIATSBYZ.js} +2 -2
  13. package/dist/tsup/{chunk-YET3IZD6.js.map → chunk-EIATSBYZ.js.map} +1 -1
  14. package/dist/tsup/{chunk-DADGS67O.cjs → chunk-GQGRQDRL.cjs} +4 -4
  15. package/dist/tsup/{chunk-DADGS67O.cjs.map → chunk-GQGRQDRL.cjs.map} +1 -1
  16. package/dist/tsup/{chunk-ZSJ2OTY4.cjs → chunk-HYPIHCDT.cjs} +2 -2
  17. package/dist/tsup/{chunk-ZSJ2OTY4.cjs.map → chunk-HYPIHCDT.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-HPAX7L72.cjs → chunk-IIJNPVPQ.cjs} +152 -152
  19. package/dist/tsup/{chunk-HPAX7L72.cjs.map → chunk-IIJNPVPQ.cjs.map} +1 -1
  20. package/dist/tsup/{chunk-U6VWVHVW.cjs → chunk-JC6BEPE7.cjs} +3 -3
  21. package/dist/tsup/{chunk-U6VWVHVW.cjs.map → chunk-JC6BEPE7.cjs.map} +1 -1
  22. package/dist/tsup/{chunk-N7ASEZ2Y.js → chunk-JPXO2H55.js} +5 -5
  23. package/dist/tsup/{chunk-QUDLEWGD.js → chunk-MIX2KB6U.js} +212 -47
  24. package/dist/tsup/chunk-MIX2KB6U.js.map +1 -0
  25. package/dist/tsup/{chunk-BMNB6YRQ.cjs → chunk-OAXJWGMU.cjs} +212 -305
  26. package/dist/tsup/chunk-OAXJWGMU.cjs.map +1 -0
  27. package/dist/tsup/{chunk-KSZZRTOD.cjs → chunk-PB5AEMKQ.cjs} +3 -5
  28. package/dist/tsup/chunk-PB5AEMKQ.cjs.map +1 -0
  29. package/dist/tsup/{chunk-6T3WSP5M.js → chunk-R5OQUSLN.js} +4 -4
  30. package/dist/tsup/{chunk-POUBQA6Z.js → chunk-S662Y6ZU.js} +2 -2
  31. package/dist/tsup/{chunk-GNGRMP5E.js → chunk-SRIM3GHD.js} +18 -11
  32. package/dist/tsup/chunk-SRIM3GHD.js.map +1 -0
  33. package/dist/tsup/{chunk-MAXIXG56.js → chunk-TADUYCHF.js} +2 -4
  34. package/dist/tsup/chunk-TADUYCHF.js.map +1 -0
  35. package/dist/tsup/{chunk-R64EFI6F.cjs → chunk-TI5PXQGG.cjs} +280 -115
  36. package/dist/tsup/chunk-TI5PXQGG.cjs.map +1 -0
  37. package/dist/tsup/{chunk-T6MM5RTW.cjs → chunk-U5SMSA27.cjs} +250 -243
  38. package/dist/tsup/chunk-U5SMSA27.cjs.map +1 -0
  39. package/dist/tsup/{chunk-6LHZQSWJ.js → chunk-WY2SHWXQ.js} +8 -4
  40. package/dist/tsup/chunk-WY2SHWXQ.js.map +1 -0
  41. package/dist/tsup/{chunk-YLDDENCZ.js → chunk-ZPWOYQHN.js} +126 -219
  42. package/dist/tsup/chunk-ZPWOYQHN.js.map +1 -0
  43. package/dist/tsup/client/mod.cjs +6 -6
  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 +5 -5
  47. package/dist/tsup/common/log.cjs +2 -2
  48. package/dist/tsup/common/log.js +1 -1
  49. package/dist/tsup/common/websocket.cjs +3 -3
  50. package/dist/tsup/common/websocket.js +2 -2
  51. package/dist/tsup/{config-P3XujgRr.d.ts → config-Qj-zLJPc.d.ts} +11 -0
  52. package/dist/tsup/{config-_gfywqqI.d.cts → config-iPj5l1bL.d.cts} +11 -0
  53. package/dist/tsup/{context-uNA4TRn3.d.ts → context-CQCMuHND.d.ts} +1 -1
  54. package/dist/tsup/{context-Bxd8Cx4H.d.cts → context-DzvH1PBK.d.cts} +1 -1
  55. package/dist/tsup/{driver-CPGHKXyh.d.ts → driver-Jo8v-kbU.d.ts} +1 -1
  56. package/dist/tsup/driver-helpers/mod.cjs +4 -4
  57. package/dist/tsup/driver-helpers/mod.d.cts +4 -4
  58. package/dist/tsup/driver-helpers/mod.d.ts +4 -4
  59. package/dist/tsup/driver-helpers/mod.js +3 -3
  60. package/dist/tsup/{driver-BcLvZcKl.d.cts → driver-iV8J-WMv.d.cts} +1 -1
  61. package/dist/tsup/driver-test-suite/mod.cjs +196 -60
  62. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  63. package/dist/tsup/driver-test-suite/mod.d.cts +2 -2
  64. package/dist/tsup/driver-test-suite/mod.d.ts +2 -2
  65. package/dist/tsup/driver-test-suite/mod.js +971 -835
  66. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  67. package/dist/tsup/inspector/mod.cjs +3 -3
  68. package/dist/tsup/inspector/mod.js +2 -2
  69. package/dist/tsup/mod.cjs +8 -8
  70. package/dist/tsup/mod.d.cts +5 -5
  71. package/dist/tsup/mod.d.ts +5 -5
  72. package/dist/tsup/mod.js +7 -7
  73. package/dist/tsup/serve-test-suite/mod.cjs +182 -100
  74. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  75. package/dist/tsup/serve-test-suite/mod.js +93 -11
  76. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  77. package/dist/tsup/test/mod.cjs +10 -10
  78. package/dist/tsup/test/mod.d.cts +1 -1
  79. package/dist/tsup/test/mod.d.ts +1 -1
  80. package/dist/tsup/test/mod.js +6 -6
  81. package/dist/tsup/utils.cjs +2 -2
  82. package/dist/tsup/utils.js +1 -1
  83. package/dist/tsup/workflow/mod.cjs +5 -5
  84. package/dist/tsup/workflow/mod.d.cts +3 -3
  85. package/dist/tsup/workflow/mod.d.ts +3 -3
  86. package/dist/tsup/workflow/mod.js +4 -4
  87. package/package.json +6 -6
  88. package/src/actor/config.ts +0 -2
  89. package/src/actor/instance/mod.ts +17 -4
  90. package/src/actor/router.ts +9 -6
  91. package/src/driver-test-suite/mod.ts +3 -0
  92. package/src/driver-test-suite/tests/actor-driver.ts +4 -0
  93. package/src/driver-test-suite/tests/actor-lifecycle.ts +157 -0
  94. package/src/driver-test-suite/tests/conn-error-serialization.ts +64 -0
  95. package/src/drivers/engine/actor-driver.ts +47 -15
  96. package/src/manager/router.ts +20 -6
  97. package/src/{registry → utils}/serve.ts +38 -4
  98. package/src/workflow/context.ts +4 -0
  99. package/dist/tsup/chunk-5AZ6UPEF.cjs.map +0 -1
  100. package/dist/tsup/chunk-6LHZQSWJ.js.map +0 -1
  101. package/dist/tsup/chunk-BMNB6YRQ.cjs.map +0 -1
  102. package/dist/tsup/chunk-GNGRMP5E.js.map +0 -1
  103. package/dist/tsup/chunk-KSZZRTOD.cjs.map +0 -1
  104. package/dist/tsup/chunk-MAXIXG56.js.map +0 -1
  105. package/dist/tsup/chunk-QUDLEWGD.js.map +0 -1
  106. package/dist/tsup/chunk-R64EFI6F.cjs.map +0 -1
  107. package/dist/tsup/chunk-T6MM5RTW.cjs.map +0 -1
  108. package/dist/tsup/chunk-YLDDENCZ.js.map +0 -1
  109. /package/dist/tsup/{chunk-OAOF23ZY.js.map → chunk-2OK7S6QF.js.map} +0 -0
  110. /package/dist/tsup/{chunk-N7ASEZ2Y.js.map → chunk-JPXO2H55.js.map} +0 -0
  111. /package/dist/tsup/{chunk-6T3WSP5M.js.map → chunk-R5OQUSLN.js.map} +0 -0
  112. /package/dist/tsup/{chunk-POUBQA6Z.js.map → chunk-S662Y6ZU.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkT6MM5RTWcjs = require('./chunk-T6MM5RTW.cjs');
8
+ var _chunkU5SMSA27cjs = require('./chunk-U5SMSA27.cjs');
9
9
 
10
10
 
11
11
 
@@ -16,7 +16,7 @@ var _chunkT6MM5RTWcjs = require('./chunk-T6MM5RTW.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkHPAX7L72cjs = require('./chunk-HPAX7L72.cjs');
19
+ var _chunkIIJNPVPQcjs = require('./chunk-IIJNPVPQ.cjs');
20
20
 
21
21
 
22
22
 
@@ -45,17 +45,17 @@ var _chunkHPAX7L72cjs = require('./chunk-HPAX7L72.cjs');
45
45
 
46
46
 
47
47
 
48
- var _chunkR64EFI6Fcjs = require('./chunk-R64EFI6F.cjs');
49
48
 
50
49
 
51
50
 
51
+ var _chunkTI5PXQGGcjs = require('./chunk-TI5PXQGG.cjs');
52
52
 
53
53
 
54
54
 
55
- var _chunkKSZZRTODcjs = require('./chunk-KSZZRTOD.cjs');
56
55
 
57
56
 
58
57
 
58
+ var _chunkPB5AEMKQcjs = require('./chunk-PB5AEMKQ.cjs');
59
59
 
60
60
 
61
61
 
@@ -71,7 +71,10 @@ var _chunkKSZZRTODcjs = require('./chunk-KSZZRTOD.cjs');
71
71
 
72
72
 
73
73
 
74
- var _chunkZSJ2OTY4cjs = require('./chunk-ZSJ2OTY4.cjs');
74
+
75
+
76
+
77
+ var _chunkHYPIHCDTcjs = require('./chunk-HYPIHCDT.cjs');
75
78
 
76
79
 
77
80
 
@@ -81,11 +84,11 @@ var _chunkL47L3ZWJcjs = require('./chunk-L47L3ZWJ.cjs');
81
84
 
82
85
  // src/actor/mod.ts
83
86
  function actor(input) {
84
- const config = _chunkKSZZRTODcjs.ActorConfigSchema.parse(input);
85
- return new (0, _chunkT6MM5RTWcjs.ActorDefinition)(config);
87
+ const config = _chunkPB5AEMKQcjs.ActorConfigSchema.parse(input);
88
+ return new (0, _chunkU5SMSA27cjs.ActorDefinition)(config);
86
89
  }
87
- var event2 = _chunkKSZZRTODcjs.event;
88
- var queue2 = _chunkKSZZRTODcjs.queue;
90
+ var event2 = _chunkPB5AEMKQcjs.event;
91
+ var queue2 = _chunkPB5AEMKQcjs.queue;
89
92
 
90
93
  // src/drivers/engine/actor-driver.ts
91
94
  var _enginerunner = require('@rivetkit/engine-runner');
@@ -95,8 +98,8 @@ var _ws = require('hono/ws');
95
98
  var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
96
99
 
97
100
  // src/drivers/engine/log.ts
98
- function logger() {
99
- return _chunkZSJ2OTY4cjs.getLogger.call(void 0, "driver-engine");
101
+ function logger2() {
102
+ return _chunkHYPIHCDTcjs.getLogger.call(void 0, "driver-engine");
100
103
  }
101
104
 
102
105
  // src/drivers/engine/actor-driver.ts
@@ -111,8 +114,8 @@ var EngineActorDriver = class {
111
114
  #runner;
112
115
  #actors = /* @__PURE__ */ new Map();
113
116
  #actorRouter;
114
- #runnerStarted = _chunkZSJ2OTY4cjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled runner started promise rejection", reason }));
115
- #runnerStopped = _chunkZSJ2OTY4cjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled runner stopped promise rejection", reason }));
117
+ #runnerStarted = _chunkHYPIHCDTcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled runner started promise rejection", reason }));
118
+ #runnerStopped = _chunkHYPIHCDTcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled runner stopped promise rejection", reason }));
116
119
  #isRunnerStopped = false;
117
120
  // HACK: Track actor stop intent locally since the runner protocol doesn't
118
121
  // pass the stop reason to onActorStop. This will be fixed when the runner
@@ -136,7 +139,7 @@ var EngineActorDriver = class {
136
139
  this.#managerDriver = managerDriver;
137
140
  this.#inlineClient = inlineClient;
138
141
  const token = config.token;
139
- this.#actorRouter = _chunkT6MM5RTWcjs.createActorRouter.call(void 0,
142
+ this.#actorRouter = _chunkU5SMSA27cjs.createActorRouter.call(void 0,
140
143
  config,
141
144
  this,
142
145
  void 0,
@@ -144,16 +147,16 @@ var EngineActorDriver = class {
144
147
  );
145
148
  const engineRunnerConfig = {
146
149
  version: config.runner.version,
147
- endpoint: _chunkHPAX7L72cjs.getEndpoint.call(void 0, config),
150
+ endpoint: _chunkIIJNPVPQcjs.getEndpoint.call(void 0, config),
148
151
  token,
149
152
  namespace: config.namespace,
150
153
  totalSlots: config.runner.totalSlots,
151
154
  runnerName: config.runner.runnerName,
152
155
  runnerKey: _nullishCoalesce(config.runner.runnerKey, () => ( crypto.randomUUID())),
153
156
  metadata: {
154
- rivetkit: { version: _chunkZSJ2OTY4cjs.VERSION }
157
+ rivetkit: { version: _chunkHYPIHCDTcjs.VERSION }
155
158
  },
156
- prepopulateActorNames: _chunkR64EFI6Fcjs.buildActorNames.call(void 0, config),
159
+ prepopulateActorNames: _chunkTI5PXQGGcjs.buildActorNames.call(void 0, config),
157
160
  onConnected: () => {
158
161
  this.#runnerStarted.resolve(void 0);
159
162
  },
@@ -170,11 +173,11 @@ var EngineActorDriver = class {
170
173
  },
171
174
  onActorStart: this.#runnerOnActorStart.bind(this),
172
175
  onActorStop: this.#runnerOnActorStop.bind(this),
173
- logger: _chunkZSJ2OTY4cjs.getLogger.call(void 0, "engine-runner")
176
+ logger: _chunkHYPIHCDTcjs.getLogger.call(void 0, "engine-runner")
174
177
  };
175
178
  this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
176
179
  this.#runner.start();
177
- logger().debug({
180
+ logger2().debug({
178
181
  msg: "engine runner started",
179
182
  endpoint: config.endpoint,
180
183
  namespace: config.namespace,
@@ -199,7 +202,7 @@ var EngineActorDriver = class {
199
202
  async setAlarm(actor2, timestamp) {
200
203
  const handler = this.#actors.get(actor2.id);
201
204
  if (!handler) {
202
- logger().warn({
205
+ logger2().warn({
203
206
  msg: "no handler for actor to set alarm"
204
207
  });
205
208
  return;
@@ -209,7 +212,7 @@ var EngineActorDriver = class {
209
212
  handler.alarmTimeout = void 0;
210
213
  }
211
214
  const delay = Math.max(0, timestamp - Date.now());
212
- handler.alarmTimeout = _chunkZSJ2OTY4cjs.setLongTimeout.call(void 0, () => {
215
+ handler.alarmTimeout = _chunkHYPIHCDTcjs.setLongTimeout.call(void 0, () => {
213
216
  actor2.onAlarm();
214
217
  handler.alarmTimeout = void 0;
215
218
  }, delay);
@@ -232,7 +235,7 @@ var EngineActorDriver = class {
232
235
  new Uint8Array()
233
236
  );
234
237
  const keys = entries.map(([key]) => key);
235
- logger().info({
238
+ logger2().info({
236
239
  msg: "kvList called",
237
240
  actorId,
238
241
  keysCount: keys.length,
@@ -242,7 +245,7 @@ var EngineActorDriver = class {
242
245
  }
243
246
  async kvListPrefix(actorId, prefix) {
244
247
  const result = await this.#runner.kvListPrefix(actorId, prefix);
245
- logger().info({
248
+ logger2().info({
246
249
  msg: "kvListPrefix called",
247
250
  actorId,
248
251
  prefixStr: new TextDecoder().decode(prefix),
@@ -272,8 +275,8 @@ var EngineActorDriver = class {
272
275
  this.#runner.stopActor(actorId);
273
276
  }
274
277
  async shutdownRunner(immediate) {
275
- logger().info({ msg: "stopping engine actor driver", immediate });
276
- logger().debug({
278
+ logger2().info({ msg: "stopping engine actor driver", immediate });
279
+ logger2().debug({
277
280
  msg: "stopping all actors before shutdown",
278
281
  actorCount: this.#actors.size
279
282
  });
@@ -285,20 +288,20 @@ var EngineActorDriver = class {
285
288
  var _a;
286
289
  (_a = handler.actor) == null ? void 0 : _a.rLog.error({
287
290
  msg: "onStop errored",
288
- error: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
291
+ error: _chunkHYPIHCDTcjs.stringifyError.call(void 0, err)
289
292
  });
290
293
  })
291
294
  );
292
295
  }
293
296
  }
294
297
  await Promise.all(stopPromises);
295
- logger().debug({ msg: "all actors stopped" });
298
+ logger2().debug({ msg: "all actors stopped" });
296
299
  try {
297
300
  await this.#runner.shutdown(immediate);
298
301
  } catch (error) {
299
302
  const message = error instanceof Error ? error.message : String(error);
300
303
  if (message.includes("WebSocket connection closed during shutdown")) {
301
- logger().debug({
304
+ logger2().debug({
302
305
  msg: "ignoring shutdown websocket close race",
303
306
  error: message
304
307
  });
@@ -313,7 +316,7 @@ var EngineActorDriver = class {
313
316
  )
314
317
  ]);
315
318
  if (!stopped) {
316
- logger().warn({
319
+ logger2().warn({
317
320
  msg: "timed out waiting for runner shutdown",
318
321
  waitMs: RUNNER_STOP_WAIT_MS
319
322
  });
@@ -324,7 +327,7 @@ var EngineActorDriver = class {
324
327
  stream.onAbort(() => {
325
328
  });
326
329
  c.req.raw.signal.addEventListener("abort", () => {
327
- logger().debug("SSE aborted, shutting down runner");
330
+ logger2().debug("SSE aborted, shutting down runner");
328
331
  this.shutdownRunner(false);
329
332
  });
330
333
  await this.#runnerStarted.promise;
@@ -333,13 +336,13 @@ var EngineActorDriver = class {
333
336
  await stream.writeSSE({ data: payload });
334
337
  while (true) {
335
338
  if (this.#isRunnerStopped) {
336
- logger().debug({
339
+ logger2().debug({
337
340
  msg: "runner is stopped"
338
341
  });
339
342
  break;
340
343
  }
341
344
  if (stream.closed || stream.aborted) {
342
- logger().debug({
345
+ logger2().debug({
343
346
  msg: "runner sse stream closed",
344
347
  closed: stream.closed,
345
348
  aborted: stream.aborted
@@ -354,7 +357,7 @@ var EngineActorDriver = class {
354
357
  }
355
358
  async #runnerOnActorStart(actorId, generation, actorConfig) {
356
359
  var _a;
357
- logger().debug({
360
+ logger2().debug({
358
361
  msg: "runner actor starting",
359
362
  actorId,
360
363
  name: actorConfig.name,
@@ -368,34 +371,49 @@ var EngineActorDriver = class {
368
371
  let handler = this.#actors.get(actorId);
369
372
  if (!handler) {
370
373
  handler = {
371
- actorStartPromise: _chunkZSJ2OTY4cjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled actor start promise rejection", reason }))
374
+ actorStartPromise: _chunkHYPIHCDTcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled actor start promise rejection", reason }))
372
375
  };
373
376
  this.#actors.set(actorId, handler);
374
377
  }
375
378
  handler.actorStartError = void 0;
376
379
  const name = actorConfig.name;
377
380
  _invariant2.default.call(void 0, actorConfig.key, "actor should have a key");
378
- const key = _chunkR64EFI6Fcjs.deserializeActorKey.call(void 0, actorConfig.key);
381
+ const key = _chunkTI5PXQGGcjs.deserializeActorKey.call(void 0, actorConfig.key);
379
382
  try {
380
383
  const [persistDataBuffer] = await this.#runner.kvGet(actorId, [
381
- _chunkKSZZRTODcjs.KEYS.PERSIST_DATA
384
+ _chunkPB5AEMKQcjs.KEYS.PERSIST_DATA
382
385
  ]);
383
386
  if (persistDataBuffer === null) {
384
- const initialKvState = _chunkR64EFI6Fcjs.getInitialActorKvState.call(void 0, input);
387
+ const initialKvState = _chunkTI5PXQGGcjs.getInitialActorKvState.call(void 0, input);
385
388
  await this.#runner.kvPut(actorId, initialKvState);
386
- logger().debug({
389
+ logger2().debug({
387
390
  msg: "initialized persist data for new actor",
388
391
  actorId
389
392
  });
390
393
  } else {
391
- logger().debug({
394
+ logger2().debug({
392
395
  msg: "found existing persist data for actor",
393
396
  actorId,
394
397
  dataSize: persistDataBuffer.byteLength
395
398
  });
396
399
  }
397
- const definition = _chunkT6MM5RTWcjs.lookupInRegistry.call(void 0, this.#config, actorConfig.name);
400
+ const definition = _chunkU5SMSA27cjs.lookupInRegistry.call(void 0, this.#config, actorConfig.name);
398
401
  handler.actor = await definition.instantiate();
402
+ const protocolMetadata = this.#runner.getProtocolMetadata();
403
+ if (protocolMetadata) {
404
+ logger2().debug({
405
+ msg: "applying config limits from protocol",
406
+ protocolMetadata
407
+ });
408
+ const stopThresholdMax = Math.max(Number(protocolMetadata.actorStopThreshold) - 1e3, 0);
409
+ handler.actor.overrides.onSleepTimeout = stopThresholdMax;
410
+ handler.actor.overrides.onDestroyTimeout = stopThresholdMax;
411
+ if (protocolMetadata.serverlessDrainGracePeriod) {
412
+ const drainMax = Math.max(Number(protocolMetadata.serverlessDrainGracePeriod) - 1e3, 0);
413
+ handler.actor.overrides.runStopTimeout = drainMax;
414
+ handler.actor.overrides.waitUntilTimeout = drainMax;
415
+ }
416
+ }
399
417
  await handler.actor.start(
400
418
  this,
401
419
  this.#inlineClient,
@@ -405,7 +423,7 @@ var EngineActorDriver = class {
405
423
  "unknown"
406
424
  // TODO: Add regions
407
425
  );
408
- logger().debug({ msg: "runner actor started", actorId, name, key });
426
+ logger2().debug({ msg: "runner actor started", actorId, name, key });
409
427
  } catch (innerError) {
410
428
  const error = innerError instanceof Error ? new Error(
411
429
  `Failed to start actor ${actorId}: ${innerError.message}`,
@@ -415,51 +433,61 @@ var EngineActorDriver = class {
415
433
  handler.actorStartError = error;
416
434
  (_a = handler.actorStartPromise) == null ? void 0 : _a.reject(error);
417
435
  handler.actorStartPromise = void 0;
418
- logger().error({
436
+ logger2().error({
419
437
  msg: "runner actor failed to start",
420
438
  actorId,
421
439
  name,
422
440
  key,
423
- err: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, error)
441
+ err: _chunkHYPIHCDTcjs.stringifyError.call(void 0, error)
424
442
  });
425
443
  try {
426
444
  this.#runner.stopActor(actorId);
427
445
  } catch (stopError) {
428
- logger().debug({
446
+ logger2().debug({
429
447
  msg: "failed to stop actor after start failure",
430
448
  actorId,
431
- err: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, stopError)
449
+ err: _chunkHYPIHCDTcjs.stringifyError.call(void 0, stopError)
432
450
  });
433
451
  }
434
452
  }
435
453
  }
436
454
  async #runnerOnActorStop(actorId, generation) {
437
- logger().debug({ msg: "runner actor stopping", actorId, generation });
455
+ logger2().debug({ msg: "runner actor stopping", actorId, generation });
438
456
  const reason = _nullishCoalesce(this.#actorStopIntent.get(actorId), () => ( "sleep"));
439
457
  this.#actorStopIntent.delete(actorId);
440
458
  const handler = this.#actors.get(actorId);
441
- if (handler == null ? void 0 : handler.actorStartPromise) {
442
- const startError = _nullishCoalesce(handler.actorStartError, () => ( new Error(`Actor ${actorId} stopped before start completed`)));
443
- handler.actorStartError = startError;
444
- handler.actorStartPromise.reject(startError);
445
- handler.actorStartPromise = void 0;
459
+ if (!handler) {
460
+ logger2().debug({ msg: "no runner actor handler to stop", actorId, reason });
461
+ return;
446
462
  }
447
- if (handler == null ? void 0 : handler.actor) {
463
+ if (handler.actorStartPromise) {
464
+ try {
465
+ logger2().debug({ msg: "runner actor stopping before it started, waiting", actorId, generation });
466
+ await handler.actorStartPromise.promise;
467
+ } catch (err) {
468
+ logger2().debug({
469
+ msg: "actor start failed during stop, cleaning up handler",
470
+ actorId,
471
+ err: _chunkHYPIHCDTcjs.stringifyError.call(void 0, err)
472
+ });
473
+ }
474
+ }
475
+ if (handler.actor) {
448
476
  try {
449
477
  await handler.actor.onStop(reason);
450
478
  } catch (err) {
451
- logger().error({
479
+ logger2().error({
452
480
  msg: "error in onStop, proceeding with removing actor",
453
- err: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
481
+ err: _chunkHYPIHCDTcjs.stringifyError.call(void 0, err)
454
482
  });
455
483
  }
456
484
  }
457
- if (handler) this.#actors.delete(actorId);
458
- logger().debug({ msg: "runner actor stopped", actorId, reason });
485
+ this.#actors.delete(actorId);
486
+ logger2().debug({ msg: "runner actor stopped", actorId, reason });
459
487
  }
460
488
  // MARK: - Runner Networking
461
489
  async #runnerFetch(_runner, actorId, _gatewayIdBuf, _requestIdBuf, request) {
462
- logger().debug({
490
+ logger2().debug({
463
491
  msg: "runner fetch",
464
492
  actorId,
465
493
  url: request.url,
@@ -472,7 +500,7 @@ var EngineActorDriver = class {
472
500
  const websocket = websocketRaw;
473
501
  const wsUniqueId = `ws_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
474
502
  websocket.__rivet_ws_id = wsUniqueId;
475
- logger().debug({
503
+ logger2().debug({
476
504
  msg: "runner websocket",
477
505
  actorId,
478
506
  url: request.url,
@@ -483,10 +511,10 @@ var EngineActorDriver = class {
483
511
  websocketProps: websocketRaw ? Object.keys(websocketRaw).join(", ") : "null"
484
512
  });
485
513
  const protocols = request.headers.get("sec-websocket-protocol");
486
- const { encoding, connParams } = _chunkR64EFI6Fcjs.parseWebSocketProtocols.call(void 0, protocols);
514
+ const { encoding, connParams } = _chunkTI5PXQGGcjs.parseWebSocketProtocols.call(void 0, protocols);
487
515
  let wsHandler;
488
516
  try {
489
- wsHandler = await _chunkR64EFI6Fcjs.routeWebSocket.call(void 0,
517
+ wsHandler = await _chunkTI5PXQGGcjs.routeWebSocket.call(void 0,
490
518
  request,
491
519
  requestPath,
492
520
  requestHeaders,
@@ -501,7 +529,7 @@ var EngineActorDriver = class {
501
529
  isRestoringHibernatable
502
530
  );
503
531
  } catch (err) {
504
- logger().error({ msg: "building websocket handlers errored", err });
532
+ logger2().error({ msg: "building websocket handlers errored", err });
505
533
  websocketRaw.close(1011, "ws.route_error");
506
534
  return;
507
535
  }
@@ -509,8 +537,8 @@ var EngineActorDriver = class {
509
537
  const wsContext = new (0, _ws.WSContext)(websocket);
510
538
  const conn = wsHandler.conn;
511
539
  const actor2 = wsHandler.actor;
512
- const connStateManager = conn == null ? void 0 : conn[_chunkR64EFI6Fcjs.CONN_STATE_MANAGER_SYMBOL];
513
- logger().debug({
540
+ const connStateManager = conn == null ? void 0 : conn[_chunkTI5PXQGGcjs.CONN_STATE_MANAGER_SYMBOL];
541
+ logger2().debug({
514
542
  msg: "attaching websocket event listeners",
515
543
  actorId,
516
544
  connId: conn == null ? void 0 : conn.id,
@@ -526,7 +554,7 @@ var EngineActorDriver = class {
526
554
  });
527
555
  websocket.addEventListener("message", (event3) => {
528
556
  var _a2, _b2;
529
- logger().debug({
557
+ logger2().debug({
530
558
  msg: "websocket message event listener triggered",
531
559
  connId: conn == null ? void 0 : conn.id,
532
560
  actorId: actor2 == null ? void 0 : actor2.id,
@@ -539,7 +567,7 @@ var EngineActorDriver = class {
539
567
  eventTargetWsId: (_b2 = event3.target) == null ? void 0 : _b2.__rivet_ws_id
540
568
  });
541
569
  if (actor2 == null ? void 0 : actor2.isStopping) {
542
- logger().debug({
570
+ logger2().debug({
543
571
  msg: "ignoring ws message, actor is stopping",
544
572
  connId: conn == null ? void 0 : conn.id,
545
573
  actorId: actor2 == null ? void 0 : actor2.id,
@@ -547,7 +575,7 @@ var EngineActorDriver = class {
547
575
  });
548
576
  return;
549
577
  }
550
- logger().debug({
578
+ logger2().debug({
551
579
  msg: "calling wsHandler.onMessage",
552
580
  connId: conn == null ? void 0 : conn.id,
553
581
  messageIndex: event3.rivetMessageIndex
@@ -561,7 +589,7 @@ var EngineActorDriver = class {
561
589
  );
562
590
  const previousMsgIndex = hibernate.serverMessageIndex;
563
591
  hibernate.serverMessageIndex = event3.rivetMessageIndex;
564
- logger().info({
592
+ logger2().info({
565
593
  msg: "persisting message index",
566
594
  connId: conn.id,
567
595
  previousMsgIndex,
@@ -569,7 +597,7 @@ var EngineActorDriver = class {
569
597
  });
570
598
  const entry = this.#hwsMessageIndex.get(conn.id);
571
599
  if (entry) {
572
- const messageLength = _chunkR64EFI6Fcjs.getValueLength.call(void 0, event3.data);
600
+ const messageLength = _chunkTI5PXQGGcjs.getValueLength.call(void 0, event3.data);
573
601
  entry.bufferedMessageSize += messageLength;
574
602
  if (entry.bufferedMessageSize >= CONN_BUFFERED_MESSAGE_SIZE_THRESHOLD) {
575
603
  entry.bufferedMessageSize = 0;
@@ -596,7 +624,7 @@ var EngineActorDriver = class {
596
624
  wsHandler.onError(event3, wsContext);
597
625
  });
598
626
  if (isRestoringHibernatable) {
599
- logger().info({
627
+ logger2().info({
600
628
  msg: "event listeners attached to restored websocket",
601
629
  actorId,
602
630
  connId: conn == null ? void 0 : conn.id,
@@ -614,7 +642,7 @@ var EngineActorDriver = class {
614
642
  const path = url.pathname;
615
643
  const actorInstance = this.#runner.getActor(actorId);
616
644
  if (!actorInstance) {
617
- logger().warn({
645
+ logger2().warn({
618
646
  msg: "actor not found in #hwsCanHibernate",
619
647
  actorId
620
648
  });
@@ -622,28 +650,28 @@ var EngineActorDriver = class {
622
650
  }
623
651
  const handler = this.#actors.get(actorId);
624
652
  if (!handler) {
625
- logger().warn({
653
+ logger2().warn({
626
654
  msg: "actor handler not found in #hwsCanHibernate",
627
655
  actorId
628
656
  });
629
657
  return false;
630
658
  }
631
659
  if (!handler.actor) {
632
- logger().warn({
660
+ logger2().warn({
633
661
  msg: "actor not found in #hwsCanHibernate",
634
662
  actorId
635
663
  });
636
664
  return false;
637
665
  }
638
- logger().debug({
666
+ logger2().debug({
639
667
  msg: "no existing hibernatable websocket found",
640
668
  gatewayId: _enginerunner.idToStr.call(void 0, gatewayId),
641
669
  requestId: _enginerunner.idToStr.call(void 0, requestId)
642
670
  });
643
- if (path === _chunkR64EFI6Fcjs.PATH_CONNECT) {
671
+ if (path === _chunkTI5PXQGGcjs.PATH_CONNECT) {
644
672
  return true;
645
- } else if (path === _chunkR64EFI6Fcjs.PATH_WEBSOCKET_BASE || path.startsWith(_chunkR64EFI6Fcjs.PATH_WEBSOCKET_PREFIX)) {
646
- const definition = _chunkT6MM5RTWcjs.lookupInRegistry.call(void 0,
673
+ } else if (path === _chunkTI5PXQGGcjs.PATH_WEBSOCKET_BASE || path.startsWith(_chunkTI5PXQGGcjs.PATH_WEBSOCKET_PREFIX)) {
674
+ const definition = _chunkU5SMSA27cjs.lookupInRegistry.call(void 0,
647
675
  this.#config,
648
676
  actorInstance.config.name
649
677
  );
@@ -652,7 +680,7 @@ var EngineActorDriver = class {
652
680
  return true;
653
681
  } else if (typeof canHibernateWebSocket === "function") {
654
682
  try {
655
- const newPath = _chunkR64EFI6Fcjs.truncateRawWebSocketPathPrefix.call(void 0,
683
+ const newPath = _chunkTI5PXQGGcjs.truncateRawWebSocketPathPrefix.call(void 0,
656
684
  url.pathname
657
685
  );
658
686
  const truncatedRequest = new Request(
@@ -662,7 +690,7 @@ var EngineActorDriver = class {
662
690
  const canHibernate = canHibernateWebSocket(truncatedRequest);
663
691
  return canHibernate;
664
692
  } catch (error) {
665
- logger().error({
693
+ logger2().error({
666
694
  msg: "error calling canHibernateWebSocket",
667
695
  error
668
696
  });
@@ -671,10 +699,10 @@ var EngineActorDriver = class {
671
699
  } else {
672
700
  return false;
673
701
  }
674
- } else if (path === _chunkR64EFI6Fcjs.PATH_INSPECTOR_CONNECT) {
702
+ } else if (path === _chunkTI5PXQGGcjs.PATH_INSPECTOR_CONNECT) {
675
703
  return false;
676
704
  } else {
677
- logger().warn({
705
+ logger2().warn({
678
706
  msg: "unexpected path for getActorHibernationConfig",
679
707
  path
680
708
  });
@@ -684,7 +712,7 @@ var EngineActorDriver = class {
684
712
  async #hwsLoadAll(actorId) {
685
713
  const actor2 = await this.loadActor(actorId);
686
714
  return actor2.conns.values().map((conn) => {
687
- const connStateManager = conn[_chunkR64EFI6Fcjs.CONN_STATE_MANAGER_SYMBOL];
715
+ const connStateManager = conn[_chunkTI5PXQGGcjs.CONN_STATE_MANAGER_SYMBOL];
688
716
  const hibernatable = connStateManager.hibernatableData;
689
717
  if (!hibernatable) return void 0;
690
718
  return {
@@ -708,7 +736,7 @@ var EngineActorDriver = class {
708
736
  await this.#runner.restoreHibernatingRequests(actor2.id, metaEntries);
709
737
  }
710
738
  onCreateConn(conn) {
711
- const hibernatable = conn[_chunkR64EFI6Fcjs.CONN_STATE_MANAGER_SYMBOL].hibernatableData;
739
+ const hibernatable = conn[_chunkTI5PXQGGcjs.CONN_STATE_MANAGER_SYMBOL].hibernatableData;
712
740
  if (!hibernatable) return;
713
741
  this.#hwsMessageIndex.set(conn.id, {
714
742
  serverMessageIndex: hibernatable.serverMessageIndex,
@@ -716,7 +744,7 @@ var EngineActorDriver = class {
716
744
  pendingAckFromMessageIndex: false,
717
745
  pendingAckFromBufferSize: false
718
746
  });
719
- logger().debug({
747
+ logger2().debug({
720
748
  msg: "created #hwsMessageIndex entry",
721
749
  connId: conn.id,
722
750
  serverMessageIndex: hibernatable.serverMessageIndex
@@ -724,17 +752,17 @@ var EngineActorDriver = class {
724
752
  }
725
753
  onDestroyConn(conn) {
726
754
  this.#hwsMessageIndex.delete(conn.id);
727
- logger().debug({
755
+ logger2().debug({
728
756
  msg: "removed #hwsMessageIndex entry",
729
757
  connId: conn.id
730
758
  });
731
759
  }
732
760
  onBeforePersistConn(conn) {
733
- const stateManager = conn[_chunkR64EFI6Fcjs.CONN_STATE_MANAGER_SYMBOL];
761
+ const stateManager = conn[_chunkTI5PXQGGcjs.CONN_STATE_MANAGER_SYMBOL];
734
762
  const hibernatable = stateManager.hibernatableDataOrError();
735
763
  const entry = this.#hwsMessageIndex.get(conn.id);
736
764
  if (!entry) {
737
- logger().warn({
765
+ logger2().warn({
738
766
  msg: "missing EngineActorDriver.#hwsMessageIndex entry for conn",
739
767
  connId: conn.id
740
768
  });
@@ -744,11 +772,11 @@ var EngineActorDriver = class {
744
772
  entry.serverMessageIndex = hibernatable.serverMessageIndex;
745
773
  }
746
774
  onAfterPersistConn(conn) {
747
- const stateManager = conn[_chunkR64EFI6Fcjs.CONN_STATE_MANAGER_SYMBOL];
775
+ const stateManager = conn[_chunkTI5PXQGGcjs.CONN_STATE_MANAGER_SYMBOL];
748
776
  const hibernatable = stateManager.hibernatableDataOrError();
749
777
  const entry = this.#hwsMessageIndex.get(conn.id);
750
778
  if (!entry) {
751
- logger().warn({
779
+ logger2().warn({
752
780
  msg: "missing EngineActorDriver.#hwsMessageIndex entry for conn",
753
781
  connId: conn.id
754
782
  });
@@ -769,9 +797,9 @@ var EngineActorDriver = class {
769
797
 
770
798
  // src/drivers/engine/config.ts
771
799
  var _v4 = require('zod/v4');
772
- var EngineConfigSchemaBase = _chunkHPAX7L72cjs.ClientConfigSchemaBase.extend({
800
+ var EngineConfigSchemaBase = _chunkIIJNPVPQcjs.ClientConfigSchemaBase.extend({
773
801
  /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
774
- runnerKey: _v4.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkZSJ2OTY4cjs.getRivetRunnerKey.call(void 0, )))),
802
+ runnerKey: _v4.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkHYPIHCDTcjs.getRivetRunnerKey.call(void 0, )))),
775
803
  /** How many actors this runner can run. */
776
804
  totalSlots: _v4.z.number().default(1e5)
777
805
  });
@@ -783,7 +811,7 @@ var EngineConfigSchema = EngineConfigSchemaTransformed.default(
783
811
  );
784
812
  function transformEngineConfig(config, ctx) {
785
813
  return {
786
- ..._chunkHPAX7L72cjs.transformClientConfig.call(void 0, config, ctx),
814
+ ..._chunkIIJNPVPQcjs.transformClientConfig.call(void 0, config, ctx),
787
815
  runnerKey: config.runnerKey
788
816
  };
789
817
  }
@@ -794,8 +822,8 @@ function createEngineDriver() {
794
822
  name: "engine",
795
823
  displayName: "Engine",
796
824
  manager: (config) => {
797
- const clientConfig = _chunkHPAX7L72cjs.convertRegistryConfigToClientConfig.call(void 0, config);
798
- return new (0, _chunkHPAX7L72cjs.RemoteManagerDriver)(clientConfig);
825
+ const clientConfig = _chunkIIJNPVPQcjs.convertRegistryConfigToClientConfig.call(void 0, config);
826
+ return new (0, _chunkIIJNPVPQcjs.RemoteManagerDriver)(clientConfig);
799
827
  },
800
828
  actor: (config, managerDriver, inlineClient) => {
801
829
  return new EngineActorDriver(
@@ -823,15 +851,15 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
823
851
  /** @experimental */
824
852
  maxOutgoingMessageSize: _v4.z.number().optional().default(1048576),
825
853
  /** @experimental */
826
- inspector: _chunkR64EFI6Fcjs.InspectorConfigSchema,
854
+ inspector: _chunkTI5PXQGGcjs.InspectorConfigSchema,
827
855
  /** @experimental */
828
856
  disableDefaultServer: _v4.z.boolean().optional().default(false),
829
857
  /** @experimental */
830
858
  defaultServerPort: _v4.z.number().default(6420),
831
859
  /** @experimental */
832
- runEngine: _v4.z.boolean().optional().default(() => _chunkZSJ2OTY4cjs.getRivetRunEngine.call(void 0, )),
860
+ runEngine: _v4.z.boolean().optional().default(() => _chunkHYPIHCDTcjs.getRivetRunEngine.call(void 0, )),
833
861
  /** @experimental */
834
- runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(_chunkZSJ2OTY4cjs.getRivetRunEngineVersion.call(void 0, ), () => ( _chunkZSJ2OTY4cjs.VERSION))),
862
+ runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(_chunkHYPIHCDTcjs.getRivetRunEngineVersion.call(void 0, ), () => ( _chunkHYPIHCDTcjs.VERSION))),
835
863
  /** @experimental */
836
864
  overrideServerAddress: _v4.z.string().optional(),
837
865
  /** @experimental */
@@ -843,7 +871,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
843
871
  * serverlessly (by the Rivet Engine for example).
844
872
  */
845
873
  runnerKind: _v4.z.enum(["serverless", "normal"]).optional().default(
846
- () => _chunkZSJ2OTY4cjs.getRivetRunnerKind.call(void 0, ) === "serverless" ? "serverless" : "normal"
874
+ () => _chunkHYPIHCDTcjs.getRivetRunnerKind.call(void 0, ) === "serverless" ? "serverless" : "normal"
847
875
  ),
848
876
  totalSlots: _v4.z.number().optional(),
849
877
  /**
@@ -865,7 +893,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
865
893
  * */
866
894
  logging: _v4.z.object({
867
895
  baseLogger: _v4.z.custom().optional(),
868
- level: _chunkZSJ2OTY4cjs.LogLevelSchema.optional()
896
+ level: _chunkHYPIHCDTcjs.LogLevelSchema.optional()
869
897
  }).optional().default(() => ({})),
870
898
  /**
871
899
  * @experimental
@@ -893,7 +921,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
893
921
  // created or must be imported async using `await import(...)`
894
922
  getUpgradeWebSocket: _v4.z.custom().optional(),
895
923
  /** @experimental */
896
- token: _v4.z.string().optional().transform((v) => v || _chunkZSJ2OTY4cjs.getRivetToken.call(void 0, ))
924
+ token: _v4.z.string().optional().transform((v) => v || _chunkHYPIHCDTcjs.getRivetToken.call(void 0, ))
897
925
  }).merge(EngineConfigSchemaBase);
898
926
  var LegacyRunnerConfigSchemaTransformed = LegacyRunnerConfigSchemaUnmerged.transform((config, ctx) => ({
899
927
  ...config,
@@ -917,53 +945,53 @@ function chooseDefaultDriver(config) {
917
945
  return config.driver;
918
946
  }
919
947
  if (config.endpoint || config.token) {
920
- _chunkKSZZRTODcjs.loggerWithoutContext.call(void 0, ).debug({
948
+ _chunkPB5AEMKQcjs.loggerWithoutContext.call(void 0, ).debug({
921
949
  msg: "using rivet engine driver",
922
950
  endpoint: config.endpoint
923
951
  });
924
952
  return createEngineDriver();
925
953
  }
926
- _chunkKSZZRTODcjs.loggerWithoutContext.call(void 0, ).debug({
954
+ _chunkPB5AEMKQcjs.loggerWithoutContext.call(void 0, ).debug({
927
955
  msg: "using default file system driver",
928
956
  storagePath: config.storagePath
929
957
  });
930
- return _chunkT6MM5RTWcjs.createFileSystemOrMemoryDriver.call(void 0, true, {
958
+ return _chunkU5SMSA27cjs.createFileSystemOrMemoryDriver.call(void 0, true, {
931
959
  path: config.storagePath
932
960
  });
933
961
  }
934
962
 
935
963
  // src/engine-process/log.ts
936
- function logger2() {
937
- return _chunkZSJ2OTY4cjs.getLogger.call(void 0, "engine-process");
964
+ function logger3() {
965
+ return _chunkHYPIHCDTcjs.getLogger.call(void 0, "engine-process");
938
966
  }
939
967
 
940
968
  // src/engine-process/mod.ts
941
969
  var ENGINE_BASE_URL = "https://releases.rivet.dev/rivet";
942
970
  var ENGINE_BINARY_NAME = "rivet-engine";
943
971
  async function ensureEngineProcess(options) {
944
- _chunkR64EFI6Fcjs.importNodeDependencies.call(void 0, );
945
- logger2().debug({
972
+ _chunkTI5PXQGGcjs.importNodeDependencies.call(void 0, );
973
+ logger3().debug({
946
974
  msg: "ensuring engine process",
947
975
  version: options.version
948
976
  });
949
- const path = _chunkR64EFI6Fcjs.getNodePath.call(void 0, );
950
- const storageRoot = _chunkT6MM5RTWcjs.getStoragePath.call(void 0, );
977
+ const path = _chunkTI5PXQGGcjs.getNodePath.call(void 0, );
978
+ const storageRoot = _chunkU5SMSA27cjs.getStoragePath.call(void 0, );
951
979
  const binDir = path.join(storageRoot, "bin");
952
980
  const varDir = path.join(storageRoot, "var");
953
981
  const logsDir = path.join(varDir, "logs", "rivet-engine");
954
- await _chunkT6MM5RTWcjs.ensureDirectoryExists.call(void 0, binDir);
955
- await _chunkT6MM5RTWcjs.ensureDirectoryExists.call(void 0, varDir);
956
- await _chunkT6MM5RTWcjs.ensureDirectoryExists.call(void 0, logsDir);
982
+ await _chunkU5SMSA27cjs.ensureDirectoryExists.call(void 0, binDir);
983
+ await _chunkU5SMSA27cjs.ensureDirectoryExists.call(void 0, varDir);
984
+ await _chunkU5SMSA27cjs.ensureDirectoryExists.call(void 0, logsDir);
957
985
  if (await isEngineRunning()) {
958
986
  try {
959
987
  const health = await waitForEngineHealth();
960
- logger2().debug({
988
+ logger3().debug({
961
989
  msg: "engine already running and healthy",
962
990
  version: health.version
963
991
  });
964
992
  return;
965
993
  } catch (error) {
966
- logger2().warn({
994
+ logger3().warn({
967
995
  msg: "existing engine process not healthy, cannot restart automatically",
968
996
  error
969
997
  });
@@ -978,19 +1006,19 @@ async function ensureEngineProcess(options) {
978
1006
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-").replace(/\./g, "-");
979
1007
  const stdoutLogPath = path.join(logsDir, `engine-${timestamp}-stdout.log`);
980
1008
  const stderrLogPath = path.join(logsDir, `engine-${timestamp}-stderr.log`);
981
- const fsSync = _chunkR64EFI6Fcjs.getNodeFsSync.call(void 0, );
1009
+ const fsSync = _chunkTI5PXQGGcjs.getNodeFsSync.call(void 0, );
982
1010
  const stdoutStream = fsSync.createWriteStream(stdoutLogPath, {
983
1011
  flags: "a"
984
1012
  });
985
1013
  const stderrStream = fsSync.createWriteStream(stderrLogPath, {
986
1014
  flags: "a"
987
1015
  });
988
- logger2().debug({
1016
+ logger3().debug({
989
1017
  msg: "creating engine log files",
990
1018
  stdout: stdoutLogPath,
991
1019
  stderr: stderrLogPath
992
1020
  });
993
- const childProcess = _chunkR64EFI6Fcjs.getNodeChildProcess.call(void 0, );
1021
+ const childProcess = _chunkTI5PXQGGcjs.getNodeChildProcess.call(void 0, );
994
1022
  const child = childProcess.spawn(binaryPath, ["start"], {
995
1023
  cwd: path.dirname(binaryPath),
996
1024
  stdio: ["inherit", "pipe", "pipe"],
@@ -1042,7 +1070,7 @@ async function ensureEngineProcess(options) {
1042
1070
  });
1043
1071
  child.stderr.pipe(stderrStream);
1044
1072
  }
1045
- logger2().debug({
1073
+ logger3().debug({
1046
1074
  msg: "spawned engine process",
1047
1075
  pid: child.pid,
1048
1076
  cwd: path.dirname(binaryPath)
@@ -1050,7 +1078,7 @@ async function ensureEngineProcess(options) {
1050
1078
  child.once("exit", (code, signal) => {
1051
1079
  const stderrOutput = Buffer.concat(stderrChunks).toString("utf-8");
1052
1080
  if (stderrOutput.includes("LOCK: Resource temporarily unavailable")) {
1053
- logger2().error({
1081
+ logger3().error({
1054
1082
  msg: "another instance of rivet engine is unexpectedly running, this is an internal error",
1055
1083
  code,
1056
1084
  signal,
@@ -1060,7 +1088,7 @@ async function ensureEngineProcess(options) {
1060
1088
  support: "https://rivet.dev/discord"
1061
1089
  });
1062
1090
  } else if (stderrOutput.includes("Rivet Engine has been rolled back to a previous version")) {
1063
- logger2().error({
1091
+ logger3().error({
1064
1092
  msg: "rivet engine version downgrade detected",
1065
1093
  hint: `You attempted to downgrade the RivetKit version in development. To fix this, nuke the database by running: '${binaryPath}' database nuke --yes`,
1066
1094
  code,
@@ -1069,7 +1097,7 @@ async function ensureEngineProcess(options) {
1069
1097
  stderrLog: stderrLogPath
1070
1098
  });
1071
1099
  } else {
1072
- logger2().warn({
1100
+ logger3().warn({
1073
1101
  msg: "engine process exited, please report this error",
1074
1102
  code,
1075
1103
  signal,
@@ -1083,7 +1111,7 @@ async function ensureEngineProcess(options) {
1083
1111
  stderrStream.end();
1084
1112
  });
1085
1113
  child.once("error", (error) => {
1086
- logger2().error({
1114
+ logger3().error({
1087
1115
  msg: "engine process failed",
1088
1116
  error
1089
1117
  });
@@ -1091,7 +1119,7 @@ async function ensureEngineProcess(options) {
1091
1119
  stderrStream.end();
1092
1120
  });
1093
1121
  await waitForEngineHealth();
1094
- logger2().info({
1122
+ logger3().info({
1095
1123
  msg: "engine process started",
1096
1124
  pid: child.pid,
1097
1125
  version: options.version,
@@ -1104,7 +1132,7 @@ async function ensureEngineProcess(options) {
1104
1132
  async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1105
1133
  const binaryExists = await fileExists(binaryPath);
1106
1134
  if (binaryExists) {
1107
- logger2().debug({
1135
+ logger3().debug({
1108
1136
  msg: "engine binary already cached",
1109
1137
  version,
1110
1138
  path: binaryPath
@@ -1114,7 +1142,7 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1114
1142
  const { targetTriplet, extension } = resolveTargetTriplet();
1115
1143
  const remoteFile = `${ENGINE_BINARY_NAME}-${targetTriplet}${extension}`;
1116
1144
  const downloadUrl = `${ENGINE_BASE_URL}/${version}/engine/${remoteFile}`;
1117
- logger2().info({
1145
+ logger3().info({
1118
1146
  msg: "downloading engine binary",
1119
1147
  url: downloadUrl,
1120
1148
  path: binaryPath,
@@ -1126,50 +1154,50 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1126
1154
  `failed to download rivet engine binary from ${downloadUrl}: ${response.status} ${response.statusText}`
1127
1155
  );
1128
1156
  }
1129
- const crypto2 = _chunkR64EFI6Fcjs.getNodeCrypto.call(void 0, );
1157
+ const crypto2 = _chunkTI5PXQGGcjs.getNodeCrypto.call(void 0, );
1130
1158
  const tempPath = `${binaryPath}.${crypto2.randomUUID()}.tmp`;
1131
1159
  const startTime = Date.now();
1132
- logger2().debug({
1160
+ logger3().debug({
1133
1161
  msg: "starting binary download",
1134
1162
  tempPath,
1135
1163
  contentLength: response.headers.get("content-length")
1136
1164
  });
1137
1165
  const slowDownloadWarning = setTimeout(() => {
1138
- logger2().warn({
1166
+ logger3().warn({
1139
1167
  msg: "engine binary download is taking longer than expected, please be patient",
1140
1168
  version
1141
1169
  });
1142
1170
  }, 5e3);
1143
1171
  try {
1144
- const stream = _chunkR64EFI6Fcjs.getNodeStream.call(void 0, );
1145
- const fsSync = _chunkR64EFI6Fcjs.getNodeFsSync.call(void 0, );
1172
+ const stream = _chunkTI5PXQGGcjs.getNodeStream.call(void 0, );
1173
+ const fsSync = _chunkTI5PXQGGcjs.getNodeFsSync.call(void 0, );
1146
1174
  await stream.pipeline(
1147
1175
  response.body,
1148
1176
  fsSync.createWriteStream(tempPath)
1149
1177
  );
1150
1178
  clearTimeout(slowDownloadWarning);
1151
- const fs = _chunkR64EFI6Fcjs.getNodeFs.call(void 0, );
1179
+ const fs = _chunkTI5PXQGGcjs.getNodeFs.call(void 0, );
1152
1180
  const stats = await fs.stat(tempPath);
1153
1181
  const downloadDuration = Date.now() - startTime;
1154
1182
  if (process.platform !== "win32") {
1155
1183
  await fs.chmod(tempPath, 493);
1156
1184
  }
1157
1185
  await fs.rename(tempPath, binaryPath);
1158
- logger2().debug({
1186
+ logger3().debug({
1159
1187
  msg: "engine binary download complete",
1160
1188
  version,
1161
1189
  path: binaryPath,
1162
1190
  size: stats.size,
1163
1191
  durationMs: downloadDuration
1164
1192
  });
1165
- logger2().info({
1193
+ logger3().info({
1166
1194
  msg: "engine binary downloaded",
1167
1195
  version,
1168
1196
  path: binaryPath
1169
1197
  });
1170
1198
  } catch (error) {
1171
1199
  clearTimeout(slowDownloadWarning);
1172
- logger2().warn({
1200
+ logger3().warn({
1173
1201
  msg: "engine download failed, please report this error",
1174
1202
  tempPath,
1175
1203
  error,
@@ -1177,7 +1205,7 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1177
1205
  support: "https://rivet.dev/discord"
1178
1206
  });
1179
1207
  try {
1180
- const fs = _chunkR64EFI6Fcjs.getNodeFs.call(void 0, );
1208
+ const fs = _chunkTI5PXQGGcjs.getNodeFs.call(void 0, );
1181
1209
  await fs.unlink(tempPath);
1182
1210
  } catch (unlinkError) {
1183
1211
  }
@@ -1219,7 +1247,7 @@ function resolveTargetTripletFor(platform, arch) {
1219
1247
  );
1220
1248
  }
1221
1249
  async function isEngineRunning() {
1222
- return await checkIfEngineAlreadyRunningOnPort(_chunkR64EFI6Fcjs.ENGINE_PORT);
1250
+ return await checkIfEngineAlreadyRunningOnPort(_chunkTI5PXQGGcjs.ENGINE_PORT);
1223
1251
  }
1224
1252
  async function checkIfEngineAlreadyRunningOnPort(port) {
1225
1253
  let response;
@@ -1231,13 +1259,13 @@ async function checkIfEngineAlreadyRunningOnPort(port) {
1231
1259
  if (response.ok) {
1232
1260
  const health = await response.json();
1233
1261
  if (health.runtime === "engine") {
1234
- logger2().debug({
1262
+ logger3().debug({
1235
1263
  msg: "rivet engine already running on port",
1236
1264
  port
1237
1265
  });
1238
1266
  return true;
1239
1267
  } else if (health.runtime === "rivetkit") {
1240
- logger2().error({
1268
+ logger3().error({
1241
1269
  msg: "another rivetkit process is already running on port",
1242
1270
  port
1243
1271
  });
@@ -1254,7 +1282,7 @@ async function checkIfEngineAlreadyRunningOnPort(port) {
1254
1282
  }
1255
1283
  async function fileExists(filePath) {
1256
1284
  try {
1257
- const fs = _chunkR64EFI6Fcjs.getNodeFs.call(void 0, );
1285
+ const fs = _chunkTI5PXQGGcjs.getNodeFs.call(void 0, );
1258
1286
  await fs.access(filePath);
1259
1287
  return true;
1260
1288
  } catch (e) {
@@ -1265,19 +1293,19 @@ var HEALTH_MAX_WAIT = 1e4;
1265
1293
  var HEALTH_INTERVAL = 100;
1266
1294
  async function waitForEngineHealth() {
1267
1295
  const maxRetries = Math.ceil(HEALTH_MAX_WAIT / HEALTH_INTERVAL);
1268
- logger2().debug({ msg: "waiting for engine health check" });
1296
+ logger3().debug({ msg: "waiting for engine health check" });
1269
1297
  for (let i = 0; i < maxRetries; i++) {
1270
1298
  try {
1271
- const response = await fetch(`${_chunkR64EFI6Fcjs.ENGINE_ENDPOINT}/health`, {
1299
+ const response = await fetch(`${_chunkTI5PXQGGcjs.ENGINE_ENDPOINT}/health`, {
1272
1300
  signal: AbortSignal.timeout(1e3)
1273
1301
  });
1274
1302
  if (response.ok) {
1275
1303
  const health = await response.json();
1276
- logger2().debug({ msg: "engine health check passed" });
1304
+ logger3().debug({ msg: "engine health check passed" });
1277
1305
  return health;
1278
1306
  }
1279
1307
  } catch (error) {
1280
- logger2().debug({ msg: "engine health check failed", error });
1308
+ logger3().debug({ msg: "engine health check failed", error });
1281
1309
  if (i === maxRetries - 1) {
1282
1310
  throw new Error(
1283
1311
  `engine health check failed after ${maxRetries} retries: ${error}`
@@ -1285,7 +1313,7 @@ async function waitForEngineHealth() {
1285
1313
  }
1286
1314
  }
1287
1315
  if (i < maxRetries - 1) {
1288
- logger2().trace({
1316
+ logger3().trace({
1289
1317
  msg: "engine not ready, retrying",
1290
1318
  attempt: i + 1,
1291
1319
  maxRetries
@@ -1307,14 +1335,14 @@ function getInspectorUrl(config, managerPort) {
1307
1335
  }
1308
1336
 
1309
1337
  // src/serverless/log.ts
1310
- function logger3() {
1311
- return _chunkZSJ2OTY4cjs.getLogger.call(void 0, "serverless");
1338
+ function logger4() {
1339
+ return _chunkHYPIHCDTcjs.getLogger.call(void 0, "serverless");
1312
1340
  }
1313
1341
 
1314
1342
  // src/serverless/configure.ts
1315
1343
 
1316
1344
  async function configureServerlessRunner(config) {
1317
- logger3().debug("configuring serverless runner");
1345
+ logger4().debug("configuring serverless runner");
1318
1346
  try {
1319
1347
  if (!config.namespace) {
1320
1348
  throw new Error(
@@ -1328,14 +1356,14 @@ async function configureServerlessRunner(config) {
1328
1356
  }
1329
1357
  const customConfig = config.serverless.configureRunnerPool;
1330
1358
  _invariant2.default.call(void 0, customConfig, "configureRunnerPool should exist");
1331
- const clientConfig = _chunkHPAX7L72cjs.convertRegistryConfigToClientConfig.call(void 0, config);
1332
- logger3().debug({
1359
+ const clientConfig = _chunkIIJNPVPQcjs.convertRegistryConfigToClientConfig.call(void 0, config);
1360
+ logger4().debug({
1333
1361
  msg: "fetching datacenters",
1334
1362
  endpoint: config.endpoint
1335
1363
  });
1336
- const dcsRes = await _chunkHPAX7L72cjs.getDatacenters.call(void 0, clientConfig);
1364
+ const dcsRes = await _chunkIIJNPVPQcjs.getDatacenters.call(void 0, clientConfig);
1337
1365
  const runnerName = _nullishCoalesce(customConfig.name, () => ( "default"));
1338
- logger3().debug({
1366
+ logger4().debug({
1339
1367
  msg: "configuring serverless runner",
1340
1368
  runnerName,
1341
1369
  namespace: config.namespace
@@ -1355,148 +1383,24 @@ async function configureServerlessRunner(config) {
1355
1383
  drain_on_version_upgrade: _nullishCoalesce(customConfig.drainOnVersionUpgrade, () => ( true)),
1356
1384
  metadataPollInterval: _nullishCoalesce(customConfig.metadataPollInterval, () => ( 1e3))
1357
1385
  };
1358
- await _chunkHPAX7L72cjs.updateRunnerConfig.call(void 0, clientConfig, runnerName, {
1386
+ await _chunkIIJNPVPQcjs.updateRunnerConfig.call(void 0, clientConfig, runnerName, {
1359
1387
  datacenters: Object.fromEntries(
1360
1388
  dcsRes.datacenters.map((dc) => [dc.name, serverlessConfig])
1361
1389
  )
1362
1390
  });
1363
- logger3().info({
1391
+ logger4().info({
1364
1392
  msg: "serverless runner configured successfully",
1365
1393
  runnerName,
1366
1394
  namespace: config.namespace
1367
1395
  });
1368
1396
  } catch (error) {
1369
- logger3().error({
1397
+ logger4().error({
1370
1398
  msg: "failed to configure serverless runner, validate endpoint is configured correctly then restart this process",
1371
1399
  error
1372
1400
  });
1373
1401
  }
1374
1402
  }
1375
1403
 
1376
- // src/registry/log.ts
1377
- function logger4() {
1378
- return _chunkZSJ2OTY4cjs.getLogger.call(void 0, "registry");
1379
- }
1380
-
1381
- // src/registry/serve.ts
1382
- var _getport = require('get-port'); var _getport2 = _interopRequireDefault(_getport);
1383
- var DEFAULT_PORT = 6420;
1384
- async function findFreePort(startPort = DEFAULT_PORT) {
1385
- function* portRange(start, count = 100) {
1386
- for (let i = 0; i < count; i++) {
1387
- yield start + i;
1388
- }
1389
- }
1390
- return _getport2.default.call(void 0, { port: portRange(startPort) });
1391
- }
1392
- async function crossPlatformServe(config, managerPort, app) {
1393
- const runtime = _chunkZSJ2OTY4cjs.detectRuntime.call(void 0, );
1394
- logger4().debug({ msg: "detected runtime for serve", runtime });
1395
- switch (runtime) {
1396
- case "deno":
1397
- return serveDeno(config, managerPort, app);
1398
- case "bun":
1399
- return serveBun(config, managerPort, app);
1400
- case "node":
1401
- return serveNode(config, managerPort, app);
1402
- default:
1403
- return serveNode(config, managerPort, app);
1404
- }
1405
- }
1406
- async function serveNode(config, managerPort, app) {
1407
- const nodeServerModule = "@hono/node-server";
1408
- let serve;
1409
- try {
1410
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1411
- /* webpackIgnore: true */
1412
- nodeServerModule
1413
- )));
1414
- serve = dep.serve;
1415
- } catch (err) {
1416
- logger4().error({
1417
- msg: "failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'",
1418
- error: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
1419
- });
1420
- process.exit(1);
1421
- }
1422
- const nodeWsModule = "@hono/node-ws";
1423
- let createNodeWebSocket;
1424
- try {
1425
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1426
- /* webpackIgnore: true */
1427
- nodeWsModule
1428
- )));
1429
- createNodeWebSocket = dep.createNodeWebSocket;
1430
- } catch (err) {
1431
- logger4().error({
1432
- msg: "failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'",
1433
- error: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
1434
- });
1435
- process.exit(1);
1436
- }
1437
- const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({
1438
- app
1439
- });
1440
- const port = managerPort;
1441
- const hostname = config.managerHost;
1442
- const server = serve(
1443
- { fetch: app.fetch, port, hostname },
1444
- () => logger4().info({ msg: "server listening", port, hostname })
1445
- );
1446
- injectWebSocket(server);
1447
- return { upgradeWebSocket };
1448
- }
1449
- async function serveDeno(config, managerPort, app) {
1450
- const honoDenoModule = "hono/deno";
1451
- let upgradeWebSocket;
1452
- try {
1453
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1454
- /* webpackIgnore: true */
1455
- honoDenoModule
1456
- )));
1457
- upgradeWebSocket = dep.upgradeWebSocket;
1458
- } catch (err) {
1459
- logger4().error({
1460
- msg: "failed to import hono/deno",
1461
- error: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
1462
- });
1463
- process.exit(1);
1464
- }
1465
- const port = config.managerPort;
1466
- const hostname = config.managerHost;
1467
- Deno.serve({ port, hostname }, app.fetch);
1468
- logger4().info({ msg: "server listening", port, hostname });
1469
- return { upgradeWebSocket };
1470
- }
1471
- async function serveBun(config, managerPort, app) {
1472
- const honoBunModule = "hono/bun";
1473
- let createBunWebSocket;
1474
- try {
1475
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1476
- /* webpackIgnore: true */
1477
- honoBunModule
1478
- )));
1479
- createBunWebSocket = dep.createBunWebSocket;
1480
- } catch (err) {
1481
- logger4().error({
1482
- msg: "failed to import hono/bun",
1483
- error: _chunkZSJ2OTY4cjs.stringifyError.call(void 0, err)
1484
- });
1485
- process.exit(1);
1486
- }
1487
- const { websocket, upgradeWebSocket } = createBunWebSocket();
1488
- const port = config.managerPort;
1489
- const hostname = config.managerHost;
1490
- Bun.serve({
1491
- fetch: app.fetch,
1492
- port,
1493
- hostname,
1494
- websocket
1495
- });
1496
- logger4().info({ msg: "server listening", port, hostname });
1497
- return { upgradeWebSocket };
1498
- }
1499
-
1500
1404
  // src/serverless/router.ts
1501
1405
 
1502
1406
 
@@ -1520,7 +1424,7 @@ var ServerlessStartHeadersSchema = _v4.z.object({
1520
1424
 
1521
1425
  // src/serverless/router.ts
1522
1426
  function buildServerlessRouter(driverConfig, config) {
1523
- return _chunkR64EFI6Fcjs.createRouter.call(void 0, config.serverless.basePath, (router) => {
1427
+ return _chunkTI5PXQGGcjs.createRouter.call(void 0, config.serverless.basePath, (router) => {
1524
1428
  router.get("/", (c) => {
1525
1429
  return c.text(
1526
1430
  "This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
@@ -1541,7 +1445,7 @@ function buildServerlessRouter(driverConfig, config) {
1541
1445
  );
1542
1446
  }
1543
1447
  const { endpoint, token, totalSlots, runnerName, namespace } = parseResult.data;
1544
- logger3().debug({
1448
+ logger4().debug({
1545
1449
  msg: "received serverless runner start request",
1546
1450
  endpoint,
1547
1451
  totalSlots,
@@ -1569,10 +1473,10 @@ function buildServerlessRouter(driverConfig, config) {
1569
1473
  runnerKey: void 0
1570
1474
  }
1571
1475
  };
1572
- const managerDriver = new (0, _chunkHPAX7L72cjs.RemoteManagerDriver)(
1573
- _chunkHPAX7L72cjs.convertRegistryConfigToClientConfig.call(void 0, newConfig)
1476
+ const managerDriver = new (0, _chunkIIJNPVPQcjs.RemoteManagerDriver)(
1477
+ _chunkIIJNPVPQcjs.convertRegistryConfigToClientConfig.call(void 0, newConfig)
1574
1478
  );
1575
- const client = _chunkHPAX7L72cjs.createClientWithDriver.call(void 0, managerDriver);
1479
+ const client = _chunkIIJNPVPQcjs.createClientWithDriver.call(void 0, managerDriver);
1576
1480
  const actorDriver = driverConfig.actor(
1577
1481
  newConfig,
1578
1482
  managerDriver,
@@ -1584,10 +1488,10 @@ function buildServerlessRouter(driverConfig, config) {
1584
1488
  );
1585
1489
  return await actorDriver.serverlessHandleStart(c);
1586
1490
  });
1587
- router.get("/health", (c) => _chunkR64EFI6Fcjs.handleHealthRequest.call(void 0, c));
1491
+ router.get("/health", (c) => _chunkTI5PXQGGcjs.handleHealthRequest.call(void 0, c));
1588
1492
  router.get(
1589
1493
  "/metadata",
1590
- (c) => _chunkR64EFI6Fcjs.handleMetadataRequest.call(void 0,
1494
+ (c) => _chunkTI5PXQGGcjs.handleMetadataRequest.call(void 0,
1591
1495
  c,
1592
1496
  config,
1593
1497
  { serverless: {} },
@@ -1669,12 +1573,12 @@ var Runtime = class _Runtime {
1669
1573
  }
1670
1574
  static async create(registry) {
1671
1575
  var _a, _b, _c;
1672
- logger4().info("rivetkit starting");
1576
+ _chunkTI5PXQGGcjs.logger.call(void 0, ).info("rivetkit starting");
1673
1577
  const config = registry.parseConfig();
1674
1578
  if ((_a = config.logging) == null ? void 0 : _a.baseLogger) {
1675
- _chunkZSJ2OTY4cjs.configureBaseLogger.call(void 0, config.logging.baseLogger);
1579
+ _chunkHYPIHCDTcjs.configureBaseLogger.call(void 0, config.logging.baseLogger);
1676
1580
  } else {
1677
- _chunkZSJ2OTY4cjs.configureDefaultLogger.call(void 0, (_b = config.logging) == null ? void 0 : _b.level);
1581
+ _chunkHYPIHCDTcjs.configureDefaultLogger.call(void 0, (_b = config.logging) == null ? void 0 : _b.level);
1678
1582
  }
1679
1583
  _invariant2.default.call(void 0,
1680
1584
  !(config.serverless.spawnEngine && config.serveManager),
@@ -1684,8 +1588,8 @@ var Runtime = class _Runtime {
1684
1588
  const managerDriver = driver.manager(config);
1685
1589
  let managerPort;
1686
1590
  if (config.serverless.spawnEngine) {
1687
- managerPort = _chunkR64EFI6Fcjs.ENGINE_PORT;
1688
- logger4().debug({
1591
+ managerPort = _chunkTI5PXQGGcjs.ENGINE_PORT;
1592
+ _chunkTI5PXQGGcjs.logger.call(void 0, ).debug({
1689
1593
  msg: "spawning engine",
1690
1594
  version: config.serverless.engineVersion
1691
1595
  });
@@ -1694,16 +1598,18 @@ var Runtime = class _Runtime {
1694
1598
  });
1695
1599
  } else if (config.serveManager) {
1696
1600
  const configuredManagerPort = config.managerPort;
1601
+ const serveRuntime = _chunkHYPIHCDTcjs.detectRuntime.call(void 0, );
1697
1602
  let upgradeWebSocket;
1698
1603
  const getUpgradeWebSocket = () => upgradeWebSocket;
1699
1604
  managerDriver.setGetUpgradeWebSocket(getUpgradeWebSocket);
1700
- const { router: managerRouter } = _chunkR64EFI6Fcjs.buildManagerRouter.call(void 0,
1605
+ const { router: managerRouter } = _chunkTI5PXQGGcjs.buildManagerRouter.call(void 0,
1701
1606
  config,
1702
1607
  managerDriver,
1703
- getUpgradeWebSocket
1608
+ getUpgradeWebSocket,
1609
+ serveRuntime
1704
1610
  );
1705
- managerPort = await findFreePort(config.managerPort);
1706
- logger4().debug({
1611
+ managerPort = await _chunkTI5PXQGGcjs.findFreePort.call(void 0, config.managerPort);
1612
+ _chunkTI5PXQGGcjs.logger.call(void 0, ).debug({
1707
1613
  msg: "serving manager",
1708
1614
  port: managerPort
1709
1615
  });
@@ -1712,10 +1618,11 @@ var Runtime = class _Runtime {
1712
1618
  config.serverless.publicEndpoint = config.publicEndpoint;
1713
1619
  }
1714
1620
  config.managerPort = managerPort;
1715
- const out = await crossPlatformServe(
1621
+ const out = await _chunkTI5PXQGGcjs.crossPlatformServe.call(void 0,
1716
1622
  config,
1717
1623
  managerPort,
1718
- managerRouter
1624
+ managerRouter,
1625
+ serveRuntime
1719
1626
  );
1720
1627
  upgradeWebSocket = out.upgradeWebSocket;
1721
1628
  }
@@ -1727,7 +1634,7 @@ var Runtime = class _Runtime {
1727
1634
  managerPort
1728
1635
  );
1729
1636
  const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
1730
- logger4().info({
1637
+ _chunkTI5PXQGGcjs.logger.call(void 0, ).info({
1731
1638
  msg: "rivetkit ready",
1732
1639
  driver: driver.name,
1733
1640
  definitions: Object.keys(config.use).length,
@@ -1753,8 +1660,8 @@ var Runtime = class _Runtime {
1753
1660
  _invariant2.default.call(void 0, !this.#startKind, "Runtime already started as serverless");
1754
1661
  this.#startKind = "runner";
1755
1662
  if (this.#config.runner && this.#driver.autoStartActorDriver) {
1756
- logger4().debug("starting actor driver");
1757
- const inlineClient = _chunkHPAX7L72cjs.createClientWithDriver.call(void 0,
1663
+ _chunkTI5PXQGGcjs.logger.call(void 0, ).debug("starting actor driver");
1664
+ const inlineClient = _chunkIIJNPVPQcjs.createClientWithDriver.call(void 0,
1758
1665
  this.#managerDriver
1759
1666
  );
1760
1667
  this.#driver.actor(this.#config, this.#managerDriver, inlineClient);
@@ -1766,7 +1673,7 @@ var Runtime = class _Runtime {
1766
1673
  const inspectorUrl = this.managerPort ? getInspectorUrl(this.#config, this.managerPort) : void 0;
1767
1674
  console.log();
1768
1675
  console.log(
1769
- ` RivetKit ${_chunkZSJ2OTY4cjs.package_default.version} (${this.#driver.displayName} - ${this.#startKind === "serverless" ? "Serverless" : "Runner"})`
1676
+ ` RivetKit ${_chunkHYPIHCDTcjs.package_default.version} (${this.#driver.displayName} - ${this.#startKind === "serverless" ? "Serverless" : "Runner"})`
1770
1677
  );
1771
1678
  if (this.#config.namespace !== "default") {
1772
1679
  logLine("Namespace", this.#config.namespace);
@@ -1807,14 +1714,14 @@ var Registry = class {
1807
1714
  return this.#config;
1808
1715
  }
1809
1716
  parseConfig() {
1810
- return _chunkR64EFI6Fcjs.RegistryConfigSchema.parse(this.#config);
1717
+ return _chunkTI5PXQGGcjs.RegistryConfigSchema.parse(this.#config);
1811
1718
  }
1812
1719
  // Shared runtime instance
1813
1720
  #runtime;
1814
1721
  #runtimePromise;
1815
1722
  constructor(config) {
1816
1723
  this.#config = config;
1817
- if (_chunkZSJ2OTY4cjs.getNodeEnv.call(void 0, ) !== "test") {
1724
+ if (_chunkHYPIHCDTcjs.getNodeEnv.call(void 0, ) !== "test") {
1818
1725
  setTimeout(() => {
1819
1726
  this.#ensureRuntime();
1820
1727
  }, 0);
@@ -1875,7 +1782,7 @@ var Registry = class {
1875
1782
  "autoConfigureServerless can only be configured when runnerKind is 'serverless'"
1876
1783
  );
1877
1784
  }
1878
- const isDevEnv = _chunkZSJ2OTY4cjs.isDev.call(void 0, );
1785
+ const isDevEnv = _chunkHYPIHCDTcjs.isDev.call(void 0, );
1879
1786
  if (isDevEnv && config.runnerKind === "serverless") {
1880
1787
  if ((inputConfig == null ? void 0 : inputConfig.runEngine) === void 0) config.runEngine = true;
1881
1788
  if ((inputConfig == null ? void 0 : inputConfig.autoConfigureServerless) === void 0)
@@ -1888,7 +1795,7 @@ var Registry = class {
1888
1795
  }
1889
1796
  }
1890
1797
  #legacyStartServerless(config, _inputConfig) {
1891
- const client = _chunkHPAX7L72cjs.createClient.call(void 0, {
1798
+ const client = _chunkIIJNPVPQcjs.createClient.call(void 0, {
1892
1799
  endpoint: config.endpoint,
1893
1800
  token: config.token,
1894
1801
  namespace: config.namespace,
@@ -1901,7 +1808,7 @@ var Registry = class {
1901
1808
  }
1902
1809
  #legacyStartNormal(config) {
1903
1810
  this.#ensureRuntime().then((runtime) => runtime.startRunner());
1904
- const client = _chunkHPAX7L72cjs.createClient.call(void 0, {
1811
+ const client = _chunkIIJNPVPQcjs.createClient.call(void 0, {
1905
1812
  endpoint: config.endpoint,
1906
1813
  token: config.token,
1907
1814
  namespace: config.namespace,
@@ -1925,4 +1832,4 @@ function setup(input) {
1925
1832
 
1926
1833
 
1927
1834
  exports.actor = actor; exports.event = event2; exports.queue = queue2; exports.createEngineDriver = createEngineDriver; exports.Registry = Registry; exports.setup = setup;
1928
- //# sourceMappingURL=chunk-BMNB6YRQ.cjs.map
1835
+ //# sourceMappingURL=chunk-OAXJWGMU.cjs.map