@jamesaphoenix/tx-cli 0.5.0 → 0.5.8

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 (45) hide show
  1. package/dist/cli.js +46 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/claim.d.ts +2 -2
  4. package/dist/commands/claim.d.ts.map +1 -1
  5. package/dist/commands/claim.js +20 -1
  6. package/dist/commands/claim.js.map +1 -1
  7. package/dist/commands/cycle.d.ts.map +1 -1
  8. package/dist/commands/cycle.js +14 -3
  9. package/dist/commands/cycle.js.map +1 -1
  10. package/dist/commands/dashboard.d.ts.map +1 -1
  11. package/dist/commands/dashboard.js +151 -32
  12. package/dist/commands/dashboard.js.map +1 -1
  13. package/dist/commands/dashboard.test.js +117 -50
  14. package/dist/commands/dashboard.test.js.map +1 -1
  15. package/dist/commands/doc.d.ts +2 -1
  16. package/dist/commands/doc.d.ts.map +1 -1
  17. package/dist/commands/doc.js +193 -4
  18. package/dist/commands/doc.js.map +1 -1
  19. package/dist/commands/doctor.d.ts.map +1 -1
  20. package/dist/commands/doctor.js +32 -21
  21. package/dist/commands/doctor.js.map +1 -1
  22. package/dist/commands/group-context.d.ts +6 -0
  23. package/dist/commands/group-context.d.ts.map +1 -0
  24. package/dist/commands/group-context.js +42 -0
  25. package/dist/commands/group-context.js.map +1 -0
  26. package/dist/commands/scaffold.d.ts +52 -0
  27. package/dist/commands/scaffold.d.ts.map +1 -0
  28. package/dist/commands/scaffold.js +388 -0
  29. package/dist/commands/scaffold.js.map +1 -0
  30. package/dist/commands/trace.d.ts +15 -2
  31. package/dist/commands/trace.d.ts.map +1 -1
  32. package/dist/commands/trace.js +138 -18
  33. package/dist/commands/trace.js.map +1 -1
  34. package/dist/help.d.ts.map +1 -1
  35. package/dist/help.js +135 -8
  36. package/dist/help.js.map +1 -1
  37. package/dist/output.d.ts.map +1 -1
  38. package/dist/output.js +5 -1
  39. package/dist/output.js.map +1 -1
  40. package/package.json +7 -1
  41. package/dist/commands/orchestrator.d.ts +0 -11
  42. package/dist/commands/orchestrator.d.ts.map +0 -1
  43. package/dist/commands/orchestrator.js +0 -129
  44. package/dist/commands/orchestrator.js.map +0 -1
  45. package/dist/tx +0 -0
@@ -5,15 +5,67 @@
5
5
  */
6
6
  import { describe, it, expect, afterEach } from "vitest";
7
7
  import { spawn, spawnSync } from "node:child_process";
8
- import { resolve } from "node:path";
8
+ import { mkdtempSync, rmSync } from "node:fs";
9
+ import { tmpdir } from "node:os";
10
+ import { join, resolve } from "node:path";
9
11
  const CLI_SRC = resolve(__dirname, "../cli.ts");
