rivetkit 2.1.3 → 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.
- package/dist/browser/client.d.ts +11 -0
- package/dist/browser/client.js +1 -1
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +1 -1
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/inspector.tar.gz +0 -0
- package/dist/tsup/{chunk-R64EFI6F.cjs → chunk-3B6PCYJB.cjs} +280 -115
- package/dist/tsup/chunk-3B6PCYJB.cjs.map +1 -0
- package/dist/tsup/{chunk-6LHZQSWJ.js → chunk-3GTO6H3E.js} +8 -4
- package/dist/tsup/chunk-3GTO6H3E.js.map +1 -0
- package/dist/tsup/{chunk-ZSJ2OTY4.cjs → chunk-4KSHPFXF.cjs} +2 -2
- package/dist/tsup/{chunk-ZSJ2OTY4.cjs.map → chunk-4KSHPFXF.cjs.map} +1 -1
- package/dist/tsup/{chunk-OAOF23ZY.js → chunk-5UEFNG7P.js} +2 -2
- package/dist/tsup/{chunk-MAXIXG56.js → chunk-ANKZ2FS6.js} +2 -4
- package/dist/tsup/chunk-ANKZ2FS6.js.map +1 -0
- package/dist/tsup/{chunk-DADGS67O.cjs → chunk-AQD4CBZ2.cjs} +4 -4
- package/dist/tsup/{chunk-DADGS67O.cjs.map → chunk-AQD4CBZ2.cjs.map} +1 -1
- package/dist/tsup/{chunk-YET3IZD6.js → chunk-DZXDUGLL.js} +2 -2
- package/dist/tsup/{chunk-YET3IZD6.js.map → chunk-DZXDUGLL.js.map} +1 -1
- package/dist/tsup/{chunk-5AZ6UPEF.cjs → chunk-GXRVSSVD.cjs} +24 -20
- package/dist/tsup/chunk-GXRVSSVD.cjs.map +1 -0
- package/dist/tsup/{chunk-IJAGZS57.cjs → chunk-H5TSEPN4.cjs} +30 -30
- package/dist/tsup/{chunk-IJAGZS57.cjs.map → chunk-H5TSEPN4.cjs.map} +1 -1
- package/dist/tsup/{chunk-POUBQA6Z.js → chunk-HBYEYBIC.js} +2 -2
- package/dist/tsup/{chunk-BMNB6YRQ.cjs → chunk-HKOSZKKZ.cjs} +212 -305
- package/dist/tsup/chunk-HKOSZKKZ.cjs.map +1 -0
- package/dist/tsup/{chunk-N7ASEZ2Y.js → chunk-I6PL6QIY.js} +5 -5
- package/dist/tsup/{chunk-GNGRMP5E.js → chunk-KTWY3K6Z.js} +18 -11
- package/dist/tsup/chunk-KTWY3K6Z.js.map +1 -0
- package/dist/tsup/{chunk-KSZZRTOD.cjs → chunk-LK36OGGO.cjs} +3 -5
- package/dist/tsup/chunk-LK36OGGO.cjs.map +1 -0
- package/dist/tsup/{chunk-YLDDENCZ.js → chunk-M6H4XIF4.js} +126 -219
- package/dist/tsup/chunk-M6H4XIF4.js.map +1 -0
- package/dist/tsup/{chunk-U6VWVHVW.cjs → chunk-QPADHLDU.cjs} +3 -3
- package/dist/tsup/{chunk-U6VWVHVW.cjs.map → chunk-QPADHLDU.cjs.map} +1 -1
- package/dist/tsup/{chunk-6T3WSP5M.js → chunk-TEFYRRAK.js} +4 -4
- package/dist/tsup/{chunk-HPAX7L72.cjs → chunk-TEUL4UYN.cjs} +152 -152
- package/dist/tsup/{chunk-HPAX7L72.cjs.map → chunk-TEUL4UYN.cjs.map} +1 -1
- package/dist/tsup/{chunk-QUDLEWGD.js → chunk-UDMRZR6A.js} +212 -47
- package/dist/tsup/chunk-UDMRZR6A.js.map +1 -0
- package/dist/tsup/{chunk-T6MM5RTW.cjs → chunk-UWAGLDT6.cjs} +250 -243
- package/dist/tsup/chunk-UWAGLDT6.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +6 -6
- package/dist/tsup/client/mod.d.cts +2 -2
- package/dist/tsup/client/mod.d.ts +2 -2
- package/dist/tsup/client/mod.js +5 -5
- package/dist/tsup/common/log.cjs +2 -2
- package/dist/tsup/common/log.js +1 -1
- package/dist/tsup/common/websocket.cjs +3 -3
- package/dist/tsup/common/websocket.js +2 -2
- package/dist/tsup/{config-P3XujgRr.d.ts → config-Qj-zLJPc.d.ts} +11 -0
- package/dist/tsup/{config-_gfywqqI.d.cts → config-iPj5l1bL.d.cts} +11 -0
- package/dist/tsup/{context-uNA4TRn3.d.ts → context-CQCMuHND.d.ts} +1 -1
- package/dist/tsup/{context-Bxd8Cx4H.d.cts → context-DzvH1PBK.d.cts} +1 -1
- package/dist/tsup/{driver-CPGHKXyh.d.ts → driver-Jo8v-kbU.d.ts} +1 -1
- package/dist/tsup/driver-helpers/mod.cjs +4 -4
- package/dist/tsup/driver-helpers/mod.d.cts +4 -4
- package/dist/tsup/driver-helpers/mod.d.ts +4 -4
- package/dist/tsup/driver-helpers/mod.js +3 -3
- package/dist/tsup/{driver-BcLvZcKl.d.cts → driver-iV8J-WMv.d.cts} +1 -1
- package/dist/tsup/driver-test-suite/mod.cjs +196 -60
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +2 -2
- package/dist/tsup/driver-test-suite/mod.d.ts +2 -2
- package/dist/tsup/driver-test-suite/mod.js +971 -835
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +3 -3
- package/dist/tsup/inspector/mod.js +2 -2
- package/dist/tsup/mod.cjs +8 -8
- package/dist/tsup/mod.d.cts +5 -5
- package/dist/tsup/mod.d.ts +5 -5
- package/dist/tsup/mod.js +7 -7
- package/dist/tsup/serve-test-suite/mod.cjs +182 -100
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/serve-test-suite/mod.js +93 -11
- package/dist/tsup/serve-test-suite/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +10 -10
- package/dist/tsup/test/mod.d.cts +1 -1
- package/dist/tsup/test/mod.d.ts +1 -1
- package/dist/tsup/test/mod.js +6 -6
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.js +1 -1
- package/dist/tsup/workflow/mod.cjs +5 -5
- package/dist/tsup/workflow/mod.d.cts +3 -3
- package/dist/tsup/workflow/mod.d.ts +3 -3
- package/dist/tsup/workflow/mod.js +4 -4
- package/package.json +5 -5
- package/src/actor/config.ts +0 -2
- package/src/actor/instance/mod.ts +17 -4
- package/src/actor/router.ts +9 -6
- package/src/driver-test-suite/mod.ts +3 -0
- package/src/driver-test-suite/tests/actor-driver.ts +4 -0
- package/src/driver-test-suite/tests/actor-lifecycle.ts +157 -0
- package/src/driver-test-suite/tests/conn-error-serialization.ts +64 -0
- package/src/drivers/engine/actor-driver.ts +47 -15
- package/src/manager/router.ts +20 -6
- package/src/{registry → utils}/serve.ts +38 -4
- package/src/workflow/context.ts +4 -0
- package/dist/tsup/chunk-5AZ6UPEF.cjs.map +0 -1
- package/dist/tsup/chunk-6LHZQSWJ.js.map +0 -1
- package/dist/tsup/chunk-BMNB6YRQ.cjs.map +0 -1
- package/dist/tsup/chunk-GNGRMP5E.js.map +0 -1
- package/dist/tsup/chunk-KSZZRTOD.cjs.map +0 -1
- package/dist/tsup/chunk-MAXIXG56.js.map +0 -1
- package/dist/tsup/chunk-QUDLEWGD.js.map +0 -1
- package/dist/tsup/chunk-R64EFI6F.cjs.map +0 -1
- package/dist/tsup/chunk-T6MM5RTW.cjs.map +0 -1
- package/dist/tsup/chunk-YLDDENCZ.js.map +0 -1
- /package/dist/tsup/{chunk-OAOF23ZY.js.map → chunk-5UEFNG7P.js.map} +0 -0
- /package/dist/tsup/{chunk-POUBQA6Z.js.map → chunk-HBYEYBIC.js.map} +0 -0
- /package/dist/tsup/{chunk-N7ASEZ2Y.js.map → chunk-I6PL6QIY.js.map} +0 -0
- /package/dist/tsup/{chunk-6T3WSP5M.js.map → chunk-TEFYRRAK.js.map} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkUWAGLDT6cjs = require('./chunk-UWAGLDT6.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
|
|
19
|
+
var _chunkTEUL4UYNcjs = require('./chunk-TEUL4UYN.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 _chunk3B6PCYJBcjs = require('./chunk-3B6PCYJB.cjs');
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
var _chunkKSZZRTODcjs = require('./chunk-KSZZRTOD.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 _chunkKSZZRTODcjs = require('./chunk-KSZZRTOD.cjs');
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
|
|
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 =
|
|
85
|
-
return new (0,
|
|
87
|
+
const config = _chunkLK36OGGOcjs.ActorConfigSchema.parse(input);
|
|
88
|
+
return new (0, _chunkUWAGLDT6cjs.ActorDefinition)(config);
|
|
86
89
|
}
|
|
87
|
-
var event2 =
|
|
88
|
-
var queue2 =
|
|
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,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
|
|
99
|
-
return
|
|
101
|
+
function logger2() {
|
|
102
|
+
return _chunk4KSHPFXFcjs.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 =
|
|
115
|
-
#runnerStopped =
|
|
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 }));
|
|
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 =
|
|
142
|
+
this.#actorRouter = _chunkUWAGLDT6cjs.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:
|
|
150
|
+
endpoint: _chunkTEUL4UYNcjs.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:
|
|
157
|
+
rivetkit: { version: _chunk4KSHPFXFcjs.VERSION }
|
|
155
158
|
},
|
|
156
|
-
prepopulateActorNames:
|
|
159
|
+
prepopulateActorNames: _chunk3B6PCYJBcjs.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:
|
|
176
|
+
logger: _chunk4KSHPFXFcjs.getLogger.call(void 0, "engine-runner")
|
|
174
177
|
};
|
|
175
178
|
this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
|
|
176
179
|
this.#runner.start();
|
|
177
|
-
|
|
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
|
-
|
|
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 =
|
|
215
|
+
handler.alarmTimeout = _chunk4KSHPFXFcjs.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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
276
|
-
|
|
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:
|
|
291
|
+
error: _chunk4KSHPFXFcjs.stringifyError.call(void 0, err)
|
|
289
292
|
});
|
|
290
293
|
})
|
|
291
294
|
);
|
|
292
295
|
}
|
|
293
296
|
}
|
|
294
297
|
await Promise.all(stopPromises);
|
|
295
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
339
|
+
logger2().debug({
|
|
337
340
|
msg: "runner is stopped"
|
|
338
341
|
});
|
|
339
342
|
break;
|
|
340
343
|
}
|
|
341
344
|
if (stream.closed || stream.aborted) {
|
|
342
|
-
|
|
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
|
-
|
|
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:
|
|
374
|
+
actorStartPromise: _chunk4KSHPFXFcjs.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 =
|
|
381
|
+
const key = _chunk3B6PCYJBcjs.deserializeActorKey.call(void 0, actorConfig.key);
|
|
379
382
|
try {
|
|
380
383
|
const [persistDataBuffer] = await this.#runner.kvGet(actorId, [
|
|
381
|
-
|
|
384
|
+
_chunkLK36OGGOcjs.KEYS.PERSIST_DATA
|
|
382
385
|
]);
|
|
383
386
|
if (persistDataBuffer === null) {
|
|
384
|
-
const initialKvState =
|
|
387
|
+
const initialKvState = _chunk3B6PCYJBcjs.getInitialActorKvState.call(void 0, input);
|
|
385
388
|
await this.#runner.kvPut(actorId, initialKvState);
|
|
386
|
-
|
|
389
|
+
logger2().debug({
|
|
387
390
|
msg: "initialized persist data for new actor",
|
|
388
391
|
actorId
|
|
389
392
|
});
|
|
390
393
|
} else {
|
|
391
|
-
|
|
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 =
|
|
400
|
+
const definition = _chunkUWAGLDT6cjs.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
|
-
|
|
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
|
-
|
|
436
|
+
logger2().error({
|
|
419
437
|
msg: "runner actor failed to start",
|
|
420
438
|
actorId,
|
|
421
439
|
name,
|
|
422
440
|
key,
|
|
423
|
-
err:
|
|
441
|
+
err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, error)
|
|
424
442
|
});
|
|
425
443
|
try {
|
|
426
444
|
this.#runner.stopActor(actorId);
|
|
427
445
|
} catch (stopError) {
|
|
428
|
-
|
|
446
|
+
logger2().debug({
|
|
429
447
|
msg: "failed to stop actor after start failure",
|
|
430
448
|
actorId,
|
|
431
|
-
err:
|
|
449
|
+
err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, stopError)
|
|
432
450
|
});
|
|
433
451
|
}
|
|
434
452
|
}
|
|
435
453
|
}
|
|
436
454
|
async #runnerOnActorStop(actorId, generation) {
|
|
437
|
-
|
|
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
|
|
442
|
-
|
|
443
|
-
|
|
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
|
|
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) {
|
|
448
476
|
try {
|
|
449
477
|
await handler.actor.onStop(reason);
|
|
450
478
|
} catch (err) {
|
|
451
|
-
|
|
479
|
+
logger2().error({
|
|
452
480
|
msg: "error in onStop, proceeding with removing actor",
|
|
453
|
-
err:
|
|
481
|
+
err: _chunk4KSHPFXFcjs.stringifyError.call(void 0, err)
|
|
454
482
|
});
|
|
455
483
|
}
|
|
456
484
|
}
|
|
457
|
-
|
|
458
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 } =
|
|
514
|
+
const { encoding, connParams } = _chunk3B6PCYJBcjs.parseWebSocketProtocols.call(void 0, protocols);
|
|
487
515
|
let wsHandler;
|
|
488
516
|
try {
|
|
489
|
-
wsHandler = await
|
|
517
|
+
wsHandler = await _chunk3B6PCYJBcjs.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
|
-
|
|
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[
|
|
513
|
-
|
|
540
|
+
const connStateManager = conn == null ? void 0 : conn[_chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
600
|
+
const messageLength = _chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
660
|
+
logger2().warn({
|
|
633
661
|
msg: "actor not found in #hwsCanHibernate",
|
|
634
662
|
actorId
|
|
635
663
|
});
|
|
636
664
|
return false;
|
|
637
665
|
}
|
|
638
|
-
|
|
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 ===
|
|
671
|
+
if (path === _chunk3B6PCYJBcjs.PATH_CONNECT) {
|
|
644
672
|
return true;
|
|
645
|
-
} else if (path ===
|
|
646
|
-
const definition =
|
|
673
|
+
} else if (path === _chunk3B6PCYJBcjs.PATH_WEBSOCKET_BASE || path.startsWith(_chunk3B6PCYJBcjs.PATH_WEBSOCKET_PREFIX)) {
|
|
674
|
+
const definition = _chunkUWAGLDT6cjs.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 =
|
|
683
|
+
const newPath = _chunk3B6PCYJBcjs.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
|
-
|
|
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 ===
|
|
702
|
+
} else if (path === _chunk3B6PCYJBcjs.PATH_INSPECTOR_CONNECT) {
|
|
675
703
|
return false;
|
|
676
704
|
} else {
|
|
677
|
-
|
|
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[
|
|
715
|
+
const connStateManager = conn[_chunk3B6PCYJBcjs.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[
|
|
739
|
+
const hibernatable = conn[_chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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[
|
|
761
|
+
const stateManager = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
|
|
734
762
|
const hibernatable = stateManager.hibernatableDataOrError();
|
|
735
763
|
const entry = this.#hwsMessageIndex.get(conn.id);
|
|
736
764
|
if (!entry) {
|
|
737
|
-
|
|
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[
|
|
775
|
+
const stateManager = conn[_chunk3B6PCYJBcjs.CONN_STATE_MANAGER_SYMBOL];
|
|
748
776
|
const hibernatable = stateManager.hibernatableDataOrError();
|
|
749
777
|
const entry = this.#hwsMessageIndex.get(conn.id);
|
|
750
778
|
if (!entry) {
|
|
751
|
-
|
|
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 =
|
|
800
|
+
var EngineConfigSchemaBase = _chunkTEUL4UYNcjs.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, () => (
|
|
802
|
+
runnerKey: _v4.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunk4KSHPFXFcjs.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
|
-
...
|
|
814
|
+
..._chunkTEUL4UYNcjs.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 =
|
|
798
|
-
return new (0,
|
|
825
|
+
const clientConfig = _chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, config);
|
|
826
|
+
return new (0, _chunkTEUL4UYNcjs.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:
|
|
854
|
+
inspector: _chunk3B6PCYJBcjs.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(() =>
|
|
860
|
+
runEngine: _v4.z.boolean().optional().default(() => _chunk4KSHPFXFcjs.getRivetRunEngine.call(void 0, )),
|
|
833
861
|
/** @experimental */
|
|
834
|
-
runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(
|
|
862
|
+
runEngineVersion: _v4.z.string().optional().default(() => _nullishCoalesce(_chunk4KSHPFXFcjs.getRivetRunEngineVersion.call(void 0, ), () => ( _chunk4KSHPFXFcjs.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
|
-
() =>
|
|
874
|
+
() => _chunk4KSHPFXFcjs.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:
|
|
896
|
+
level: _chunk4KSHPFXFcjs.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 ||
|
|
924
|
+
token: _v4.z.string().optional().transform((v) => v || _chunk4KSHPFXFcjs.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
|
-
|
|
948
|
+
_chunkLK36OGGOcjs.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
|
-
|
|
954
|
+
_chunkLK36OGGOcjs.loggerWithoutContext.call(void 0, ).debug({
|
|
927
955
|
msg: "using default file system driver",
|
|
928
956
|
storagePath: config.storagePath
|
|
929
957
|
});
|
|
930
|
-
return
|
|
958
|
+
return _chunkUWAGLDT6cjs.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
|
|
937
|
-
return
|
|
964
|
+
function logger3() {
|
|
965
|
+
return _chunk4KSHPFXFcjs.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
|
-
|
|
945
|
-
|
|
972
|
+
_chunk3B6PCYJBcjs.importNodeDependencies.call(void 0, );
|
|
973
|
+
logger3().debug({
|
|
946
974
|
msg: "ensuring engine process",
|
|
947
975
|
version: options.version
|
|
948
976
|
});
|
|
949
|
-
const path =
|
|
950
|
-
const storageRoot =
|
|
977
|
+
const path = _chunk3B6PCYJBcjs.getNodePath.call(void 0, );
|
|
978
|
+
const storageRoot = _chunkUWAGLDT6cjs.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
|
|
955
|
-
await
|
|
956
|
-
await
|
|
982
|
+
await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, binDir);
|
|
983
|
+
await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, varDir);
|
|
984
|
+
await _chunkUWAGLDT6cjs.ensureDirectoryExists.call(void 0, logsDir);
|
|
957
985
|
if (await isEngineRunning()) {
|
|
958
986
|
try {
|
|
959
987
|
const health = await waitForEngineHealth();
|
|
960
|
-
|
|
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
|
-
|
|
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 =
|
|
1009
|
+
const fsSync = _chunk3B6PCYJBcjs.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
|
-
|
|
1016
|
+
logger3().debug({
|
|
989
1017
|
msg: "creating engine log files",
|
|
990
1018
|
stdout: stdoutLogPath,
|
|
991
1019
|
stderr: stderrLogPath
|
|
992
1020
|
});
|
|
993
|
-
const childProcess =
|
|
1021
|
+
const childProcess = _chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
1157
|
+
const crypto2 = _chunk3B6PCYJBcjs.getNodeCrypto.call(void 0, );
|
|
1130
1158
|
const tempPath = `${binaryPath}.${crypto2.randomUUID()}.tmp`;
|
|
1131
1159
|
const startTime = Date.now();
|
|
1132
|
-
|
|
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
|
-
|
|
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 =
|
|
1145
|
-
const fsSync =
|
|
1172
|
+
const stream = _chunk3B6PCYJBcjs.getNodeStream.call(void 0, );
|
|
1173
|
+
const fsSync = _chunk3B6PCYJBcjs.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 =
|
|
1179
|
+
const fs = _chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
1208
|
+
const fs = _chunk3B6PCYJBcjs.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(
|
|
1250
|
+
return await checkIfEngineAlreadyRunningOnPort(_chunk3B6PCYJBcjs.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
|
-
|
|
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
|
-
|
|
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 =
|
|
1285
|
+
const fs = _chunk3B6PCYJBcjs.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
|
-
|
|
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(`${
|
|
1299
|
+
const response = await fetch(`${_chunk3B6PCYJBcjs.ENGINE_ENDPOINT}/health`, {
|
|
1272
1300
|
signal: AbortSignal.timeout(1e3)
|
|
1273
1301
|
});
|
|
1274
1302
|
if (response.ok) {
|
|
1275
1303
|
const health = await response.json();
|
|
1276
|
-
|
|
1304
|
+
logger3().debug({ msg: "engine health check passed" });
|
|
1277
1305
|
return health;
|
|
1278
1306
|
}
|
|
1279
1307
|
} catch (error) {
|
|
1280
|
-
|
|
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
|
-
|
|
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
|
|
1311
|
-
return
|
|
1338
|
+
function logger4() {
|
|
1339
|
+
return _chunk4KSHPFXFcjs.getLogger.call(void 0, "serverless");
|
|
1312
1340
|
}
|
|
1313
1341
|
|
|
1314
1342
|
// src/serverless/configure.ts
|
|
1315
1343
|
|
|
1316
1344
|
async function configureServerlessRunner(config) {
|
|
1317
|
-
|
|
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 =
|
|
1332
|
-
|
|
1359
|
+
const clientConfig = _chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, config);
|
|
1360
|
+
logger4().debug({
|
|
1333
1361
|
msg: "fetching datacenters",
|
|
1334
1362
|
endpoint: config.endpoint
|
|
1335
1363
|
});
|
|
1336
|
-
const dcsRes = await
|
|
1364
|
+
const dcsRes = await _chunkTEUL4UYNcjs.getDatacenters.call(void 0, clientConfig);
|
|
1337
1365
|
const runnerName = _nullishCoalesce(customConfig.name, () => ( "default"));
|
|
1338
|
-
|
|
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
|
|
1386
|
+
await _chunkTEUL4UYNcjs.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
|
-
|
|
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
|
-
|
|
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
|
|
1427
|
+
return _chunk3B6PCYJBcjs.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
|
-
|
|
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,
|
|
1573
|
-
|
|
1476
|
+
const managerDriver = new (0, _chunkTEUL4UYNcjs.RemoteManagerDriver)(
|
|
1477
|
+
_chunkTEUL4UYNcjs.convertRegistryConfigToClientConfig.call(void 0, newConfig)
|
|
1574
1478
|
);
|
|
1575
|
-
const client =
|
|
1479
|
+
const client = _chunkTEUL4UYNcjs.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) =>
|
|
1491
|
+
router.get("/health", (c) => _chunk3B6PCYJBcjs.handleHealthRequest.call(void 0, c));
|
|
1588
1492
|
router.get(
|
|
1589
1493
|
"/metadata",
|
|
1590
|
-
(c) =>
|
|
1494
|
+
(c) => _chunk3B6PCYJBcjs.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
|
-
|
|
1576
|
+
_chunk3B6PCYJBcjs.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
|
-
|
|
1579
|
+
_chunk4KSHPFXFcjs.configureBaseLogger.call(void 0, config.logging.baseLogger);
|
|
1676
1580
|
} else {
|
|
1677
|
-
|
|
1581
|
+
_chunk4KSHPFXFcjs.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 =
|
|
1688
|
-
|
|
1591
|
+
managerPort = _chunk3B6PCYJBcjs.ENGINE_PORT;
|
|
1592
|
+
_chunk3B6PCYJBcjs.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 = _chunk4KSHPFXFcjs.detectRuntime.call(void 0, );
|
|
1697
1602
|
let upgradeWebSocket;
|
|
1698
1603
|
const getUpgradeWebSocket = () => upgradeWebSocket;
|
|
1699
1604
|
managerDriver.setGetUpgradeWebSocket(getUpgradeWebSocket);
|
|
1700
|
-
const { router: managerRouter } =
|
|
1605
|
+
const { router: managerRouter } = _chunk3B6PCYJBcjs.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
|
-
|
|
1611
|
+
managerPort = await _chunk3B6PCYJBcjs.findFreePort.call(void 0, config.managerPort);
|
|
1612
|
+
_chunk3B6PCYJBcjs.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 _chunk3B6PCYJBcjs.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
|
-
|
|
1637
|
+
_chunk3B6PCYJBcjs.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
|
-
|
|
1757
|
-
const inlineClient =
|
|
1663
|
+
_chunk3B6PCYJBcjs.logger.call(void 0, ).debug("starting actor driver");
|
|
1664
|
+
const inlineClient = _chunkTEUL4UYNcjs.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 ${
|
|
1676
|
+
` RivetKit ${_chunk4KSHPFXFcjs.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
|
|
1717
|
+
return _chunk3B6PCYJBcjs.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 (
|
|
1724
|
+
if (_chunk4KSHPFXFcjs.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 =
|
|
1785
|
+
const isDevEnv = _chunk4KSHPFXFcjs.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 =
|
|
1798
|
+
const client = _chunkTEUL4UYNcjs.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 =
|
|
1811
|
+
const client = _chunkTEUL4UYNcjs.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-
|
|
1835
|
+
//# sourceMappingURL=chunk-HKOSZKKZ.cjs.map
|