rivetkit 2.1.2 → 2.1.4

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 (117) 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-MNS5LY6M.cjs → chunk-3B6PCYJB.cjs} +280 -115
  8. package/dist/tsup/chunk-3B6PCYJB.cjs.map +1 -0
  9. package/dist/tsup/{chunk-YQ5P6KMN.js → chunk-3GTO6H3E.js} +12 -5
  10. package/dist/tsup/chunk-3GTO6H3E.js.map +1 -0
  11. package/dist/tsup/{chunk-RMJJE43B.cjs → chunk-4KSHPFXF.cjs} +2 -2
  12. package/dist/tsup/{chunk-RMJJE43B.cjs.map → chunk-4KSHPFXF.cjs.map} +1 -1
  13. package/dist/tsup/{chunk-PW3YONDJ.js → chunk-5UEFNG7P.js} +2 -2
  14. package/dist/tsup/{chunk-PSUVV4HM.js → chunk-ANKZ2FS6.js} +2 -4
  15. package/dist/tsup/chunk-ANKZ2FS6.js.map +1 -0
  16. package/dist/tsup/{chunk-GVQAVU7R.cjs → chunk-AQD4CBZ2.cjs} +4 -4
  17. package/dist/tsup/{chunk-GVQAVU7R.cjs.map → chunk-AQD4CBZ2.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-WUXR722E.js → chunk-DZXDUGLL.js} +2 -2
  19. package/dist/tsup/{chunk-WUXR722E.js.map → chunk-DZXDUGLL.js.map} +1 -1
  20. package/dist/tsup/{chunk-NXEHFUDB.cjs → chunk-GXRVSSVD.cjs} +28 -21
  21. package/dist/tsup/chunk-GXRVSSVD.cjs.map +1 -0
  22. package/dist/tsup/{chunk-UZV7NXC6.cjs → chunk-H5TSEPN4.cjs} +30 -30
  23. package/dist/tsup/{chunk-UZV7NXC6.cjs.map → chunk-H5TSEPN4.cjs.map} +1 -1
  24. package/dist/tsup/{chunk-TDFDR7AO.js → chunk-HBYEYBIC.js} +2 -2
  25. package/dist/tsup/{chunk-772NPMTY.cjs → chunk-HKOSZKKZ.cjs} +263 -299
  26. package/dist/tsup/chunk-HKOSZKKZ.cjs.map +1 -0
  27. package/dist/tsup/{chunk-HB4RGGMC.js → chunk-I6PL6QIY.js} +5 -5
  28. package/dist/tsup/{chunk-RHUII57M.js → chunk-KTWY3K6Z.js} +23 -12
  29. package/dist/tsup/chunk-KTWY3K6Z.js.map +1 -0
  30. package/dist/tsup/{chunk-HFWRHT5T.cjs → chunk-LK36OGGO.cjs} +3 -5
  31. package/dist/tsup/chunk-LK36OGGO.cjs.map +1 -0
  32. package/dist/tsup/{chunk-BSIJG3LG.js → chunk-M6H4XIF4.js} +179 -215
  33. package/dist/tsup/chunk-M6H4XIF4.js.map +1 -0
  34. package/dist/tsup/{chunk-ZHQDRRMY.cjs → chunk-QPADHLDU.cjs} +3 -3
  35. package/dist/tsup/{chunk-ZHQDRRMY.cjs.map → chunk-QPADHLDU.cjs.map} +1 -1
  36. package/dist/tsup/{chunk-BFI4LYS2.js → chunk-TEFYRRAK.js} +4 -4
  37. package/dist/tsup/{chunk-PZAV6PP2.cjs → chunk-TEUL4UYN.cjs} +152 -152
  38. package/dist/tsup/{chunk-PZAV6PP2.cjs.map → chunk-TEUL4UYN.cjs.map} +1 -1
  39. package/dist/tsup/{chunk-VMX4I4MP.js → chunk-UDMRZR6A.js} +212 -47
  40. package/dist/tsup/chunk-UDMRZR6A.js.map +1 -0
  41. package/dist/tsup/{chunk-QABDKI3W.cjs → chunk-UWAGLDT6.cjs} +263 -252
  42. package/dist/tsup/chunk-UWAGLDT6.cjs.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 +556 -333
  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 +1332 -1109
  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 +194 -100
  74. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  75. package/dist/tsup/serve-test-suite/mod.js +105 -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 +5 -5
  88. package/src/actor/config.ts +0 -2
  89. package/src/actor/instance/mod.ts +30 -6
  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-db.ts +299 -216
  93. package/src/driver-test-suite/tests/actor-driver.ts +4 -0
  94. package/src/driver-test-suite/tests/actor-lifecycle.ts +157 -0
  95. package/src/driver-test-suite/tests/actor-queue.ts +10 -9
  96. package/src/driver-test-suite/tests/actor-workflow.ts +12 -2
  97. package/src/driver-test-suite/tests/conn-error-serialization.ts +64 -0
  98. package/src/driver-test-suite/utils.ts +8 -8
  99. package/src/drivers/engine/actor-driver.ts +113 -11
  100. package/src/manager/router.ts +20 -6
  101. package/src/{registry → utils}/serve.ts +38 -4
  102. package/src/workflow/context.ts +4 -0
  103. package/src/workflow/driver.ts +4 -1
  104. package/dist/tsup/chunk-772NPMTY.cjs.map +0 -1
  105. package/dist/tsup/chunk-BSIJG3LG.js.map +0 -1
  106. package/dist/tsup/chunk-HFWRHT5T.cjs.map +0 -1
  107. package/dist/tsup/chunk-MNS5LY6M.cjs.map +0 -1
  108. package/dist/tsup/chunk-NXEHFUDB.cjs.map +0 -1
  109. package/dist/tsup/chunk-PSUVV4HM.js.map +0 -1
  110. package/dist/tsup/chunk-QABDKI3W.cjs.map +0 -1
  111. package/dist/tsup/chunk-RHUII57M.js.map +0 -1
  112. package/dist/tsup/chunk-VMX4I4MP.js.map +0 -1
  113. package/dist/tsup/chunk-YQ5P6KMN.js.map +0 -1
  114. /package/dist/tsup/{chunk-PW3YONDJ.js.map → chunk-5UEFNG7P.js.map} +0 -0
  115. /package/dist/tsup/{chunk-TDFDR7AO.js.map → chunk-HBYEYBIC.js.map} +0 -0
  116. /package/dist/tsup/{chunk-HB4RGGMC.js.map → chunk-I6PL6QIY.js.map} +0 -0
  117. /package/dist/tsup/{chunk-BFI4LYS2.js.map → chunk-TEFYRRAK.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkQABDKI3Wcjs = require('./chunk-QABDKI3W.cjs');
8
+ var _chunkUWAGLDT6cjs = require('./chunk-UWAGLDT6.cjs');
9
9
 
10
10
 
11
11
 
@@ -16,7 +16,7 @@ var _chunkQABDKI3Wcjs = require('./chunk-QABDKI3W.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkPZAV6PP2cjs = require('./chunk-PZAV6PP2.cjs');
19
+ var _chunkTEUL4UYNcjs = require('./chunk-TEUL4UYN.cjs');
20
20
 
21
21
 
22
22
 
@@ -45,17 +45,17 @@ var _chunkPZAV6PP2cjs = require('./chunk-PZAV6PP2.cjs');
45
45
 
46
46
 
47
47
 
48
- var _chunkMNS5LY6Mcjs = require('./chunk-MNS5LY6M.cjs');
49
48
 
50
49
 
51
50
 
51
+ var _chunk3B6PCYJBcjs = require('./chunk-3B6PCYJB.cjs');
52
52
 
53
53
 
54
54
 
55
- var _chunkHFWRHT5Tcjs = require('./chunk-HFWRHT5T.cjs');
56
55
 
57
56
 
58
57
 
58
+ var _chunkLK36OGGOcjs = require('./chunk-LK36OGGO.cjs');
59
59
 
60
60
 
61
61
 
@@ -71,7 +71,10 @@ var _chunkHFWRHT5Tcjs = require('./chunk-HFWRHT5T.cjs');
71
71
 
72
72
 
73
73
 
74
- var _chunkRMJJE43Bcjs = require('./chunk-RMJJE43B.cjs');
74
+
75
+
76
+
77
+ var _chunk4KSHPFXFcjs = require('./chunk-4KSHPFXF.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 = _chunkHFWRHT5Tcjs.ActorConfigSchema.parse(input);
85
- return new (0, _chunkQABDKI3Wcjs.ActorDefinition)(config);
87
+ const config = _chunkLK36OGGOcjs.ActorConfigSchema.parse(input);
88
+ return new (0, _chunkUWAGLDT6cjs.ActorDefinition)(config);
86
89
  }
87
- var event2 = _chunkHFWRHT5Tcjs.event;
88
- var queue2 = _chunkHFWRHT5Tcjs.queue;
90
+ var event2 = _chunkLK36OGGOcjs.event;
91
+ var queue2 = _chunkLK36OGGOcjs.queue;
89
92
 
90
93
  // src/drivers/engine/actor-driver.ts
91
94
  var _enginerunner = require('@rivetkit/engine-runner');
@@ -95,12 +98,13 @@ 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 _chunkRMJJE43Bcjs.getLogger.call(void 0, "driver-engine");
101
+ function logger2() {
102
+ return _chunk4KSHPFXFcjs.getLogger.call(void 0, "driver-engine");
100
103
  }
101
104
 
102
105
  // src/drivers/engine/actor-driver.ts
103
106
  var RUNNER_SSE_PING_INTERVAL = 1e3;
107
+ var RUNNER_STOP_WAIT_MS = 15e3;
104
108
  var CONN_MESSAGE_ACK_DEADLINE = 5e3;
105
109
  var CONN_BUFFERED_MESSAGE_SIZE_THRESHOLD = 5e5;
106
110
  var EngineActorDriver = class {
@@ -110,8 +114,8 @@ var EngineActorDriver = class {
110
114
  #runner;
111
115
  #actors = /* @__PURE__ */ new Map();
112
116
  #actorRouter;
113
- #runnerStarted = _chunkRMJJE43Bcjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled runner started promise rejection", reason }));
114
- #runnerStopped = _chunkRMJJE43Bcjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled runner stopped promise rejection", reason }));
117
+ #runnerStarted = _chunk4KSHPFXFcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled runner started promise rejection", reason }));
118
+ #runnerStopped = _chunk4KSHPFXFcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled runner stopped promise rejection", reason }));
115
119
  #isRunnerStopped = false;
116
120
  // HACK: Track actor stop intent locally since the runner protocol doesn't
117
121
  // pass the stop reason to onActorStop. This will be fixed when the runner
@@ -135,7 +139,7 @@ var EngineActorDriver = class {
135
139
  this.#managerDriver = managerDriver;
136
140
  this.#inlineClient = inlineClient;
137
141
  const token = config.token;
138
- this.#actorRouter = _chunkQABDKI3Wcjs.createActorRouter.call(void 0,
142
+ this.#actorRouter = _chunkUWAGLDT6cjs.createActorRouter.call(void 0,
139
143
  config,
140
144
  this,
141
145
  void 0,
@@ -143,16 +147,16 @@ var EngineActorDriver = class {
143
147
  );
144
148
  const engineRunnerConfig = {
145
149
  version: config.runner.version,
146
- endpoint: _chunkPZAV6PP2cjs.getEndpoint.call(void 0, config),
150
+ endpoint: _chunkTEUL4UYNcjs.getEndpoint.call(void 0, config),
147
151
  token,
148
152
  namespace: config.namespace,
149
153
  totalSlots: config.runner.totalSlots,
150
154
  runnerName: config.runner.runnerName,
151
155
  runnerKey: _nullishCoalesce(config.runner.runnerKey, () => ( crypto.randomUUID())),
152
156
  metadata: {
153
- rivetkit: { version: _chunkRMJJE43Bcjs.VERSION }
157
+ rivetkit: { version: _chunk4KSHPFXFcjs.VERSION }
154
158
  },
155
- prepopulateActorNames: _chunkMNS5LY6Mcjs.buildActorNames.call(void 0, config),
159
+ prepopulateActorNames: _chunk3B6PCYJBcjs.buildActorNames.call(void 0, config),
156
160
  onConnected: () => {
157
161
  this.#runnerStarted.resolve(void 0);
158
162
  },
@@ -169,11 +173,11 @@ var EngineActorDriver = class {
169
173
  },
170
174
  onActorStart: this.#runnerOnActorStart.bind(this),
171
175
  onActorStop: this.#runnerOnActorStop.bind(this),
172
- logger: _chunkRMJJE43Bcjs.getLogger.call(void 0, "engine-runner")
176
+ logger: _chunk4KSHPFXFcjs.getLogger.call(void 0, "engine-runner")
173
177
  };
174
178
  this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
175
179
  this.#runner.start();
176
- logger().debug({
180
+ logger2().debug({
177
181
  msg: "engine runner started",
178
182
  endpoint: config.endpoint,
179
183
  namespace: config.namespace,
@@ -188,6 +192,7 @@ var EngineActorDriver = class {
188
192
  if (!handler)
189
193
  throw new Error(`Actor handler does not exist ${actorId}`);
190
194
  if (handler.actorStartPromise) await handler.actorStartPromise.promise;
195
+ if (handler.actorStartError) throw handler.actorStartError;
191
196
  if (!handler.actor) throw new Error("Actor should be loaded");
192
197
  return handler;
193
198
  }
@@ -197,7 +202,7 @@ var EngineActorDriver = class {
197
202
  async setAlarm(actor2, timestamp) {
198
203
  const handler = this.#actors.get(actor2.id);
199
204
  if (!handler) {
200
- logger().warn({
205
+ logger2().warn({
201
206
  msg: "no handler for actor to set alarm"
202
207
  });
203
208
  return;
@@ -207,7 +212,7 @@ var EngineActorDriver = class {
207
212
  handler.alarmTimeout = void 0;
208
213
  }
209
214
  const delay = Math.max(0, timestamp - Date.now());
210
- handler.alarmTimeout = _chunkRMJJE43Bcjs.setLongTimeout.call(void 0, () => {
215
+ handler.alarmTimeout = _chunk4KSHPFXFcjs.setLongTimeout.call(void 0, () => {
211
216
  actor2.onAlarm();
212
217
  handler.alarmTimeout = void 0;
213
218
  }, delay);
@@ -230,7 +235,7 @@ var EngineActorDriver = class {
230
235
  new Uint8Array()
231
236
  );
232
237
  const keys = entries.map(([key]) => key);
233
- logger().info({
238
+ logger2().info({
234
239
  msg: "kvList called",
235
240
  actorId,
236
241
  keysCount: keys.length,
@@ -240,7 +245,7 @@ var EngineActorDriver = class {
240
245
  }
241
246
  async kvListPrefix(actorId, prefix) {
242
247
  const result = await this.#runner.kvListPrefix(actorId, prefix);
243
- logger().info({
248
+ logger2().info({
244
249
  msg: "kvListPrefix called",
245
250
  actorId,
246
251
  prefixStr: new TextDecoder().decode(prefix),
@@ -249,6 +254,12 @@ var EngineActorDriver = class {
249
254
  });
250
255
  return result;
251
256
  }
257
+ /** Creates a SQLite VFS instance for creating KV-backed databases */
258
+ async createSqliteVfs() {
259
+ const specifier = "@rivetkit/sqlite-vfs";
260
+ const { SqliteVfs } = await Promise.resolve().then(() => _interopRequireWildcard(require(specifier)));
261
+ return new SqliteVfs();
262
+ }
252
263
  // MARK: - Actor Lifecycle
253
264
  async loadActor(actorId) {
254
265
  const handler = await this.#loadActorHandler(actorId);
@@ -264,8 +275,8 @@ var EngineActorDriver = class {
264
275
  this.#runner.stopActor(actorId);
265
276
  }
266
277
  async shutdownRunner(immediate) {
267
- logger().info({ msg: "stopping engine actor driver", immediate });
268
- logger().debug({
278
+ logger2().info({ msg: "stopping engine actor driver", immediate });
279
+ logger2().debug({
269
280
  msg: "stopping all actors before shutdown",
270
281
  actorCount: this.#actors.size
271
282
  });
@@ -277,22 +288,46 @@ var EngineActorDriver = class {
277
288
  var _a;
278
289
  (_a = handler.actor) == null ? void 0 : _a.rLog.error({
279
290
  msg: "onStop errored",
280
- error: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
291
+ error: _chunk4KSHPFXFcjs.stringifyError.call(void 0, err)
281
292
  });
282
293
  })
283
294
  );
284
295
  }
285
296
  }
286
297
  await Promise.all(stopPromises);
287
- logger().debug({ msg: "all actors stopped" });
288
- await this.#runner.shutdown(immediate);
298
+ logger2().debug({ msg: "all actors stopped" });
299
+ try {
300
+ await this.#runner.shutdown(immediate);
301
+ } catch (error) {
302
+ const message = error instanceof Error ? error.message : String(error);
303
+ if (message.includes("WebSocket connection closed during shutdown")) {
304
+ logger2().debug({
305
+ msg: "ignoring shutdown websocket close race",
306
+ error: message
307
+ });
308
+ } else {
309
+ throw error;
310
+ }
311
+ }
312
+ const stopped = await Promise.race([
313
+ this.#runnerStopped.promise.then(() => true),
314
+ new Promise(
315
+ (resolve) => setTimeout(() => resolve(false), RUNNER_STOP_WAIT_MS)
316
+ )
317
+ ]);
318
+ if (!stopped) {
319
+ logger2().warn({
320
+ msg: "timed out waiting for runner shutdown",
321
+ waitMs: RUNNER_STOP_WAIT_MS
322
+ });
323
+ }
289
324
  }
290
325
  async serverlessHandleStart(c) {
291
326
  return _streaming.streamSSE.call(void 0, c, async (stream) => {
292
327
  stream.onAbort(() => {
293
328
  });
294
329
  c.req.raw.signal.addEventListener("abort", () => {
295
- logger().debug("SSE aborted, shutting down runner");
330
+ logger2().debug("SSE aborted, shutting down runner");
296
331
  this.shutdownRunner(false);
297
332
  });
298
333
  await this.#runnerStarted.promise;
@@ -301,13 +336,13 @@ var EngineActorDriver = class {
301
336
  await stream.writeSSE({ data: payload });
302
337
  while (true) {
303
338
  if (this.#isRunnerStopped) {
304
- logger().debug({
339
+ logger2().debug({
305
340
  msg: "runner is stopped"
306
341
  });
307
342
  break;
308
343
  }
309
344
  if (stream.closed || stream.aborted) {
310
- logger().debug({
345
+ logger2().debug({
311
346
  msg: "runner sse stream closed",
312
347
  closed: stream.closed,
313
348
  aborted: stream.aborted
@@ -322,7 +357,7 @@ var EngineActorDriver = class {
322
357
  }
323
358
  async #runnerOnActorStart(actorId, generation, actorConfig) {
324
359
  var _a;
325
- logger().debug({
360
+ logger2().debug({
326
361
  msg: "runner actor starting",
327
362
  actorId,
328
363
  name: actorConfig.name,
@@ -336,33 +371,49 @@ var EngineActorDriver = class {
336
371
  let handler = this.#actors.get(actorId);
337
372
  if (!handler) {
338
373
  handler = {
339
- actorStartPromise: _chunkRMJJE43Bcjs.promiseWithResolvers.call(void 0, (reason) => logger().warn({ msg: "unhandled actor start promise rejection", reason }))
374
+ actorStartPromise: _chunk4KSHPFXFcjs.promiseWithResolvers.call(void 0, (reason) => logger2().warn({ msg: "unhandled actor start promise rejection", reason }))
340
375
  };
341
376
  this.#actors.set(actorId, handler);
342
377
  }
378
+ handler.actorStartError = void 0;
343
379
  const name = actorConfig.name;
344
380
  _invariant2.default.call(void 0, actorConfig.key, "actor should have a key");
345
- const key = _chunkMNS5LY6Mcjs.deserializeActorKey.call(void 0, actorConfig.key);
381
+ const key = _chunk3B6PCYJBcjs.deserializeActorKey.call(void 0, actorConfig.key);
346
382
  try {
347
383
  const [persistDataBuffer] = await this.#runner.kvGet(actorId, [
348
- _chunkHFWRHT5Tcjs.KEYS.PERSIST_DATA
384
+ _chunkLK36OGGOcjs.KEYS.PERSIST_DATA
349
385
  ]);
350
386
  if (persistDataBuffer === null) {
351
- const initialKvState = _chunkMNS5LY6Mcjs.getInitialActorKvState.call(void 0, input);
387
+ const initialKvState = _chunk3B6PCYJBcjs.getInitialActorKvState.call(void 0, input);
352
388
  await this.#runner.kvPut(actorId, initialKvState);
353
- logger().debug({
389
+ logger2().debug({
354
390
  msg: "initialized persist data for new actor",
355
391
  actorId
356
392
  });
357
393
  } else {
358
- logger().debug({
394
+ logger2().debug({
359
395
  msg: "found existing persist data for actor",
360
396
  actorId,
361
397
  dataSize: persistDataBuffer.byteLength
362
398
  });
363
399
  }
364
- const definition = _chunkQABDKI3Wcjs.lookupInRegistry.call(void 0, this.#config, actorConfig.name);
400
+ const definition = _chunkUWAGLDT6cjs.lookupInRegistry.call(void 0, this.#config, actorConfig.name);
365
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
+ }
366
417
  await handler.actor.start(
367
418
  this,
368
419
  this.#inlineClient,
@@ -372,38 +423,71 @@ var EngineActorDriver = class {
372
423
  "unknown"
373
424
  // TODO: Add regions
374
425
  );
375
- logger().debug({ msg: "runner actor started", actorId, name, key });
426
+ logger2().debug({ msg: "runner actor started", actorId, name, key });
376
427
  } catch (innerError) {
377
- const error = new Error(
378
- `Failed to start actor ${actorId}: ${innerError}`,
428
+ const error = innerError instanceof Error ? new Error(
429
+ `Failed to start actor ${actorId}: ${innerError.message}`,
379
430
  { cause: innerError }
380
- );
431
+ ) : new Error(`Failed to start actor ${actorId}: ${String(innerError)}`);
432
+ handler.actor = void 0;
433
+ handler.actorStartError = error;
381
434
  (_a = handler.actorStartPromise) == null ? void 0 : _a.reject(error);
382
435
  handler.actorStartPromise = void 0;
383
- throw error;
436
+ logger2().error({
437
+ msg: "runner actor failed to start",
438
+ actorId,
439
+ name,
440
+ key,
441
+ err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, error)
442
+ });
443
+ try {
444
+ this.#runner.stopActor(actorId);
445
+ } catch (stopError) {
446
+ logger2().debug({
447
+ msg: "failed to stop actor after start failure",
448
+ actorId,
449
+ err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, stopError)
450
+ });
451
+ }
384
452
  }
385
453
  }
386
454
  async #runnerOnActorStop(actorId, generation) {
387
- logger().debug({ msg: "runner actor stopping", actorId, generation });
455
+ logger2().debug({ msg: "runner actor stopping", actorId, generation });
388
456
  const reason = _nullishCoalesce(this.#actorStopIntent.get(actorId), () => ( "sleep"));
389
457
  this.#actorStopIntent.delete(actorId);
390
458
  const handler = this.#actors.get(actorId);
391
- if (handler == null ? void 0 : handler.actor) {
459
+ if (!handler) {
460
+ logger2().debug({ msg: "no runner actor handler to stop", actorId, reason });
461
+ return;
462
+ }
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: _chunk4KSHPFXFcjs.stringifyError.call(void 0, err)
472
+ });
473
+ }
474
+ }
475
+ if (handler.actor) {
392
476
  try {
393
477
  await handler.actor.onStop(reason);
394
478
  } catch (err) {
395
- logger().error({
479
+ logger2().error({
396
480
  msg: "error in onStop, proceeding with removing actor",
397
- err: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
481
+ err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, err)
398
482
  });
399
483
  }
400
- this.#actors.delete(actorId);
401
484
  }
402
- logger().debug({ msg: "runner actor stopped", actorId, reason });
485
+ this.#actors.delete(actorId);
486
+ logger2().debug({ msg: "runner actor stopped", actorId, reason });
403
487
  }
404
488
  // MARK: - Runner Networking
405
489
  async #runnerFetch(_runner, actorId, _gatewayIdBuf, _requestIdBuf, request) {
406
- logger().debug({
490
+ logger2().debug({
407
491
  msg: "runner fetch",
408
492
  actorId,
409
493
  url: request.url,
@@ -416,7 +500,7 @@ var EngineActorDriver = class {
416
500
  const websocket = websocketRaw;
417
501
  const wsUniqueId = `ws_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
418
502
  websocket.__rivet_ws_id = wsUniqueId;
419
- logger().debug({
503
+ logger2().debug({
420
504
  msg: "runner websocket",
421
505
  actorId,
422
506
  url: request.url,
@@ -427,10 +511,10 @@ var EngineActorDriver = class {
427
511
  websocketProps: websocketRaw ? Object.keys(websocketRaw).join(", ") : "null"
428
512
  });
429
513
  const protocols = request.headers.get("sec-websocket-protocol");
430
- const { encoding, connParams } = _chunkMNS5LY6Mcjs.parseWebSocketProtocols.call(void 0, protocols);
514
+ const { encoding, connParams } = _chunk3B6PCYJBcjs.parseWebSocketProtocols.call(void 0, protocols);
431
515
  let wsHandler;
432
516
  try {
433
- wsHandler = await _chunkMNS5LY6Mcjs.routeWebSocket.call(void 0,
517
+ wsHandler = await _chunk3B6PCYJBcjs.routeWebSocket.call(void 0,
434
518
  request,
435
519
  requestPath,
436
520
  requestHeaders,
@@ -445,7 +529,7 @@ var EngineActorDriver = class {
445
529
  isRestoringHibernatable
446
530
  );
447
531
  } catch (err) {
448
- logger().error({ msg: "building websocket handlers errored", err });
532
+ logger2().error({ msg: "building websocket handlers errored", err });
449
533
  websocketRaw.close(1011, "ws.route_error");
450
534
  return;
451
535
  }
@@ -453,8 +537,8 @@ var EngineActorDriver = class {
453
537
  const wsContext = new (0, _ws.WSContext)(websocket);
454
538
  const conn = wsHandler.conn;
455
539
  const actor2 = wsHandler.actor;
456
- const connStateManager = conn == null ? void 0 : conn[_chunkMNS5LY6Mcjs.CONN_STATE_MANAGER_SYMBOL];
457
- logger().debug({
540
+ const connStateManager = conn == null ? void 0 : conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
541
+ logger2().debug({
458
542
  msg: "attaching websocket event listeners",
459
543
  actorId,
460
544
  connId: conn == null ? void 0 : conn.id,
@@ -470,7 +554,7 @@ var EngineActorDriver = class {
470
554
  });
471
555
  websocket.addEventListener("message", (event3) => {
472
556
  var _a2, _b2;
473
- logger().debug({
557
+ logger2().debug({
474
558
  msg: "websocket message event listener triggered",
475
559
  connId: conn == null ? void 0 : conn.id,
476
560
  actorId: actor2 == null ? void 0 : actor2.id,
@@ -483,7 +567,7 @@ var EngineActorDriver = class {
483
567
  eventTargetWsId: (_b2 = event3.target) == null ? void 0 : _b2.__rivet_ws_id
484
568
  });
485
569
  if (actor2 == null ? void 0 : actor2.isStopping) {
486
- logger().debug({
570
+ logger2().debug({
487
571
  msg: "ignoring ws message, actor is stopping",
488
572
  connId: conn == null ? void 0 : conn.id,
489
573
  actorId: actor2 == null ? void 0 : actor2.id,
@@ -491,7 +575,7 @@ var EngineActorDriver = class {
491
575
  });
492
576
  return;
493
577
  }
494
- logger().debug({
578
+ logger2().debug({
495
579
  msg: "calling wsHandler.onMessage",
496
580
  connId: conn == null ? void 0 : conn.id,
497
581
  messageIndex: event3.rivetMessageIndex
@@ -505,7 +589,7 @@ var EngineActorDriver = class {
505
589
  );
506
590
  const previousMsgIndex = hibernate.serverMessageIndex;
507
591
  hibernate.serverMessageIndex = event3.rivetMessageIndex;
508
- logger().info({
592
+ logger2().info({
509
593
  msg: "persisting message index",
510
594
  connId: conn.id,
511
595
  previousMsgIndex,
@@ -513,7 +597,7 @@ var EngineActorDriver = class {
513
597
  });
514
598
  const entry = this.#hwsMessageIndex.get(conn.id);
515
599
  if (entry) {
516
- const messageLength = _chunkMNS5LY6Mcjs.getValueLength.call(void 0, event3.data);
600
+ const messageLength = _chunk3B6PCYJBcjs.getValueLength.call(void 0, event3.data);
517
601
  entry.bufferedMessageSize += messageLength;
518
602
  if (entry.bufferedMessageSize >= CONN_BUFFERED_MESSAGE_SIZE_THRESHOLD) {
519
603
  entry.bufferedMessageSize = 0;
@@ -540,7 +624,7 @@ var EngineActorDriver = class {
540
624
  wsHandler.onError(event3, wsContext);
541
625
  });
542
626
  if (isRestoringHibernatable) {
543
- logger().info({
627
+ logger2().info({
544
628
  msg: "event listeners attached to restored websocket",
545
629
  actorId,
546
630
  connId: conn == null ? void 0 : conn.id,
@@ -558,7 +642,7 @@ var EngineActorDriver = class {
558
642
  const path = url.pathname;
559
643
  const actorInstance = this.#runner.getActor(actorId);
560
644
  if (!actorInstance) {
561
- logger().warn({
645
+ logger2().warn({
562
646
  msg: "actor not found in #hwsCanHibernate",
563
647
  actorId
564
648
  });
@@ -566,28 +650,28 @@ var EngineActorDriver = class {
566
650
  }
567
651
  const handler = this.#actors.get(actorId);
568
652
  if (!handler) {
569
- logger().warn({
653
+ logger2().warn({
570
654
  msg: "actor handler not found in #hwsCanHibernate",
571
655
  actorId
572
656
  });
573
657
  return false;
574
658
  }
575
659
  if (!handler.actor) {
576
- logger().warn({
660
+ logger2().warn({
577
661
  msg: "actor not found in #hwsCanHibernate",
578
662
  actorId
579
663
  });
580
664
  return false;
581
665
  }
582
- logger().debug({
666
+ logger2().debug({
583
667
  msg: "no existing hibernatable websocket found",
584
668
  gatewayId: _enginerunner.idToStr.call(void 0, gatewayId),
585
669
  requestId: _enginerunner.idToStr.call(void 0, requestId)
586
670
  });
587
- if (path === _chunkMNS5LY6Mcjs.PATH_CONNECT) {
671
+ if (path === _chunk3B6PCYJBcjs.PATH_CONNECT) {
588
672
  return true;
589
- } else if (path === _chunkMNS5LY6Mcjs.PATH_WEBSOCKET_BASE || path.startsWith(_chunkMNS5LY6Mcjs.PATH_WEBSOCKET_PREFIX)) {
590
- const definition = _chunkQABDKI3Wcjs.lookupInRegistry.call(void 0,
673
+ } else if (path === _chunk3B6PCYJBcjs.PATH_WEBSOCKET_BASE || path.startsWith(_chunk3B6PCYJBcjs.PATH_WEBSOCKET_PREFIX)) {
674
+ const definition = _chunkUWAGLDT6cjs.lookupInRegistry.call(void 0,
591
675
  this.#config,
592
676
  actorInstance.config.name
593
677
  );
@@ -596,7 +680,7 @@ var EngineActorDriver = class {
596
680
  return true;
597
681
  } else if (typeof canHibernateWebSocket === "function") {
598
682
  try {
599
- const newPath = _chunkMNS5LY6Mcjs.truncateRawWebSocketPathPrefix.call(void 0,
683
+ const newPath = _chunk3B6PCYJBcjs.truncateRawWebSocketPathPrefix.call(void 0,
600
684
  url.pathname
601
685
  );
602
686
  const truncatedRequest = new Request(
@@ -606,7 +690,7 @@ var EngineActorDriver = class {
606
690
  const canHibernate = canHibernateWebSocket(truncatedRequest);
607
691
  return canHibernate;
608
692
  } catch (error) {
609
- logger().error({
693
+ logger2().error({
610
694
  msg: "error calling canHibernateWebSocket",
611
695
  error
612
696
  });
@@ -615,10 +699,10 @@ var EngineActorDriver = class {
615
699
  } else {
616
700
  return false;
617
701
  }
618
- } else if (path === _chunkMNS5LY6Mcjs.PATH_INSPECTOR_CONNECT) {
702
+ } else if (path === _chunk3B6PCYJBcjs.PATH_INSPECTOR_CONNECT) {
619
703
  return false;
620
704
  } else {
621
- logger().warn({
705
+ logger2().warn({
622
706
  msg: "unexpected path for getActorHibernationConfig",
623
707
  path
624
708
  });
@@ -628,7 +712,7 @@ var EngineActorDriver = class {
628
712
  async #hwsLoadAll(actorId) {
629
713
  const actor2 = await this.loadActor(actorId);
630
714
  return actor2.conns.values().map((conn) => {
631
- const connStateManager = conn[_chunkMNS5LY6Mcjs.CONN_STATE_MANAGER_SYMBOL];
715
+ const connStateManager = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
632
716
  const hibernatable = connStateManager.hibernatableData;
633
717
  if (!hibernatable) return void 0;
634
718
  return {
@@ -645,13 +729,14 @@ var EngineActorDriver = class {
645
729
  var _a;
646
730
  const handler = this.#actors.get(actor2.id);
647
731
  _invariant2.default.call(void 0, handler, "missing actor handler in onBeforeActorReady");
732
+ handler.actorStartError = void 0;
648
733
  (_a = handler.actorStartPromise) == null ? void 0 : _a.resolve();
649
734
  handler.actorStartPromise = void 0;
650
735
  const metaEntries = await this.#hwsLoadAll(actor2.id);
651
736
  await this.#runner.restoreHibernatingRequests(actor2.id, metaEntries);
652
737
  }
653
738
  onCreateConn(conn) {
654
- const hibernatable = conn[_chunkMNS5LY6Mcjs.CONN_STATE_MANAGER_SYMBOL].hibernatableData;
739
+ const hibernatable = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL].hibernatableData;
655
740
  if (!hibernatable) return;
656
741
  this.#hwsMessageIndex.set(conn.id, {
657
742
  serverMessageIndex: hibernatable.serverMessageIndex,
@@ -659,7 +744,7 @@ var EngineActorDriver = class {
659
744
  pendingAckFromMessageIndex: false,
660
745
  pendingAckFromBufferSize: false
661
746
  });
662
- logger().debug({
747
+ logger2().debug({
663
748
  msg: "created #hwsMessageIndex entry",
664
749
  connId: conn.id,
665
750
  serverMessageIndex: hibernatable.serverMessageIndex
@@ -667,17 +752,17 @@ var EngineActorDriver = class {
667
752
  }
668
753
  onDestroyConn(conn) {
669
754
  this.#hwsMessageIndex.delete(conn.id);
670
- logger().debug({
755
+ logger2().debug({
671
756
  msg: "removed #hwsMessageIndex entry",
672
757
  connId: conn.id
673
758
  });
674
759
  }
675
760
  onBeforePersistConn(conn) {
676
- const stateManager = conn[_chunkMNS5LY6Mcjs.CONN_STATE_MANAGER_SYMBOL];
761
+ const stateManager = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
677
762
  const hibernatable = stateManager.hibernatableDataOrError();
678
763
  const entry = this.#hwsMessageIndex.get(conn.id);
679
764
  if (!entry) {
680
- logger().warn({
765
+ logger2().warn({
681
766
  msg: "missing EngineActorDriver.#hwsMessageIndex entry for conn",
682
767
  connId: conn.id
683
768
  });
@@ -687,11 +772,11 @@ var EngineActorDriver = class {
687
772
  entry.serverMessageIndex = hibernatable.serverMessageIndex;
688
773
  }
689
774
  onAfterPersistConn(conn) {
690
- const stateManager = conn[_chunkMNS5LY6Mcjs.CONN_STATE_MANAGER_SYMBOL];
775
+ const stateManager = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
691
776
  const hibernatable = stateManager.hibernatableDataOrError();
692
777
  const entry = this.#hwsMessageIndex.get(conn.id);
693
778
  if (!entry) {
694
- logger().warn({
779
+ logger2().warn({
695
780
  msg: "missing EngineActorDriver.#hwsMessageIndex entry for conn",
696
781
  connId: conn.id
697
782
  });
@@ -712,9 +797,9 @@ var EngineActorDriver = class {
712
797
 
713
798
  // src/drivers/engine/config.ts
714
799
  var _v4 = require('zod/v4');
715
- var EngineConfigSchemaBase = _chunkPZAV6PP2cjs.ClientConfigSchemaBase.extend({
800
+ var EngineConfigSchemaBase = _chunkTEUL4UYNcjs.ClientConfigSchemaBase.extend({
716
801
  /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
717
- runnerKey: _v4.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkRMJJE43Bcjs.getRivetRunnerKey.call(void 0, )))),
802
+ runnerKey: _v4.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunk4KSHPFXFcjs.getRivetRunnerKey.call(void 0, )))),
718
803
  /** How many actors this runner can run. */
719
804
  totalSlots: _v4.z.number().default(1e5)
720
805
  });
@@ -726,7 +811,7 @@ var EngineConfigSchema = EngineConfigSchemaTransformed.default(
726
811
  );
727
812
  function transformEngineConfig(config, ctx) {
728
813
  return {
729
- ..._chunkPZAV6PP2cjs.transformClientConfig.call(void 0, config, ctx),
814
+ ..._chunkTEUL4UYNcjs.transformClientConfig.call(void 0, config, ctx),
730
815
  runnerKey: config.runnerKey
731
816
  };
732
817
  }
@@ -737,8 +822,8 @@ function createEngineDriver() {
737
822
  name: "engine",
738
823
  displayName: "Engine",
739
824
  manager: (config) => {
740
- const clientConfig = _chunkPZAV6PP2cjs.convertRegistryConfigToClientConfig.call(void 0, config);
741
- return new (0, _chunkPZAV6PP2cjs.RemoteManagerDriver)(clientConfig);
825
+ const clientConfig = _chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, config);
826
+ return new (0, _chunkTEUL4UYNcjs.RemoteManagerDriver)(clientConfig);
742
827
  },
743
828
  actor: (config, managerDriver, inlineClient) => {
744
829
  return new EngineActorDriver(
@@ -766,15 +851,15 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
766
851
  /** @experimental */
767
852
  maxOutgoingMessageSize: _v4.z.number().optional().default(1048576),
768
853
  /** @experimental */
769
- inspector: _chunkMNS5LY6Mcjs.InspectorConfigSchema,
854
+ inspector: _chunk3B6PCYJBcjs.InspectorConfigSchema,
770
855
  /** @experimental */
771
856
  disableDefaultServer: _v4.z.boolean().optional().default(false),
772
857
  /** @experimental */
773
858
  defaultServerPort: _v4.z.number().default(6420),
774
859
  /** @experimental */
775
- runEngine: _v4.z.boolean().optional().default(() => _chunkRMJJE43Bcjs.getRivetRunEngine.call(void 0, )),
860
+ runEngine: _v4.z.boolean().optional().default(() => _chunk4KSHPFXFcjs.getRivetRunEngine.call(void 0, )),
776
861
  /** @experimental */
777
- runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(_chunkRMJJE43Bcjs.getRivetRunEngineVersion.call(void 0, ), () => ( _chunkRMJJE43Bcjs.VERSION))),
862
+ runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(_chunk4KSHPFXFcjs.getRivetRunEngineVersion.call(void 0, ), () => ( _chunk4KSHPFXFcjs.VERSION))),
778
863
  /** @experimental */
779
864
  overrideServerAddress: _v4.z.string().optional(),
780
865
  /** @experimental */
@@ -786,7 +871,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
786
871
  * serverlessly (by the Rivet Engine for example).
787
872
  */
788
873
  runnerKind: _v4.z.enum(["serverless", "normal"]).optional().default(
789
- () => _chunkRMJJE43Bcjs.getRivetRunnerKind.call(void 0, ) === "serverless" ? "serverless" : "normal"
874
+ () => _chunk4KSHPFXFcjs.getRivetRunnerKind.call(void 0, ) === "serverless" ? "serverless" : "normal"
790
875
  ),
791
876
  totalSlots: _v4.z.number().optional(),
792
877
  /**
@@ -808,7 +893,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
808
893
  * */
809
894
  logging: _v4.z.object({
810
895
  baseLogger: _v4.z.custom().optional(),
811
- level: _chunkRMJJE43Bcjs.LogLevelSchema.optional()
896
+ level: _chunk4KSHPFXFcjs.LogLevelSchema.optional()
812
897
  }).optional().default(() => ({})),
813
898
  /**
814
899
  * @experimental
@@ -836,7 +921,7 @@ var LegacyRunnerConfigSchemaUnmerged = _v4.z.object({
836
921
  // created or must be imported async using `await import(...)`
837
922
  getUpgradeWebSocket: _v4.z.custom().optional(),
838
923
  /** @experimental */
839
- token: _v4.z.string().optional().transform((v) => v || _chunkRMJJE43Bcjs.getRivetToken.call(void 0, ))
924
+ token: _v4.z.string().optional().transform((v) => v || _chunk4KSHPFXFcjs.getRivetToken.call(void 0, ))
840
925
  }).merge(EngineConfigSchemaBase);
841
926
  var LegacyRunnerConfigSchemaTransformed = LegacyRunnerConfigSchemaUnmerged.transform((config, ctx) => ({
842
927
  ...config,
@@ -860,53 +945,53 @@ function chooseDefaultDriver(config) {
860
945
  return config.driver;
861
946
  }
862
947
  if (config.endpoint || config.token) {
863
- _chunkHFWRHT5Tcjs.loggerWithoutContext.call(void 0, ).debug({
948
+ _chunkLK36OGGOcjs.loggerWithoutContext.call(void 0, ).debug({
864
949
  msg: "using rivet engine driver",
865
950
  endpoint: config.endpoint
866
951
  });
867
952
  return createEngineDriver();
868
953
  }
869
- _chunkHFWRHT5Tcjs.loggerWithoutContext.call(void 0, ).debug({
954
+ _chunkLK36OGGOcjs.loggerWithoutContext.call(void 0, ).debug({
870
955
  msg: "using default file system driver",
871
956
  storagePath: config.storagePath
872
957
  });
873
- return _chunkQABDKI3Wcjs.createFileSystemOrMemoryDriver.call(void 0, true, {
958
+ return _chunkUWAGLDT6cjs.createFileSystemOrMemoryDriver.call(void 0, true, {
874
959
  path: config.storagePath
875
960
  });
876
961
  }
877
962
 
878
963
  // src/engine-process/log.ts
879
- function logger2() {
880
- return _chunkRMJJE43Bcjs.getLogger.call(void 0, "engine-process");
964
+ function logger3() {
965
+ return _chunk4KSHPFXFcjs.getLogger.call(void 0, "engine-process");
881
966
  }
882
967
 
883
968
  // src/engine-process/mod.ts
884
969
  var ENGINE_BASE_URL = "https://releases.rivet.dev/rivet";
885
970
  var ENGINE_BINARY_NAME = "rivet-engine";
886
971
  async function ensureEngineProcess(options) {
887
- _chunkMNS5LY6Mcjs.importNodeDependencies.call(void 0, );
888
- logger2().debug({
972
+ _chunk3B6PCYJBcjs.importNodeDependencies.call(void 0, );
973
+ logger3().debug({
889
974
  msg: "ensuring engine process",
890
975
  version: options.version
891
976
  });
892
- const path = _chunkMNS5LY6Mcjs.getNodePath.call(void 0, );
893
- const storageRoot = _chunkQABDKI3Wcjs.getStoragePath.call(void 0, );
977
+ const path = _chunk3B6PCYJBcjs.getNodePath.call(void 0, );
978
+ const storageRoot = _chunkUWAGLDT6cjs.getStoragePath.call(void 0, );
894
979
  const binDir = path.join(storageRoot, "bin");
895
980
  const varDir = path.join(storageRoot, "var");
896
981
  const logsDir = path.join(varDir, "logs", "rivet-engine");
897
- await _chunkQABDKI3Wcjs.ensureDirectoryExists.call(void 0, binDir);
898
- await _chunkQABDKI3Wcjs.ensureDirectoryExists.call(void 0, varDir);
899
- await _chunkQABDKI3Wcjs.ensureDirectoryExists.call(void 0, logsDir);
982
+ await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, binDir);
983
+ await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, varDir);
984
+ await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, logsDir);
900
985
  if (await isEngineRunning()) {
901
986
  try {
902
987
  const health = await waitForEngineHealth();
903
- logger2().debug({
988
+ logger3().debug({
904
989
  msg: "engine already running and healthy",
905
990
  version: health.version
906
991
  });
907
992
  return;
908
993
  } catch (error) {
909
- logger2().warn({
994
+ logger3().warn({
910
995
  msg: "existing engine process not healthy, cannot restart automatically",
911
996
  error
912
997
  });
@@ -921,19 +1006,19 @@ async function ensureEngineProcess(options) {
921
1006
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-").replace(/\./g, "-");
922
1007
  const stdoutLogPath = path.join(logsDir, `engine-${timestamp}-stdout.log`);
923
1008
  const stderrLogPath = path.join(logsDir, `engine-${timestamp}-stderr.log`);
924
- const fsSync = _chunkMNS5LY6Mcjs.getNodeFsSync.call(void 0, );
1009
+ const fsSync = _chunk3B6PCYJBcjs.getNodeFsSync.call(void 0, );
925
1010
  const stdoutStream = fsSync.createWriteStream(stdoutLogPath, {
926
1011
  flags: "a"
927
1012
  });
928
1013
  const stderrStream = fsSync.createWriteStream(stderrLogPath, {
929
1014
  flags: "a"
930
1015
  });
931
- logger2().debug({
1016
+ logger3().debug({
932
1017
  msg: "creating engine log files",
933
1018
  stdout: stdoutLogPath,
934
1019
  stderr: stderrLogPath
935
1020
  });
936
- const childProcess = _chunkMNS5LY6Mcjs.getNodeChildProcess.call(void 0, );
1021
+ const childProcess = _chunk3B6PCYJBcjs.getNodeChildProcess.call(void 0, );
937
1022
  const child = childProcess.spawn(binaryPath, ["start"], {
938
1023
  cwd: path.dirname(binaryPath),
939
1024
  stdio: ["inherit", "pipe", "pipe"],
@@ -985,7 +1070,7 @@ async function ensureEngineProcess(options) {
985
1070
  });
986
1071
  child.stderr.pipe(stderrStream);
987
1072
  }
988
- logger2().debug({
1073
+ logger3().debug({
989
1074
  msg: "spawned engine process",
990
1075
  pid: child.pid,
991
1076
  cwd: path.dirname(binaryPath)
@@ -993,7 +1078,7 @@ async function ensureEngineProcess(options) {
993
1078
  child.once("exit", (code, signal) => {
994
1079
  const stderrOutput = Buffer.concat(stderrChunks).toString("utf-8");
995
1080
  if (stderrOutput.includes("LOCK: Resource temporarily unavailable")) {
996
- logger2().error({
1081
+ logger3().error({
997
1082
  msg: "another instance of rivet engine is unexpectedly running, this is an internal error",
998
1083
  code,
999
1084
  signal,
@@ -1003,7 +1088,7 @@ async function ensureEngineProcess(options) {
1003
1088
  support: "https://rivet.dev/discord"
1004
1089
  });
1005
1090
  } else if (stderrOutput.includes("Rivet Engine has been rolled back to a previous version")) {
1006
- logger2().error({
1091
+ logger3().error({
1007
1092
  msg: "rivet engine version downgrade detected",
1008
1093
  hint: `You attempted to downgrade the RivetKit version in development. To fix this, nuke the database by running: '${binaryPath}' database nuke --yes`,
1009
1094
  code,
@@ -1012,7 +1097,7 @@ async function ensureEngineProcess(options) {
1012
1097
  stderrLog: stderrLogPath
1013
1098
  });
1014
1099
  } else {
1015
- logger2().warn({
1100
+ logger3().warn({
1016
1101
  msg: "engine process exited, please report this error",
1017
1102
  code,
1018
1103
  signal,
@@ -1026,7 +1111,7 @@ async function ensureEngineProcess(options) {
1026
1111
  stderrStream.end();
1027
1112
  });
1028
1113
  child.once("error", (error) => {
1029
- logger2().error({
1114
+ logger3().error({
1030
1115
  msg: "engine process failed",
1031
1116
  error
1032
1117
  });
@@ -1034,7 +1119,7 @@ async function ensureEngineProcess(options) {
1034
1119
  stderrStream.end();
1035
1120
  });
1036
1121
  await waitForEngineHealth();
1037
- logger2().info({
1122
+ logger3().info({
1038
1123
  msg: "engine process started",
1039
1124
  pid: child.pid,
1040
1125
  version: options.version,
@@ -1047,7 +1132,7 @@ async function ensureEngineProcess(options) {
1047
1132
  async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1048
1133
  const binaryExists = await fileExists(binaryPath);
1049
1134
  if (binaryExists) {
1050
- logger2().debug({
1135
+ logger3().debug({
1051
1136
  msg: "engine binary already cached",
1052
1137
  version,
1053
1138
  path: binaryPath
@@ -1057,7 +1142,7 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1057
1142
  const { targetTriplet, extension } = resolveTargetTriplet();
1058
1143
  const remoteFile = `${ENGINE_BINARY_NAME}-${targetTriplet}${extension}`;
1059
1144
  const downloadUrl = `${ENGINE_BASE_URL}/${version}/engine/${remoteFile}`;
1060
- logger2().info({
1145
+ logger3().info({
1061
1146
  msg: "downloading engine binary",
1062
1147
  url: downloadUrl,
1063
1148
  path: binaryPath,
@@ -1069,50 +1154,50 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1069
1154
  `failed to download rivet engine binary from ${downloadUrl}: ${response.status} ${response.statusText}`
1070
1155
  );
1071
1156
  }
1072
- const crypto2 = _chunkMNS5LY6Mcjs.getNodeCrypto.call(void 0, );
1157
+ const crypto2 = _chunk3B6PCYJBcjs.getNodeCrypto.call(void 0, );
1073
1158
  const tempPath = `${binaryPath}.${crypto2.randomUUID()}.tmp`;
1074
1159
  const startTime = Date.now();
1075
- logger2().debug({
1160
+ logger3().debug({
1076
1161
  msg: "starting binary download",
1077
1162
  tempPath,
1078
1163
  contentLength: response.headers.get("content-length")
1079
1164
  });
1080
1165
  const slowDownloadWarning = setTimeout(() => {
1081
- logger2().warn({
1166
+ logger3().warn({
1082
1167
  msg: "engine binary download is taking longer than expected, please be patient",
1083
1168
  version
1084
1169
  });
1085
1170
  }, 5e3);
1086
1171
  try {
1087
- const stream = _chunkMNS5LY6Mcjs.getNodeStream.call(void 0, );
1088
- const fsSync = _chunkMNS5LY6Mcjs.getNodeFsSync.call(void 0, );
1172
+ const stream = _chunk3B6PCYJBcjs.getNodeStream.call(void 0, );
1173
+ const fsSync = _chunk3B6PCYJBcjs.getNodeFsSync.call(void 0, );
1089
1174
  await stream.pipeline(
1090
1175
  response.body,
1091
1176
  fsSync.createWriteStream(tempPath)
1092
1177
  );
1093
1178
  clearTimeout(slowDownloadWarning);
1094
- const fs = _chunkMNS5LY6Mcjs.getNodeFs.call(void 0, );
1179
+ const fs = _chunk3B6PCYJBcjs.getNodeFs.call(void 0, );
1095
1180
  const stats = await fs.stat(tempPath);
1096
1181
  const downloadDuration = Date.now() - startTime;
1097
1182
  if (process.platform !== "win32") {
1098
1183
  await fs.chmod(tempPath, 493);
1099
1184
  }
1100
1185
  await fs.rename(tempPath, binaryPath);
1101
- logger2().debug({
1186
+ logger3().debug({
1102
1187
  msg: "engine binary download complete",
1103
1188
  version,
1104
1189
  path: binaryPath,
1105
1190
  size: stats.size,
1106
1191
  durationMs: downloadDuration
1107
1192
  });
1108
- logger2().info({
1193
+ logger3().info({
1109
1194
  msg: "engine binary downloaded",
1110
1195
  version,
1111
1196
  path: binaryPath
1112
1197
  });
1113
1198
  } catch (error) {
1114
1199
  clearTimeout(slowDownloadWarning);
1115
- logger2().warn({
1200
+ logger3().warn({
1116
1201
  msg: "engine download failed, please report this error",
1117
1202
  tempPath,
1118
1203
  error,
@@ -1120,7 +1205,7 @@ async function downloadEngineBinaryIfNeeded(binaryPath, version, varDir) {
1120
1205
  support: "https://rivet.dev/discord"
1121
1206
  });
1122
1207
  try {
1123
- const fs = _chunkMNS5LY6Mcjs.getNodeFs.call(void 0, );
1208
+ const fs = _chunk3B6PCYJBcjs.getNodeFs.call(void 0, );
1124
1209
  await fs.unlink(tempPath);
1125
1210
  } catch (unlinkError) {
1126
1211
  }
@@ -1162,7 +1247,7 @@ function resolveTargetTripletFor(platform, arch) {
1162
1247
  );
1163
1248
  }
1164
1249
  async function isEngineRunning() {
1165
- return await checkIfEngineAlreadyRunningOnPort(_chunkMNS5LY6Mcjs.ENGINE_PORT);
1250
+ return await checkIfEngineAlreadyRunningOnPort(_chunk3B6PCYJBcjs.ENGINE_PORT);
1166
1251
  }
1167
1252
  async function checkIfEngineAlreadyRunningOnPort(port) {
1168
1253
  let response;
@@ -1174,13 +1259,13 @@ async function checkIfEngineAlreadyRunningOnPort(port) {
1174
1259
  if (response.ok) {
1175
1260
  const health = await response.json();
1176
1261
  if (health.runtime === "engine") {
1177
- logger2().debug({
1262
+ logger3().debug({
1178
1263
  msg: "rivet engine already running on port",
1179
1264
  port
1180
1265
  });
1181
1266
  return true;
1182
1267
  } else if (health.runtime === "rivetkit") {
1183
- logger2().error({
1268
+ logger3().error({
1184
1269
  msg: "another rivetkit process is already running on port",
1185
1270
  port
1186
1271
  });
@@ -1197,7 +1282,7 @@ async function checkIfEngineAlreadyRunningOnPort(port) {
1197
1282
  }
1198
1283
  async function fileExists(filePath) {
1199
1284
  try {
1200
- const fs = _chunkMNS5LY6Mcjs.getNodeFs.call(void 0, );
1285
+ const fs = _chunk3B6PCYJBcjs.getNodeFs.call(void 0, );
1201
1286
  await fs.access(filePath);
1202
1287
  return true;
1203
1288
  } catch (e) {
@@ -1208,19 +1293,19 @@ var HEALTH_MAX_WAIT = 1e4;
1208
1293
  var HEALTH_INTERVAL = 100;
1209
1294
  async function waitForEngineHealth() {
1210
1295
  const maxRetries = Math.ceil(HEALTH_MAX_WAIT / HEALTH_INTERVAL);
1211
- logger2().debug({ msg: "waiting for engine health check" });
1296
+ logger3().debug({ msg: "waiting for engine health check" });
1212
1297
  for (let i = 0; i < maxRetries; i++) {
1213
1298
  try {
1214
- const response = await fetch(`${_chunkMNS5LY6Mcjs.ENGINE_ENDPOINT}/health`, {
1299
+ const response = await fetch(`${_chunk3B6PCYJBcjs.ENGINE_ENDPOINT}/health`, {
1215
1300
  signal: AbortSignal.timeout(1e3)
1216
1301
  });
1217
1302
  if (response.ok) {
1218
1303
  const health = await response.json();
1219
- logger2().debug({ msg: "engine health check passed" });
1304
+ logger3().debug({ msg: "engine health check passed" });
1220
1305
  return health;
1221
1306
  }
1222
1307
  } catch (error) {
1223
- logger2().debug({ msg: "engine health check failed", error });
1308
+ logger3().debug({ msg: "engine health check failed", error });
1224
1309
  if (i === maxRetries - 1) {
1225
1310
  throw new Error(
1226
1311
  `engine health check failed after ${maxRetries} retries: ${error}`
@@ -1228,7 +1313,7 @@ async function waitForEngineHealth() {
1228
1313
  }
1229
1314
  }
1230
1315
  if (i < maxRetries - 1) {
1231
- logger2().trace({
1316
+ logger3().trace({
1232
1317
  msg: "engine not ready, retrying",
1233
1318
  attempt: i + 1,
1234
1319
  maxRetries
@@ -1250,14 +1335,14 @@ function getInspectorUrl(config, managerPort) {
1250
1335
  }
1251
1336
 
1252
1337
  // src/serverless/log.ts
1253
- function logger3() {
1254
- return _chunkRMJJE43Bcjs.getLogger.call(void 0, "serverless");
1338
+ function logger4() {
1339
+ return _chunk4KSHPFXFcjs.getLogger.call(void 0, "serverless");
1255
1340
  }
1256
1341
 
1257
1342
  // src/serverless/configure.ts
1258
1343
 
1259
1344
  async function configureServerlessRunner(config) {
1260
- logger3().debug("configuring serverless runner");
1345
+ logger4().debug("configuring serverless runner");
1261
1346
  try {
1262
1347
  if (!config.namespace) {
1263
1348
  throw new Error(
@@ -1271,14 +1356,14 @@ async function configureServerlessRunner(config) {
1271
1356
  }
1272
1357
  const customConfig = config.serverless.configureRunnerPool;
1273
1358
  _invariant2.default.call(void 0, customConfig, "configureRunnerPool should exist");
1274
- const clientConfig = _chunkPZAV6PP2cjs.convertRegistryConfigToClientConfig.call(void 0, config);
1275
- logger3().debug({
1359
+ const clientConfig = _chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, config);
1360
+ logger4().debug({
1276
1361
  msg: "fetching datacenters",
1277
1362
  endpoint: config.endpoint
1278
1363
  });
1279
- const dcsRes = await _chunkPZAV6PP2cjs.getDatacenters.call(void 0, clientConfig);
1364
+ const dcsRes = await _chunkTEUL4UYNcjs.getDatacenters.call(void 0, clientConfig);
1280
1365
  const runnerName = _nullishCoalesce(customConfig.name, () => ( "default"));
1281
- logger3().debug({
1366
+ logger4().debug({
1282
1367
  msg: "configuring serverless runner",
1283
1368
  runnerName,
1284
1369
  namespace: config.namespace
@@ -1298,148 +1383,24 @@ async function configureServerlessRunner(config) {
1298
1383
  drain_on_version_upgrade: _nullishCoalesce(customConfig.drainOnVersionUpgrade, () => ( true)),
1299
1384
  metadataPollInterval: _nullishCoalesce(customConfig.metadataPollInterval, () => ( 1e3))
1300
1385
  };
1301
- await _chunkPZAV6PP2cjs.updateRunnerConfig.call(void 0, clientConfig, runnerName, {
1386
+ await _chunkTEUL4UYNcjs.updateRunnerConfig.call(void 0, clientConfig, runnerName, {
1302
1387
  datacenters: Object.fromEntries(
1303
1388
  dcsRes.datacenters.map((dc) => [dc.name, serverlessConfig])
1304
1389
  )
1305
1390
  });
1306
- logger3().info({
1391
+ logger4().info({
1307
1392
  msg: "serverless runner configured successfully",
1308
1393
  runnerName,
1309
1394
  namespace: config.namespace
1310
1395
  });
1311
1396
  } catch (error) {
1312
- logger3().error({
1397
+ logger4().error({
1313
1398
  msg: "failed to configure serverless runner, validate endpoint is configured correctly then restart this process",
1314
1399
  error
1315
1400
  });
1316
1401
  }
1317
1402
  }
1318
1403
 
1319
- // src/registry/log.ts
1320
- function logger4() {
1321
- return _chunkRMJJE43Bcjs.getLogger.call(void 0, "registry");
1322
- }
1323
-
1324
- // src/registry/serve.ts
1325
- var _getport = require('get-port'); var _getport2 = _interopRequireDefault(_getport);
1326
- var DEFAULT_PORT = 6420;
1327
- async function findFreePort(startPort = DEFAULT_PORT) {
1328
- function* portRange(start, count = 100) {
1329
- for (let i = 0; i < count; i++) {
1330
- yield start + i;
1331
- }
1332
- }
1333
- return _getport2.default.call(void 0, { port: portRange(startPort) });
1334
- }
1335
- async function crossPlatformServe(config, managerPort, app) {
1336
- const runtime = _chunkRMJJE43Bcjs.detectRuntime.call(void 0, );
1337
- logger4().debug({ msg: "detected runtime for serve", runtime });
1338
- switch (runtime) {
1339
- case "deno":
1340
- return serveDeno(config, managerPort, app);
1341
- case "bun":
1342
- return serveBun(config, managerPort, app);
1343
- case "node":
1344
- return serveNode(config, managerPort, app);
1345
- default:
1346
- return serveNode(config, managerPort, app);
1347
- }
1348
- }
1349
- async function serveNode(config, managerPort, app) {
1350
- const nodeServerModule = "@hono/node-server";
1351
- let serve;
1352
- try {
1353
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1354
- /* webpackIgnore: true */
1355
- nodeServerModule
1356
- )));
1357
- serve = dep.serve;
1358
- } catch (err) {
1359
- logger4().error({
1360
- msg: "failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'",
1361
- error: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
1362
- });
1363
- process.exit(1);
1364
- }
1365
- const nodeWsModule = "@hono/node-ws";
1366
- let createNodeWebSocket;
1367
- try {
1368
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1369
- /* webpackIgnore: true */
1370
- nodeWsModule
1371
- )));
1372
- createNodeWebSocket = dep.createNodeWebSocket;
1373
- } catch (err) {
1374
- logger4().error({
1375
- msg: "failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'",
1376
- error: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
1377
- });
1378
- process.exit(1);
1379
- }
1380
- const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({
1381
- app
1382
- });
1383
- const port = managerPort;
1384
- const hostname = config.managerHost;
1385
- const server = serve(
1386
- { fetch: app.fetch, port, hostname },
1387
- () => logger4().info({ msg: "server listening", port, hostname })
1388
- );
1389
- injectWebSocket(server);
1390
- return { upgradeWebSocket };
1391
- }
1392
- async function serveDeno(config, managerPort, app) {
1393
- const honoDenoModule = "hono/deno";
1394
- let upgradeWebSocket;
1395
- try {
1396
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1397
- /* webpackIgnore: true */
1398
- honoDenoModule
1399
- )));
1400
- upgradeWebSocket = dep.upgradeWebSocket;
1401
- } catch (err) {
1402
- logger4().error({
1403
- msg: "failed to import hono/deno",
1404
- error: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
1405
- });
1406
- process.exit(1);
1407
- }
1408
- const port = config.managerPort;
1409
- const hostname = config.managerHost;
1410
- Deno.serve({ port, hostname }, app.fetch);
1411
- logger4().info({ msg: "server listening", port, hostname });
1412
- return { upgradeWebSocket };
1413
- }
1414
- async function serveBun(config, managerPort, app) {
1415
- const honoBunModule = "hono/bun";
1416
- let createBunWebSocket;
1417
- try {
1418
- const dep = await Promise.resolve().then(() => _interopRequireWildcard(require(
1419
- /* webpackIgnore: true */
1420
- honoBunModule
1421
- )));
1422
- createBunWebSocket = dep.createBunWebSocket;
1423
- } catch (err) {
1424
- logger4().error({
1425
- msg: "failed to import hono/bun",
1426
- error: _chunkRMJJE43Bcjs.stringifyError.call(void 0, err)
1427
- });
1428
- process.exit(1);
1429
- }
1430
- const { websocket, upgradeWebSocket } = createBunWebSocket();
1431
- const port = config.managerPort;
1432
- const hostname = config.managerHost;
1433
- Bun.serve({
1434
- fetch: app.fetch,
1435
- port,
1436
- hostname,
1437
- websocket
1438
- });
1439
- logger4().info({ msg: "server listening", port, hostname });
1440
- return { upgradeWebSocket };
1441
- }
1442
-
1443
1404
  // src/serverless/router.ts
1444
1405
 
1445
1406
 
@@ -1463,7 +1424,7 @@ var ServerlessStartHeadersSchema = _v4.z.object({
1463
1424
 
1464
1425
  // src/serverless/router.ts
1465
1426
  function buildServerlessRouter(driverConfig, config) {
1466
- return _chunkMNS5LY6Mcjs.createRouter.call(void 0, config.serverless.basePath, (router) => {
1427
+ return _chunk3B6PCYJBcjs.createRouter.call(void 0, config.serverless.basePath, (router) => {
1467
1428
  router.get("/", (c) => {
1468
1429
  return c.text(
1469
1430
  "This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
@@ -1484,7 +1445,7 @@ function buildServerlessRouter(driverConfig, config) {
1484
1445
  );
1485
1446
  }
1486
1447
  const { endpoint, token, totalSlots, runnerName, namespace } = parseResult.data;
1487
- logger3().debug({
1448
+ logger4().debug({
1488
1449
  msg: "received serverless runner start request",
1489
1450
  endpoint,
1490
1451
  totalSlots,
@@ -1512,10 +1473,10 @@ function buildServerlessRouter(driverConfig, config) {
1512
1473
  runnerKey: void 0
1513
1474
  }
1514
1475
  };
1515
- const managerDriver = new (0, _chunkPZAV6PP2cjs.RemoteManagerDriver)(
1516
- _chunkPZAV6PP2cjs.convertRegistryConfigToClientConfig.call(void 0, newConfig)
1476
+ const managerDriver = new (0, _chunkTEUL4UYNcjs.RemoteManagerDriver)(
1477
+ _chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, newConfig)
1517
1478
  );
1518
- const client = _chunkPZAV6PP2cjs.createClientWithDriver.call(void 0, managerDriver);
1479
+ const client = _chunkTEUL4UYNcjs.createClientWithDriver.call(void 0, managerDriver);
1519
1480
  const actorDriver = driverConfig.actor(
1520
1481
  newConfig,
1521
1482
  managerDriver,
@@ -1527,10 +1488,10 @@ function buildServerlessRouter(driverConfig, config) {
1527
1488
  );
1528
1489
  return await actorDriver.serverlessHandleStart(c);
1529
1490
  });
1530
- router.get("/health", (c) => _chunkMNS5LY6Mcjs.handleHealthRequest.call(void 0, c));
1491
+ router.get("/health", (c) => _chunk3B6PCYJBcjs.handleHealthRequest.call(void 0, c));
1531
1492
  router.get(
1532
1493
  "/metadata",
1533
- (c) => _chunkMNS5LY6Mcjs.handleMetadataRequest.call(void 0,
1494
+ (c) => _chunk3B6PCYJBcjs.handleMetadataRequest.call(void 0,
1534
1495
  c,
1535
1496
  config,
1536
1497
  { serverless: {} },
@@ -1612,12 +1573,12 @@ var Runtime = class _Runtime {
1612
1573
  }
1613
1574
  static async create(registry) {
1614
1575
  var _a, _b, _c;
1615
- logger4().info("rivetkit starting");
1576
+ _chunk3B6PCYJBcjs.logger.call(void 0, ).info("rivetkit starting");
1616
1577
  const config = registry.parseConfig();
1617
1578
  if ((_a = config.logging) == null ? void 0 : _a.baseLogger) {
1618
- _chunkRMJJE43Bcjs.configureBaseLogger.call(void 0, config.logging.baseLogger);
1579
+ _chunk4KSHPFXFcjs.configureBaseLogger.call(void 0, config.logging.baseLogger);
1619
1580
  } else {
1620
- _chunkRMJJE43Bcjs.configureDefaultLogger.call(void 0, (_b = config.logging) == null ? void 0 : _b.level);
1581
+ _chunk4KSHPFXFcjs.configureDefaultLogger.call(void 0, (_b = config.logging) == null ? void 0 : _b.level);
1621
1582
  }
1622
1583
  _invariant2.default.call(void 0,
1623
1584
  !(config.serverless.spawnEngine && config.serveManager),
@@ -1627,8 +1588,8 @@ var Runtime = class _Runtime {
1627
1588
  const managerDriver = driver.manager(config);
1628
1589
  let managerPort;
1629
1590
  if (config.serverless.spawnEngine) {
1630
- managerPort = _chunkMNS5LY6Mcjs.ENGINE_PORT;
1631
- logger4().debug({
1591
+ managerPort = _chunk3B6PCYJBcjs.ENGINE_PORT;
1592
+ _chunk3B6PCYJBcjs.logger.call(void 0, ).debug({
1632
1593
  msg: "spawning engine",
1633
1594
  version: config.serverless.engineVersion
1634
1595
  });
@@ -1637,16 +1598,18 @@ var Runtime = class _Runtime {
1637
1598
  });
1638
1599
  } else if (config.serveManager) {
1639
1600
  const configuredManagerPort = config.managerPort;
1601
+ const serveRuntime = _chunk4KSHPFXFcjs.detectRuntime.call(void 0, );
1640
1602
  let upgradeWebSocket;
1641
1603
  const getUpgradeWebSocket = () => upgradeWebSocket;
1642
1604
  managerDriver.setGetUpgradeWebSocket(getUpgradeWebSocket);
1643
- const { router: managerRouter } = _chunkMNS5LY6Mcjs.buildManagerRouter.call(void 0,
1605
+ const { router: managerRouter } = _chunk3B6PCYJBcjs.buildManagerRouter.call(void 0,
1644
1606
  config,
1645
1607
  managerDriver,
1646
- getUpgradeWebSocket
1608
+ getUpgradeWebSocket,
1609
+ serveRuntime
1647
1610
  );
1648
- managerPort = await findFreePort(config.managerPort);
1649
- logger4().debug({
1611
+ managerPort = await _chunk3B6PCYJBcjs.findFreePort.call(void 0, config.managerPort);
1612
+ _chunk3B6PCYJBcjs.logger.call(void 0, ).debug({
1650
1613
  msg: "serving manager",
1651
1614
  port: managerPort
1652
1615
  });
@@ -1655,10 +1618,11 @@ var Runtime = class _Runtime {
1655
1618
  config.serverless.publicEndpoint = config.publicEndpoint;
1656
1619
  }
1657
1620
  config.managerPort = managerPort;
1658
- const out = await crossPlatformServe(
1621
+ const out = await _chunk3B6PCYJBcjs.crossPlatformServe.call(void 0,
1659
1622
  config,
1660
1623
  managerPort,
1661
- managerRouter
1624
+ managerRouter,
1625
+ serveRuntime
1662
1626
  );
1663
1627
  upgradeWebSocket = out.upgradeWebSocket;
1664
1628
  }
@@ -1670,7 +1634,7 @@ var Runtime = class _Runtime {
1670
1634
  managerPort
1671
1635
  );
1672
1636
  const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
1673
- logger4().info({
1637
+ _chunk3B6PCYJBcjs.logger.call(void 0, ).info({
1674
1638
  msg: "rivetkit ready",
1675
1639
  driver: driver.name,
1676
1640
  definitions: Object.keys(config.use).length,
@@ -1696,8 +1660,8 @@ var Runtime = class _Runtime {
1696
1660
  _invariant2.default.call(void 0, !this.#startKind, "Runtime already started as serverless");
1697
1661
  this.#startKind = "runner";
1698
1662
  if (this.#config.runner && this.#driver.autoStartActorDriver) {
1699
- logger4().debug("starting actor driver");
1700
- const inlineClient = _chunkPZAV6PP2cjs.createClientWithDriver.call(void 0,
1663
+ _chunk3B6PCYJBcjs.logger.call(void 0, ).debug("starting actor driver");
1664
+ const inlineClient = _chunkTEUL4UYNcjs.createClientWithDriver.call(void 0,
1701
1665
  this.#managerDriver
1702
1666
  );
1703
1667
  this.#driver.actor(this.#config, this.#managerDriver, inlineClient);
@@ -1709,7 +1673,7 @@ var Runtime = class _Runtime {
1709
1673
  const inspectorUrl = this.managerPort ? getInspectorUrl(this.#config, this.managerPort) : void 0;
1710
1674
  console.log();
1711
1675
  console.log(
1712
- ` RivetKit ${_chunkRMJJE43Bcjs.package_default.version} (${this.#driver.displayName} - ${this.#startKind === "serverless" ? "Serverless" : "Runner"})`
1676
+ ` RivetKit ${_chunk4KSHPFXFcjs.package_default.version} (${this.#driver.displayName} - ${this.#startKind === "serverless" ? "Serverless" : "Runner"})`
1713
1677
  );
1714
1678
  if (this.#config.namespace !== "default") {
1715
1679
  logLine("Namespace", this.#config.namespace);
@@ -1750,14 +1714,14 @@ var Registry = class {
1750
1714
  return this.#config;
1751
1715
  }
1752
1716
  parseConfig() {
1753
- return _chunkMNS5LY6Mcjs.RegistryConfigSchema.parse(this.#config);
1717
+ return _chunk3B6PCYJBcjs.RegistryConfigSchema.parse(this.#config);
1754
1718
  }
1755
1719
  // Shared runtime instance
1756
1720
  #runtime;
1757
1721
  #runtimePromise;
1758
1722
  constructor(config) {
1759
1723
  this.#config = config;
1760
- if (_chunkRMJJE43Bcjs.getNodeEnv.call(void 0, ) !== "test") {
1724
+ if (_chunk4KSHPFXFcjs.getNodeEnv.call(void 0, ) !== "test") {
1761
1725
  setTimeout(() => {
1762
1726
  this.#ensureRuntime();
1763
1727
  }, 0);
@@ -1818,7 +1782,7 @@ var Registry = class {
1818
1782
  "autoConfigureServerless can only be configured when runnerKind is 'serverless'"
1819
1783
  );
1820
1784
  }
1821
- const isDevEnv = _chunkRMJJE43Bcjs.isDev.call(void 0, );
1785
+ const isDevEnv = _chunk4KSHPFXFcjs.isDev.call(void 0, );
1822
1786
  if (isDevEnv && config.runnerKind === "serverless") {
1823
1787
  if ((inputConfig == null ? void 0 : inputConfig.runEngine) === void 0) config.runEngine = true;
1824
1788
  if ((inputConfig == null ? void 0 : inputConfig.autoConfigureServerless) === void 0)
@@ -1831,7 +1795,7 @@ var Registry = class {
1831
1795
  }
1832
1796
  }
1833
1797
  #legacyStartServerless(config, _inputConfig) {
1834
- const client = _chunkPZAV6PP2cjs.createClient.call(void 0, {
1798
+ const client = _chunkTEUL4UYNcjs.createClient.call(void 0, {
1835
1799
  endpoint: config.endpoint,
1836
1800
  token: config.token,
1837
1801
  namespace: config.namespace,
@@ -1844,7 +1808,7 @@ var Registry = class {
1844
1808
  }
1845
1809
  #legacyStartNormal(config) {
1846
1810
  this.#ensureRuntime().then((runtime) => runtime.startRunner());
1847
- const client = _chunkPZAV6PP2cjs.createClient.call(void 0, {
1811
+ const client = _chunkTEUL4UYNcjs.createClient.call(void 0, {
1848
1812
  endpoint: config.endpoint,
1849
1813
  token: config.token,
1850
1814
  namespace: config.namespace,
@@ -1868,4 +1832,4 @@ function setup(input) {
1868
1832
 
1869
1833
 
1870
1834
  exports.actor = actor; exports.event = event2; exports.queue = queue2; exports.createEngineDriver = createEngineDriver; exports.Registry = Registry; exports.setup = setup;
1871
- //# sourceMappingURL=chunk-772NPMTY.cjs.map
1835
+ //# sourceMappingURL=chunk-HKOSZKKZ.cjs.map