10
12
  describe("tx dashboard", () => {
11
13
  let proc = null;
14
+ let blocker = null;
15
+ let tempProjectDir = null;
16
+ const delay = (ms) => new Promise((r) => setTimeout(r, ms));
17
+ const canFetch = async (url) => {
18
+ try {
19
+ const res = await fetch(url);
20
+ return res.ok;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ };
26
+ const extractDashboardUrl = (output) => {
27
+ // Preferred: summary line emitted by tx dashboard
28
+ const summary = output.match(/Dashboard:\s*(https?:\/\/[^\s]+)/);
29
+ if (summary?.[1])
30
+ return summary[1];
31
+ // Fallback: Vite's "Local:" line
32
+ const viteLocal = output.match(/Local:\s*(https?:\/\/[^\s]+)/);
33
+ return viteLocal?.[1] ?? null;
34
+ };
35
+ async function waitForServers(outputRef, timeoutMs = 20000) {
36
+ const started = Date.now();
37
+ let dashboardUrl = null;
38
+ while (Date.now() - started < timeoutMs) {
39
+ dashboardUrl = extractDashboardUrl(outputRef.value);
40
+ const apiReady = await canFetch("http://localhost:3001/api/stats");
41
+ const dashboardReady = dashboardUrl ? await canFetch(dashboardUrl) : false;
42
+ if (apiReady && dashboardReady && dashboardUrl) {
43
+ return dashboardUrl;
44
+ }
45
+ await delay(500);
46
+ }
47
+ throw new Error(`dashboard did not become ready. output:\n${outputRef.value}`);
48
+ }
49
+ function runCliInCwd(args, cwd) {
50
+ return spawnSync("bun", [CLI_SRC, ...args], {
51
+ cwd,
52
+ encoding: "utf-8",
53
+ timeout: 20000,
54
+ });
55
+ }
12
56
  afterEach(() => {
57
+ if (blocker && !blocker.killed) {
58
+ blocker.kill("SIGKILL");
59
+ blocker = null;
60
+ }
13
61
  if (proc && !proc.killed) {
14
62
  proc.kill("SIGTERM");
15
63
  proc = null;
16
64
  }
65
+ if (tempProjectDir) {
66
+ rmSync(tempProjectDir, { recursive: true, force: true });
67
+ tempProjectDir = null;
68
+ }
17
69
  });
18
70
  it("is registered as a CLI command", () => {
19
71
  const result = spawnSync("bun", [CLI_SRC, "help"], {
@@ -35,65 +87,80 @@ describe("tx dashboard", () => {
35
87
  proc = spawn("bun", [CLI_SRC, "dashboard", "--no-open"], {
36
88
  stdio: "pipe",
37
89
  });
38
- // Wait for servers to start (up to 10 seconds)
39
- let apiReady = false;
40
- let viteReady = false;
41
- for (let i = 0; i < 20; i++) {
42
- await new Promise((r) => setTimeout(r, 500));
43
- if (!apiReady) {
44
- try {
45
- const res = await fetch("http://localhost:3001/api/stats");
46
- if (res.ok)
47
- apiReady = true;
48
- }
49
- catch {
50
- // not ready yet
51
- }
52
- }
53
- if (!viteReady) {
54
- try {
55
- const res = await fetch("http://localhost:5173");
56
- if (res.ok)
57
- viteReady = true;
58
- }
59
- catch {
60
- // not ready yet
61
- }
62
- }
63
- if (apiReady && viteReady)
64
- break;
65
- }
66
- expect(apiReady).toBe(true);
67
- expect(viteReady).toBe(true);
68
- }, 15000);
90
+ const output = { value: "" };
91
+ proc.stdout?.on("data", (d) => { output.value += d.toString(); });
92
+ proc.stderr?.on("data", (d) => { output.value += d.toString(); });
93
+ const dashboardUrl = await waitForServers(output);
94
+ expect(await canFetch("http://localhost:3001/api/stats")).toBe(true);
95
+ expect(await canFetch(dashboardUrl)).toBe(true);
96
+ }, 25000);
69
97
  it("cleans up child processes on SIGTERM", async () => {
70
98
  proc = spawn("bun", [CLI_SRC, "dashboard", "--no-open"], {
71
99
  stdio: "pipe",
72
100
  });
73
- // Wait for servers to start
74
- await new Promise((r) => setTimeout(r, 4000));
101
+ const output = { value: "" };
102
+ proc.stdout?.on("data", (d) => { output.value += d.toString(); });
103
+ proc.stderr?.on("data", (d) => { output.value += d.toString(); });
104
+ const dashboardUrl = await waitForServers(output);
75
105
  // Send SIGTERM
76
106
  proc.kill("SIGTERM");
77
107
  // Wait for cleanup
78
- await new Promise((r) => setTimeout(r, 2000));
108
+ await delay(2000);
79
109
  // Ports should be freed
80
- let apiFreed = false;
81
- let viteFreed = false;
82
- try {
83
- await fetch("http://localhost:3001/api/stats");
84
- }
85
- catch {
86
- apiFreed = true;
87
- }
88
- try {
89
- await fetch("http://localhost:5173");
90
- }
91
- catch {
92
- viteFreed = true;
93
- }
110
+ const apiFreed = !(await canFetch("http://localhost:3001/api/stats"));
111
+ const viteFreed = !(await canFetch(dashboardUrl));
94
112
  expect(apiFreed).toBe(true);
95
113
  expect(viteFreed).toBe(true);
96
114
  proc = null; // already killed
97
- }, 15000);
115
+ }, 25000);
116
+ it("prints and uses the actual Vite URL when 5173 remains occupied", async () => {
117
+ // Blocker ignores SIGTERM so killPort(5173) won't free it.
118
+ blocker = spawn("bun", [
119
+ "-e",
120
+ `
121
+ process.on("SIGTERM", () => {});
122
+ Bun.serve({ port: 5173, fetch: () => new Response("blocked") });
123
+ setInterval(() => {}, 1000);
124
+ `
125
+ ], { stdio: "ignore" });
126
+ await delay(500);
127
+ proc = spawn("bun", [CLI_SRC, "dashboard", "--no-open"], {
128
+ stdio: "pipe",
129
+ });
130
+ const output = { value: "" };
131
+ proc.stdout?.on("data", (d) => { output.value += d.toString(); });
132
+ proc.stderr?.on("data", (d) => { output.value += d.toString(); });
133
+ const dashboardUrl = await waitForServers(output, 30000);
134
+ expect(dashboardUrl).not.toContain(":5173");
135
+ expect(output.value).toContain(`Dashboard: ${dashboardUrl}`);
136
+ }, 35000);
137
+ it("serves docs endpoints from the selected project database", async () => {
138
+ tempProjectDir = mkdtempSync(join(tmpdir(), "tx-dashboard-docs-"));
139
+ const init = runCliInCwd(["init", "--codex"], tempProjectDir);
140
+ expect(init.status).toBe(0);
141
+ const addDoc = runCliInCwd(["doc", "add", "overview", "dashboard-test-doc", "--title", "Dashboard Test Doc"], tempProjectDir);
142
+ expect(addDoc.status).toBe(0);
143
+ proc = spawn("bun", [CLI_SRC, "dashboard", "--no-open"], {
144
+ cwd: tempProjectDir,
145
+ stdio: "pipe",
146
+ });
147
+ const output = { value: "" };
148
+ proc.stdout?.on("data", (d) => { output.value += d.toString(); });
149
+ proc.stderr?.on("data", (d) => { output.value += d.toString(); });
150
+ await waitForServers(output, 30000);
151
+ const listRes = await fetch("http://localhost:3001/api/docs");
152
+ expect(listRes.ok).toBe(true);
153
+ const listData = await listRes.json();
154
+ expect(listData.docs.some((doc) => doc.name === "dashboard-test-doc")).toBe(true);
155
+ const detailRes = await fetch("http://localhost:3001/api/docs/dashboard-test-doc");
156
+ expect(detailRes.ok).toBe(true);
157
+ const detailData = await detailRes.json();
158
+ expect(detailData.name).toBe("dashboard-test-doc");
159
+ expect(detailData.kind).toBe("overview");
160
+ const graphRes = await fetch("http://localhost:3001/api/docs/graph");
161
+ expect(graphRes.ok).toBe(true);
162
+ const graphData = await graphRes.json();
163
+ expect(graphData.nodes.some((node) => node.label === "dashboard-test-doc")).toBe(true);
164
+ }, 40000);
98
165
  });
99
166
  //# sourceMappingURL=dashboard.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.test.js","sourceRoot":"","sources":["../../src/commands/dashboard.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.test.js","sourceRoot":"","sources":["../../src/commands/dashboard.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Doc commands: doc add, doc edit, doc show, doc list, doc render, doc lock,
3
- * doc version, doc link, doc attach, doc patch, doc validate, doc drift
3
+ * doc version, doc link, doc attach, doc patch, doc validate, doc drift,
4
+ * doc lint-ears
4
5
  */
5
6
  import { Effect } from "effect";
6
7
  import { DocService } from "@jamesaphoenix/tx-core";
@@ -1 +1 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,mBAAmB,CAAA;AAKzD,gCAAgC;AAChC,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,uXAuB9C,CAAA"}
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI/B,OAAO,EACL,UAAU,EAIX,MAAM,wBAAwB,CAAA;AAK/B,OAAO,EAAE,KAAK,KAAK,EAAa,MAAM,mBAAmB,CAAA;AAKzD,gCAAgC;AAChC,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,uXA2B9C,CAAA"}
@@ -1,12 +1,15 @@
1
1
  /**
2
2
  * Doc commands: doc add, doc edit, doc show, doc list, doc render, doc lock,
3
- * doc version, doc link, doc attach, doc patch, doc validate, doc drift
3
+ * doc version, doc link, doc attach, doc patch, doc validate, doc drift,
4
+ * doc lint-ears
4
5
  */
5
6
  import { Effect } from "effect";
6
- import { readFileSync } from "node:fs";
7
+ import { existsSync, readFileSync } from "node:fs";
8
+ import { resolve } from "node:path";
7
9
  import { execSync } from "node:child_process";
8
- import { DocService } from "@jamesaphoenix/tx-core";
10
+ import { DocService, formatEarsValidationErrors, readTxConfig, validateEarsRequirements, } from "@jamesaphoenix/tx-core";
9
11
  import { DOC_KINDS } from "@jamesaphoenix/tx-types";
12
+ import { parse as parseYaml } from "yaml";
10
13
  import { toJson } from "../output.js";
11
14
  import { flag, opt } from "../utils/parse.js";
12
15
  import { CliExitError } from "../cli-exit.js";
@@ -15,6 +18,9 @@ const docKindStrings = DOC_KINDS;
15
18
  export const doc = (pos, flags) => {
16
19
  const sub = pos[0];
17
20
  const rest = pos.slice(1);
21
+ if (!sub) {
22
+ return docList([], flags);
23
+ }
18
24
  switch (sub) {
19
25
  case "add": return docAdd(rest, flags);
20
26
  case "edit": return docEdit(rest, flags);
@@ -28,6 +34,7 @@ export const doc = (pos, flags) => {
28
34
  case "patch": return docPatch(rest, flags);
29
35
  case "validate": return docValidate(rest, flags);
30
36
  case "drift": return docDrift(rest, flags);
37
+ case "lint-ears": return docLintEars(rest, flags);
31
38
  default:
32
39
  return Effect.sync(() => {
33
40
  console.error(`Unknown doc subcommand: ${sub ?? "(none)"}`);
@@ -287,6 +294,144 @@ const docDrift = (pos, flags) => Effect.gen(function* () {
287
294
  }
288
295
  }
289
296
  });
297
+ const docLintEars = (pos, flags) => Effect.gen(function* () {
298
+ const target = pos[0];
299
+ const jsonMode = flag(flags, "json");
300
+ if (!target) {
301
+ console.error("Usage: tx doc lint-ears <doc-name-or-yaml-path> [--json]");
302
+ throw new CliExitError(1);
303
+ }
304
+ let yamlPath = target;
305
+ let docName = null;
306
+ if (!existsSync(yamlPath)) {
307
+ const svc = yield* DocService;
308
+ const doc = yield* svc.get(target);
309
+ if (doc.kind !== "prd") {
310
+ const message = `Doc '${target}' is kind '${doc.kind}'. EARS validation is only supported for PRD docs.`;
311
+ if (jsonMode) {
312
+ console.log(toJson({ valid: false, doc: target, errors: [{ field: "kind", message }] }));
313
+ }
314
+ else {
315
+ console.error(message);
316
+ }
317
+ throw new CliExitError(1);
318
+ }
319
+ docName = doc.name;
320
+ const config = readTxConfig();
321
+ yamlPath = resolve(config.docs.path, doc.filePath);
322
+ }
323
+ let parsed;
324
+ try {
325
+ parsed = parseYaml(readFileSync(yamlPath, "utf8"));
326
+ }
327
+ catch (error) {
328
+ if (jsonMode) {
329
+ console.log(toJson({
330
+ valid: false,
331
+ doc: docName ?? null,
332
+ path: yamlPath,
333
+ errors: [
334
+ {
335
+ field: "yaml",
336
+ message: `YAML parse error: ${String(error)}`,
337
+ },
338
+ ],
339
+ }));
340
+ }
341
+ else {
342
+ console.error(`YAML parse error in ${yamlPath}: ${String(error)}`);
343
+ }
344
+ throw new CliExitError(1);
345
+ }
346
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
347
+ if (jsonMode) {
348
+ console.log(toJson({
349
+ valid: false,
350
+ doc: docName ?? null,
351
+ path: yamlPath,
352
+ errors: [{ field: "yaml", message: "YAML root must be an object" }],
353
+ }));
354
+ }
355
+ else {
356
+ console.error(`YAML root must be an object: ${yamlPath}`);
357
+ }
358
+ throw new CliExitError(1);
359
+ }
360
+ const parsedRecord = parsed;
361
+ const kind = typeof parsedRecord.kind === "string" ? parsedRecord.kind : null;
362
+ if (kind && kind !== "prd") {
363
+ const message = `YAML kind '${kind}' is not 'prd'. EARS validation is only supported for PRD docs.`;
364
+ if (jsonMode) {
365
+ console.log(toJson({
366
+ valid: false,
367
+ doc: docName ?? null,
368
+ path: yamlPath,
369
+ errors: [{ field: "kind", message }],
370
+ }));
371
+ }
372
+ else {
373
+ console.error(message);
374
+ }
375
+ throw new CliExitError(1);
376
+ }
377
+ const earsRequirements = parsedRecord.ears_requirements;
378
+ if (earsRequirements === undefined) {
379
+ if (jsonMode) {
380
+ console.log(toJson({
381
+ valid: true,
382
+ doc: docName ?? null,
383
+ path: yamlPath,
384
+ count: 0,
385
+ errors: [],
386
+ message: "No ears_requirements section found",
387
+ }));
388
+ }
389
+ else {
390
+ console.log(`No ears_requirements section found in: ${yamlPath}`);
391
+ }
392
+ return;
393
+ }
394
+ if (!Array.isArray(earsRequirements)) {
395
+ if (jsonMode) {
396
+ console.log(toJson({
397
+ valid: false,
398
+ doc: docName ?? null,
399
+ path: yamlPath,
400
+ errors: [
401
+ { field: "ears_requirements", message: "'ears_requirements' must be an array" },
402
+ ],
403
+ }));
404
+ }
405
+ else {
406
+ console.error("EARS validation failed: 'ears_requirements' must be an array");
407
+ }
408
+ throw new CliExitError(1);
409
+ }
410
+ const errors = validateEarsRequirements(earsRequirements);
411
+ if (jsonMode) {
412
+ console.log(toJson({
413
+ valid: errors.length === 0,
414
+ doc: docName ?? null,
415
+ path: yamlPath,
416
+ count: earsRequirements.length,
417
+ errors,
418
+ errorSummary: errors.length > 0 ? formatEarsValidationErrors(errors) : null,
419
+ }));
420
+ }
421
+ else if (errors.length === 0) {
422
+ console.log(`EARS validation passed: ${yamlPath}`);
423
+ }
424
+ else {
425
+ console.error(`EARS validation failed for ${yamlPath}:`);
426
+ for (const error of errors) {
427
+ const location = error.id ? `${error.id}` : `entry #${error.index + 1}`;
428
+ console.error(`- ${location} (${error.field}) ${error.message}`);
429
+ }
430
+ }
431
+ if (errors.length > 0) {
432
+ throw new CliExitError(1);
433
+ }
434
+ });
290
435
  /** Generate template YAML content for a doc kind. */
291
436
  function generateTemplate(kind, name, title) {
292
437
  switch (kind) {
@@ -344,6 +489,14 @@ function generateTemplate(kind, name, title) {
344
489
  `requirements:`,
345
490
  ` - Requirement 1`,
346
491
  ``,
492
+ `# Structured requirements using EARS notation (optional)`,
493
+ `# ears_requirements:`,
494
+ `# - id: EARS-XXX-001`,
495
+ `# pattern: ubiquitous`,
496
+ `# system: the system`,
497
+ `# response: do something`,
498
+ `# priority: must`,
499
+ ``,
347
500
  `acceptance_criteria:`,
348
501
  ` - Criterion 1`,
349
502
  ``,
@@ -387,7 +540,43 @@ function generateTemplate(kind, name, title) {
387
540
  ` - docs: All versions retained`,
388
541
  ``,
389
542
  `testing_strategy: |`,
390
- ` Shared test layer, integration tests.`,
543
+ ` ## Requirement Traceability`,
544
+ ` | Requirement | Test Type | Test Name | Assertions | File Path |`,
545
+ ` |-------------|-----------|-----------|------------|-----------|`,
546
+ ` | Req 1 | integration | should_do_x | Expected output/state | test/integration/feature.test.ts |`,
547
+ ``,
548
+ ` ## Unit Tests`,
549
+ ` - Target functions/services:`,
550
+ ` - Mock boundaries (what is mocked vs real):`,
551
+ ` - Error branches to cover:`,
552
+ ``,
553
+ ` ## Integration Tests (REQUIRED)`,
554
+ ` - Test layer: getSharedTestLayer()`,
555
+ ` - Deterministic IDs: fixtureId(name)`,
556
+ ` - Scenarios (minimum 8):`,
557
+ ` 1. Setup / Action / Assert`,
558
+ ` 2. Setup / Action / Assert`,
559
+ ` 3. Setup / Action / Assert`,
560
+ ` 4. Setup / Action / Assert`,
561
+ ` 5. Setup / Action / Assert`,
562
+ ` 6. Setup / Action / Assert`,
563
+ ` 7. Setup / Action / Assert`,
564
+ ` 8. Setup / Action / Assert`,
565
+ ``,
566
+ ` ## Failure Injection`,
567
+ ` - Timeout behavior:`,
568
+ ` - Malformed input handling:`,
569
+ ` - Partial failure and retry/idempotency behavior:`,
570
+ ``,
571
+ ` ## Edge Cases`,
572
+ ` - Boundary conditions:`,
573
+ ` - Recovery scenarios:`,
574
+ ` - Concurrent/race scenarios (if applicable):`,
575
+ ``,
576
+ ` ## Performance (if applicable)`,
577
+ ` - Latency target:`,
578
+ ` - Throughput target:`,
579
+ ` - Memory limits:`,
391
580
  ``,
392
581
  ].join("\n");
393
582
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIvE,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;AA8C7C,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,EAAE,OAAO,KAAK,yGAsJ/C,CAAA"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIvE,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;AA8C7C,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,EAAE,OAAO,KAAK,yGAgK/C,CAAA"}
@@ -96,28 +96,39 @@ export const doctor = (_pos, flags) => Effect.gen(function* () {
96
96
  message: "Effect services: wired correctly",
97
97
  });
98
98
  // 5. Check for stale claims/workers
99
- const staleClaims = db.prepare(`SELECT COUNT(*) as count FROM task_claims
100
- WHERE status = 'active'
101
- AND datetime(lease_expires_at) < datetime('now')`).get();
102
- const staleClaimCount = staleClaims?.count ?? 0;
103
- const deadWorkers = db.prepare(`SELECT COUNT(*) as count FROM workers
104
- WHERE status NOT IN ('dead', 'stopping')
105
- AND datetime(last_heartbeat_at, '+5 minutes') < datetime('now')`).get();
106
- const deadWorkerCount = deadWorkers?.count ?? 0;
107
- if (staleClaimCount > 0 || deadWorkerCount > 0) {
108
- const parts = [];
109
- if (staleClaimCount > 0)
110
- parts.push(`${staleClaimCount} expired claim(s)`);
111
- if (deadWorkerCount > 0)
112
- parts.push(`${deadWorkerCount} stale worker(s)`);
113
- checks.push({
114
- name: "stale_claims",
115
- status: "warn",
116
- message: `Stale claims/workers: ${parts.join(", ")}`,
117
- details: "Run tx coordinator reconcile to clean up.",
118
- });
99
+ // Wrap in try/catch: task_claims and workers tables may not exist if migrations
100
+ // haven't fully applied (e.g., migration 015+ not yet run)
101
+ try {
102
+ const staleClaims = db.prepare(`SELECT COUNT(*) as count FROM task_claims
103
+ WHERE status = 'active'
104
+ AND datetime(lease_expires_at) < datetime('now')`).get();
105
+ const staleClaimCount = staleClaims?.count ?? 0;
106
+ const deadWorkers = db.prepare(`SELECT COUNT(*) as count FROM workers
107
+ WHERE status NOT IN ('dead', 'stopping')
108
+ AND datetime(last_heartbeat_at, '+5 minutes') < datetime('now')`).get();
109
+ const deadWorkerCount = deadWorkers?.count ?? 0;
110
+ if (staleClaimCount > 0 || deadWorkerCount > 0) {
111
+ const parts = [];
112
+ if (staleClaimCount > 0)
113
+ parts.push(`${staleClaimCount} expired claim(s)`);
114
+ if (deadWorkerCount > 0)
115
+ parts.push(`${deadWorkerCount} stale worker(s)`);
116
+ checks.push({
117
+ name: "stale_claims",
118
+ status: "warn",
119
+ message: `Stale claims/workers: ${parts.join(", ")}`,
120
+ details: "Run tx coordinator reconcile to clean up.",
121
+ });
122
+ }
123
+ else {
124
+ checks.push({
125
+ name: "stale_claims",
126
+ status: "pass",
127
+ message: "Claims/workers: no stale entries",
128
+ });
129
+ }
119
130
  }
120
- else {
131
+ catch {
121
132
  checks.push({
122
133
  name: "stale_claims",
123
134
  status: "pass",