omp-worker-mcp 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,603 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { lstat, mkdir, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import path from "node:path";
5
+ import { setTimeout as delay } from "node:timers/promises";
6
+ import { GROUP_TERMINAL_STATUSES, TERMINAL_STATUSES, } from "./types.js";
7
+ const JOB_ID_PATTERN = /^job-[0-9]+-[a-f0-9]{8}$/;
8
+ const GROUP_ID_PATTERN = /^group-[0-9]+-[a-f0-9]{8}$/;
9
+ export function stateRoot() {
10
+ return process.env.OMP_WORKER_STATE_DIR
11
+ ? path.resolve(process.env.OMP_WORKER_STATE_DIR)
12
+ : path.join(homedir(), ".codex", "state", "omp-worker");
13
+ }
14
+ export function createJobId() {
15
+ return `job-${Date.now()}-${randomBytes(4).toString("hex")}`;
16
+ }
17
+ export function validateJobId(jobId) {
18
+ if (!JOB_ID_PATTERN.test(jobId)) {
19
+ throw new Error(`Invalid job_id: ${jobId}`);
20
+ }
21
+ }
22
+ export function jobDirectory(jobId) {
23
+ validateJobId(jobId);
24
+ const root = path.resolve(stateRoot(), "jobs");
25
+ const target = path.resolve(root, jobId);
26
+ const rel = path.relative(root, target);
27
+ if (rel.startsWith("..") || path.isAbsolute(rel) || rel !== jobId) {
28
+ throw new Error(`Path traversal detected for job_id: ${jobId}`);
29
+ }
30
+ return target;
31
+ }
32
+ export function jobFilePath(jobId) {
33
+ return path.join(jobDirectory(jobId), "job.json");
34
+ }
35
+ export function cancellationFilePath(jobId) {
36
+ return path.join(jobDirectory(jobId), "cancel.request.json");
37
+ }
38
+ export async function ensureJobDirectory(jobId) {
39
+ const directory = jobDirectory(jobId);
40
+ await mkdir(directory, { recursive: true });
41
+ return directory;
42
+ }
43
+ export async function readJob(jobId) {
44
+ const target = jobFilePath(jobId);
45
+ for (let attempt = 0; attempt < 3; attempt++) {
46
+ try {
47
+ const content = await readFile(target, "utf8");
48
+ return JSON.parse(content);
49
+ }
50
+ catch (error) {
51
+ const code = error.code;
52
+ if (attempt < 2 && (code === "ENOENT" || error instanceof SyntaxError)) {
53
+ await delay(25);
54
+ continue;
55
+ }
56
+ if (code === "ENOENT") {
57
+ throw new Error(`Unknown job_id: ${jobId}`);
58
+ }
59
+ throw error;
60
+ }
61
+ }
62
+ throw new Error(`Unknown job_id: ${jobId}`);
63
+ }
64
+ async function writeAtomicFile(target, content) {
65
+ const temp = `${target}.${process.pid}.${randomBytes(4).toString("hex")}.tmp`;
66
+ await writeFile(temp, content, "utf8");
67
+ for (let attempt = 0; attempt < 5; attempt++) {
68
+ try {
69
+ await rename(temp, target);
70
+ return;
71
+ }
72
+ catch (error) {
73
+ const code = error.code;
74
+ if (code !== "EEXIST" && code !== "EPERM" && code !== "EBUSY") {
75
+ await rm(temp, { force: true }).catch(() => { });
76
+ throw error;
77
+ }
78
+ await rm(target, { force: true }).catch(() => { });
79
+ if (attempt === 4) {
80
+ try {
81
+ await rename(temp, target);
82
+ return;
83
+ }
84
+ catch {
85
+ await writeFile(target, content, "utf8");
86
+ await rm(temp, { force: true }).catch(() => { });
87
+ return;
88
+ }
89
+ }
90
+ }
91
+ await delay(10 * (attempt + 1));
92
+ }
93
+ }
94
+ export async function writeJob(record) {
95
+ validateJobId(record.id);
96
+ if (!record.updatedAt) {
97
+ record.updatedAt = new Date().toISOString();
98
+ }
99
+ const target = jobFilePath(record.id);
100
+ await writeAtomicFile(target, `${JSON.stringify(record, null, 2)}\n`);
101
+ }
102
+ export async function writePrompt(jobId, attempt, content) {
103
+ const target = path.join(jobDirectory(jobId), `attempt-${String(attempt).padStart(2, "0")}.prompt.md`);
104
+ await writeFile(target, content, "utf8");
105
+ return target;
106
+ }
107
+ export async function writeCancellationRequest(jobId, reason) {
108
+ validateJobId(jobId);
109
+ const target = cancellationFilePath(jobId);
110
+ await writeFile(target, `${JSON.stringify({ requestedAt: new Date().toISOString(), reason }, null, 2)}\n`, "utf8");
111
+ }
112
+ export async function readCancellationRequest(jobId) {
113
+ validateJobId(jobId);
114
+ try {
115
+ const content = await readFile(cancellationFilePath(jobId), "utf8");
116
+ return JSON.parse(content);
117
+ }
118
+ catch (error) {
119
+ if (error.code === "ENOENT") {
120
+ return null;
121
+ }
122
+ throw error;
123
+ }
124
+ }
125
+ export async function hasCancellationRequest(jobId) {
126
+ validateJobId(jobId);
127
+ try {
128
+ await readFile(cancellationFilePath(jobId), "utf8");
129
+ return true;
130
+ }
131
+ catch (error) {
132
+ if (error.code === "ENOENT") {
133
+ return false;
134
+ }
135
+ throw error;
136
+ }
137
+ }
138
+ export async function clearCancellationRequest(jobId) {
139
+ validateJobId(jobId);
140
+ await rm(cancellationFilePath(jobId), { force: true });
141
+ }
142
+ export function createGroupId() {
143
+ return `group-${Date.now()}-${randomBytes(4).toString("hex")}`;
144
+ }
145
+ export function validateGroupId(groupId) {
146
+ if (!GROUP_ID_PATTERN.test(groupId)) {
147
+ throw new Error(`Invalid group_id: ${groupId}`);
148
+ }
149
+ }
150
+ export function groupDirectory(groupId) {
151
+ validateGroupId(groupId);
152
+ const root = path.resolve(stateRoot(), "groups");
153
+ const target = path.resolve(root, groupId);
154
+ const rel = path.relative(root, target);
155
+ if (rel.startsWith("..") || path.isAbsolute(rel) || rel !== groupId) {
156
+ throw new Error(`Path traversal detected for group_id: ${groupId}`);
157
+ }
158
+ return target;
159
+ }
160
+ export function groupFilePath(groupId) {
161
+ return path.join(groupDirectory(groupId), "group.json");
162
+ }
163
+ export function groupCancellationFilePath(groupId) {
164
+ return path.join(groupDirectory(groupId), "cancel.request.json");
165
+ }
166
+ export async function ensureGroupDirectory(groupId) {
167
+ const directory = groupDirectory(groupId);
168
+ await mkdir(directory, { recursive: true });
169
+ return directory;
170
+ }
171
+ export async function readGroup(groupId) {
172
+ const target = groupFilePath(groupId);
173
+ for (let attempt = 0; attempt < 3; attempt++) {
174
+ try {
175
+ const content = await readFile(target, "utf8");
176
+ return JSON.parse(content);
177
+ }
178
+ catch (error) {
179
+ const code = error.code;
180
+ if (attempt < 2 && (code === "ENOENT" || error instanceof SyntaxError)) {
181
+ await delay(25);
182
+ continue;
183
+ }
184
+ if (code === "ENOENT") {
185
+ throw new Error(`Unknown group_id: ${groupId}`);
186
+ }
187
+ throw error;
188
+ }
189
+ }
190
+ throw new Error(`Unknown group_id: ${groupId}`);
191
+ }
192
+ export async function writeGroup(record) {
193
+ validateGroupId(record.id);
194
+ if (!record.updatedAt) {
195
+ record.updatedAt = new Date().toISOString();
196
+ }
197
+ const target = groupFilePath(record.id);
198
+ await writeAtomicFile(target, `${JSON.stringify(record, null, 2)}\n`);
199
+ }
200
+ export async function writeGroupCancellationRequest(groupId, reason) {
201
+ validateGroupId(groupId);
202
+ const target = groupCancellationFilePath(groupId);
203
+ await writeFile(target, `${JSON.stringify({ requestedAt: new Date().toISOString(), reason }, null, 2)}\n`, "utf8");
204
+ }
205
+ export async function readGroupCancellationRequest(groupId) {
206
+ validateGroupId(groupId);
207
+ try {
208
+ const content = await readFile(groupCancellationFilePath(groupId), "utf8");
209
+ return JSON.parse(content);
210
+ }
211
+ catch (error) {
212
+ if (error.code === "ENOENT") {
213
+ return null;
214
+ }
215
+ throw error;
216
+ }
217
+ }
218
+ export async function hasGroupCancellationRequest(groupId) {
219
+ validateGroupId(groupId);
220
+ try {
221
+ await readFile(groupCancellationFilePath(groupId), "utf8");
222
+ return true;
223
+ }
224
+ catch (error) {
225
+ if (error.code === "ENOENT") {
226
+ return false;
227
+ }
228
+ throw error;
229
+ }
230
+ }
231
+ export async function clearGroupCancellationRequest(groupId) {
232
+ validateGroupId(groupId);
233
+ await rm(groupCancellationFilePath(groupId), { force: true });
234
+ }
235
+ export async function calculateDirectorySize(dirPath) {
236
+ let totalBytes = 0;
237
+ try {
238
+ const stats = await lstat(dirPath);
239
+ if (stats.isSymbolicLink()) {
240
+ return 0;
241
+ }
242
+ if (!stats.isDirectory()) {
243
+ return stats.size;
244
+ }
245
+ const entries = await readdir(dirPath, { withFileTypes: true });
246
+ for (const entry of entries) {
247
+ const fullPath = path.join(dirPath, entry.name);
248
+ if (entry.isSymbolicLink()) {
249
+ continue;
250
+ }
251
+ if (entry.isDirectory()) {
252
+ totalBytes += await calculateDirectorySize(fullPath);
253
+ }
254
+ else if (entry.isFile()) {
255
+ try {
256
+ const fileStat = await lstat(fullPath);
257
+ totalBytes += fileStat.size;
258
+ }
259
+ catch {
260
+ // ignore concurrent file deletion
261
+ }
262
+ }
263
+ }
264
+ }
265
+ catch {
266
+ return 0;
267
+ }
268
+ return totalBytes;
269
+ }
270
+ export function getRetentionOptionsFromEnv() {
271
+ const ttlEnv = process.env.OMP_WORKER_RETENTION_TTL_SECONDS;
272
+ const maxBytesEnv = process.env.OMP_WORKER_RETENTION_MAX_BYTES;
273
+ const ttlSeconds = ttlEnv && !Number.isNaN(Number(ttlEnv)) && Number(ttlEnv) > 0 ? Number(ttlEnv) : undefined;
274
+ const maxBytes = maxBytesEnv && !Number.isNaN(Number(maxBytesEnv)) && Number(maxBytesEnv) > 0 ? Number(maxBytesEnv) : undefined;
275
+ return { ttlSeconds, maxBytes };
276
+ }
277
+ export async function cleanState(options) {
278
+ const ttlSeconds = options?.ttlSeconds;
279
+ const maxBytes = options?.maxBytes;
280
+ const dryRun = options?.dryRun ?? false;
281
+ const jobsRoot = path.resolve(stateRoot(), "jobs");
282
+ const groupsRoot = path.resolve(stateRoot(), "groups");
283
+ const scanned = [];
284
+ const errors = [];
285
+ // 1. Scan Jobs
286
+ try {
287
+ const jobDirents = await readdir(jobsRoot, { withFileTypes: true });
288
+ for (const dirent of jobDirents) {
289
+ const dirName = dirent.name;
290
+ const fullPath = path.join(jobsRoot, dirName);
291
+ if (dirent.isSymbolicLink()) {
292
+ errors.push({
293
+ id: dirName,
294
+ type: "job",
295
+ path: fullPath,
296
+ error: "Symbolic links in state directory are rejected and not followed",
297
+ });
298
+ continue;
299
+ }
300
+ if (!JOB_ID_PATTERN.test(dirName)) {
301
+ errors.push({
302
+ id: dirName,
303
+ type: "job",
304
+ path: fullPath,
305
+ error: `Invalid job directory name: ${dirName}`,
306
+ });
307
+ continue;
308
+ }
309
+ try {
310
+ const stat = await lstat(fullPath);
311
+ if (stat.isSymbolicLink()) {
312
+ errors.push({
313
+ id: dirName,
314
+ type: "job",
315
+ path: fullPath,
316
+ error: "Symbolic links in state directory are rejected and not followed",
317
+ });
318
+ continue;
319
+ }
320
+ if (!stat.isDirectory()) {
321
+ continue;
322
+ }
323
+ }
324
+ catch (err) {
325
+ errors.push({
326
+ id: dirName,
327
+ type: "job",
328
+ path: fullPath,
329
+ error: `Cannot stat job directory: ${err instanceof Error ? err.message : String(err)}`,
330
+ });
331
+ continue;
332
+ }
333
+ let record = null;
334
+ const jsonFile = path.join(fullPath, "job.json");
335
+ try {
336
+ const content = await readFile(jsonFile, "utf8");
337
+ record = JSON.parse(content);
338
+ }
339
+ catch (err) {
340
+ errors.push({
341
+ id: dirName,
342
+ type: "job",
343
+ path: fullPath,
344
+ error: `Corrupted or unreadable job.json: ${err instanceof Error ? err.message : String(err)}`,
345
+ });
346
+ // Corrupted records cannot be confirmed terminal, protect from deletion
347
+ continue;
348
+ }
349
+ const isTerminal = TERMINAL_STATUSES.has(record.status);
350
+ const timeStr = record.completedAt || record.updatedAt || record.createdAt || new Date(0).toISOString();
351
+ let timestamp = new Date(timeStr).getTime();
352
+ if (Number.isNaN(timestamp) || timestamp <= 0) {
353
+ timestamp = Date.now();
354
+ }
355
+ const bytes = await calculateDirectorySize(fullPath);
356
+ scanned.push({
357
+ id: record.id,
358
+ type: "job",
359
+ directory: fullPath,
360
+ bytes,
361
+ isTerminal,
362
+ timestamp,
363
+ updatedAt: timeStr,
364
+ });
365
+ }
366
+ }
367
+ catch (err) {
368
+ if (err.code !== "ENOENT") {
369
+ errors.push({
370
+ path: jobsRoot,
371
+ error: `Failed to read jobs directory: ${err instanceof Error ? err.message : String(err)}`,
372
+ });
373
+ }
374
+ }
375
+ // 2. Scan Groups
376
+ try {
377
+ const groupDirents = await readdir(groupsRoot, { withFileTypes: true });
378
+ for (const dirent of groupDirents) {
379
+ const dirName = dirent.name;
380
+ const fullPath = path.join(groupsRoot, dirName);
381
+ if (dirent.isSymbolicLink()) {
382
+ errors.push({
383
+ id: dirName,
384
+ type: "group",
385
+ path: fullPath,
386
+ error: "Symbolic links in state directory are rejected and not followed",
387
+ });
388
+ continue;
389
+ }
390
+ if (!GROUP_ID_PATTERN.test(dirName)) {
391
+ errors.push({
392
+ id: dirName,
393
+ type: "group",
394
+ path: fullPath,
395
+ error: `Invalid group directory name: ${dirName}`,
396
+ });
397
+ continue;
398
+ }
399
+ try {
400
+ const stat = await lstat(fullPath);
401
+ if (stat.isSymbolicLink()) {
402
+ errors.push({
403
+ id: dirName,
404
+ type: "group",
405
+ path: fullPath,
406
+ error: "Symbolic links in state directory are rejected and not followed",
407
+ });
408
+ continue;
409
+ }
410
+ if (!stat.isDirectory()) {
411
+ continue;
412
+ }
413
+ }
414
+ catch (err) {
415
+ errors.push({
416
+ id: dirName,
417
+ type: "group",
418
+ path: fullPath,
419
+ error: `Cannot stat group directory: ${err instanceof Error ? err.message : String(err)}`,
420
+ });
421
+ continue;
422
+ }
423
+ let record = null;
424
+ const jsonFile = path.join(fullPath, "group.json");
425
+ try {
426
+ const content = await readFile(jsonFile, "utf8");
427
+ record = JSON.parse(content);
428
+ }
429
+ catch (err) {
430
+ errors.push({
431
+ id: dirName,
432
+ type: "group",
433
+ path: fullPath,
434
+ error: `Corrupted or unreadable group.json: ${err instanceof Error ? err.message : String(err)}`,
435
+ });
436
+ // Corrupted records cannot be confirmed terminal, protect from deletion
437
+ continue;
438
+ }
439
+ const isTerminal = GROUP_TERMINAL_STATUSES.has(record.status);
440
+ const timeStr = record.completedAt || record.updatedAt || record.createdAt || new Date(0).toISOString();
441
+ let timestamp = new Date(timeStr).getTime();
442
+ if (Number.isNaN(timestamp) || timestamp <= 0) {
443
+ timestamp = Date.now();
444
+ }
445
+ const bytes = await calculateDirectorySize(fullPath);
446
+ scanned.push({
447
+ id: record.id,
448
+ type: "group",
449
+ directory: fullPath,
450
+ bytes,
451
+ isTerminal,
452
+ timestamp,
453
+ updatedAt: timeStr,
454
+ });
455
+ }
456
+ }
457
+ catch (err) {
458
+ if (err.code !== "ENOENT") {
459
+ errors.push({
460
+ path: groupsRoot,
461
+ error: `Failed to read groups directory: ${err instanceof Error ? err.message : String(err)}`,
462
+ });
463
+ }
464
+ }
465
+ const totalBytes = scanned.reduce((acc, item) => acc + item.bytes, 0);
466
+ const retainedJobsCount = scanned.filter((item) => item.type === "job").length;
467
+ const retainedGroupsCount = scanned.filter((item) => item.type === "group").length;
468
+ // Safe default: If neither TTL nor maxBytes is configured, do not delete anything
469
+ if ((ttlSeconds === undefined || ttlSeconds <= 0) && (maxBytes === undefined || maxBytes <= 0)) {
470
+ return {
471
+ cleanedJobs: 0,
472
+ cleanedGroups: 0,
473
+ freedBytes: 0,
474
+ retainedJobs: retainedJobsCount,
475
+ retainedGroups: retainedGroupsCount,
476
+ totalBytes,
477
+ dryRun,
478
+ items: [],
479
+ errors,
480
+ };
481
+ }
482
+ const toDelete = new Map();
483
+ // Policy 1: TTL on terminal entries
484
+ if (ttlSeconds !== undefined && ttlSeconds > 0) {
485
+ const cutoff = Date.now() - ttlSeconds * 1000;
486
+ for (const entry of scanned) {
487
+ if (entry.isTerminal && entry.timestamp <= cutoff) {
488
+ toDelete.set(entry.directory, {
489
+ entry,
490
+ reason: `Expired by TTL (${ttlSeconds}s)`,
491
+ });
492
+ }
493
+ }
494
+ }
495
+ // Policy 2: Max bytes on remaining terminal entries (LRU/oldest first)
496
+ if (maxBytes !== undefined && maxBytes > 0) {
497
+ let currentBytes = scanned.reduce((sum, item) => {
498
+ return toDelete.has(item.directory) ? sum : sum + item.bytes;
499
+ }, 0);
500
+ if (currentBytes > maxBytes) {
501
+ const candidates = scanned
502
+ .filter((item) => item.isTerminal && !toDelete.has(item.directory))
503
+ .sort((a, b) => a.timestamp - b.timestamp);
504
+ for (const entry of candidates) {
505
+ if (currentBytes <= maxBytes)
506
+ break;
507
+ toDelete.set(entry.directory, {
508
+ entry,
509
+ reason: `Exceeded max bytes limit (${maxBytes} bytes)`,
510
+ });
511
+ currentBytes -= entry.bytes;
512
+ }
513
+ }
514
+ }
515
+ const items = [];
516
+ let freedBytes = 0;
517
+ let cleanedJobs = 0;
518
+ let cleanedGroups = 0;
519
+ for (const { entry, reason } of toDelete.values()) {
520
+ // Strict safety guard before deletion: ensure path is within jobsRoot or groupsRoot
521
+ const resolved = path.resolve(entry.directory);
522
+ const isSafeJob = resolved.startsWith(jobsRoot) && resolved !== jobsRoot;
523
+ const isSafeGroup = resolved.startsWith(groupsRoot) && resolved !== groupsRoot;
524
+ if (!isSafeJob && !isSafeGroup) {
525
+ errors.push({
526
+ id: entry.id,
527
+ type: entry.type,
528
+ path: entry.directory,
529
+ error: `Path traversal violation during cleanup: ${entry.directory}`,
530
+ });
531
+ continue;
532
+ }
533
+ // Double check it's not a symlink
534
+ try {
535
+ const st = await lstat(resolved);
536
+ if (st.isSymbolicLink()) {
537
+ errors.push({
538
+ id: entry.id,
539
+ type: entry.type,
540
+ path: resolved,
541
+ error: "Refusing to delete symlink during state cleanup",
542
+ });
543
+ continue;
544
+ }
545
+ }
546
+ catch (err) {
547
+ errors.push({
548
+ id: entry.id,
549
+ type: entry.type,
550
+ path: resolved,
551
+ error: `Failed to verify directory before deletion: ${err instanceof Error ? err.message : String(err)}`,
552
+ });
553
+ continue;
554
+ }
555
+ let deleted = false;
556
+ if (dryRun) {
557
+ deleted = false;
558
+ }
559
+ else {
560
+ try {
561
+ await rm(resolved, { recursive: true, force: true });
562
+ deleted = true;
563
+ }
564
+ catch (err) {
565
+ errors.push({
566
+ id: entry.id,
567
+ type: entry.type,
568
+ path: resolved,
569
+ error: `Failed to remove directory: ${err instanceof Error ? err.message : String(err)}`,
570
+ });
571
+ deleted = false;
572
+ }
573
+ }
574
+ if (deleted || dryRun) {
575
+ if (entry.type === "job")
576
+ cleanedJobs++;
577
+ if (entry.type === "group")
578
+ cleanedGroups++;
579
+ freedBytes += entry.bytes;
580
+ }
581
+ items.push({
582
+ id: entry.id,
583
+ type: entry.type,
584
+ path: entry.directory,
585
+ bytes: entry.bytes,
586
+ updatedAt: entry.updatedAt,
587
+ deleted,
588
+ reason,
589
+ });
590
+ }
591
+ return {
592
+ cleanedJobs,
593
+ cleanedGroups,
594
+ freedBytes,
595
+ retainedJobs: retainedJobsCount - (dryRun ? 0 : cleanedJobs),
596
+ retainedGroups: retainedGroupsCount - (dryRun ? 0 : cleanedGroups),
597
+ totalBytes: totalBytes - (dryRun ? 0 : freedBytes),
598
+ dryRun,
599
+ items,
600
+ errors,
601
+ };
602
+ }
603
+ //# sourceMappingURL=job-store.js.map