@rasensio/aidlc 1.26.1 → 1.27.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.
- package/dist/commands/cost.d.ts +7 -0
- package/dist/commands/cost.d.ts.map +1 -1
- package/dist/commands/cost.js +137 -0
- package/dist/commands/cost.js.map +1 -1
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +11 -3
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/review.d.ts +15 -2
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +163 -9
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +27 -66
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/transition.d.ts.map +1 -1
- package/dist/commands/transition.js +45 -8
- package/dist/commands/transition.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +8 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +30 -1
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/cost/context.d.ts +72 -0
- package/dist/cost/context.d.ts.map +1 -0
- package/dist/cost/context.js +155 -0
- package/dist/cost/context.js.map +1 -0
- package/dist/cost/dedupe-history.d.ts +98 -0
- package/dist/cost/dedupe-history.d.ts.map +1 -0
- package/dist/cost/dedupe-history.js +275 -0
- package/dist/cost/dedupe-history.js.map +1 -0
- package/dist/cost/ledger.d.ts.map +1 -1
- package/dist/cost/ledger.js +11 -5
- package/dist/cost/ledger.js.map +1 -1
- package/dist/cost/providers/claude-code.d.ts +13 -1
- package/dist/cost/providers/claude-code.d.ts.map +1 -1
- package/dist/cost/providers/claude-code.js +112 -10
- package/dist/cost/providers/claude-code.js.map +1 -1
- package/dist/cost/rates.d.ts +16 -1
- package/dist/cost/rates.d.ts.map +1 -1
- package/dist/cost/rates.js +21 -0
- package/dist/cost/rates.js.map +1 -1
- package/dist/cost/recorder.d.ts.map +1 -1
- package/dist/cost/recorder.js +3 -0
- package/dist/cost/recorder.js.map +1 -1
- package/dist/cost/report.d.ts +30 -0
- package/dist/cost/report.d.ts.map +1 -1
- package/dist/cost/report.js +96 -5
- package/dist/cost/report.js.map +1 -1
- package/dist/cost/sync.d.ts +18 -0
- package/dist/cost/sync.d.ts.map +1 -1
- package/dist/cost/sync.js +1 -1
- package/dist/cost/sync.js.map +1 -1
- package/dist/cost/types.d.ts +40 -0
- package/dist/cost/types.d.ts.map +1 -1
- package/dist/cost/types.js +15 -0
- package/dist/cost/types.js.map +1 -1
- package/dist/discover/scanner.d.ts +20 -2
- package/dist/discover/scanner.d.ts.map +1 -1
- package/dist/discover/scanner.js +80 -14
- package/dist/discover/scanner.js.map +1 -1
- package/dist/doctor/migrations/findings-filename.d.ts +77 -0
- package/dist/doctor/migrations/findings-filename.d.ts.map +1 -0
- package/dist/doctor/migrations/findings-filename.js +189 -0
- package/dist/doctor/migrations/findings-filename.js.map +1 -0
- package/dist/doctor/migrations/index.d.ts.map +1 -1
- package/dist/doctor/migrations/index.js +8 -0
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/review/findings-naming.d.ts +112 -0
- package/dist/review/findings-naming.d.ts.map +1 -0
- package/dist/review/findings-naming.js +132 -0
- package/dist/review/findings-naming.js.map +1 -0
- package/package.json +2 -2
package/dist/commands/cost.d.ts
CHANGED
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
* Design: design.md §1 (command surface)
|
|
9
9
|
*/
|
|
10
10
|
import { Command } from 'commander';
|
|
11
|
+
/**
|
|
12
|
+
* Token counts at the magnitude they actually occur: `245k`, `1.2M`.
|
|
13
|
+
*
|
|
14
|
+
* Context sizes here run to hundreds of thousands, and a bare `244983` is a number
|
|
15
|
+
* a reader has to count digits on to compare against a 150,000 budget.
|
|
16
|
+
*/
|
|
17
|
+
export declare function fmtTokens(tokens: number): string;
|
|
11
18
|
/** Human age of an ISO timestamp, for the capture-error note (AC-11). */
|
|
12
19
|
export declare function fmtAge(timestamp: string, now?: Date): string;
|
|
13
20
|
export declare function registerCost(program: Command): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0FpC,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CASxE;
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0FpC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CASxE;AAikBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiGnD"}
|
package/dist/commands/cost.js
CHANGED
|
@@ -92,6 +92,19 @@ function fmtSeconds(secs) {
|
|
|
92
92
|
const h = secs / 3600;
|
|
93
93
|
return h >= 1 ? `${h.toFixed(1)}h` : `${Math.round(secs / 60)}m`;
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Token counts at the magnitude they actually occur: `245k`, `1.2M`.
|
|
97
|
+
*
|
|
98
|
+
* Context sizes here run to hundreds of thousands, and a bare `244983` is a number
|
|
99
|
+
* a reader has to count digits on to compare against a 150,000 budget.
|
|
100
|
+
*/
|
|
101
|
+
export function fmtTokens(tokens) {
|
|
102
|
+
if (tokens >= 1_000_000)
|
|
103
|
+
return `${(tokens / 1_000_000).toFixed(1)}M`;
|
|
104
|
+
if (tokens >= 1_000)
|
|
105
|
+
return `${Math.round(tokens / 1_000)}k`;
|
|
106
|
+
return String(tokens);
|
|
107
|
+
}
|
|
95
108
|
/** Human age of an ISO timestamp, for the capture-error note (AC-11). */
|
|
96
109
|
export function fmtAge(timestamp, now = new Date()) {
|
|
97
110
|
const then = Date.parse(timestamp);
|
|
@@ -330,6 +343,40 @@ function runReport(instance, opts) {
|
|
|
330
343
|
process.stdout.write(` total: ${total} elapsed: ${fmtSeconds(c.elapsedSeconds)}` +
|
|
331
344
|
(activeTotal !== null ? ` active: ${activeTotal} idle: ${idle}` : '') +
|
|
332
345
|
` fidelity: ${fmtFidelityMix(c.fidelityMix)}\n`);
|
|
346
|
+
/*
|
|
347
|
+
* Where the money went, not just how much. `$578.45` alone gives a reader
|
|
348
|
+
* nothing to act on: on this project's ledger 59.6% of dollars is cache read —
|
|
349
|
+
* re-reading the conversation prefix, not producing anything — so the lever is
|
|
350
|
+
* context size, and that is invisible from a total.
|
|
351
|
+
*
|
|
352
|
+
* Every figure is a word or a number, never a colour or a bare symbol, so the
|
|
353
|
+
* line reads the same piped, in a monochrome terminal, and to a screen reader.
|
|
354
|
+
* `unmeasured` is printed rather than omitted: a missing figure and a zero one
|
|
355
|
+
* mean different things, which is the rule the rest of this report already
|
|
356
|
+
* follows.
|
|
357
|
+
*/
|
|
358
|
+
const d = c.drivers;
|
|
359
|
+
if (d.responses !== null || d.cacheReadShare !== null) {
|
|
360
|
+
const parts = [];
|
|
361
|
+
if (d.cacheReadShare !== null) {
|
|
362
|
+
parts.push(`context re-read: ${(d.cacheReadShare * 100).toFixed(1)}% of spend`);
|
|
363
|
+
}
|
|
364
|
+
if (d.avgContextTokens !== null) {
|
|
365
|
+
parts.push(`avg context: ${fmtTokens(d.avgContextTokens)}`);
|
|
366
|
+
}
|
|
367
|
+
if (d.microUsdPerResponse !== null) {
|
|
368
|
+
parts.push(`per response: ${microToUsd(d.microUsdPerResponse)}`);
|
|
369
|
+
}
|
|
370
|
+
if (d.responses !== null) {
|
|
371
|
+
// `~` marks a floor, matching how activePartial is already marked: some
|
|
372
|
+
// entries predate response counting, so the total understates the truth.
|
|
373
|
+
parts.push(`responses: ${d.responsesPartial ? '~' : ''}${d.responses}`);
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
parts.push('responses: unmeasured');
|
|
377
|
+
}
|
|
378
|
+
process.stdout.write(` ${parts.join(' ')}\n`);
|
|
379
|
+
}
|
|
333
380
|
process.stdout.write(` rates: ${c.snapshot}\n`);
|
|
334
381
|
}
|
|
335
382
|
const err = lastCaptureError(root);
|
|
@@ -365,6 +412,81 @@ function runReport(instance, opts) {
|
|
|
365
412
|
}
|
|
366
413
|
}
|
|
367
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* `aidlc cost context` — resident context against the budget.
|
|
417
|
+
*
|
|
418
|
+
* States are words, never colour or a bare symbol, so the line reads the same
|
|
419
|
+
* piped, in a monochrome terminal, and to a screen reader. "unmeasured" is printed
|
|
420
|
+
* rather than omitted: no reading and a zero reading mean different things.
|
|
421
|
+
*/
|
|
422
|
+
async function runContext(opts) {
|
|
423
|
+
const root = projectRoot();
|
|
424
|
+
const { readContext } = await import('../cost/context.js');
|
|
425
|
+
const reading = await readContext(root, loadCostConfig(root));
|
|
426
|
+
if (opts.json) {
|
|
427
|
+
process.stdout.write(JSON.stringify(reading, null, 2) + '\n');
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
const budget = fmtTokens(reading.budgetTokens);
|
|
431
|
+
if (reading.transcriptsUnreadable > 0) {
|
|
432
|
+
// Named rather than swallowed: a reading that is quietly partial is worse than
|
|
433
|
+
// one that says so.
|
|
434
|
+
process.stderr.write(`note: ${reading.transcriptsUnreadable} of ${reading.transcriptsScanned} transcripts could not be read ` +
|
|
435
|
+
'through — the reading below may be stale\n');
|
|
436
|
+
}
|
|
437
|
+
if (reading.residentTokens === null) {
|
|
438
|
+
process.stdout.write(`resident context: unmeasured budget: ${budget}\n` +
|
|
439
|
+
(reading.transcriptsScanned === 0
|
|
440
|
+
? 'no transcript for this project yet — a fresh session that has made no call reads as unmeasured, not as zero\n'
|
|
441
|
+
: 'no usage-bearing record found in this project\'s transcripts\n'));
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
const pct = Math.round((reading.residentTokens / reading.budgetTokens) * 100);
|
|
445
|
+
const verdict = reading.overBudget ? 'OVER BUDGET' : 'within budget';
|
|
446
|
+
process.stdout.write(`resident context: ${fmtTokens(reading.residentTokens)} budget: ${budget} ${pct}% — ${verdict}\n`);
|
|
447
|
+
if (reading.overBudget) {
|
|
448
|
+
// Said out loud, and never as a gate: the whole force of the budget is that
|
|
449
|
+
// somebody reads it at a phase boundary (AC-19).
|
|
450
|
+
process.stdout.write('a phase boundary is a free context reset — start the next phase in a fresh session\n' +
|
|
451
|
+
'and re-read only what that phase\'s skill names\n');
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/** `aidlc cost dedupe` — plan by default, rewrite only with --apply. */
|
|
455
|
+
async function runDedupe(opts) {
|
|
456
|
+
const root = projectRoot();
|
|
457
|
+
const { dedupeHistory } = await import('../cost/dedupe-history.js');
|
|
458
|
+
const report = await dedupeHistory(root, loadCostConfig(root), opts.apply === true);
|
|
459
|
+
if (opts.json) {
|
|
460
|
+
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
const delta = report.microUsdAfter - report.microUsdBefore;
|
|
464
|
+
const factor = report.microUsdAfter > 0 ? (report.microUsdBefore / report.microUsdAfter).toFixed(3) : 'n/a';
|
|
465
|
+
process.stdout.write(`${report.applied ? 'applied' : 'plan (nothing written)'}\n` +
|
|
466
|
+
` scanned: ${report.scanned} priced entries with no response count\n` +
|
|
467
|
+
` duplicates: ${report.duplicates} — a second charge for a response counted elsewhere ` +
|
|
468
|
+
`(${microToUsd(report.duplicateMicroUsd)})\n` +
|
|
469
|
+
` re-derived: ${report.rederived} (units corrected in place)\n` +
|
|
470
|
+
` unchanged: ${report.unchanged} (re-read, already correct)\n` +
|
|
471
|
+
` transcript gone: ${report.transcriptGone.length} (honest unknown, left byte-identical)\n` +
|
|
472
|
+
` manual: ${report.manualSkipped} (human-placed, never overruled)\n` +
|
|
473
|
+
` ledgers: ${report.files.length}\n` +
|
|
474
|
+
` weighted dollars: ${microToUsd(report.microUsdBefore)} → ${microToUsd(report.microUsdAfter)} ` +
|
|
475
|
+
`(${delta <= 0 ? '' : '+'}${microToUsd(delta)}, over-count factor ${factor})\n`);
|
|
476
|
+
if (!report.applied && (report.rederived > 0 || report.duplicates > 0)) {
|
|
477
|
+
// Named as a separate act on purpose: applying moves every figure already
|
|
478
|
+
// published in a retrospective or a blog post.
|
|
479
|
+
process.stderr.write('note: re-run with --apply to write these. Every figure above moves in already-published ' +
|
|
480
|
+
'retrospectives and blog posts, so read the deltas first\n');
|
|
481
|
+
}
|
|
482
|
+
if (report.transcriptGone.length > 0) {
|
|
483
|
+
// Reported, never estimated: scaling an unreadable entry by the measured factor
|
|
484
|
+
// would make an estimate look like a measurement (AC-13).
|
|
485
|
+
process.stderr.write(`note: ${report.transcriptGone.length} entries have no readable transcript and were left exactly as ` +
|
|
486
|
+
'they are — not scaled by the measured factor, because an estimate that looks like a measurement ' +
|
|
487
|
+
'is the defect being fixed\n');
|
|
488
|
+
}
|
|
489
|
+
}
|
|
368
490
|
async function runSync(instance) {
|
|
369
491
|
const root = projectRoot();
|
|
370
492
|
const { syncCosts } = await import('../cost/sync.js');
|
|
@@ -538,6 +660,21 @@ export function registerCost(program) {
|
|
|
538
660
|
.action(async (instance) => {
|
|
539
661
|
await runSync(instance);
|
|
540
662
|
});
|
|
663
|
+
cost
|
|
664
|
+
.command('context')
|
|
665
|
+
.description('Resident context for this session, against the budget')
|
|
666
|
+
.option('--json', 'Structured JSON output')
|
|
667
|
+
.action(async (opts) => {
|
|
668
|
+
await runContext(opts);
|
|
669
|
+
});
|
|
670
|
+
cost
|
|
671
|
+
.command('dedupe')
|
|
672
|
+
.description('Plan (or apply) the correction for usage counted once per content block')
|
|
673
|
+
.option('--apply', 'Rewrite the ledgers — read-only without it')
|
|
674
|
+
.option('--json', 'Structured JSON output')
|
|
675
|
+
.action(async (opts) => {
|
|
676
|
+
await runDedupe(opts);
|
|
677
|
+
});
|
|
541
678
|
const rates = cost.command('rates').description('Manage the usage→dollar rate table');
|
|
542
679
|
rates
|
|
543
680
|
.command('update')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDvD"}
|
|
@@ -25,7 +25,7 @@ import { openKnowledge } from '../knowledge/engine.js';
|
|
|
25
25
|
/**
|
|
26
26
|
* Format a human-readable summary from the scan result.
|
|
27
27
|
*/
|
|
28
|
-
function formatSummary(result, docPaths) {
|
|
28
|
+
function formatSummary(result, docPaths, preserved = []) {
|
|
29
29
|
const lines = [];
|
|
30
30
|
// Languages
|
|
31
31
|
if (result.languages.length > 0) {
|
|
@@ -59,6 +59,11 @@ function formatSummary(result, docPaths) {
|
|
|
59
59
|
if (docPaths.length > 0) {
|
|
60
60
|
lines.push(`Context docs written: ${docPaths.join(', ')}`);
|
|
61
61
|
}
|
|
62
|
+
if (preserved.length > 0) {
|
|
63
|
+
// Named, not silently skipped: "kept yours" and "overwrote yours" must not look
|
|
64
|
+
// the same from the outside.
|
|
65
|
+
lines.push(`Kept hand-written: ${preserved.join(', ')} (use --force to regenerate)`);
|
|
66
|
+
}
|
|
62
67
|
return lines.join('\n') + '\n';
|
|
63
68
|
}
|
|
64
69
|
// ---------------------------------------------------------------------------
|
|
@@ -73,6 +78,7 @@ export function registerDiscover(program) {
|
|
|
73
78
|
.description('Scan codebase, generate context documents, and seed the knowledge graph')
|
|
74
79
|
.option('--json', 'Output full scan result as JSON')
|
|
75
80
|
.option('--no-knowledge', 'Skip seeding the knowledge graph')
|
|
81
|
+
.option('--force', 'Overwrite hand-edited context docs as well as generated ones')
|
|
76
82
|
.action((opts) => {
|
|
77
83
|
// `process.cwd()` deliberately, NOT resolveProjectRoot() — a documented
|
|
78
84
|
// exemption (cwd-project-root/AC-16), asserted by
|
|
@@ -86,7 +92,9 @@ export function registerDiscover(program) {
|
|
|
86
92
|
// Run the scanner
|
|
87
93
|
const result = scanCodebase(cwd);
|
|
88
94
|
// Write Context_Docs
|
|
89
|
-
const docPaths = writeContextDocs(cwd, result
|
|
95
|
+
const { written: docPaths, preserved } = writeContextDocs(cwd, result, {
|
|
96
|
+
force: opts.force === true,
|
|
97
|
+
});
|
|
90
98
|
// Seed the knowledge graph (KG Req 8.1)
|
|
91
99
|
let knowledgeSummary = '';
|
|
92
100
|
if (opts.knowledge !== false) {
|
|
@@ -111,7 +119,7 @@ export function registerDiscover(program) {
|
|
|
111
119
|
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
112
120
|
}
|
|
113
121
|
else {
|
|
114
|
-
const summary = formatSummary(result, docPaths);
|
|
122
|
+
const summary = formatSummary(result, docPaths, preserved);
|
|
115
123
|
process.stdout.write(summary + knowledgeSummary);
|
|
116
124
|
}
|
|
117
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,SAAS,aAAa,CAAC,MAAkB,EAAE,QAAkB;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,27 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Behavior:
|
|
5
5
|
* - `aidlc review <instance> <artifact>` — create or show findings for an artifact.
|
|
6
|
-
* - Writes structured findings to
|
|
6
|
+
* - Writes structured findings to
|
|
7
|
+
* `.aidlc/state/<instance>/<artifact>.md.review.md`, via
|
|
8
|
+
* `findingsFilename` — never from the argument as typed.
|
|
7
9
|
* - In non-orchestrator mode: creates a placeholder findings file and prints
|
|
8
10
|
* instructions for manual review (the skill `80-review.md` guides AI agents).
|
|
9
11
|
* - With `--json`: output findings structure as JSON.
|
|
10
12
|
* - Integrates with review gate: `evaluateTransition` already checks for `*.review.md`
|
|
11
13
|
* files and parses findings from them.
|
|
12
14
|
*
|
|
13
|
-
*
|
|
15
|
+
* ## The filename used to come from the argument as typed
|
|
16
|
+
*
|
|
17
|
+
* It no longer does. `` `${artifactArg}.review.md` `` meant that typing
|
|
18
|
+
* `requirements` — the phase name, and what the review skill's prose calls the
|
|
19
|
+
* artifact — produced `requirements.review.md`, which the gate could not see
|
|
20
|
+
* because it looks artifacts up by the template's name, `requirements.md`. The
|
|
21
|
+
* review ran, parsed, counted and summarised correctly, and the transition failed
|
|
22
|
+
* saying the findings file was absent. 11 files across 6 completed instances are
|
|
23
|
+
* still on disk under that spelling. `review/findings-naming.ts` now owns the
|
|
24
|
+
* mapping for both this writer and the reader in `transition.ts`.
|
|
25
|
+
*
|
|
26
|
+
* Requirements: 24.1, 24.2, 24.4, AC-1, AC-2, AC-3, AC-7
|
|
14
27
|
*
|
|
15
28
|
* @module
|
|
16
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAWjE,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAaD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CASjE;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAerD"}
|
package/dist/commands/review.js
CHANGED
|
@@ -3,14 +3,27 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Behavior:
|
|
5
5
|
* - `aidlc review <instance> <artifact>` — create or show findings for an artifact.
|
|
6
|
-
* - Writes structured findings to
|
|
6
|
+
* - Writes structured findings to
|
|
7
|
+
* `.aidlc/state/<instance>/<artifact>.md.review.md`, via
|
|
8
|
+
* `findingsFilename` — never from the argument as typed.
|
|
7
9
|
* - In non-orchestrator mode: creates a placeholder findings file and prints
|
|
8
10
|
* instructions for manual review (the skill `80-review.md` guides AI agents).
|
|
9
11
|
* - With `--json`: output findings structure as JSON.
|
|
10
12
|
* - Integrates with review gate: `evaluateTransition` already checks for `*.review.md`
|
|
11
13
|
* files and parses findings from them.
|
|
12
14
|
*
|
|
13
|
-
*
|
|
15
|
+
* ## The filename used to come from the argument as typed
|
|
16
|
+
*
|
|
17
|
+
* It no longer does. `` `${artifactArg}.review.md` `` meant that typing
|
|
18
|
+
* `requirements` — the phase name, and what the review skill's prose calls the
|
|
19
|
+
* artifact — produced `requirements.review.md`, which the gate could not see
|
|
20
|
+
* because it looks artifacts up by the template's name, `requirements.md`. The
|
|
21
|
+
* review ran, parsed, counted and summarised correctly, and the transition failed
|
|
22
|
+
* saying the findings file was absent. 11 files across 6 completed instances are
|
|
23
|
+
* still on disk under that spelling. `review/findings-naming.ts` now owns the
|
|
24
|
+
* mapping for both this writer and the reader in `transition.ts`.
|
|
25
|
+
*
|
|
26
|
+
* Requirements: 24.1, 24.2, 24.4, AC-1, AC-2, AC-3, AC-7
|
|
14
27
|
*
|
|
15
28
|
* @module
|
|
16
29
|
*/
|
|
@@ -18,8 +31,11 @@ import { Command } from 'commander';
|
|
|
18
31
|
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
19
32
|
import { join } from 'node:path';
|
|
20
33
|
import { parseFindings, parseFrontmatter } from '../review/findings-parser.js';
|
|
21
|
-
import {
|
|
34
|
+
import { FINDINGS_SUFFIX, artifactFromFindingsFile, canonicalArtifactName, findingsFilename, } from '../review/findings-naming.js';
|
|
35
|
+
import { atomicWrite, instancePath, loadSnapshot } from '../state/snapshot-store.js';
|
|
22
36
|
import { resolveProjectRoot } from '../core/project-root.js';
|
|
37
|
+
import { loadTemplates, resolveTemplate, phasesForScope } from '../core/template-resolver.js';
|
|
38
|
+
import { loadTemplates as loadBuiltInTemplates } from '@rasensio/aidlc-content';
|
|
23
39
|
// ---------------------------------------------------------------------------
|
|
24
40
|
// Findings file parsing
|
|
25
41
|
//
|
|
@@ -92,7 +108,7 @@ export function registerReview(program) {
|
|
|
92
108
|
.command('review')
|
|
93
109
|
.description('Run an adversarial review of a lifecycle artifact, recording structured findings')
|
|
94
110
|
.argument('<instance>', 'Lifecycle instance name')
|
|
95
|
-
.argument('<artifact>', 'Artifact
|
|
111
|
+
.argument('<artifact>', 'Artifact to review, with or without .md (e.g., requirements or requirements.md)')
|
|
96
112
|
.option('--json', 'Output findings as structured JSON')
|
|
97
113
|
.action((instance, artifact, opts) => {
|
|
98
114
|
runReview(instance, artifact, opts);
|
|
@@ -111,24 +127,47 @@ function runReview(instanceArg, artifactArg, opts) {
|
|
|
111
127
|
process.exitCode = 1;
|
|
112
128
|
return;
|
|
113
129
|
}
|
|
114
|
-
//
|
|
115
|
-
const
|
|
130
|
+
// AC-7: refuse an artifact no gate will ever read, before writing anything.
|
|
131
|
+
const rejection = checkArtifactAllowed(projectRoot, stateDir, instanceArg, artifactArg);
|
|
132
|
+
if (rejection) {
|
|
133
|
+
process.stderr.write(`Error: ${rejection}\n`);
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// AC-1, AC-2, AC-3: the filename comes from the shared helper, never from the
|
|
138
|
+
// argument as typed, so both spellings land on one file.
|
|
139
|
+
const artifactName = canonicalArtifactName(artifactArg);
|
|
140
|
+
const findingsFileName = findingsFilename(artifactArg);
|
|
116
141
|
const findingsFilePath = join(instDir, findingsFileName);
|
|
117
|
-
|
|
142
|
+
// AC-3: probe the legacy spelling before scaffolding. Without this, running
|
|
143
|
+
// `aidlc review cost-tracking requirements` against one of the six instances
|
|
144
|
+
// that already hold `requirements.review.md` would write a second file beside
|
|
145
|
+
// it — two files for one artifact, which is the thing AC-3 forbids.
|
|
146
|
+
const legacyPath = existsSync(findingsFilePath)
|
|
147
|
+
? null
|
|
148
|
+
: findLegacyFindingsFile(instDir, artifactName);
|
|
149
|
+
const existingPath = existsSync(findingsFilePath) ? findingsFilePath : legacyPath;
|
|
150
|
+
if (existingPath) {
|
|
118
151
|
// Read and output existing findings
|
|
119
|
-
const content = readFileSync(
|
|
152
|
+
const content = readFileSync(existingPath, 'utf8');
|
|
120
153
|
const parsed = parseFindingsFile(content);
|
|
121
154
|
if (opts.json) {
|
|
122
155
|
process.stdout.write(JSON.stringify(parsed, null, 2) + '\n');
|
|
123
156
|
}
|
|
124
157
|
else {
|
|
158
|
+
if (legacyPath) {
|
|
159
|
+
process.stdout.write(`Note: findings are recorded under the legacy filename ` +
|
|
160
|
+
`"${legacyPath.slice(instDir.length + 1)}". ` +
|
|
161
|
+
`The gate reads it, and \`aidlc doctor\` renames it to ` +
|
|
162
|
+
`"${findingsFileName}".\n\n`);
|
|
163
|
+
}
|
|
125
164
|
printFindingsSummary(parsed);
|
|
126
165
|
}
|
|
127
166
|
return;
|
|
128
167
|
}
|
|
129
168
|
// No findings file exists — create a placeholder
|
|
130
169
|
const reviewer = getReviewerIdentity();
|
|
131
|
-
const placeholder = generatePlaceholderFindings(
|
|
170
|
+
const placeholder = generatePlaceholderFindings(artifactName, reviewer);
|
|
132
171
|
// Write the findings file atomically
|
|
133
172
|
atomicWrite(findingsFilePath, placeholder);
|
|
134
173
|
// Parse what we just wrote for output
|
|
@@ -151,6 +190,121 @@ function runReview(instanceArg, artifactArg, opts) {
|
|
|
151
190
|
// ---------------------------------------------------------------------------
|
|
152
191
|
// Helpers
|
|
153
192
|
// ---------------------------------------------------------------------------
|
|
193
|
+
/**
|
|
194
|
+
* Find a findings file for `artifactName` under the legacy spelling.
|
|
195
|
+
*
|
|
196
|
+
* The legacy spelling drops the artifact's own `.md` — `requirements.review.md`
|
|
197
|
+
* for `requirements.md`. `artifactFromFindingsFile` resolves both, so rather than
|
|
198
|
+
* reconstruct the legacy name here (a second derivation, which is the bug class
|
|
199
|
+
* this instance closes) we scan the directory and ask the shared helper.
|
|
200
|
+
*
|
|
201
|
+
* @returns Absolute path, or null when no such file exists.
|
|
202
|
+
*/
|
|
203
|
+
function findLegacyFindingsFile(instDir, artifactName) {
|
|
204
|
+
let entries;
|
|
205
|
+
try {
|
|
206
|
+
entries = readdirSync(instDir).sort();
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
for (const entry of entries) {
|
|
212
|
+
if (!entry.endsWith(FINDINGS_SUFFIX))
|
|
213
|
+
continue;
|
|
214
|
+
if (entry === `${artifactName}${FINDINGS_SUFFIX}`)
|
|
215
|
+
continue;
|
|
216
|
+
if (artifactFromFindingsFile(entry) === artifactName) {
|
|
217
|
+
return join(instDir, entry);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* AC-7: is `artifactArg` an artifact this instance's template actually declares?
|
|
224
|
+
*
|
|
225
|
+
* Today a typo scaffolds a findings file that no gate will ever read — the exact
|
|
226
|
+
* silent-success shape this instance exists to remove, one step earlier in the
|
|
227
|
+
* pipeline.
|
|
228
|
+
*
|
|
229
|
+
* The allowlist is every artifact, **required or optional**, across every phase in
|
|
230
|
+
* the instance's scope. That is deliberately wider than AC-7's literal wording
|
|
231
|
+
* ("the current phase's required artifacts"), and `design.md` records why:
|
|
232
|
+
* `architecture-diagram.md` is an *optional* artifact of design in `full-feature`
|
|
233
|
+
* and `agent-portability` legitimately reviewed it, while re-reviewing an earlier
|
|
234
|
+
* phase's artifact is exactly what the amendment protocol asks for. Both would be
|
|
235
|
+
* refused by the literal reading. The typo is still caught, which is the point.
|
|
236
|
+
*
|
|
237
|
+
* @returns An error message, or null when the argument is acceptable.
|
|
238
|
+
*/
|
|
239
|
+
function checkArtifactAllowed(projectRoot, stateDir, instanceArg, artifactArg) {
|
|
240
|
+
const allowed = declaredArtifacts(projectRoot, stateDir, instanceArg);
|
|
241
|
+
// Unresolvable template → skip the check. A review is not the place to discover
|
|
242
|
+
// a broken template, and refusing to run would be worse than accepting a typo.
|
|
243
|
+
if (allowed === null)
|
|
244
|
+
return null;
|
|
245
|
+
const artifactName = canonicalArtifactName(artifactArg);
|
|
246
|
+
if (allowed.has(artifactName))
|
|
247
|
+
return null;
|
|
248
|
+
const valid = [...allowed].sort().join(', ');
|
|
249
|
+
return (`'${artifactArg}' is not an artifact of instance '${instanceArg}'. ` +
|
|
250
|
+
`Reviewable artifacts: ${valid}`);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Every artifact name the instance's template declares, or null when the instance
|
|
254
|
+
* state or template cannot be resolved.
|
|
255
|
+
*/
|
|
256
|
+
function declaredArtifacts(projectRoot, stateDir, instanceArg) {
|
|
257
|
+
let instanceState;
|
|
258
|
+
try {
|
|
259
|
+
instanceState = loadSnapshot(stateDir, instanceArg, 'instance.yaml');
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
if (!instanceState?.template)
|
|
265
|
+
return null;
|
|
266
|
+
let resolved;
|
|
267
|
+
try {
|
|
268
|
+
const all = loadAllTemplates(projectRoot);
|
|
269
|
+
const base = all.get(instanceState.template);
|
|
270
|
+
if (!base)
|
|
271
|
+
return null;
|
|
272
|
+
resolved = resolveTemplate(base, all);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
const phases = phasesForScope(resolved, instanceState.scope);
|
|
278
|
+
const names = new Set();
|
|
279
|
+
for (const phase of phases) {
|
|
280
|
+
for (const a of phase.required_artifacts ?? [])
|
|
281
|
+
names.add(a.name);
|
|
282
|
+
for (const a of phase.optional_artifacts ?? [])
|
|
283
|
+
names.add(a.name);
|
|
284
|
+
}
|
|
285
|
+
return names.size > 0 ? names : null;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Built-in templates plus any the project defines.
|
|
289
|
+
*
|
|
290
|
+
* Mirrors `loadAllTemplates` in `commands/transition.ts`. Duplicated rather than
|
|
291
|
+
* shared because extracting it would move a function two commands depend on for a
|
|
292
|
+
* caller that only needs a read-only lookup; if a third caller appears, extract it
|
|
293
|
+
* then.
|
|
294
|
+
*/
|
|
295
|
+
function loadAllTemplates(projectRoot) {
|
|
296
|
+
const templates = new Map();
|
|
297
|
+
for (const tpl of loadBuiltInTemplates()) {
|
|
298
|
+
templates.set(tpl.name, tpl.raw);
|
|
299
|
+
}
|
|
300
|
+
const customDir = join(projectRoot, '.aidlc', 'templates');
|
|
301
|
+
if (existsSync(customDir)) {
|
|
302
|
+
for (const [name, tpl] of loadTemplates(customDir)) {
|
|
303
|
+
templates.set(name, tpl);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return templates;
|
|
307
|
+
}
|
|
154
308
|
/**
|
|
155
309
|
* Determine reviewer identity from environment.
|
|
156
310
|
*/
|