@moxt-ai/mobius 0.0.25 → 0.0.27

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 (38) hide show
  1. package/dist/agent-catalog/publish-agent-catalog.js +3 -3
  2. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -1
  3. package/dist/cli.js +1194 -205
  4. package/dist/cli.js.map +4 -4
  5. package/dist/index.js +1186 -204
  6. package/dist/index.js.map +4 -4
  7. package/dist/network/environment-proxy.d.ts +1 -0
  8. package/dist/network/environment-proxy.d.ts.map +1 -1
  9. package/dist/network/environment-proxy.js +47 -0
  10. package/dist/network/environment-proxy.js.map +1 -1
  11. package/dist/prompt-artifact-resolver.d.ts.map +1 -1
  12. package/dist/prompt-artifact-resolver.js +7 -4
  13. package/dist/prompt-artifact-resolver.js.map +1 -1
  14. package/dist/relay-connection/connect.d.ts.map +1 -1
  15. package/dist/relay-connection/connect.js +19 -14
  16. package/dist/relay-connection/connect.js.map +1 -1
  17. package/dist/relay-connection/diagnostics.d.ts +11 -0
  18. package/dist/relay-connection/diagnostics.d.ts.map +1 -0
  19. package/dist/relay-connection/diagnostics.js +122 -0
  20. package/dist/relay-connection/diagnostics.js.map +1 -0
  21. package/dist/relay-connection/liveness.d.ts +1 -1
  22. package/dist/relay-connection/liveness.d.ts.map +1 -1
  23. package/dist/relay-connection/liveness.js +2 -1
  24. package/dist/relay-connection/liveness.js.map +1 -1
  25. package/dist/relay-connection/runtime-authentication.d.ts +3 -0
  26. package/dist/relay-connection/runtime-authentication.d.ts.map +1 -0
  27. package/dist/relay-connection/runtime-authentication.js +14 -0
  28. package/dist/relay-connection/runtime-authentication.js.map +1 -0
  29. package/dist/relay-connection/session-event-outbox.d.ts +34 -3
  30. package/dist/relay-connection/session-event-outbox.d.ts.map +1 -1
  31. package/dist/relay-connection/session-event-outbox.js +404 -13
  32. package/dist/relay-connection/session-event-outbox.js.map +1 -1
  33. package/dist/run-daemon.d.ts.map +1 -1
  34. package/dist/run-daemon.js +437 -151
  35. package/dist/run-daemon.js.map +1 -1
  36. package/dist/runtime.js +1186 -204
  37. package/dist/runtime.js.map +4 -4
  38. package/package.json +1 -1
