@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.
Files changed (66) hide show
  1. package/AGENTS.md +212 -0
  2. package/REPORTING.md +154 -0
  3. package/dist/cli.js +36 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/brew/agent.d.ts +129 -0
  6. package/dist/commands/brew/agent.d.ts.map +1 -1
  7. package/dist/commands/brew/agent.js +132 -0
  8. package/dist/commands/brew/agent.js.map +1 -1
  9. package/dist/commands/brew/index.d.ts.map +1 -1
  10. package/dist/commands/brew/index.js +72 -0
  11. package/dist/commands/brew/index.js.map +1 -1
  12. package/dist/commands/brew/pair-navigator.d.ts +112 -0
  13. package/dist/commands/brew/pair-navigator.d.ts.map +1 -0
  14. package/dist/commands/brew/pair-navigator.js +183 -0
  15. package/dist/commands/brew/pair-navigator.js.map +1 -0
  16. package/dist/commands/chef/drift-fix.d.ts +1 -1
  17. package/dist/commands/chef/drift-fix.d.ts.map +1 -1
  18. package/dist/commands/chef/drift-fix.js +36 -15
  19. package/dist/commands/chef/drift-fix.js.map +1 -1
  20. package/dist/commands/chef/index.js +13 -3
  21. package/dist/commands/chef/index.js.map +1 -1
  22. package/dist/commands/chef/orchestrate.d.ts +34 -0
  23. package/dist/commands/chef/orchestrate.d.ts.map +1 -0
  24. package/dist/commands/chef/orchestrate.js +408 -0
  25. package/dist/commands/chef/orchestrate.js.map +1 -0
  26. package/dist/commands/docs/index.d.ts +16 -0
  27. package/dist/commands/docs/index.d.ts.map +1 -0
  28. package/dist/commands/docs/index.js +127 -0
  29. package/dist/commands/docs/index.js.map +1 -0
  30. package/dist/commands/init/mock.d.ts +46 -0
  31. package/dist/commands/init/mock.d.ts.map +1 -1
  32. package/dist/commands/init/mock.js +142 -2
  33. package/dist/commands/init/mock.js.map +1 -1
  34. package/dist/commands/recon/index.d.ts +1 -1
  35. package/dist/commands/recon/index.d.ts.map +1 -1
  36. package/dist/commands/recon/index.js +293 -6
  37. package/dist/commands/recon/index.js.map +1 -1
  38. package/dist/commands/recon/reuse.d.ts +150 -0
  39. package/dist/commands/recon/reuse.d.ts.map +1 -0
  40. package/dist/commands/recon/reuse.js +335 -0
  41. package/dist/commands/recon/reuse.js.map +1 -0
  42. package/dist/commands/recon/shape-preserve.d.ts +46 -0
  43. package/dist/commands/recon/shape-preserve.d.ts.map +1 -1
  44. package/dist/commands/recon/shape-preserve.js +126 -0
  45. package/dist/commands/recon/shape-preserve.js.map +1 -1
  46. package/dist/commands/recon/stale-stubs.d.ts +65 -0
  47. package/dist/commands/recon/stale-stubs.d.ts.map +1 -0
  48. package/dist/commands/recon/stale-stubs.js +84 -0
  49. package/dist/commands/recon/stale-stubs.js.map +1 -0
  50. package/dist/commands/refactor/index.d.ts +15 -0
  51. package/dist/commands/refactor/index.d.ts.map +1 -0
  52. package/dist/commands/refactor/index.js +126 -0
  53. package/dist/commands/refactor/index.js.map +1 -0
  54. package/dist/commands/refactor/score.d.ts +38 -0
  55. package/dist/commands/refactor/score.d.ts.map +1 -0
  56. package/dist/commands/refactor/score.js +79 -0
  57. package/dist/commands/refactor/score.js.map +1 -0
  58. package/dist/commands/refactor/types.d.ts +64 -0
  59. package/dist/commands/refactor/types.d.ts.map +1 -0
  60. package/dist/commands/refactor/types.js +26 -0
  61. package/dist/commands/refactor/types.js.map +1 -0
  62. package/dist/lib/read-only.d.ts +22 -0
  63. package/dist/lib/read-only.d.ts.map +1 -0
  64. package/dist/lib/read-only.js +34 -0
  65. package/dist/lib/read-only.js.map +1 -0
  66. 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 (recommendations only)
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, _cliVersion) {
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":"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"}
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"}