@slowcook-ai/cli 0.19.0-alpha.1 → 0.19.0-alpha.14
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/AGENTS.md +212 -0
- package/REPORTING.md +154 -0
- package/dist/cli.js +36 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/brew/agent.d.ts +129 -0
- package/dist/commands/brew/agent.d.ts.map +1 -1
- package/dist/commands/brew/agent.js +132 -0
- package/dist/commands/brew/agent.js.map +1 -1
- package/dist/commands/brew/index.d.ts.map +1 -1
- package/dist/commands/brew/index.js +72 -0
- package/dist/commands/brew/index.js.map +1 -1
- package/dist/commands/brew/pair-navigator.d.ts +112 -0
- package/dist/commands/brew/pair-navigator.d.ts.map +1 -0
- package/dist/commands/brew/pair-navigator.js +183 -0
- package/dist/commands/brew/pair-navigator.js.map +1 -0
- package/dist/commands/chef/drift-fix.d.ts +1 -1
- package/dist/commands/chef/drift-fix.d.ts.map +1 -1
- package/dist/commands/chef/drift-fix.js +36 -15
- package/dist/commands/chef/drift-fix.js.map +1 -1
- package/dist/commands/chef/index.js +13 -3
- package/dist/commands/chef/index.js.map +1 -1
- package/dist/commands/chef/orchestrate.d.ts +34 -0
- package/dist/commands/chef/orchestrate.d.ts.map +1 -0
- package/dist/commands/chef/orchestrate.js +408 -0
- package/dist/commands/chef/orchestrate.js.map +1 -0
- package/dist/commands/docs/index.d.ts +16 -0
- package/dist/commands/docs/index.d.ts.map +1 -0
- package/dist/commands/docs/index.js +127 -0
- package/dist/commands/docs/index.js.map +1 -0
- package/dist/commands/init/mock.d.ts +46 -0
- package/dist/commands/init/mock.d.ts.map +1 -1
- package/dist/commands/init/mock.js +142 -2
- package/dist/commands/init/mock.js.map +1 -1
- package/dist/commands/recon/index.d.ts +1 -1
- package/dist/commands/recon/index.d.ts.map +1 -1
- package/dist/commands/recon/index.js +293 -6
- package/dist/commands/recon/index.js.map +1 -1
- package/dist/commands/recon/reuse.d.ts +150 -0
- package/dist/commands/recon/reuse.d.ts.map +1 -0
- package/dist/commands/recon/reuse.js +335 -0
- package/dist/commands/recon/reuse.js.map +1 -0
- package/dist/commands/recon/shape-preserve.d.ts +46 -0
- package/dist/commands/recon/shape-preserve.d.ts.map +1 -1
- package/dist/commands/recon/shape-preserve.js +126 -0
- package/dist/commands/recon/shape-preserve.js.map +1 -1
- package/dist/commands/recon/stale-stubs.d.ts +65 -0
- package/dist/commands/recon/stale-stubs.d.ts.map +1 -0
- package/dist/commands/recon/stale-stubs.js +84 -0
- package/dist/commands/recon/stale-stubs.js.map +1 -0
- package/dist/commands/refactor/index.d.ts +15 -0
- package/dist/commands/refactor/index.d.ts.map +1 -0
- package/dist/commands/refactor/index.js +126 -0
- package/dist/commands/refactor/index.js.map +1 -0
- package/dist/commands/refactor/score.d.ts +38 -0
- package/dist/commands/refactor/score.d.ts.map +1 -0
- package/dist/commands/refactor/score.js +79 -0
- package/dist/commands/refactor/score.js.map +1 -0
- package/dist/commands/refactor/types.d.ts +64 -0
- package/dist/commands/refactor/types.d.ts.map +1 -0
- package/dist/commands/refactor/types.js +26 -0
- package/dist/commands/refactor/types.js.map +1 -0
- package/dist/lib/read-only.d.ts +22 -0
- package/dist/lib/read-only.d.ts.map +1 -0
- package/dist/lib/read-only.js +34 -0
- package/dist/lib/read-only.js.map +1 -0
- package/package.json +7 -5
|
@@ -25,12 +25,23 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSy
|
|
|
25
25
|
import { dirname, join, relative } from "node:path";
|
|
26
26
|
import { buildHistoryIndex } from "../refine/history-index.js";
|
|
27
27
|
import { extractShape, synthesiseShapeTestFile, findMockFilesForStory } from "./shape-preserve.js";
|
|
28
|
+
import { isReadOnlyMode } from "../../lib/read-only.js";
|
|
28
29
|
function parseArgs(argv) {
|
|
29
30
|
const args = {
|
|
30
31
|
story: "",
|
|
31
32
|
repoRoot: process.cwd(),
|
|
32
33
|
outPath: "",
|
|
33
34
|
verbose: false,
|
|
35
|
+
reuseScan: false,
|
|
36
|
+
reuseThreshold: 0.7,
|
|
37
|
+
reuseRoot: "src",
|
|
38
|
+
reuseWriteProposals: false,
|
|
39
|
+
reuseExcludes: [],
|
|
40
|
+
reuseSkipAutoTemplates: true,
|
|
41
|
+
stubScan: false,
|
|
42
|
+
stubMaxAgeDays: 14,
|
|
43
|
+
stubEscalate: false,
|
|
44
|
+
stubRoot: "src",
|
|
34
45
|
};
|
|
35
46
|
for (let i = 0; i < argv.length; i++) {
|
|
36
47
|
const a = argv[i];
|
|
@@ -50,13 +61,48 @@ function parseArgs(argv) {
|
|
|
50
61
|
else if (a === "--verbose" || a === "-v") {
|
|
51
62
|
args.verbose = true;
|
|
52
63
|
}
|
|
64
|
+
else if (a === "--reuse-scan") {
|
|
65
|
+
args.reuseScan = true;
|
|
66
|
+
}
|
|
67
|
+
else if (a === "--reuse-threshold" && next) {
|
|
68
|
+
args.reuseThreshold = parseFloat(next);
|
|
69
|
+
i++;
|
|
70
|
+
}
|
|
71
|
+
else if (a === "--reuse-root" && next) {
|
|
72
|
+
args.reuseRoot = next;
|
|
73
|
+
i++;
|
|
74
|
+
}
|
|
75
|
+
else if (a === "--write-proposals") {
|
|
76
|
+
args.reuseWriteProposals = true;
|
|
77
|
+
}
|
|
78
|
+
else if (a === "--exclude" && next) {
|
|
79
|
+
args.reuseExcludes.push(next);
|
|
80
|
+
i++;
|
|
81
|
+
}
|
|
82
|
+
else if (a === "--no-skip-auto-templates") {
|
|
83
|
+
args.reuseSkipAutoTemplates = false;
|
|
84
|
+
}
|
|
85
|
+
else if (a === "--stub-scan") {
|
|
86
|
+
args.stubScan = true;
|
|
87
|
+
}
|
|
88
|
+
else if (a === "--stub-max-age-days" && next) {
|
|
89
|
+
args.stubMaxAgeDays = parseInt(next, 10);
|
|
90
|
+
i++;
|
|
91
|
+
}
|
|
92
|
+
else if (a === "--stub-escalate") {
|
|
93
|
+
args.stubEscalate = true;
|
|
94
|
+
}
|
|
95
|
+
else if (a === "--stub-root" && next) {
|
|
96
|
+
args.stubRoot = next;
|
|
97
|
+
i++;
|
|
98
|
+
}
|
|
53
99
|
else if (a === "--help" || a === "-h") {
|
|
54
100
|
printHelp();
|
|
55
101
|
process.exit(0);
|
|
56
102
|
}
|
|
57
103
|
}
|
|
58
|
-
if (!args.story) {
|
|
59
|
-
console.error("--story <id> is required.");
|
|
104
|
+
if (!args.reuseScan && !args.stubScan && !args.story) {
|
|
105
|
+
console.error("--story <id> is required (or pass --reuse-scan / --stub-scan for the story-agnostic modes).");
|
|
60
106
|
printHelp();
|
|
61
107
|
process.exit(64);
|
|
62
108
|
}
|
|
@@ -77,19 +123,44 @@ Compares the story's test files against the mock + src/ tree. Detects:
|
|
|
77
123
|
Usage:
|
|
78
124
|
slowcook recon --story <id> [--cwd <path>] [--out <path>] [--verbose]
|
|
79
125
|
|
|
80
|
-
Options:
|
|
81
|
-
--story <id> Story id (e.g. 017). Required.
|
|
126
|
+
Options (story mode — default):
|
|
127
|
+
--story <id> Story id (e.g. 017). Required unless --reuse-scan.
|
|
82
128
|
--cwd <path> Repo root (default: cwd).
|
|
83
129
|
--out <path> Output JSON path (default: .brewing/recon-result.json).
|
|
84
130
|
--verbose Print detailed breakdown to stdout.
|
|
85
131
|
|
|
132
|
+
Options (reuse-scan mode — 0.19.0-α.8+):
|
|
133
|
+
--reuse-scan Story-agnostic; flag near-duplicate components +
|
|
134
|
+
API handlers + utility modules across the codebase.
|
|
135
|
+
--reuse-root <path> Subtree to scan (default: src).
|
|
136
|
+
--reuse-threshold <n> Similarity threshold 0-1 (default: 0.7).
|
|
137
|
+
--write-proposals Append synthesized RefactorProposal entries to
|
|
138
|
+
.brewing/refactor/proposals.json so the refactor
|
|
139
|
+
command ranks them.
|
|
140
|
+
--exclude <glob> (α.10) Repeatable. Skip files matching the glob.
|
|
141
|
+
Supports: exact / "src/dir/" / "src/dir/*" /
|
|
142
|
+
"src/dir/**" / "*.mock.ts".
|
|
143
|
+
--no-skip-auto-templates (α.10) By default, recon skips files marked with
|
|
144
|
+
@slowcook-template / @slowcook-stub / @generated /
|
|
145
|
+
"AUTO-GENERATED" / "do not edit by hand". This
|
|
146
|
+
disables that filter (you'll see template-vs-template
|
|
147
|
+
duplicates again).
|
|
148
|
+
|
|
86
149
|
Exit codes:
|
|
87
|
-
0 status=clean OR status=rename_needed
|
|
150
|
+
0 status=clean OR status=rename_needed OR --reuse-scan completed
|
|
88
151
|
2 status=escalate (STORY_HISTORY_CONFLICT or VIBE_RECIPE_NAME_DRIFT)
|
|
89
152
|
`);
|
|
90
153
|
}
|
|
91
|
-
export async function recon(argv,
|
|
154
|
+
export async function recon(argv, cliVersion) {
|
|
92
155
|
const args = parseArgs(argv);
|
|
156
|
+
if (args.reuseScan) {
|
|
157
|
+
await runReuseScan(args);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (args.stubScan) {
|
|
161
|
+
await runStubScan(args, cliVersion);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
93
164
|
console.log(`slowcook recon · story-${args.story} · cwd: ${relative(process.cwd(), args.repoRoot) || "."}`);
|
|
94
165
|
const idx = buildHistoryIndex({ repoRoot: args.repoRoot });
|
|
95
166
|
const result = {
|
|
@@ -304,4 +375,220 @@ function walkAndGrep(dir, needle) {
|
|
|
304
375
|
}
|
|
305
376
|
return false;
|
|
306
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* 0.19.0-α.8 — story-agnostic reuse-scan mode. Walks args.reuseRoot,
|
|
380
|
+
* extracts a structural signature per .ts(x) file, runs pairwise
|
|
381
|
+
* similarity, prints the duplicates, and (when --write-proposals)
|
|
382
|
+
* appends RefactorProposal entries to .brewing/refactor/proposals.json.
|
|
383
|
+
*/
|
|
384
|
+
async function runReuseScan(args) {
|
|
385
|
+
const { extractStructuralSignature, scanForDuplicates, pairToRefactorProposal, isAutoTemplateFile, matchesExcludePattern, } = await import("./reuse.js");
|
|
386
|
+
console.log(`slowcook recon --reuse-scan · root: ${args.reuseRoot} · threshold: ${args.reuseThreshold} · cwd: ${relative(process.cwd(), args.repoRoot) || "."}`);
|
|
387
|
+
if (args.reuseExcludes.length > 0) {
|
|
388
|
+
console.log(` excludes: ${args.reuseExcludes.join(", ")}`);
|
|
389
|
+
}
|
|
390
|
+
if (args.reuseSkipAutoTemplates) {
|
|
391
|
+
console.log(` auto-template skip: ENABLED (--no-skip-auto-templates to disable)`);
|
|
392
|
+
}
|
|
393
|
+
const rootAbs = join(args.repoRoot, args.reuseRoot);
|
|
394
|
+
if (!existsSync(rootAbs)) {
|
|
395
|
+
console.error(`Reuse-scan root does not exist: ${rootAbs}`);
|
|
396
|
+
process.exit(2);
|
|
397
|
+
}
|
|
398
|
+
const allFiles = [];
|
|
399
|
+
walkTsFiles(rootAbs, allFiles);
|
|
400
|
+
// Apply --exclude patterns first (cheap filename match), then read
|
|
401
|
+
// file content + apply auto-template skip (more expensive — needs
|
|
402
|
+
// file read).
|
|
403
|
+
const files = [];
|
|
404
|
+
let excludedByPattern = 0;
|
|
405
|
+
let excludedAsTemplate = 0;
|
|
406
|
+
for (const abs of allFiles) {
|
|
407
|
+
const rel = relative(args.repoRoot, abs).replace(/\\/g, "/");
|
|
408
|
+
if (args.reuseExcludes.some((p) => matchesExcludePattern(rel, p))) {
|
|
409
|
+
excludedByPattern++;
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
if (args.reuseSkipAutoTemplates) {
|
|
413
|
+
const head = readFileSync(abs, "utf8");
|
|
414
|
+
if (isAutoTemplateFile(head)) {
|
|
415
|
+
excludedAsTemplate++;
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
files.push(abs);
|
|
420
|
+
}
|
|
421
|
+
console.log(` scanning ${files.length} .ts/.tsx files under ${args.reuseRoot}/ (excluded: ${excludedByPattern} by pattern, ${excludedAsTemplate} as auto-template)`);
|
|
422
|
+
const sigs = files.map((abs) => {
|
|
423
|
+
const rel = relative(args.repoRoot, abs).replace(/\\/g, "/");
|
|
424
|
+
return extractStructuralSignature(rel, readFileSync(abs, "utf8"));
|
|
425
|
+
});
|
|
426
|
+
const pairs = scanForDuplicates(sigs, args.reuseThreshold);
|
|
427
|
+
console.log(` found ${pairs.length} pair(s) at similarity >= ${args.reuseThreshold}`);
|
|
428
|
+
console.log("");
|
|
429
|
+
if (pairs.length === 0) {
|
|
430
|
+
console.log("(no duplicates flagged — codebase looks clean for the configured threshold)");
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
for (const p of pairs) {
|
|
434
|
+
const pct = (p.similarity * 100).toFixed(0);
|
|
435
|
+
console.log(` ${pct}% similar [${p.category}]`);
|
|
436
|
+
console.log(` A: ${p.a}`);
|
|
437
|
+
console.log(` B: ${p.b}`);
|
|
438
|
+
console.log(` axes: jsx=${p.axes.jsx.toFixed(2)} props=${p.axes.props.toFixed(2)} calls=${p.axes.calls.toFixed(2)} imports=${p.axes.imports.toFixed(2)}`);
|
|
439
|
+
console.log("");
|
|
440
|
+
}
|
|
441
|
+
if (args.reuseWriteProposals) {
|
|
442
|
+
const proposalsPath = join(args.repoRoot, ".brewing/refactor/proposals.json");
|
|
443
|
+
const existing = existsSync(proposalsPath)
|
|
444
|
+
? JSON.parse(readFileSync(proposalsPath, "utf8"))
|
|
445
|
+
: [];
|
|
446
|
+
const byId = new Map();
|
|
447
|
+
for (const p of existing)
|
|
448
|
+
byId.set(p.id, p);
|
|
449
|
+
let appended = 0;
|
|
450
|
+
for (const pair of pairs) {
|
|
451
|
+
const proposal = pairToRefactorProposal(pair);
|
|
452
|
+
if (!byId.has(proposal.id)) {
|
|
453
|
+
byId.set(proposal.id, proposal);
|
|
454
|
+
appended++;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
const merged = [...byId.values()];
|
|
458
|
+
mkdirSync(dirname(proposalsPath), { recursive: true });
|
|
459
|
+
writeFileSync(proposalsPath, JSON.stringify(merged, null, 2), "utf8");
|
|
460
|
+
console.log(` wrote ${proposalsPath.replace(args.repoRoot + "/", "")} (+${appended} new of ${merged.length} total)`);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
function walkTsFiles(root, out) {
|
|
464
|
+
for (const name of readdirSync(root)) {
|
|
465
|
+
if (name === "node_modules" || name === ".next" || name === ".git")
|
|
466
|
+
continue;
|
|
467
|
+
const abs = join(root, name);
|
|
468
|
+
const st = statSync(abs);
|
|
469
|
+
if (st.isDirectory()) {
|
|
470
|
+
walkTsFiles(abs, out);
|
|
471
|
+
}
|
|
472
|
+
else if (/\.(ts|tsx)$/.test(name) && !/\.test\.(ts|tsx)$/.test(name) && !/\.d\.ts$/.test(name)) {
|
|
473
|
+
out.push(abs);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* 0.19.0-α.11 (#84) — story-agnostic stub-scan mode. Walks args.stubRoot,
|
|
479
|
+
* finds @slowcook-stub markers, ages each via git log --diff-filter=A,
|
|
480
|
+
* reports stale ones + (when --stub-escalate) posts PM comment on each
|
|
481
|
+
* stub's source issue.
|
|
482
|
+
*/
|
|
483
|
+
async function runStubScan(args, cliVersion) {
|
|
484
|
+
const { execSync } = await import("node:child_process");
|
|
485
|
+
const { detectStubMarker, daysBetween, classifyStubAge, buildStaleStubComment, } = await import("./stale-stubs.js");
|
|
486
|
+
console.log(`slowcook recon --stub-scan · root: ${args.stubRoot} · grace: ${args.stubMaxAgeDays} days · cwd: ${relative(process.cwd(), args.repoRoot) || "."}`);
|
|
487
|
+
const rootAbs = join(args.repoRoot, args.stubRoot);
|
|
488
|
+
if (!existsSync(rootAbs)) {
|
|
489
|
+
console.error(`Stub-scan root does not exist: ${rootAbs}`);
|
|
490
|
+
process.exit(2);
|
|
491
|
+
}
|
|
492
|
+
const allFiles = [];
|
|
493
|
+
walkTsFiles(rootAbs, allFiles);
|
|
494
|
+
const nowIso = new Date().toISOString();
|
|
495
|
+
const stubs = [];
|
|
496
|
+
for (const abs of allFiles) {
|
|
497
|
+
const rel = relative(args.repoRoot, abs).replace(/\\/g, "/");
|
|
498
|
+
const content = readFileSync(abs, "utf8");
|
|
499
|
+
const detect = detectStubMarker(content);
|
|
500
|
+
if (!detect.isStub)
|
|
501
|
+
continue;
|
|
502
|
+
let firstAddedAt = null;
|
|
503
|
+
try {
|
|
504
|
+
// First-add date: oldest commit that added this file. --diff-filter=A
|
|
505
|
+
// only matches the addition; --reverse + head puts the earliest first.
|
|
506
|
+
const out = execSync(`git -C "${args.repoRoot}" log --diff-filter=A --follow --format=%cI --reverse -- "${rel}" 2>/dev/null | head -n 1`, { encoding: "utf8" }).trim();
|
|
507
|
+
if (out)
|
|
508
|
+
firstAddedAt = out;
|
|
509
|
+
}
|
|
510
|
+
catch {
|
|
511
|
+
// git log failed — leave firstAddedAt null
|
|
512
|
+
}
|
|
513
|
+
const ageDays = firstAddedAt ? daysBetween(firstAddedAt, nowIso) : null;
|
|
514
|
+
const classification = classifyStubAge(ageDays, args.stubMaxAgeDays);
|
|
515
|
+
stubs.push({
|
|
516
|
+
path: rel,
|
|
517
|
+
storyId: detect.storyId,
|
|
518
|
+
firstAddedAt,
|
|
519
|
+
ageDays,
|
|
520
|
+
classification,
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
console.log(` found ${stubs.length} @slowcook-stub file(s)`);
|
|
524
|
+
const stale = stubs.filter((s) => s.classification === "stale");
|
|
525
|
+
const fresh = stubs.filter((s) => s.classification === "fresh");
|
|
526
|
+
const unknown = stubs.filter((s) => s.classification === "unknown");
|
|
527
|
+
console.log(` ${stale.length} stale (≥ ${args.stubMaxAgeDays} days), ${fresh.length} fresh, ${unknown.length} unknown-age`);
|
|
528
|
+
console.log("");
|
|
529
|
+
if (stubs.length === 0) {
|
|
530
|
+
console.log("(no stubs found — pipeline is clean)");
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
for (const s of [...stale, ...unknown, ...fresh]) {
|
|
534
|
+
const tag = s.classification === "stale"
|
|
535
|
+
? "STALE"
|
|
536
|
+
: s.classification === "unknown"
|
|
537
|
+
? "? "
|
|
538
|
+
: "fresh";
|
|
539
|
+
const ageStr = s.ageDays !== null ? `${s.ageDays.toString().padStart(5)}d` : " ? ";
|
|
540
|
+
const story = s.storyId ? `story-${s.storyId}` : "(no story id)";
|
|
541
|
+
console.log(` ${tag} ${ageStr} ${story.padEnd(14)} ${s.path}`);
|
|
542
|
+
}
|
|
543
|
+
if (args.stubEscalate && stale.length > 0 && isReadOnlyMode()) {
|
|
544
|
+
console.log(`\n [SLOWCOOK_READ_ONLY=1] --stub-escalate set but read-only mode is on; would post comments on ${stale.length} source issues. Skipping.`);
|
|
545
|
+
}
|
|
546
|
+
else if (args.stubEscalate && stale.length > 0) {
|
|
547
|
+
console.log("\n --stub-escalate set; posting PM comments on source issues...");
|
|
548
|
+
let repoSlug = "";
|
|
549
|
+
try {
|
|
550
|
+
repoSlug = execSync(`git -C "${args.repoRoot}" remote get-url origin | sed -E 's|^.*github\\.com[:/]||; s|\\.git$||'`, { encoding: "utf8" }).trim();
|
|
551
|
+
}
|
|
552
|
+
catch {
|
|
553
|
+
// leave repoSlug empty
|
|
554
|
+
}
|
|
555
|
+
if (!repoSlug) {
|
|
556
|
+
console.warn(" warn: could not detect repo slug; skipping escalations.");
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
for (const s of stale) {
|
|
560
|
+
if (!s.storyId) {
|
|
561
|
+
console.warn(` skip: ${s.path} has no story id (can't find source issue).`);
|
|
562
|
+
continue;
|
|
563
|
+
}
|
|
564
|
+
// Look up source issue from spec yaml (specs/story-NNN.yaml).
|
|
565
|
+
const specPath = join(args.repoRoot, `specs/story-${s.storyId}.yaml`);
|
|
566
|
+
if (!existsSync(specPath)) {
|
|
567
|
+
console.warn(` skip: ${s.path} — no spec at ${specPath} to read source_issue from.`);
|
|
568
|
+
continue;
|
|
569
|
+
}
|
|
570
|
+
const specYaml = readFileSync(specPath, "utf8");
|
|
571
|
+
const issueMatch = specYaml.match(/source_issue:\s*"#?(\d+)"/);
|
|
572
|
+
if (!issueMatch) {
|
|
573
|
+
console.warn(` skip: ${s.path} — spec has no source_issue field.`);
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
const issueNumber = parseInt(issueMatch[1], 10);
|
|
577
|
+
const body = buildStaleStubComment(s, args.stubMaxAgeDays, cliVersion);
|
|
578
|
+
const tmp = "/tmp/slowcook-stale-stub-comment.md";
|
|
579
|
+
writeFileSync(tmp, body, "utf8");
|
|
580
|
+
try {
|
|
581
|
+
execSync(`gh issue comment ${issueNumber} --repo "${repoSlug}" --body-file ${tmp}`, { stdio: "inherit" });
|
|
582
|
+
console.log(` posted on issue #${issueNumber} for ${s.path}`);
|
|
583
|
+
}
|
|
584
|
+
catch (e) {
|
|
585
|
+
console.warn(` failed to post on issue #${issueNumber}: ${e.message.slice(0, 200)}`);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
else if (stale.length > 0) {
|
|
591
|
+
console.log(`\n ${stale.length} stale stub(s) — re-run with --stub-escalate to post PM comments on source issues.`);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
307
594
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/recon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AA+CnG,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAc;QACtB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;QACvB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;KACf,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;aACnD,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;aACzD,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;aACxD,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC;aAC7D,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAc,EAAE,WAAmB;IAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,KAAK,WAAW,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAE5G,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAgB;QAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,uBAAuB;QAClC,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,EAAE;QACnB,wBAAwB,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM;QAC/C,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,+BAA+B;IAC/B,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,KAAK,2BAA2B,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAErC,+DAA+D;QAC/D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,kDAAkD;gBAClD,gDAAgD;gBAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;wBAC1B,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,iBAAiB,GAAG,uDAAuD,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,GAAG;wBACzH,cAAc,EAAE,+CAA+C,QAAQ,wCAAwC;qBAChH,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;wBAC1B,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,iBAAiB,GAAG,8DAA8D;wBAC1F,cAAc,EAAE,yEAAyE;qBAC1F,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,oGAAoG;QACpG,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC;gBACpE,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,6BAA6B;IAC7B,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,2GAA2G,CAC5G,CAAC;IAEF,yDAAyD;IACzD,sEAAsE;IACtE,qEAAqE;IACrE,uDAAuD;IACvD,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,SAAS;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC/D,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACpE,SAAS,GAAG,2BAA2B,IAAI,CAAC,KAAK,iBAAiB,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9C,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CACT,uBAAuB,SAAS,UAAU,SAAS,CAAC,MAAM,kBAAkB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,uBAAuB,CAC3I,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,kDAAkD,IAAI,CAAC,KAAK,iEAAiE,CAC9H,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAuB,CAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;IAC7B,CAAC;SAAM,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,eAAe;IACf,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEnG,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CACT,KAAK,SAAS,CAAC,MAAM,mBAAmB,MAAM,CAAC,eAAe,CAAC,MAAM,wBAAwB,MAAM,CAAC,WAAW,CAAC,MAAM,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,CAC5K,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,iCAAiC,CAAC,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhF,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CACX,gGAAgG,CACjG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,sBAAsB;AAEtB,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,KAAa;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,EAAE,CAAC;YAAE,SAAS;QACjD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9C,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,GAAW;IACzD,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG;YACjB,OAAO,GAAG,KAAK;YACf,OAAO,GAAG,MAAM;YAChB,OAAO,GAAG,WAAW;YACrB,OAAO,GAAG,YAAY;SACvB,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IAC3D,sDAAsD;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,MAAc;IAC9C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,cAAc;YAAE,SAAS;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7C,CAAC;aAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/recon/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.19.0-alpha.8 — recon reuse-scan: deterministic near-duplicate
|
|
3
|
+
* detection for components AND API routes / utility modules. Pure
|
|
4
|
+
* functions for testing; cli wiring in `recon/index.ts`'s
|
|
5
|
+
* --reuse-scan flag.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists: when driver creates `NewItemCard` that's near-
|
|
8
|
+
* identical to existing `RewoCard` — OR when two API routes both
|
|
9
|
+
* do auth → query → NextResponse.json with similar shapes —
|
|
10
|
+
* navigator can't catch it (its prompt is calibrated for diff-
|
|
11
|
+
* level critique, not codebase-scale similarity). A static AST-ish
|
|
12
|
+
* hash + Jaccard similarity catches it cheaply + deterministically.
|
|
13
|
+
* False positives are acceptable because the refactor command's
|
|
14
|
+
* ranking + the PM's eyeball filter the noise.
|
|
15
|
+
*
|
|
16
|
+
* Approach: regex-extract a "structural signature" (JSX tags,
|
|
17
|
+
* destructured params, calls, exports, imports). Auto-categorize
|
|
18
|
+
* by JSX presence: component-vs-component uses jsx-heavy weighting,
|
|
19
|
+
* api-vs-api uses calls-heavy, cross-category pairs short-circuit
|
|
20
|
+
* to 0 (we don't compare a component against a route handler).
|
|
21
|
+
*/
|
|
22
|
+
export interface ScanSignature {
|
|
23
|
+
/** Repo-relative path. */
|
|
24
|
+
path: string;
|
|
25
|
+
/** Identifiers exported from the file (default + named). */
|
|
26
|
+
exports: string[];
|
|
27
|
+
/** Identifiers imported (across all import statements). */
|
|
28
|
+
imports: string[];
|
|
29
|
+
/** Distinct JSX element types (`<div>`, `<Foo>`). Empty for API/utility files. */
|
|
30
|
+
jsxTags: string[];
|
|
31
|
+
/** Params destructured from the function arg (`{ a, b }: Props`,
|
|
32
|
+
* or `({ id }: { id: string })`). */
|
|
33
|
+
propsUsed: string[];
|
|
34
|
+
/** Function calls (e.g. `useState`, `supabase.from`, `NextResponse.json`,
|
|
35
|
+
* `fetch`). Broader than just React hooks — captures the structural
|
|
36
|
+
* fingerprint of API + utility modules too. */
|
|
37
|
+
callsUsed: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Extract a structural signature from a TS/TSX file's source.
|
|
41
|
+
* Pure: takes (path, source); returns a normalized signature.
|
|
42
|
+
*
|
|
43
|
+
* Works for components (JSX tags will be populated), API route
|
|
44
|
+
* handlers (callsUsed captures supabase/auth/NextResponse), and
|
|
45
|
+
* utility modules (callsUsed + exports). Strings + comments are
|
|
46
|
+
* NOT stripped — false positives are rare for the categories we
|
|
47
|
+
* capture.
|
|
48
|
+
*/
|
|
49
|
+
export declare function extractStructuralSignature(path: string, source: string): ScanSignature;
|
|
50
|
+
/**
|
|
51
|
+
* Jaccard similarity of two string sets. Pure.
|
|
52
|
+
* |a ∩ b| / |a ∪ b|
|
|
53
|
+
* Returns 1 if both sets empty (degenerate equal-empty case);
|
|
54
|
+
* 0 if one is empty + the other isn't.
|
|
55
|
+
*/
|
|
56
|
+
export declare function jaccard(a: string[], b: string[]): number;
|
|
57
|
+
/**
|
|
58
|
+
* 0.19.0-α.10 (#85) — detect "this file is auto-generated, exclude
|
|
59
|
+
* from refactor-candidate scanning." Pure: takes file content, returns
|
|
60
|
+
* true if any of these markers appears in the first 400 characters:
|
|
61
|
+
*
|
|
62
|
+
* `@slowcook-template` — explicit "slowcook generated me" marker
|
|
63
|
+
* `@slowcook-stub` — placeholder waiting for brew to overwrite
|
|
64
|
+
* `@generated` — common convention (Facebook/Meta tooling)
|
|
65
|
+
* `AUTO-GENERATED` — case-insensitive plain English
|
|
66
|
+
* `auto-generated by` — common phrasing in tool output
|
|
67
|
+
* `Do not edit by hand` — common phrasing in templated files
|
|
68
|
+
*
|
|
69
|
+
* 400 chars is enough to capture a typical file header without scanning
|
|
70
|
+
* the whole body. Markers later in the file are deliberately ignored
|
|
71
|
+
* (e.g., a comment in the middle of a file mentioning "auto-generated"
|
|
72
|
+
* shouldn't kill the file's signal).
|
|
73
|
+
*/
|
|
74
|
+
export declare function isAutoTemplateFile(content: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* 0.19.0-α.10 (#85) — match a single file path against a glob-ish
|
|
77
|
+
* exclusion pattern. Same shape as the refactor command's matchesScope
|
|
78
|
+
* (kept inline rather than cross-package-imported to avoid coupling
|
|
79
|
+
* recon to the refactor module).
|
|
80
|
+
*
|
|
81
|
+
* Supported:
|
|
82
|
+
* - exact match: "src/foo.ts"
|
|
83
|
+
* - directory prefix: "src/lib/entities/" (matches anything under)
|
|
84
|
+
* - star at end: "src/lib/data/*" (one segment after)
|
|
85
|
+
* - double-star: "src/lib/entities/**" (any depth)
|
|
86
|
+
* - filename glob: "*.mock.ts" (matches any path ending with)
|
|
87
|
+
*/
|
|
88
|
+
export declare function matchesExcludePattern(filePath: string, pattern: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Compute similarity between two structural signatures. Auto-
|
|
91
|
+
* categorizes by JSX presence:
|
|
92
|
+
*
|
|
93
|
+
* component-vs-component (both have jsxTags):
|
|
94
|
+
* 0.50 jsx + 0.30 props + 0.20 calls
|
|
95
|
+
*
|
|
96
|
+
* api/utility-vs-api/utility (both jsxTags empty):
|
|
97
|
+
* 0.60 calls + 0.30 props + 0.10 imports
|
|
98
|
+
*
|
|
99
|
+
* cross-category (one has jsx, other doesn't):
|
|
100
|
+
* return 0 — comparing a component to a route handler is
|
|
101
|
+
* never a useful "duplicate" finding.
|
|
102
|
+
*
|
|
103
|
+
* Returns a number in [0, 1]. Default duplicate threshold: 0.7.
|
|
104
|
+
*/
|
|
105
|
+
export declare function signatureSimilarity(a: ScanSignature, b: ScanSignature): number;
|
|
106
|
+
export interface DuplicatePair {
|
|
107
|
+
a: string;
|
|
108
|
+
b: string;
|
|
109
|
+
similarity: number;
|
|
110
|
+
/** Whether the pair is component-vs-component or api-vs-api. */
|
|
111
|
+
category: "component" | "api-or-util";
|
|
112
|
+
/** Per-axis breakdown for the operator. */
|
|
113
|
+
axes: {
|
|
114
|
+
jsx: number;
|
|
115
|
+
props: number;
|
|
116
|
+
calls: number;
|
|
117
|
+
imports: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Scan a list of structural signatures + return all pairs whose
|
|
122
|
+
* similarity is >= threshold. Output is sorted by similarity
|
|
123
|
+
* descending. Pure: caller owns IO (reading files into the
|
|
124
|
+
* signatures array).
|
|
125
|
+
*/
|
|
126
|
+
export declare function scanForDuplicates(signatures: ScanSignature[], threshold?: number): DuplicatePair[];
|
|
127
|
+
/**
|
|
128
|
+
* Convert a duplicate-pair finding into a refactor proposal that
|
|
129
|
+
* the `slowcook refactor` command can rank. Pure synthesis — no IO.
|
|
130
|
+
*
|
|
131
|
+
* The proposal has:
|
|
132
|
+
* - id: deterministic from the pair (so re-running doesn't dup)
|
|
133
|
+
* - title: "consolidate <A> + <B> (NN% similar)" with the category
|
|
134
|
+
* - filesAffected: both paths
|
|
135
|
+
* - estimatedLocDelta: caller doesn't know, conservative 0
|
|
136
|
+
* (the proposal tells you to merge; the actual diff happens
|
|
137
|
+
* when someone DOES the work)
|
|
138
|
+
* - estimatedValueScore: scaled from similarity
|
|
139
|
+
* (similarity 0.7 → 5; 0.85 → 7; 0.95 → 9)
|
|
140
|
+
*/
|
|
141
|
+
export declare function pairToRefactorProposal(pair: DuplicatePair): {
|
|
142
|
+
id: string;
|
|
143
|
+
title: string;
|
|
144
|
+
rationale: string;
|
|
145
|
+
filesAffected: string[];
|
|
146
|
+
estimatedLocDelta: number;
|
|
147
|
+
estimatedValueScore: number;
|
|
148
|
+
evidence: Record<string, string | number>;
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=reuse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reuse.d.ts","sourceRoot":"","sources":["../../../src/commands/recon/reuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;0CACsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;oDAEgD;IAChD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CA4GtF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CASxD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAmBhF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAiB9E;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC;IACtC,2CAA2C;IAC3C,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,aAAa,EAAE,EAC3B,SAAS,SAAM,GACd,aAAa,EAAE,CA2BjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC3C,CAyBA"}
|