@@ -2,6 +2,42 @@ import { mkdirSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
3
  import { DatabaseSync } from "node:sqlite";
4
4
  import { encodeSessionEventEnvelope, SESSION_EVENT_KIND, } from "@moxt-ai/mobius-protocol";
5
+ const DEFAULT_OUTBOX_LIMITS = {
6
+ criticalEventBytes: 136 * 1024 * 1024,
7
+ criticalEventCount: 10_128,
8
+ runtimeDeliveryBytes: 64 * 1024 * 1024,
9
+ runtimeDeliveryCount: 64,
10
+ standardEventBytes: 128 * 1024 * 1024,
11
+ standardEventCount: 10_000,
12
+ };
13
+ export class SessionEventOutboxCapacityError extends Error {
14
+ code = "session_event_outbox_full";
15
+ constructor() {
16
+ super("The durable Session event outbox is full");
17
+ this.name = "SessionEventOutboxCapacityError";
18
+ }
19
+ }
20
+ export class RuntimeDeliveryInboxCapacityError extends Error {
21
+ code = "runtime_delivery_inbox_full";
22
+ constructor() {
23
+ super("The durable Runtime delivery inbox is full");
24
+ this.name = "RuntimeDeliveryInboxCapacityError";
25
+ }
26
+ }
27
+ export class StoredRuntimeDelivery {
28
+ deliveryId;
29
+ duplicate;
30
+ payload;
31
+ sessionId;
32
+ state;
33
+ constructor(deliveryId, sessionId, payload, state, duplicate) {
34
+ this.deliveryId = deliveryId;
35
+ this.duplicate = duplicate;
36
+ this.payload = payload;
37
+ this.sessionId = sessionId;
38
+ this.state = state;
39
+ }
40
+ }
5
41
  function readPendingEnvelope(row) {
6
42
  if (typeof row !== "object" || row === null || Array.isArray(row)) {
7
43
  throw new Error("SQLite returned an invalid session event outbox row");
@@ -12,9 +48,26 @@ function readPendingEnvelope(row) {
12
48
  }
13
49
  return envelope;
14
50
  }
51
+ function rowNumber(row, field) {
52
+ const value = typeof row === "object" && row !== null ? Reflect.get(row, field) : undefined;
53
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) {
54
+ throw new Error(`SQLite returned an invalid ${field} value`);
55
+ }
56
+ return value;
57
+ }
58
+ function rowString(row, field) {
59
+ const value = typeof row === "object" && row !== null ? Reflect.get(row, field) : undefined;
60
+ if (typeof value !== "string" || value.length === 0) {
61
+ throw new Error(`SQLite returned an invalid ${field} value`);
62
+ }
63
+ return value;
64
+ }
15
65
  export class SessionEventOutbox {
16
66
  #database;
17
- constructor(path) {
67
+ #limits;
68
+ constructor(path, limits = DEFAULT_OUTBOX_LIMITS) {
69
+ validateLimits(limits);
70
+ this.#limits = limits;
18
71
  mkdirSync(dirname(path), { recursive: true });
19
72
  this.#database = new DatabaseSync(path);
20
73
  this.#database.exec(`
@@ -22,6 +75,8 @@ export class SessionEventOutbox {
22
75
  ordinal INTEGER PRIMARY KEY AUTOINCREMENT,
23
76
  event_id TEXT NOT NULL UNIQUE,
24
77
  session_id TEXT NOT NULL,
78
+ source_key TEXT NOT NULL,
79
+ byte_length INTEGER NOT NULL,
25
80
  envelope_json TEXT NOT NULL
26
81
  ) STRICT;
27
82
  CREATE INDEX IF NOT EXISTS relay_session_event_outbox_order
@@ -32,7 +87,7 @@ export class SessionEventOutbox {
32
87
  session_id TEXT NOT NULL,
33
88
  envelope_json TEXT NOT NULL,
34
89
  rejection_code TEXT NOT NULL CHECK (
35
- rejection_code IN ('session_deleted', 'session_not_found')
90
+ rejection_code IN ('session_deleted', 'session_not_found', 'session_rejected')
36
91
  )
37
92
  ) STRICT;
38
93
  CREATE TABLE IF NOT EXISTS relay_session_event_sources (
@@ -48,6 +103,90 @@ export class SessionEventOutbox {
48
103
  state IN ('dispatching', 'running', 'succeeded', 'failed', 'cancelled')
49
104
  )
50
105
  ) STRICT;
106
+ CREATE TABLE IF NOT EXISTS relay_session_event_outbox_state (
107
+ singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
108
+ event_count INTEGER NOT NULL,
109
+ total_bytes INTEGER NOT NULL
110
+ ) STRICT;
111
+ INSERT OR IGNORE INTO relay_session_event_outbox_state (
112
+ singleton, event_count, total_bytes
113
+ ) VALUES (1, 0, 0);
114
+ CREATE TABLE IF NOT EXISTS relay_runtime_deliveries (
115
+ delivery_id TEXT PRIMARY KEY,
116
+ session_id TEXT NOT NULL,
117
+ payload_json TEXT NOT NULL,
118
+ payload_bytes INTEGER NOT NULL,
119
+ state TEXT NOT NULL CHECK (
120
+ state IN ('received', 'relay_committed', 'processed')
121
+ ),
122
+ received_at INTEGER NOT NULL
123
+ ) STRICT;
124
+ `);
125
+ const deadLetterTable = this.#database
126
+ .prepare(`SELECT sql FROM sqlite_master
127
+ WHERE type = 'table' AND name = 'relay_session_event_dead_letters'`)
128
+ .get();
129
+ const deadLetterSql = typeof deadLetterTable === "object" && deadLetterTable !== null
130
+ ? Reflect.get(deadLetterTable, "sql")
131
+ : undefined;
132
+ if (typeof deadLetterSql !== "string" || !deadLetterSql.includes("'session_rejected'")) {
133
+ this.#database.exec(`
134
+ BEGIN IMMEDIATE;
135
+ ALTER TABLE relay_session_event_dead_letters
136
+ RENAME TO relay_session_event_dead_letters_legacy;
137
+ CREATE TABLE relay_session_event_dead_letters (
138
+ ordinal INTEGER PRIMARY KEY,
139
+ event_id TEXT NOT NULL UNIQUE,
140
+ session_id TEXT NOT NULL,
141
+ envelope_json TEXT NOT NULL,
142
+ rejection_code TEXT NOT NULL CHECK (
143
+ rejection_code IN ('session_deleted', 'session_not_found', 'session_rejected')
144
+ )
145
+ ) STRICT;
146
+ INSERT INTO relay_session_event_dead_letters (
147
+ ordinal, event_id, session_id, envelope_json, rejection_code
148
+ )
149
+ SELECT ordinal, event_id, session_id, envelope_json, rejection_code
150
+ FROM relay_session_event_dead_letters_legacy;
151
+ DROP TABLE relay_session_event_dead_letters_legacy;
152
+ COMMIT;
153
+ `);
154
+ }
155
+ const outboxColumns = this.#database.prepare("PRAGMA table_info(relay_session_event_outbox)").all();
156
+ const hasSourceKey = outboxColumns.some((column) => typeof column === "object" && column !== null && Reflect.get(column, "name") === "source_key");
157
+ if (!hasSourceKey) {
158
+ this.#database.exec(`
159
+ ALTER TABLE relay_session_event_outbox
160
+ ADD COLUMN source_key TEXT NOT NULL DEFAULT '';
161
+ `);
162
+ }
163
+ const hasByteLength = outboxColumns.some((column) => typeof column === "object" && column !== null && Reflect.get(column, "name") === "byte_length");
164
+ if (!hasByteLength) {
165
+ this.#database.exec(`
166
+ ALTER TABLE relay_session_event_outbox
167
+ ADD COLUMN byte_length INTEGER NOT NULL DEFAULT 0;
168
+ `);
169
+ }
170
+ this.#database.exec(`
171
+ UPDATE relay_session_event_outbox
172
+ SET source_key = CASE json_extract(envelope_json, '$.source.kind')
173
+ WHEN 'attempt' THEN
174
+ 'attempt:' || session_id || ':' || json_extract(envelope_json, '$.source.attemptId')
175
+ ELSE 'runtime:' || session_id
176
+ END
177
+ WHERE source_key = '';
178
+ UPDATE relay_session_event_outbox
179
+ SET byte_length = length(CAST(envelope_json AS BLOB))
180
+ WHERE byte_length = 0;
181
+ UPDATE relay_session_event_outbox_state
182
+ SET event_count = (SELECT COUNT(*) FROM relay_session_event_outbox),
183
+ total_bytes = (
184
+ SELECT COALESCE(SUM(byte_length), 0)
185
+ FROM relay_session_event_outbox
186
+ )
187
+ WHERE singleton = 1;
188
+ CREATE INDEX IF NOT EXISTS relay_session_event_outbox_source_order
189
+ ON relay_session_event_outbox(source_key, ordinal);
51
190
  `);
52
191
  }
53
192
  claimExecution = (commandId, sessionId, commandJson) => {
@@ -113,15 +252,19 @@ export class SessionEventOutbox {
113
252
  const state = typeof row === "object" && row !== null ? Reflect.get(row, "state") : undefined;
114
253
  return state === "succeeded" || state === "failed" || state === "cancelled";
115
254
  };
116
- acknowledge = (acknowledgement) => {
117
- this.#database
118
- .prepare(`DELETE FROM relay_session_event_outbox
119
- WHERE event_id = ? AND session_id = ?`)
120
- .run(acknowledgement.eventId, acknowledgement.sessionId);
121
- };
255
+ acknowledge = (acknowledgement) => this.#removeAcknowledgedEvent(acknowledgement.eventId, acknowledgement.sessionId);
122
256
  quarantine = (rejection) => {
123
257
  this.#database.exec("BEGIN IMMEDIATE");
124
258
  try {
259
+ const stored = this.#database
260
+ .prepare(`SELECT byte_length FROM relay_session_event_outbox
261
+ WHERE event_id = ? AND session_id = ?`)
262
+ .get(rejection.eventId, rejection.sessionId);
263
+ if (stored === undefined) {
264
+ this.#database.exec("COMMIT");
265
+ return false;
266
+ }
267
+ const byteLength = rowNumber(stored, "byte_length");
125
268
  const insertion = this.#database
126
269
  .prepare(`INSERT INTO relay_session_event_dead_letters (
127
270
  ordinal, event_id, session_id, envelope_json, rejection_code
@@ -141,6 +284,7 @@ export class SessionEventOutbox {
141
284
  if (deletion.changes !== 1) {
142
285
  throw new Error("The rejected session event could not be removed from the durable outbox");
143
286
  }
287
+ this.#decrementEventState(byteLength);
144
288
  this.#database.exec("COMMIT");
145
289
  return true;
146
290
  }
@@ -153,7 +297,114 @@ export class SessionEventOutbox {
153
297
  this.#database.close();
154
298
  };
155
299
  enqueue = (sessionId, payload, attemptId = null) => {
156
- const sourceKey = attemptId === null ? `runtime:${sessionId}` : `attempt:${sessionId}:${attemptId}`;
300
+ return this.#enqueueBounded(sessionId, payload, attemptId ?? "", this.#limits.standardEventCount, this.#limits.standardEventBytes);
301
+ };
302
+ enqueueCritical = (sessionId, payload, attemptId = "") => this.#enqueueBounded(sessionId, payload, attemptId, this.#limits.criticalEventCount, this.#limits.criticalEventBytes);
303
+ claimRuntimeDelivery = (delivery) => {
304
+ const payloadBytes = new TextEncoder().encode(delivery.payload).byteLength;
305
+ this.#database.exec("BEGIN IMMEDIATE");
306
+ try {
307
+ const existing = this.#database
308
+ .prepare(`SELECT session_id, payload_json, state
309
+ FROM relay_runtime_deliveries
310
+ WHERE delivery_id = ?`)
311
+ .get(delivery.deliveryId);
312
+ if (existing !== undefined) {
313
+ const sessionId = rowString(existing, "session_id");
314
+ const payload = rowString(existing, "payload_json");
315
+ const state = runtimeDeliveryState(existing);
316
+ if (sessionId !== delivery.sessionId || payload !== delivery.payload) {
317
+ throw new Error("The Runtime delivery identity conflicts with its durable receipt");
318
+ }
319
+ this.#database.exec("COMMIT");
320
+ return new StoredRuntimeDelivery(delivery.deliveryId, sessionId, payload, state, true);
321
+ }
322
+ const usage = this.#database
323
+ .prepare(`SELECT COUNT(*) AS delivery_count,
324
+ COALESCE(SUM(payload_bytes), 0) AS delivery_bytes
325
+ FROM relay_runtime_deliveries`)
326
+ .get();
327
+ if (rowNumber(usage, "delivery_count") + 1 > this.#limits.runtimeDeliveryCount ||
328
+ rowNumber(usage, "delivery_bytes") + payloadBytes > this.#limits.runtimeDeliveryBytes) {
329
+ throw new RuntimeDeliveryInboxCapacityError();
330
+ }
331
+ this.#database
332
+ .prepare(`INSERT INTO relay_runtime_deliveries (
333
+ delivery_id, session_id, payload_json, payload_bytes, state, received_at
334
+ ) VALUES (?, ?, ?, ?, 'received', ?)`)
335
+ .run(delivery.deliveryId, delivery.sessionId, delivery.payload, payloadBytes, Date.now());
336
+ this.#database.exec("COMMIT");
337
+ return new StoredRuntimeDelivery(delivery.deliveryId, delivery.sessionId, delivery.payload, "received", false);
338
+ }
339
+ catch (error) {
340
+ this.#database.exec("ROLLBACK");
341
+ throw error;
342
+ }
343
+ };
344
+ markRuntimeDeliveryCommitted = (deliveryId, sessionId) => {
345
+ this.#database.exec("BEGIN IMMEDIATE");
346
+ try {
347
+ const row = this.#database
348
+ .prepare(`SELECT state FROM relay_runtime_deliveries
349
+ WHERE delivery_id = ? AND session_id = ?`)
350
+ .get(deliveryId, sessionId);
351
+ if (row === undefined) {
352
+ this.#database.exec("COMMIT");
353
+ return false;
354
+ }
355
+ const state = runtimeDeliveryState(row);
356
+ if (state === "processed") {
357
+ this.#database.prepare(`DELETE FROM relay_runtime_deliveries WHERE delivery_id = ?`).run(deliveryId);
358
+ }
359
+ else if (state === "received") {
360
+ this.#database
361
+ .prepare(`UPDATE relay_runtime_deliveries SET state = 'relay_committed' WHERE delivery_id = ?`)
362
+ .run(deliveryId);
363
+ }
364
+ this.#database.exec("COMMIT");
365
+ return true;
366
+ }
367
+ catch (error) {
368
+ this.#database.exec("ROLLBACK");
369
+ throw error;
370
+ }
371
+ };
372
+ markRuntimeDeliveryProcessed = (deliveryId, sessionId) => {
373
+ this.#database.exec("BEGIN IMMEDIATE");
374
+ try {
375
+ const row = this.#database
376
+ .prepare(`SELECT state FROM relay_runtime_deliveries
377
+ WHERE delivery_id = ? AND session_id = ?`)
378
+ .get(deliveryId, sessionId);
379
+ if (row === undefined) {
380
+ this.#database.exec("COMMIT");
381
+ return false;
382
+ }
383
+ const state = runtimeDeliveryState(row);
384
+ if (state === "relay_committed") {
385
+ this.#database.prepare(`DELETE FROM relay_runtime_deliveries WHERE delivery_id = ?`).run(deliveryId);
386
+ }
387
+ else if (state === "received") {
388
+ this.#database
389
+ .prepare(`UPDATE relay_runtime_deliveries SET state = 'processed' WHERE delivery_id = ?`)
390
+ .run(deliveryId);
391
+ }
392
+ this.#database.exec("COMMIT");
393
+ return true;
394
+ }
395
+ catch (error) {
396
+ this.#database.exec("ROLLBACK");
397
+ throw error;
398
+ }
399
+ };
400
+ runtimeDeliveries = () => this.#database
401
+ .prepare(`SELECT delivery_id, session_id, payload_json, state
402
+ FROM relay_runtime_deliveries
403
+ ORDER BY received_at, delivery_id`)
404
+ .all()
405
+ .map((row) => new StoredRuntimeDelivery(rowString(row, "delivery_id"), rowString(row, "session_id"), rowString(row, "payload_json"), runtimeDeliveryState(row), true));
406
+ #enqueueBounded = (sessionId, payload, attemptId, maximumEventCount, maximumEventBytes) => {
407
+ const sourceKey = attemptId.length === 0 ? `runtime:${sessionId}` : `attempt:${sessionId}:${attemptId}`;
157
408
  this.#database.exec("BEGIN IMMEDIATE");
158
409
  try {
159
410
  const row = this.#database
@@ -170,7 +421,7 @@ export class SessionEventOutbox {
170
421
  kind: SESSION_EVENT_KIND,
171
422
  payload,
172
423
  sessionId,
173
- source: attemptId === null
424
+ source: attemptId.length === 0
174
425
  ? { kind: "runtime", sourceSeq: nextSourceSeq.toString() }
175
426
  : {
176
427
  attemptId,
@@ -179,6 +430,16 @@ export class SessionEventOutbox {
179
430
  },
180
431
  };
181
432
  const encoded = encodeSessionEventEnvelope(envelope);
433
+ const byteLength = new TextEncoder().encode(encoded).byteLength;
434
+ const state = this.#database
435
+ .prepare(`SELECT event_count, total_bytes
436
+ FROM relay_session_event_outbox_state
437
+ WHERE singleton = 1`)
438
+ .get();
439
+ if (rowNumber(state, "event_count") + 1 > maximumEventCount ||
440
+ rowNumber(state, "total_bytes") + byteLength > maximumEventBytes) {
441
+ throw new SessionEventOutboxCapacityError();
442
+ }
182
443
  this.#database
183
444
  .prepare(`INSERT INTO relay_session_event_sources (
184
445
  source_key, next_source_seq
@@ -188,9 +449,15 @@ export class SessionEventOutbox {
188
449
  .run(sourceKey, nextSourceSeq + 1);
189
450
  this.#database
190
451
  .prepare(`INSERT INTO relay_session_event_outbox (
191
- event_id, session_id, envelope_json
192
- ) VALUES (?, ?, ?)`)
193
- .run(envelope.eventId, envelope.sessionId, encoded);
452
+ event_id, session_id, source_key, byte_length, envelope_json
453
+ ) VALUES (?, ?, ?, ?, ?)`)
454
+ .run(envelope.eventId, envelope.sessionId, sourceKey, byteLength, encoded);
455
+ this.#database
456
+ .prepare(`UPDATE relay_session_event_outbox_state
457
+ SET event_count = event_count + 1,
458
+ total_bytes = total_bytes + ?
459
+ WHERE singleton = 1`)
460
+ .run(byteLength);
194
461
  this.#database.exec("COMMIT");
195
462
  return encoded;
196
463
  }
@@ -199,12 +466,136 @@ export class SessionEventOutbox {
199
466
  throw error;
200
467
  }
201
468
  };
469
+ #removeAcknowledgedEvent = (eventId, sessionId) => {
470
+ this.#database.exec("BEGIN IMMEDIATE");
471
+ try {
472
+ const stored = this.#database
473
+ .prepare(`SELECT byte_length FROM relay_session_event_outbox
474
+ WHERE event_id = ? AND session_id = ?`)
475
+ .get(eventId, sessionId);
476
+ if (stored === undefined) {
477
+ this.#database.exec("COMMIT");
478
+ return false;
479
+ }
480
+ const byteLength = rowNumber(stored, "byte_length");
481
+ const deletion = this.#database
482
+ .prepare(`DELETE FROM relay_session_event_outbox
483
+ WHERE event_id = ? AND session_id = ?`)
484
+ .run(eventId, sessionId);
485
+ if (deletion.changes !== 1) {
486
+ throw new Error("The acknowledged session event could not be removed from the durable outbox");
487
+ }
488
+ this.#decrementEventState(byteLength);
489
+ this.#database.exec("COMMIT");
490
+ return true;
491
+ }
492
+ catch (error) {
493
+ this.#database.exec("ROLLBACK");
494
+ throw error;
495
+ }
496
+ };
497
+ #decrementEventState = (byteLength) => {
498
+ const result = this.#database
499
+ .prepare(`UPDATE relay_session_event_outbox_state
500
+ SET event_count = event_count - 1,
501
+ total_bytes = total_bytes - ?
502
+ WHERE singleton = 1 AND event_count > 0 AND total_bytes >= ?`)
503
+ .run(byteLength, byteLength);
504
+ if (result.changes !== 1) {
505
+ throw new Error("The Session event outbox capacity state is inconsistent");
506
+ }
507
+ };
202
508
  pending = () => this.#database
203
509
  .prepare(`SELECT envelope_json
204
510
  FROM relay_session_event_outbox
205
511
  ORDER BY ordinal`)
206
512
  .all()
207
513
  .map(readPendingEnvelope);
514
+ pendingBatch = (limit) => {
515
+ if (!Number.isSafeInteger(limit) || limit < 1) {
516
+ throw new Error("Session event replay batch limit must be a positive integer");
517
+ }
518
+ return this.#database
519
+ .prepare(`WITH ranked_events AS (
520
+ SELECT ordinal,
521
+ ROW_NUMBER() OVER (
522
+ PARTITION BY source_key
523
+ ORDER BY ordinal
524
+ ) AS source_position
525
+ FROM relay_session_event_outbox
526
+ )
527
+ SELECT outbox.envelope_json
528
+ FROM ranked_events AS ranked
529
+ INNER JOIN relay_session_event_outbox AS outbox
530
+ ON outbox.ordinal = ranked.ordinal
531
+ ORDER BY ranked.source_position, outbox.ordinal
532
+ LIMIT ?`)
533
+ .all(limit)
534
+ .map(readPendingEnvelope);
535
+ };
536
+ pendingSourceHeads = (limit, excludedEventIds, excludedSourceKeys) => {
537
+ if (!Number.isSafeInteger(limit) || limit < 1) {
538
+ throw new Error("Session event replay batch limit must be a positive integer");
539
+ }
540
+ const exclusions = [];
541
+ const parameters = [];
542
+ if (excludedEventIds.length > 0) {
543
+ exclusions.push(`event_id NOT IN (${excludedEventIds.map(() => "?").join(", ")})`);
544
+ parameters.push(...excludedEventIds);
545
+ }
546
+ if (excludedSourceKeys.length > 0) {
547
+ exclusions.push(`source_key NOT IN (${excludedSourceKeys.map(() => "?").join(", ")})`);
548
+ parameters.push(...excludedSourceKeys);
549
+ }
550
+ parameters.push(limit.toString());
551
+ const where = exclusions.length === 0 ? "" : `WHERE ${exclusions.join(" AND ")}`;
552
+ return this.#database
553
+ .prepare(`WITH available_events AS (
554
+ SELECT ordinal, source_key
555
+ FROM relay_session_event_outbox
556
+ ${where}
557
+ ), ranked_events AS (
558
+ SELECT ordinal,
559
+ ROW_NUMBER() OVER (
560
+ PARTITION BY source_key
561
+ ORDER BY ordinal
562
+ ) AS source_position
563
+ FROM available_events
564
+ )
565
+ SELECT outbox.envelope_json
566
+ FROM ranked_events AS ranked
567
+ INNER JOIN relay_session_event_outbox AS outbox
568
+ ON outbox.ordinal = ranked.ordinal
569
+ WHERE ranked.source_position = 1
570
+ ORDER BY outbox.ordinal
571
+ LIMIT ?`)
572
+ .all(...parameters)
573
+ .map(readPendingEnvelope);
574
+ };
575
+ }
576
+ function validateLimits(limits) {
577
+ const values = [
578
+ limits.criticalEventBytes,
579
+ limits.criticalEventCount,
580
+ limits.runtimeDeliveryBytes,
581
+ limits.runtimeDeliveryCount,
582
+ limits.standardEventBytes,
583
+ limits.standardEventCount,
584
+ ];
585
+ if (values.some((value) => !Number.isSafeInteger(value) || value < 1)) {
586
+ throw new Error("Session event outbox limits must be positive integers");
587
+ }
588
+ if (limits.criticalEventBytes < limits.standardEventBytes ||
589
+ limits.criticalEventCount < limits.standardEventCount) {
590
+ throw new Error("Critical Session event capacity must include the standard capacity");
591
+ }
592
+ }
593
+ function runtimeDeliveryState(row) {
594
+ const state = rowString(row, "state");
595
+ if (state !== "received" && state !== "relay_committed" && state !== "processed") {
596
+ throw new Error("SQLite returned an invalid Runtime delivery state");
597
+ }
598
+ return state;
208
599
  }
209
600
  function isDaemonExecutionState(value) {
210
601
  return (value === "cancelled" ||
@@ -1 +1 @@
1
- {"version":3,"file":"session-event-outbox.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-event-outbox.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACH,0BAA0B,EAE1B,kBAAkB,GAIrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,qBAAqB,GAA6B;IACpD,kBAAkB,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IACrC,kBAAkB,EAAE,MAAM;IAC1B,oBAAoB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACtC,oBAAoB,EAAE,EAAE;IACxB,kBAAkB,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IACrC,kBAAkB,EAAE,MAAM;CAC7B,CAAC;AAWF,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAC7C,IAAI,GAAG,2BAA2B,CAAC;IAE5C;QACI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAClD,CAAC;CACJ;AAED,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAC/C,IAAI,GAAG,6BAA6B,CAAC;IAE9C;QACI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IACpD,CAAC;CACJ;AAED,MAAM,OAAO,qBAAqB;IACrB,UAAU,CAAS;IACnB,SAAS,CAAU;IACnB,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,KAAK,CAAS;IAEvB,YAAY,UAAkB,EAAE,SAAiB,EAAE,OAAe,EAAE,KAAa,EAAE,SAAkB;QACjG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED,SAAS,mBAAmB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,KAAa;IAC1C,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,QAAQ,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,KAAa;IAC1C,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,QAAQ,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAWD,MAAM,OAAO,kBAAkB;IAClB,SAAS,CAAe;IACxB,OAAO,CAA2B;IAE3C,YAAY,IAAY,EAAE,MAAM,GAA6B,qBAAqB;QAC9E,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDvB,CAAC,CAAC;QACC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS;aACjC,OAAO,CACJ;oFACoE,CACvE;aACA,GAAG,EAAE,CAAC;QACX,MAAM,aAAa,GACf,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,IAAI;YAC3D,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QACpB,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;OAoBzB,CAAC,CAAC;QACD,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QACpG,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,YAAY,CAC5G,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;OAGzB,CAAC,CAAC;QACD,CAAC;QACD,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,CAC7G,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;OAGzB,CAAC,CAAC;QACD,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;KAoBvB,CAAC,CAAC;IACH,CAAC;IAEQ,cAAc,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,WAAmB,EAA0B,EAAE;QAC5G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;iBAC1B,OAAO,CACJ;yDACqC,CACxC;iBACA,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC7C,IACI,eAAe,KAAK,SAAS;oBAC7B,aAAa,KAAK,WAAW;oBAC7B,OAAO,SAAS,KAAK,QAAQ;oBAC7B,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAChC,CAAC;oBACC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBACtF,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YAC9D,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS;iBACT,OAAO,CACJ;;gDAE4B,CAC/B;iBACA,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO;gBACH,SAAS;gBACT,SAAS;gBACT,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,aAAa;aACvB,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,mBAAmB,GAAG,CAAC,SAAiB,EAAE,KAA2B,EAAQ,EAAE;QACpF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChH,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GACT,CAAC,OAAO,KAAK,aAAa,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC;YACnG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClH,CAAC,CAAC;IAEO,mBAAmB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAW,EAAE;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;aACrB,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC;IAChF,CAAC,CAAC;IAEO,WAAW,GAAG,CAAC,eAA4C,EAAW,EAAE,CAC7E,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAE7E,UAAU,GAAG,CAAC,SAAgC,EAAW,EAAE;QAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;iBACxB,OAAO,CACJ;2DACuC,CAC1C;iBACA,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;iBAC3B,OAAO,CACJ;;;;;iDAK6B,CAChC;iBACA,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;iBAC1B,OAAO,CACJ;iDAC6B,CAChC;iBACA,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,KAAK,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEO,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAS,GAAkB,IAAI,EAAU,EAAE;QAC/F,OAAO,IAAI,CAAC,eAAe,CACvB,SAAS,EACT,OAAO,EACP,SAAS,IAAI,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAC/B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAClC,CAAC;IACN,CAAC,CAAC;IAEO,eAAe,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAS,GAAG,EAAE,EAAU,EAAE,CACtF,IAAI,CAAC,eAAe,CAChB,SAAS,EACT,OAAO,EACP,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAC/B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAClC,CAAC;IAEG,oBAAoB,GAAG,CAAC,QAAyB,EAAyB,EAAE;QACjF,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;iBAC1B,OAAO,CACJ;;2CAEuB,CAC1B;iBACA,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACnE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,IAAI,qBAAqB,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;iBACvB,OAAO,CACJ;;mDAE+B,CAClC;iBACA,GAAG,EAAE,CAAC;YACX,IACI,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB;gBAC1E,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EACvF,CAAC;gBACC,MAAM,IAAI,iCAAiC,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,SAAS;iBACT,OAAO,CACJ;;0DAEsC,CACzC;iBACA,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,qBAAqB,CAC5B,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,OAAO,EAChB,UAAU,EACV,KAAK,CACR,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,4BAA4B,GAAG,CAAC,UAAkB,EAAE,SAAiB,EAAW,EAAE;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;iBACrB,OAAO,CACJ;8DAC0C,CAC7C;iBACA,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzG,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS;qBACT,OAAO,CAAC,qFAAqF,CAAC;qBAC9F,GAAG,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,4BAA4B,GAAG,CAAC,UAAkB,EAAE,SAAiB,EAAW,EAAE;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;iBACrB,OAAO,CACJ;8DAC0C,CAC7C;iBACA,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzG,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS;qBACT,OAAO,CAAC,+EAA+E,CAAC;qBACxF,GAAG,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,iBAAiB,GAAG,GAAqC,EAAE,CAChE,IAAI,CAAC,SAAS;SACT,OAAO,CACJ;;mDAEmC,CACtC;SACA,GAAG,EAAE;SACL,GAAG,CACA,CAAC,GAAG,EAAE,EAAE,CACJ,IAAI,qBAAqB,CACrB,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,EAC7B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,EAC9B,oBAAoB,CAAC,GAAG,CAAC,EACzB,IAAI,CACP,CACR,CAAC;IAED,eAAe,GAAG,CACvB,SAAiB,EACjB,OAAe,EACf,SAAiB,EACjB,iBAAyB,EACzB,iBAAyB,EACnB,EAAE;QACR,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,SAAS,IAAI,SAAS,EAAE,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;iBACrB,OAAO,CACJ;gCACY,CACf;iBACA,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,eAAe,GACjB,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,MAAM,aAAa,GAAG,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,QAAQ,GAAyB;gBACnC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;gBAC5B,IAAI,EAAE,kBAAkB;gBACxB,OAAO;gBACP,SAAS;gBACT,MAAM,EACF,SAAS,CAAC,MAAM,KAAK,CAAC;oBAClB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE;oBAC1D,CAAC,CAAC;wBACI,SAAS;wBACT,IAAI,EAAE,SAAS;wBACf,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;qBACtC;aACd,CAAC;YACF,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;iBACvB,OAAO,CACJ;;yCAEqB,CACxB;iBACA,GAAG,EAAE,CAAC;YACX,IACI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,iBAAiB;gBACvD,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,UAAU,GAAG,iBAAiB,EAClE,CAAC;gBACC,MAAM,IAAI,+BAA+B,EAAE,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,SAAS;iBACT,OAAO,CACJ;;;;wDAIoC,CACvC;iBACA,GAAG,CAAC,SAAS,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS;iBACT,OAAO,CACJ;;oCAEgB,CACnB;iBACA,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS;iBACT,OAAO,CACJ;;;yCAGqB,CACxB;iBACA,GAAG,CAAC,UAAU,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,OAAO,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,wBAAwB,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAW,EAAE;QAChF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;iBACxB,OAAO,CACJ;2DACuC,CAC1C;iBACA,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;iBAC1B,OAAO,CACJ;2DACuC,CAC1C;iBACA,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC7B,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEO,oBAAoB,GAAG,CAAC,UAAkB,EAAQ,EAAE;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;aACxB,OAAO,CACJ;;;8EAG8D,CACjE;aACA,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC,CAAC;IAEO,OAAO,GAAG,GAAsB,EAAE,CACvC,IAAI,CAAC,SAAS;SACT,OAAO,CACJ;;0BAEU,CACb;SACA,GAAG,EAAE;SACL,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEzB,YAAY,GAAG,CAAC,KAAa,EAAqB,EAAE;QACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,CAAC,SAAS;aAChB,OAAO,CACJ;;;;;;;;;;;;;yBAaS,CACZ;aACA,GAAG,CAAC,KAAK,CAAC;aACV,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEO,kBAAkB,GAAG,CAC1B,KAAa,EACb,gBAAmC,EACnC,kBAAqC,EACpB,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,oBAAoB,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnF,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,sBAAsB,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QAC3C,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,SAAS;aAChB,OAAO,CACJ;;;qBAGK,KAAK;;;;;;;;;;;;;;;yBAeD,CACZ;aACA,GAAG,CAAC,GAAG,UAAU,CAAC;aAClB,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;CACL;AAED,SAAS,cAAc,CAAC,MAAgC;IACpD,MAAM,MAAM,GAAG;QACX,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,oBAAoB;QAC3B,MAAM,CAAC,oBAAoB;QAC3B,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,kBAAkB;KAC5B,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IACD,IACI,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB;QACrD,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,EACvD,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC1F,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY;IACtC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,iBAAiB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC1C,OAAO,CACH,KAAK,KAAK,WAAW;QACrB,KAAK,KAAK,aAAa;QACvB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,WAAW,CACxB,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAuHA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,OAAO,EAA4B,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAstD5G,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,WAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Hf"}
1
+ {"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAgIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,OAAO,EAA4B,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AA6iE5G,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,WAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Hf"}