@getrift/rift 0.1.0-beta.15 → 0.1.0-beta.17
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/src/capture/auto-capture.d.ts +7 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -1
- package/dist/src/capture/auto-capture.js +82 -15
- package/dist/src/capture/auto-capture.js.map +1 -1
- package/dist/src/capture/observability.d.ts +6 -0
- package/dist/src/capture/observability.d.ts.map +1 -1
- package/dist/src/capture/observability.js +3 -0
- package/dist/src/capture/observability.js.map +1 -1
- package/dist/src/capture/recover-quarantine.d.ts +28 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -1
- package/dist/src/capture/recover-quarantine.js +43 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts +28 -0
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -1
- package/dist/src/cli/commands/capture-recover.js +109 -52
- package/dist/src/cli/commands/capture-recover.js.map +1 -1
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +14 -1
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/doctor.d.ts.map +1 -1
- package/dist/src/cli/commands/doctor.js +60 -1
- package/dist/src/cli/commands/doctor.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +8 -1
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +17 -10
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/diagnostics/doctor.js +11 -10
- package/dist/src/diagnostics/doctor.js.map +1 -1
- package/dist/src/diagnostics/repair-prompt.d.ts.map +1 -1
- package/dist/src/diagnostics/repair-prompt.js +17 -1
- package/dist/src/diagnostics/repair-prompt.js.map +1 -1
- package/dist/src/jobs/handlers/reconcile.d.ts +17 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reconcile.js +85 -13
- package/dist/src/jobs/handlers/reconcile.js.map +1 -1
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reindex.js +1 -0
- package/dist/src/jobs/handlers/reindex.js.map +1 -1
- package/dist/src/jobs/handlers/save.d.ts.map +1 -1
- package/dist/src/jobs/handlers/save.js +32 -0
- package/dist/src/jobs/handlers/save.js.map +1 -1
- package/dist/src/jobs/queue.d.ts +40 -1
- package/dist/src/jobs/queue.d.ts.map +1 -1
- package/dist/src/jobs/queue.js +448 -26
- package/dist/src/jobs/queue.js.map +1 -1
- package/dist/src/providers/codex-cli-runner.d.ts +14 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +120 -39
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/retrieval/context-pack.d.ts +6 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -1
- package/dist/src/retrieval/context-pack.js +1 -0
- package/dist/src/retrieval/context-pack.js.map +1 -1
- package/dist/src/retrieval/current-truth.d.ts +36 -2
- package/dist/src/retrieval/current-truth.d.ts.map +1 -1
- package/dist/src/retrieval/current-truth.js +48 -29
- package/dist/src/retrieval/current-truth.js.map +1 -1
- package/dist/src/retrieval/locator-boost.d.ts +37 -0
- package/dist/src/retrieval/locator-boost.d.ts.map +1 -0
- package/dist/src/retrieval/locator-boost.js +129 -0
- package/dist/src/retrieval/locator-boost.js.map +1 -0
- package/dist/src/retrieval/report-demotion.d.ts +46 -0
- package/dist/src/retrieval/report-demotion.d.ts.map +1 -0
- package/dist/src/retrieval/report-demotion.js +169 -0
- package/dist/src/retrieval/report-demotion.js.map +1 -0
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +8 -2
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/compact.d.ts.map +1 -1
- package/dist/src/server/routes/compact.js +4 -1
- package/dist/src/server/routes/compact.js.map +1 -1
- package/dist/src/server/routes/context.d.ts +1 -1
- package/dist/src/server/routes/context.d.ts.map +1 -1
- package/dist/src/server/routes/context.js +2 -1
- package/dist/src/server/routes/context.js.map +1 -1
- package/dist/src/server/routes/enqueue.d.ts +11 -0
- package/dist/src/server/routes/enqueue.d.ts.map +1 -0
- package/dist/src/server/routes/enqueue.js +17 -0
- package/dist/src/server/routes/enqueue.js.map +1 -0
- package/dist/src/server/routes/friend-status.d.ts +9 -0
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +9 -0
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/server/routes/ingest.d.ts.map +1 -1
- package/dist/src/server/routes/ingest.js +4 -1
- package/dist/src/server/routes/ingest.js.map +1 -1
- package/dist/src/server/routes/reconcile.d.ts.map +1 -1
- package/dist/src/server/routes/reconcile.js +4 -1
- package/dist/src/server/routes/reconcile.js.map +1 -1
- package/dist/src/server/routes/reindex.d.ts.map +1 -1
- package/dist/src/server/routes/reindex.js +4 -1
- package/dist/src/server/routes/reindex.js.map +1 -1
- package/dist/src/server/routes/save.d.ts.map +1 -1
- package/dist/src/server/routes/save.js +4 -1
- package/dist/src/server/routes/save.js.map +1 -1
- package/dist/src/server/routes/search.d.ts +1 -1
- package/dist/src/server/routes/search.d.ts.map +1 -1
- package/dist/src/server/routes/search.js +44 -1
- package/dist/src/server/routes/search.js.map +1 -1
- package/dist/src/server/routes/triage.d.ts.map +1 -1
- package/dist/src/server/routes/triage.js +4 -1
- package/dist/src/server/routes/triage.js.map +1 -1
- package/dist/src/storage/rebuild.d.ts +21 -0
- package/dist/src/storage/rebuild.d.ts.map +1 -1
- package/dist/src/storage/rebuild.js +135 -66
- package/dist/src/storage/rebuild.js.map +1 -1
- package/operator/swiftbar/render-menu.py +47 -10
- package/package.json +6 -3
package/dist/src/jobs/queue.js
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
3
4
|
import { EXCLUSIVE_JOBS } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Terminal statuses: the job is done and its `payload` (full
|
|
7
|
+
* conversation / export text) is dead weight — the durable record lives
|
|
8
|
+
* in raw files + the vector index, not the queue ledger. Only
|
|
9
|
+
* queued/running/interrupted jobs still need their payload.
|
|
10
|
+
*/
|
|
11
|
+
const TERMINAL_STATUSES = new Set([
|
|
12
|
+
"completed",
|
|
13
|
+
"failed",
|
|
14
|
+
"cancelled",
|
|
15
|
+
]);
|
|
16
|
+
/**
|
|
17
|
+
* Terminal statuses whose `payload` is safe to drop. A `failed` job is
|
|
18
|
+
* still retryable — `create()` with the same idempotency_key turns it into
|
|
19
|
+
* a retry whose chain root (the failed job) must still carry the canonical
|
|
20
|
+
* source/raw payload (save.ts resolveChainRoot). The failure path persists
|
|
21
|
+
* (and thus compacts) the job the instant it fails, before any retry exists,
|
|
22
|
+
* so stripping `failed` payloads here would silently break changed-source
|
|
23
|
+
* retries. Failed jobs are few (cap still bounds them); keep their payload.
|
|
24
|
+
*/
|
|
25
|
+
const STRIPPABLE_STATUSES = new Set([
|
|
26
|
+
"completed",
|
|
27
|
+
"cancelled",
|
|
28
|
+
]);
|
|
29
|
+
/**
|
|
30
|
+
* Cap on retained terminal-job records. Metadata is tiny (~200 B/job),
|
|
31
|
+
* but unbounded retention eventually blows `JSON.stringify`'s max string
|
|
32
|
+
* length (V8 ~512 MB) — the failure that turned every save into a 500.
|
|
33
|
+
* We keep the most recent N; idempotency dedup and the friend-status
|
|
34
|
+
* projection only need recent terminal jobs, and older sessions are
|
|
35
|
+
* re-guarded by capture-state.json + content-hash dedup.
|
|
36
|
+
*/
|
|
37
|
+
const MAX_TERMINAL_JOBS = 2000;
|
|
38
|
+
const PAYLOAD_OFFLOAD_THRESHOLD_BYTES = 64 * 1024;
|
|
39
|
+
const MAX_LEDGER_BYTES = 64 * 1024 * 1024;
|
|
40
|
+
const PAYLOAD_REF_MARKER = "__rift_queue_payload_ref";
|
|
41
|
+
const PERSIST_RETRY_DELAY_MS = 100;
|
|
42
|
+
const START_RETRY_INITIAL_DELAY_MS = 100;
|
|
43
|
+
const START_RETRY_MAX_DELAY_MS = 5000;
|
|
4
44
|
/**
|
|
5
45
|
* In-process job queue with:
|
|
6
46
|
* - Persistence to `queue.json` (atomic write: temp + rename)
|
|
@@ -12,9 +52,13 @@ import { EXCLUSIVE_JOBS } from "./types.js";
|
|
|
12
52
|
export class JobQueue {
|
|
13
53
|
queuePath;
|
|
14
54
|
jobs = new Map();
|
|
55
|
+
payloadRefs = new Map();
|
|
15
56
|
handlers = new Map();
|
|
16
57
|
processing = false;
|
|
17
58
|
held = false;
|
|
59
|
+
persistRetryTimer;
|
|
60
|
+
startRetryTimer;
|
|
61
|
+
startRetryDelayMs = START_RETRY_INITIAL_DELAY_MS;
|
|
18
62
|
constructor(queuePath) {
|
|
19
63
|
this.queuePath = queuePath;
|
|
20
64
|
}
|
|
@@ -53,9 +97,11 @@ export class JobQueue {
|
|
|
53
97
|
const raw = fs.readFileSync(this.queuePath, "utf-8");
|
|
54
98
|
const entries = JSON.parse(raw);
|
|
55
99
|
this.jobs.clear();
|
|
100
|
+
this.payloadRefs.clear();
|
|
56
101
|
// Collect jobs that need recovery (were running at crash time).
|
|
57
102
|
const toRequeue = [];
|
|
58
|
-
for (const
|
|
103
|
+
for (const entry of entries) {
|
|
104
|
+
const job = this.hydrateJob(entry);
|
|
59
105
|
if (job.status === "running") {
|
|
60
106
|
job.status = "interrupted";
|
|
61
107
|
job.updated_at = new Date().toISOString();
|
|
@@ -79,7 +125,10 @@ export class JobQueue {
|
|
|
79
125
|
job.retried_by = requeuedId;
|
|
80
126
|
this.jobs.set(requeuedId, requeued);
|
|
81
127
|
}
|
|
82
|
-
|
|
128
|
+
// Heal a ledger that bloated before this fix shipped: strip terminal
|
|
129
|
+
// payloads / cap retention on load, even when nothing needs re-queuing.
|
|
130
|
+
const compacted = this.compactLedger();
|
|
131
|
+
if (toRequeue.length > 0 || compacted) {
|
|
83
132
|
await this.persist();
|
|
84
133
|
}
|
|
85
134
|
}
|
|
@@ -134,8 +183,16 @@ export class JobQueue {
|
|
|
134
183
|
...(key !== undefined ? { idempotency_key: key } : {}),
|
|
135
184
|
...(opts?.payload !== undefined ? { payload: opts.payload } : {}),
|
|
136
185
|
};
|
|
186
|
+
const snapshot = this.snapshotState();
|
|
137
187
|
this.jobs.set(job.id, job);
|
|
138
|
-
|
|
188
|
+
try {
|
|
189
|
+
await this.persist();
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
this.restoreSnapshot(snapshot);
|
|
193
|
+
this.deletePayloadFilesForJob(job.id);
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
139
196
|
this.processNext();
|
|
140
197
|
return { job, duplicate: false };
|
|
141
198
|
}
|
|
@@ -187,9 +244,16 @@ export class JobQueue {
|
|
|
187
244
|
if (!job)
|
|
188
245
|
return undefined;
|
|
189
246
|
if (job.status === "queued" || job.status === "interrupted") {
|
|
247
|
+
const snapshot = this.snapshotState();
|
|
190
248
|
job.status = "cancelled";
|
|
191
249
|
job.updated_at = new Date().toISOString();
|
|
192
|
-
|
|
250
|
+
try {
|
|
251
|
+
await this.persist();
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
this.restoreSnapshot(snapshot);
|
|
255
|
+
throw err;
|
|
256
|
+
}
|
|
193
257
|
return job;
|
|
194
258
|
}
|
|
195
259
|
if (job.status === "running") {
|
|
@@ -197,12 +261,274 @@ export class JobQueue {
|
|
|
197
261
|
}
|
|
198
262
|
return undefined;
|
|
199
263
|
}
|
|
200
|
-
/**
|
|
264
|
+
/**
|
|
265
|
+
* Keep the persisted ledger bounded so `JSON.stringify` can never exceed
|
|
266
|
+
* V8's max string length (the failure mode that turned every save into a
|
|
267
|
+
* 500). Two cheap, safe reductions on terminal jobs only:
|
|
268
|
+
* 1. Drop `payload` — only active jobs need it.
|
|
269
|
+
* 2. Cap how many terminal jobs we retain (oldest dropped first).
|
|
270
|
+
* Non-terminal jobs (queued/running/interrupted) are never touched.
|
|
271
|
+
* Returns true if anything changed.
|
|
272
|
+
*/
|
|
273
|
+
compactLedger() {
|
|
274
|
+
let changed = false;
|
|
275
|
+
// Protect every job reachable by walking `retry_of` from a non-terminal
|
|
276
|
+
// job. The save/ingest handlers call resolveChainRoot() to recover the
|
|
277
|
+
// canonical row id + source from the chain root. If an ancestor is
|
|
278
|
+
// dropped (payload stripped OR row deleted) while a retry is still
|
|
279
|
+
// queued/running, resolveChainRoot stops short (save.ts:55), the handler
|
|
280
|
+
// falls back to the retry's own id/source, and a duplicate row is
|
|
281
|
+
// created. So these ancestors are exempt from BOTH reductions below.
|
|
282
|
+
const protectedIds = new Set();
|
|
283
|
+
for (const job of this.jobs.values()) {
|
|
284
|
+
if (TERMINAL_STATUSES.has(job.status))
|
|
285
|
+
continue;
|
|
286
|
+
let cursor = job;
|
|
287
|
+
let depth = 0;
|
|
288
|
+
while (cursor?.retry_of && depth < 50) {
|
|
289
|
+
const parent = this.jobs.get(cursor.retry_of);
|
|
290
|
+
if (!parent)
|
|
291
|
+
break;
|
|
292
|
+
protectedIds.add(parent.id);
|
|
293
|
+
cursor = parent;
|
|
294
|
+
depth++;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
const terminal = [];
|
|
298
|
+
for (const job of this.jobs.values()) {
|
|
299
|
+
if (TERMINAL_STATUSES.has(job.status)) {
|
|
300
|
+
// Keep payload on retry-chain ancestors: the save handler walks
|
|
301
|
+
// `retry_of` to the root job and reads its payload to resolve the
|
|
302
|
+
// canonical source/raw artifact (src/jobs/handlers/save.ts). A job
|
|
303
|
+
// with `retried_by` set is such an ancestor, as is any ancestor of
|
|
304
|
+
// a still-active retry (protectedIds). Standalone/leaf terminal jobs
|
|
305
|
+
// no longer need their payload.
|
|
306
|
+
if (job.payload !== undefined &&
|
|
307
|
+
STRIPPABLE_STATUSES.has(job.status) &&
|
|
308
|
+
job.retried_by === undefined &&
|
|
309
|
+
!protectedIds.has(job.id)) {
|
|
310
|
+
delete job.payload;
|
|
311
|
+
changed = true;
|
|
312
|
+
}
|
|
313
|
+
terminal.push(job);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (terminal.length > MAX_TERMINAL_JOBS) {
|
|
317
|
+
// Drop the oldest terminal jobs beyond the cap (oldest by updated_at),
|
|
318
|
+
// but never an ancestor of a still-active retry chain. If protected
|
|
319
|
+
// jobs prevent reaching the cap, the ledger stays slightly above it —
|
|
320
|
+
// correctness over a hard bound (the overflow is bounded by in-flight
|
|
321
|
+
// work, which is small).
|
|
322
|
+
terminal.sort((a, b) => a.updated_at.localeCompare(b.updated_at));
|
|
323
|
+
const overflow = terminal.length - MAX_TERMINAL_JOBS;
|
|
324
|
+
let dropped = 0;
|
|
325
|
+
for (const job of terminal) {
|
|
326
|
+
if (dropped >= overflow)
|
|
327
|
+
break;
|
|
328
|
+
if (protectedIds.has(job.id))
|
|
329
|
+
continue;
|
|
330
|
+
this.jobs.delete(job.id);
|
|
331
|
+
dropped++;
|
|
332
|
+
changed = true;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return changed;
|
|
336
|
+
}
|
|
337
|
+
/** Atomic write: temp file + rename. Ledger is compacted first so the
|
|
338
|
+
* serialized form stays well under V8's max string length. */
|
|
201
339
|
async persist() {
|
|
202
|
-
|
|
340
|
+
this.compactLedger();
|
|
341
|
+
this.prunePayloadRefCache();
|
|
342
|
+
const activePayloadRefs = new Set();
|
|
343
|
+
const entries = [...this.jobs.values()].map((job) => this.serializeJobForLedger(job, activePayloadRefs));
|
|
344
|
+
let data;
|
|
345
|
+
try {
|
|
346
|
+
data = JSON.stringify(entries, null, 2);
|
|
347
|
+
if (Buffer.byteLength(data, "utf-8") > MAX_LEDGER_BYTES) {
|
|
348
|
+
throw this.createLedgerTooLargeError(`Job ledger exceeds ${MAX_LEDGER_BYTES} bytes after payload offload.`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
catch (err) {
|
|
352
|
+
// Defense in depth: even after compaction, a pathological volume of
|
|
353
|
+
// active payloads could exceed V8's max string length. Surface a
|
|
354
|
+
// typed, actionable error instead of a bare 500 — and never silently
|
|
355
|
+
// corrupt active jobs by dropping their payloads.
|
|
356
|
+
if (err instanceof RangeError) {
|
|
357
|
+
throw this.createLedgerTooLargeError("Job ledger too large to serialize (exceeds V8 max string length).");
|
|
358
|
+
}
|
|
359
|
+
throw err;
|
|
360
|
+
}
|
|
203
361
|
const tmp = this.queuePath + `.tmp.${process.pid}`;
|
|
204
362
|
fs.writeFileSync(tmp, data, "utf-8");
|
|
205
363
|
fs.renameSync(tmp, this.queuePath);
|
|
364
|
+
this.cleanupPayloadFiles(activePayloadRefs);
|
|
365
|
+
this.clearPersistRetry();
|
|
366
|
+
}
|
|
367
|
+
createLedgerTooLargeError(message) {
|
|
368
|
+
const e = new Error(`${message} Payloads above ${PAYLOAD_OFFLOAD_THRESHOLD_BYTES} bytes are ` +
|
|
369
|
+
"offloaded automatically, so this means there are too many queued jobs " +
|
|
370
|
+
"or a malformed payload reference. Retry after current jobs drain, or " +
|
|
371
|
+
"see reports/2026-05-25-capture-500-queue-bloat.md for manual recovery.");
|
|
372
|
+
e.code = "queue_ledger_too_large";
|
|
373
|
+
return e;
|
|
374
|
+
}
|
|
375
|
+
snapshotState() {
|
|
376
|
+
return {
|
|
377
|
+
jobs: new Map([...this.jobs.entries()].map(([id, job]) => [id, { ...job }])),
|
|
378
|
+
payloadRefs: new Map([...this.payloadRefs.entries()].map(([id, entry]) => [
|
|
379
|
+
id,
|
|
380
|
+
{ ref: { ...entry.ref }, value: entry.value },
|
|
381
|
+
])),
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
restoreSnapshot(snapshot) {
|
|
385
|
+
this.jobs = snapshot.jobs;
|
|
386
|
+
this.payloadRefs = snapshot.payloadRefs;
|
|
387
|
+
}
|
|
388
|
+
payloadDir() {
|
|
389
|
+
return path.join(path.dirname(this.queuePath), "payloads");
|
|
390
|
+
}
|
|
391
|
+
payloadPath(jobId, sha256) {
|
|
392
|
+
return path.join(this.payloadDir(), `${jobId}.${sha256}.json`);
|
|
393
|
+
}
|
|
394
|
+
payloadRefPath(jobId, sha256) {
|
|
395
|
+
return `payloads/${jobId}.${sha256}.json`;
|
|
396
|
+
}
|
|
397
|
+
payloadAbsPath(ref) {
|
|
398
|
+
return path.isAbsolute(ref.path)
|
|
399
|
+
? ref.path
|
|
400
|
+
: path.join(path.dirname(this.queuePath), ref.path);
|
|
401
|
+
}
|
|
402
|
+
isPayloadRef(payload) {
|
|
403
|
+
return (typeof payload === "object" &&
|
|
404
|
+
payload !== null &&
|
|
405
|
+
payload[PAYLOAD_REF_MARKER] === true &&
|
|
406
|
+
typeof payload["path"] === "string" &&
|
|
407
|
+
typeof payload["byte_length"] === "number" &&
|
|
408
|
+
typeof payload["sha256"] === "string");
|
|
409
|
+
}
|
|
410
|
+
hydrateJob(entry) {
|
|
411
|
+
const job = { ...entry };
|
|
412
|
+
if (this.isPayloadRef(entry.payload)) {
|
|
413
|
+
const payload = this.readPayloadRef(entry.payload);
|
|
414
|
+
job.payload = payload;
|
|
415
|
+
this.payloadRefs.set(job.id, {
|
|
416
|
+
ref: { ...entry.payload },
|
|
417
|
+
value: payload,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
return job;
|
|
421
|
+
}
|
|
422
|
+
readPayloadRef(ref) {
|
|
423
|
+
const refPath = this.payloadAbsPath(ref);
|
|
424
|
+
const raw = fs.readFileSync(refPath, "utf-8");
|
|
425
|
+
const bytes = Buffer.byteLength(raw, "utf-8");
|
|
426
|
+
const sha256 = crypto.createHash("sha256").update(raw).digest("hex");
|
|
427
|
+
if (bytes !== ref.byte_length || sha256 !== ref.sha256) {
|
|
428
|
+
throw new Error(`Job payload ref failed integrity check: ${ref.path}`);
|
|
429
|
+
}
|
|
430
|
+
return JSON.parse(raw);
|
|
431
|
+
}
|
|
432
|
+
serializeJobForLedger(job, activePayloadRefs) {
|
|
433
|
+
const persisted = { ...job };
|
|
434
|
+
if (job.payload === undefined) {
|
|
435
|
+
delete persisted.payload;
|
|
436
|
+
this.payloadRefs.delete(job.id);
|
|
437
|
+
return persisted;
|
|
438
|
+
}
|
|
439
|
+
const cached = this.payloadRefs.get(job.id);
|
|
440
|
+
if (cached &&
|
|
441
|
+
cached.value === job.payload &&
|
|
442
|
+
fs.existsSync(this.payloadAbsPath(cached.ref))) {
|
|
443
|
+
activePayloadRefs.add(this.payloadAbsPath(cached.ref));
|
|
444
|
+
persisted.payload = cached.ref;
|
|
445
|
+
return persisted;
|
|
446
|
+
}
|
|
447
|
+
const payloadJson = JSON.stringify(job.payload);
|
|
448
|
+
if (payloadJson === undefined) {
|
|
449
|
+
throw new Error(`Job ${job.id} payload is not JSON-serializable`);
|
|
450
|
+
}
|
|
451
|
+
const byteLength = Buffer.byteLength(payloadJson, "utf-8");
|
|
452
|
+
if (byteLength <= PAYLOAD_OFFLOAD_THRESHOLD_BYTES) {
|
|
453
|
+
this.payloadRefs.delete(job.id);
|
|
454
|
+
persisted.payload = job.payload;
|
|
455
|
+
return persisted;
|
|
456
|
+
}
|
|
457
|
+
const sha256 = crypto.createHash("sha256").update(payloadJson).digest("hex");
|
|
458
|
+
const refPath = this.payloadRefPath(job.id, sha256);
|
|
459
|
+
const ref = {
|
|
460
|
+
[PAYLOAD_REF_MARKER]: true,
|
|
461
|
+
path: refPath,
|
|
462
|
+
byte_length: byteLength,
|
|
463
|
+
sha256,
|
|
464
|
+
};
|
|
465
|
+
this.writePayloadFile(this.payloadPath(job.id, sha256), payloadJson);
|
|
466
|
+
this.payloadRefs.set(job.id, { ref, value: job.payload });
|
|
467
|
+
activePayloadRefs.add(this.payloadAbsPath(ref));
|
|
468
|
+
persisted.payload = ref;
|
|
469
|
+
return persisted;
|
|
470
|
+
}
|
|
471
|
+
writePayloadFile(filePath, data) {
|
|
472
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
473
|
+
const tmp = `${filePath}.tmp.${process.pid}`;
|
|
474
|
+
fs.writeFileSync(tmp, data, "utf-8");
|
|
475
|
+
fs.renameSync(tmp, filePath);
|
|
476
|
+
}
|
|
477
|
+
prunePayloadRefCache() {
|
|
478
|
+
for (const jobId of this.payloadRefs.keys()) {
|
|
479
|
+
if (!this.jobs.has(jobId)) {
|
|
480
|
+
this.payloadRefs.delete(jobId);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
deletePayloadFilesForJob(jobId) {
|
|
485
|
+
const dir = this.payloadDir();
|
|
486
|
+
let files;
|
|
487
|
+
try {
|
|
488
|
+
if (!fs.existsSync(dir))
|
|
489
|
+
return;
|
|
490
|
+
files = fs.readdirSync(dir);
|
|
491
|
+
}
|
|
492
|
+
catch (err) {
|
|
493
|
+
process.stderr.write(`queue: warning: failed to scan payload files for ${jobId}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
for (const file of files) {
|
|
497
|
+
if (file === `${jobId}.json` || file.startsWith(`${jobId}.`)) {
|
|
498
|
+
this.deletePayloadPath(path.join(dir, file), jobId);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
cleanupPayloadFiles(activePayloadRefs) {
|
|
503
|
+
const dir = this.payloadDir();
|
|
504
|
+
let files;
|
|
505
|
+
try {
|
|
506
|
+
if (!fs.existsSync(dir))
|
|
507
|
+
return;
|
|
508
|
+
files = fs.readdirSync(dir);
|
|
509
|
+
}
|
|
510
|
+
catch (err) {
|
|
511
|
+
process.stderr.write(`queue: warning: failed to scan payload directory for cleanup: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
for (const file of files) {
|
|
515
|
+
if (!file.endsWith(".json"))
|
|
516
|
+
continue;
|
|
517
|
+
const filePath = path.join(dir, file);
|
|
518
|
+
if (!activePayloadRefs.has(filePath)) {
|
|
519
|
+
this.deletePayloadPath(filePath, file);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
deletePayloadPath(filePath, label) {
|
|
524
|
+
try {
|
|
525
|
+
fs.unlinkSync(filePath);
|
|
526
|
+
}
|
|
527
|
+
catch (err) {
|
|
528
|
+
if (err.code !== "ENOENT") {
|
|
529
|
+
process.stderr.write(`queue: warning: failed to remove payload file ${label}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
206
532
|
}
|
|
207
533
|
/**
|
|
208
534
|
* Find the active job for a given idempotency key.
|
|
@@ -237,13 +563,21 @@ export class JobQueue {
|
|
|
237
563
|
};
|
|
238
564
|
// Rebuild the Map with this job first so findNextQueued() picks it up
|
|
239
565
|
// before any previously queued work.
|
|
566
|
+
const snapshot = this.snapshotState();
|
|
240
567
|
const entries = [...this.jobs.entries()];
|
|
241
568
|
this.jobs.clear();
|
|
242
569
|
this.jobs.set(job.id, job);
|
|
243
570
|
for (const [id, j] of entries) {
|
|
244
571
|
this.jobs.set(id, j);
|
|
245
572
|
}
|
|
246
|
-
|
|
573
|
+
try {
|
|
574
|
+
await this.persist();
|
|
575
|
+
}
|
|
576
|
+
catch (err) {
|
|
577
|
+
this.restoreSnapshot(snapshot);
|
|
578
|
+
this.deletePayloadFilesForJob(job.id);
|
|
579
|
+
throw err;
|
|
580
|
+
}
|
|
247
581
|
this.processNext();
|
|
248
582
|
return { job, duplicate: false };
|
|
249
583
|
}
|
|
@@ -286,10 +620,18 @@ export class JobQueue {
|
|
|
286
620
|
retry_of: failed.id,
|
|
287
621
|
...(opts?.payload !== undefined ? { payload: opts.payload } : {}),
|
|
288
622
|
};
|
|
623
|
+
const snapshot = this.snapshotState();
|
|
289
624
|
failed.retried_by = retryId;
|
|
290
625
|
failed.updated_at = new Date().toISOString();
|
|
291
626
|
this.jobs.set(retryId, retry);
|
|
292
|
-
|
|
627
|
+
try {
|
|
628
|
+
await this.persist();
|
|
629
|
+
}
|
|
630
|
+
catch (err) {
|
|
631
|
+
this.restoreSnapshot(snapshot);
|
|
632
|
+
this.deletePayloadFilesForJob(retryId);
|
|
633
|
+
throw err;
|
|
634
|
+
}
|
|
293
635
|
this.processNext();
|
|
294
636
|
return { job: retry, duplicate: false };
|
|
295
637
|
}
|
|
@@ -306,25 +648,105 @@ export class JobQueue {
|
|
|
306
648
|
if (!handler)
|
|
307
649
|
return; // No handler registered — leave queued.
|
|
308
650
|
this.processing = true;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
.catch((err) => {
|
|
318
|
-
next.status = "failed";
|
|
319
|
-
next.error =
|
|
320
|
-
err instanceof Error ? err.message : String(err);
|
|
321
|
-
next.updated_at = new Date().toISOString();
|
|
322
|
-
})
|
|
323
|
-
.finally(() => {
|
|
651
|
+
void (async () => {
|
|
652
|
+
try {
|
|
653
|
+
await this.applyPersistedMutation(() => {
|
|
654
|
+
next.status = "running";
|
|
655
|
+
next.updated_at = new Date().toISOString();
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
catch (err) {
|
|
324
659
|
this.processing = false;
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
660
|
+
process.stderr.write(`queue: failed to persist start of job ${next.id}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
661
|
+
this.scheduleStartRetry();
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
this.clearStartRetry();
|
|
665
|
+
try {
|
|
666
|
+
await handler(next);
|
|
667
|
+
await this.applyTerminalMutation(`completion of job ${next.id}`, () => {
|
|
668
|
+
next.status = "completed";
|
|
669
|
+
next.updated_at = new Date().toISOString();
|
|
670
|
+
});
|
|
671
|
+
}
|
|
672
|
+
catch (err) {
|
|
673
|
+
await this.applyTerminalMutation(`failure of job ${next.id}`, () => {
|
|
674
|
+
next.status = "failed";
|
|
675
|
+
next.error = err instanceof Error ? err.message : String(err);
|
|
676
|
+
next.updated_at = new Date().toISOString();
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
finally {
|
|
680
|
+
this.processing = false;
|
|
681
|
+
this.processNext();
|
|
682
|
+
}
|
|
683
|
+
})();
|
|
684
|
+
}
|
|
685
|
+
async applyPersistedMutation(mutator) {
|
|
686
|
+
const snapshot = this.snapshotState();
|
|
687
|
+
mutator();
|
|
688
|
+
try {
|
|
689
|
+
await this.persist();
|
|
690
|
+
}
|
|
691
|
+
catch (err) {
|
|
692
|
+
this.restoreSnapshot(snapshot);
|
|
693
|
+
throw err;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
async applyTerminalMutation(label, mutator) {
|
|
697
|
+
mutator();
|
|
698
|
+
try {
|
|
699
|
+
await this.persist();
|
|
700
|
+
}
|
|
701
|
+
catch (err) {
|
|
702
|
+
this.markPersistDirty(label, err);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
markPersistDirty(label, err) {
|
|
706
|
+
process.stderr.write(`queue: failed to persist ${label}: ${err instanceof Error ? err.message : String(err)}; will retry\n`);
|
|
707
|
+
this.schedulePersistRetry();
|
|
708
|
+
}
|
|
709
|
+
schedulePersistRetry() {
|
|
710
|
+
if (this.persistRetryTimer)
|
|
711
|
+
return;
|
|
712
|
+
this.persistRetryTimer = setTimeout(() => {
|
|
713
|
+
this.persistRetryTimer = undefined;
|
|
714
|
+
void this.retryDirtyPersist();
|
|
715
|
+
}, PERSIST_RETRY_DELAY_MS);
|
|
716
|
+
this.persistRetryTimer.unref?.();
|
|
717
|
+
}
|
|
718
|
+
scheduleStartRetry() {
|
|
719
|
+
if (this.startRetryTimer)
|
|
720
|
+
return;
|
|
721
|
+
const delayMs = this.startRetryDelayMs;
|
|
722
|
+
this.startRetryDelayMs = Math.min(this.startRetryDelayMs * 2, START_RETRY_MAX_DELAY_MS);
|
|
723
|
+
this.startRetryTimer = setTimeout(() => {
|
|
724
|
+
this.startRetryTimer = undefined;
|
|
725
|
+
this.processNext();
|
|
726
|
+
}, delayMs);
|
|
727
|
+
this.startRetryTimer.unref?.();
|
|
728
|
+
}
|
|
729
|
+
clearStartRetry() {
|
|
730
|
+
if (this.startRetryTimer) {
|
|
731
|
+
clearTimeout(this.startRetryTimer);
|
|
732
|
+
this.startRetryTimer = undefined;
|
|
733
|
+
}
|
|
734
|
+
this.startRetryDelayMs = START_RETRY_INITIAL_DELAY_MS;
|
|
735
|
+
}
|
|
736
|
+
clearPersistRetry() {
|
|
737
|
+
if (!this.persistRetryTimer)
|
|
738
|
+
return;
|
|
739
|
+
clearTimeout(this.persistRetryTimer);
|
|
740
|
+
this.persistRetryTimer = undefined;
|
|
741
|
+
}
|
|
742
|
+
async retryDirtyPersist() {
|
|
743
|
+
try {
|
|
744
|
+
await this.persist();
|
|
745
|
+
}
|
|
746
|
+
catch (err) {
|
|
747
|
+
process.stderr.write(`queue: failed to retry dirty ledger persist: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
748
|
+
this.schedulePersistRetry();
|
|
749
|
+
}
|
|
328
750
|
}
|
|
329
751
|
findNextQueued() {
|
|
330
752
|
for (const job of this.jobs.values()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/jobs/queue.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,OAAO,QAAQ;IAMC;IALZ,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAC9B,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1C,UAAU,GAAG,KAAK,CAAC;IACnB,IAAI,GAAG,KAAK,CAAC;IAErB,YAAoB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAEzC;;;;OAIG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,6DAA6D;IAC7D,WAAW;QACT,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,+EAA+E;IAC/E,eAAe,CAAC,IAAa,EAAE,OAAmB;QAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,uDAAuD;IACvD,UAAU,CAAC,IAAa;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,GAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAElB,gEAAgE;YAChE,MAAM,SAAS,GAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7B,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC;oBAC3B,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBAC1C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,4CAA4C;YAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAQ;oBACpB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACpC,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtF,QAAQ,EAAE,GAAG,CAAC,EAAE;oBAChB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D,CAAC;gBACF,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAK,GAAyB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjD,mCAAmC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CACV,IAAa,EACb,IAAsD;QAEtD,MAAM,GAAG,GAAG,IAAI,EAAE,eAAe,CAAC;QAElC,kDAAkD;QAClD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,IACE,QAAQ,CAAC,MAAM,KAAK,QAAQ;oBAC5B,QAAQ,CAAC,MAAM,KAAK,SAAS;oBAC7B,QAAQ,CAAC,MAAM,KAAK,WAAW,EAC/B,CAAC;oBACD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAC5C,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACjC,eAAe;oBACf,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;gBACD,qEAAqE;YACvE,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,GAAG,GAAQ;YACf,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,uBAAuB,CAAC,MAAc;QACpC,MAAM,GAAG,GAAU,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,cAAsB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC3D,IACE,QAAQ;YACR,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ;gBAC3B,QAAQ,CAAC,MAAM,KAAK,SAAS;gBAC7B,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAClC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAE3B,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC5D,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;YACzB,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wCAAwC;IAChC,KAAK,CAAC,OAAO;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,GAAW;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,eAAe,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;QAC9E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAChB,IAAa,EACb,IAA4B;QAE5B,MAAM,GAAG,GAAQ;YACf,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC;QAEF,sEAAsE;QACtE,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,sDAAsD;IACtD,qBAAqB;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IACE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5B,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,EACrD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7D,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,MAAW,EACX,IAAa,EACb,IAAsD;QAEtD,+DAA+D;QAC/D,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,KAAK,GAAQ;YACjB,EAAE,EAAE,OAAO;YACX,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC;QACF,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;QAC5B,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,kEAAkE;IAC1D,WAAW;QACjB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,wCAAwC;QAE9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC;iBACV,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK;oBACR,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/jobs/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,20 @@ export interface CodexCliRunResult<T> {
|
|
|
8
8
|
output: T;
|
|
9
9
|
cliTag: string;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Thrown ONLY when the runner's own timeout timer fires and kills the Codex
|
|
13
|
+
* CLI process (`code === null`, signal SIGTERM) — i.e. the "took too long"
|
|
14
|
+
* case. A signal termination we did NOT initiate (external SIGKILL, OOM,
|
|
15
|
+
* manual interrupt) is deliberately NOT this error; see `runCodexCommand`.
|
|
16
|
+
* Typed (and carrying `timeoutMs`/`signal`) so callers can apply a bounded
|
|
17
|
+
* retry to it specifically, and so the recorded message is diagnosable
|
|
18
|
+
* instead of the opaque "exit null".
|
|
19
|
+
*/
|
|
20
|
+
export declare class CodexCliTimeoutError extends Error {
|
|
21
|
+
readonly timeoutMs: number;
|
|
22
|
+
readonly signal: NodeJS.Signals | null;
|
|
23
|
+
constructor(timeoutMs: number, signal: NodeJS.Signals | null, detail?: string);
|
|
24
|
+
}
|
|
11
25
|
export declare function runCodexCliJson<T>(options: CodexCliRunOptions): Promise<CodexCliRunResult<T>>;
|
|
12
26
|
export declare function resetCodexCliRunnerCacheForTests(): void;
|
|
13
27
|
export declare function resolveCodexExecutableForTests(name: string, pathEnv?: string | undefined, fallbackDirs?: readonly string[]): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC3B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,SAAK;CAS1E;AAMD,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA8E/B;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAKvD;AAyOD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAA+B,EACjD,YAAY,GAAE,SAAS,MAAM,EAAmC,GAC/D,MAAM,GAAG,SAAS,CAepB"}
|