@slowcook-ai/cli 0.19.0-alpha.1 → 0.19.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/cli.js +27 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/brew/agent.d.ts +129 -0
  4. package/dist/commands/brew/agent.d.ts.map +1 -1
  5. package/dist/commands/brew/agent.js +132 -0
  6. package/dist/commands/brew/agent.js.map +1 -1
  7. package/dist/commands/chef/orchestrate.d.ts +34 -0
  8. package/dist/commands/chef/orchestrate.d.ts.map +1 -0
  9. package/dist/commands/chef/orchestrate.js +385 -0
  10. package/dist/commands/chef/orchestrate.js.map +1 -0
  11. package/dist/commands/init/mock.d.ts +46 -0
  12. package/dist/commands/init/mock.d.ts.map +1 -1
  13. package/dist/commands/init/mock.js +142 -2
  14. package/dist/commands/init/mock.js.map +1 -1
  15. package/dist/commands/recon/index.d.ts.map +1 -1
  16. package/dist/commands/recon/index.js +108 -5
  17. package/dist/commands/recon/index.js.map +1 -1
  18. package/dist/commands/recon/reuse.d.ts +118 -0
  19. package/dist/commands/recon/reuse.d.ts.map +1 -0
  20. package/dist/commands/recon/reuse.js +269 -0
  21. package/dist/commands/recon/reuse.js.map +1 -0
  22. package/dist/commands/recon/shape-preserve.d.ts +46 -0
  23. package/dist/commands/recon/shape-preserve.d.ts.map +1 -1
  24. package/dist/commands/recon/shape-preserve.js +126 -0
  25. package/dist/commands/recon/shape-preserve.js.map +1 -1
  26. package/dist/commands/refactor/index.d.ts +15 -0
  27. package/dist/commands/refactor/index.d.ts.map +1 -0
  28. package/dist/commands/refactor/index.js +126 -0
  29. package/dist/commands/refactor/index.js.map +1 -0
  30. package/dist/commands/refactor/score.d.ts +38 -0
  31. package/dist/commands/refactor/score.d.ts.map +1 -0
  32. package/dist/commands/refactor/score.js +79 -0
  33. package/dist/commands/refactor/score.js.map +1 -0
  34. package/dist/commands/refactor/types.d.ts +64 -0
  35. package/dist/commands/refactor/types.d.ts.map +1 -0
  36. package/dist/commands/refactor/types.js +26 -0
  37. package/dist/commands/refactor/types.js.map +1 -0
  38. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reuse.js","sourceRoot":"","sources":["../../../src/commands/recon/reuse.ts"],"names":[],"mappings":"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"}
@@ -48,8 +48,54 @@ export declare function stripMockChromeSubtrees(source: string): string;
48
48
  interface SynthOpts {
49
49
  story: string;
50
50
  shapes: ExtractedShape[];
51
+ /**
52
+ * 0.19.0-alpha.6 (#75) — emit mode.
53
+ * "v1": source-grep tests (asserts text in brewed src/). Cheap,
54
+ * no render, but fragile (passes when testid is in a comment;
55
+ * misses dynamic className composition).
56
+ * "v2": render-and-assert tests. Imports the component, mounts
57
+ * via @testing-library/react, queries the live DOM. Catches
58
+ * drift v1 misses; requires components to render with default
59
+ * props (or skips downstream assertions cleanly).
60
+ * Default: v1. Callers opt into v2 via --shape-mode v2.
61
+ */
62
+ emitMode?: "v1" | "v2";
51
63
  }
64
+ /**
65
+ * 0.19.0-alpha.6 — convert a `src/<rel>.tsx` source path to its
66
+ * `@/<rel>` tsconfig-alias import specifier (drops the `.tsx`
67
+ * extension; keeps directory structure). Pure: no IO.
68
+ *
69
+ * Examples:
70
+ * src/components/members/MemberReactionsPage.tsx
71
+ * → @/components/members/MemberReactionsPage
72
+ * src/lib/foo.ts
73
+ * → @/lib/foo
74
+ * mock/src/components/X.tsx (already mock-ish)
75
+ * → @/components/X (caller should pass mockToSrcPath first)
76
+ */
77
+ export declare function srcPathToAliasImport(srcPath: string): string;
52
78
  export declare function synthesiseShapeTestFile(opts: SynthOpts): string;
79
+ /**
80
+ * 0.19.0-alpha.6 (#75) — v2: render-and-assert structural tests.
81
+ *
82
+ * For each mock file, emit a test that:
83
+ * 1. Imports the brewed src/ component via the @/ alias.
84
+ * 2. Renders it with default props (`<Component />`) using
85
+ * @testing-library/react.
86
+ * 3. Queries the live DOM for testid presence, className tokens
87
+ * on the rendered output, and <header> landmark presence.
88
+ *
89
+ * Keeps v1's "no inline hex" anti-wiring assertion (still source-
90
+ * grep, cheap, catches token-family drift). The render assertions
91
+ * are the v2 win — catches dynamic-className drift v1 missed.
92
+ *
93
+ * Defensive: every assertion wraps render in a top-level
94
+ * "renders with default props" test. If that fails (component
95
+ * needs real props), the downstream tests fail too — clean signal
96
+ * that recon needs scenario-derived prop synthesis (a future α).
97
+ */
98
+ export declare function synthesiseShapeTestFileV2(opts: SynthOpts): string;
53
99
  /**
54
100
  * Walk mock/src/ + return any file that contains `story-N` in source
55
101
  * OR is referenced by a scenario file for the story.
@@ -1 +1 @@
1
- {"version":3,"file":"shape-preserve.d.ts","sourceRoot":"","sources":["../../../src/commands/recon/shape-preserve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,IAAI,EAAY,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAWD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAiBrF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY9D;AA0GD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAmE/D;AAaD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+E/E;AAGD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"shape-preserve.d.ts","sourceRoot":"","sources":["../../../src/commands/recon/shape-preserve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,IAAI,EAAY,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAWD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAiBrF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY9D;AA0GD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAK/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAiFjE;AAkFD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+E/E;AAGD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC"}
@@ -167,7 +167,133 @@ function extractTokens(source, tokens) {
167
167
  function escapeRegExp(s) {
168
168
  return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
169
169
  }
170
+ /**
171
+ * 0.19.0-alpha.6 — convert a `src/<rel>.tsx` source path to its
172
+ * `@/<rel>` tsconfig-alias import specifier (drops the `.tsx`
173
+ * extension; keeps directory structure). Pure: no IO.
174
+ *
175
+ * Examples:
176
+ * src/components/members/MemberReactionsPage.tsx
177
+ * → @/components/members/MemberReactionsPage
178
+ * src/lib/foo.ts
179
+ * → @/lib/foo
180
+ * mock/src/components/X.tsx (already mock-ish)
181
+ * → @/components/X (caller should pass mockToSrcPath first)
182
+ */
183
+ export function srcPathToAliasImport(srcPath) {
184
+ const stripped = srcPath.replace(/^(?:mock\/)?src\//, "@/").replace(/\.(tsx?|jsx?)$/, "");
185
+ return stripped;
186
+ }
170
187
  export function synthesiseShapeTestFile(opts) {
188
+ if (opts.emitMode === "v2") {
189
+ return synthesiseShapeTestFileV2(opts);
190
+ }
191
+ return synthesiseShapeTestFileV1(opts);
192
+ }
193
+ /**
194
+ * 0.19.0-alpha.6 (#75) — v2: render-and-assert structural tests.
195
+ *
196
+ * For each mock file, emit a test that:
197
+ * 1. Imports the brewed src/ component via the @/ alias.
198
+ * 2. Renders it with default props (`<Component />`) using
199
+ * @testing-library/react.
200
+ * 3. Queries the live DOM for testid presence, className tokens
201
+ * on the rendered output, and <header> landmark presence.
202
+ *
203
+ * Keeps v1's "no inline hex" anti-wiring assertion (still source-
204
+ * grep, cheap, catches token-family drift). The render assertions
205
+ * are the v2 win — catches dynamic-className drift v1 missed.
206
+ *
207
+ * Defensive: every assertion wraps render in a top-level
208
+ * "renders with default props" test. If that fails (component
209
+ * needs real props), the downstream tests fail too — clean signal
210
+ * that recon needs scenario-derived prop synthesis (a future α).
211
+ */
212
+ export function synthesiseShapeTestFileV2(opts) {
213
+ const { story, shapes } = opts;
214
+ const lines = [];
215
+ lines.push("// @vitest-environment jsdom");
216
+ lines.push("//");
217
+ lines.push(`// AUTO-GENERATED by slowcook recon --shape-mode v2 (story-${story}). Do not edit by hand.`);
218
+ lines.push("// Renders each component + queries the live DOM. v2 catches dynamic-className");
219
+ lines.push("// drift that v1's source-grep tests miss.");
220
+ lines.push("//");
221
+ lines.push("// Re-running recon regenerates this file.");
222
+ lines.push("");
223
+ lines.push(`import { describe, it, expect, afterEach } from "vitest";`);
224
+ lines.push(`import { render, cleanup } from "@testing-library/react";`);
225
+ // Import each component once at top of file so the test runner can
226
+ // resolve them at module-eval time (same shape as production tests).
227
+ for (const shape of shapes) {
228
+ if (!shape.componentName)
229
+ continue;
230
+ const alias = srcPathToAliasImport(mockToSrcPath(shape.file));
231
+ // Default-imports for default-exported components, named imports otherwise.
232
+ // Best-effort detection: the source's "export default function" form
233
+ // implies default. Fall back to default import (most common shape).
234
+ lines.push(`import ${shape.componentName} from "${alias}";`);
235
+ }
236
+ lines.push("");
237
+ lines.push(`describe("story-${story} structural shape v2 (recon-emitted)", () => {`);
238
+ lines.push(` afterEach(() => { cleanup(); });`);
239
+ lines.push(``);
240
+ if (shapes.every((s) => s.testids.length === 0 && s.visualTokens.length === 0 && !s.hasHeader)) {
241
+ lines.push(` it.skip("no testids/tokens/header found in mock UI — nothing to assert", () => {});`);
242
+ }
243
+ else {
244
+ for (const shape of shapes) {
245
+ if (!shape.componentName)
246
+ continue;
247
+ const cn = shape.componentName;
248
+ lines.push(` describe("<${cn} /> from ${shape.file}", () => {`);
249
+ // Sentinel: can the component render with default props at all?
250
+ lines.push(` it("renders with default props (no throw)", () => {`);
251
+ lines.push(` expect(() => render(<${cn} />)).not.toThrow();`);
252
+ lines.push(` });`);
253
+ // Per-testid render assertions
254
+ for (const tid of shape.testids) {
255
+ lines.push(` it("DOM contains data-testid='${tid}'", () => {`);
256
+ lines.push(` const { queryByTestId } = render(<${cn} />);`);
257
+ lines.push(` expect(queryByTestId(${JSON.stringify(tid)})).toBeTruthy();`);
258
+ lines.push(` });`);
259
+ }
260
+ // Per-token render assertions: search the rendered DOM tree
261
+ for (const token of shape.visualTokens) {
262
+ lines.push(` it("rendered DOM has class token '${token}'", () => {`);
263
+ lines.push(` const { container } = render(<${cn} />);`);
264
+ lines.push(` const found = container.querySelector('[class*="${token}"]');`);
265
+ lines.push(` expect(found, ${JSON.stringify(`expected at least one element with class token '${token}'`)}).toBeTruthy();`);
266
+ lines.push(` });`);
267
+ }
268
+ // Header semantic landmark
269
+ if (shape.hasHeader) {
270
+ lines.push(` it("rendered DOM contains a <header> element", () => {`);
271
+ lines.push(` const { container } = render(<${cn} />);`);
272
+ lines.push(` expect(container.querySelector("header")).toBeTruthy();`);
273
+ lines.push(` });`);
274
+ }
275
+ lines.push(` });`);
276
+ lines.push(``);
277
+ }
278
+ // Anti-wiring: source-grep "no inline hex" — kept from v1 for
279
+ // token-family preservation. Cheap + complementary to the render
280
+ // assertions (catches different drift class).
281
+ lines.push(` describe("token-family preservation (source-grep)", () => {`);
282
+ lines.push(` const { readFileSync, existsSync } = require("node:fs");`);
283
+ for (const shape of shapes) {
284
+ const srcPath = mockToSrcPath(shape.file);
285
+ lines.push(` it("${shape.componentName ?? shape.file}: no inline hex/rgb in className/style", () => {`);
286
+ lines.push(` const src = existsSync(${JSON.stringify(srcPath)}) ? readFileSync(${JSON.stringify(srcPath)}, "utf8") : "";`);
287
+ lines.push(` const styled = src.match(/(?:className|style)\\s*=\\s*["\`'][^"\`']*?[#][0-9a-fA-F]{3,8}[^"\`']*?["\`']/g) || [];`);
288
+ lines.push(` expect(styled, "no inline hex in className/style").toEqual([]);`);
289
+ lines.push(` });`);
290
+ }
291
+ lines.push(` });`);
292
+ }
293
+ lines.push(`});`);
294
+ return lines.join("\n") + "\n";
295
+ }
296
+ function synthesiseShapeTestFileV1(opts) {
171
297
  const { story, shapes } = opts;
172
298
  const lines = [];
173
299
  lines.push("// @vitest-environment jsdom");
@@ -1 +1 @@
1
- {"version":3,"file":"shape-preserve.js","sourceRoot":"","sources":["../../../src/commands/recon/shape-preserve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape-preserve.js","sourceRoot":"","sources":["../../../src/commands/recon/shape-preserve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `slowcook refactor` — α.7 (#64).
3
+ *
4
+ * Reads candidate refactor proposals from
5
+ * .brewing/refactor/proposals.json
6
+ * Filters by --scope patterns, ranks by benefit/cost, prints a table.
7
+ *
8
+ * α.7 ships ranking + reporting only. LLM-backed proposal generation
9
+ * + auto-application land in later alphas. This command's job today
10
+ * is to give the architecture room: any proposer (hand-authored
11
+ * JSON, recon emissions, future LLM agent) drops files into the
12
+ * standard input path + this command consumes them.
13
+ */
14
+ export declare function refactor(argv: string[], _cliVersion: string): Promise<void>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/refactor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoEH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CjF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * `slowcook refactor` — α.7 (#64).
3
+ *
4
+ * Reads candidate refactor proposals from
5
+ * .brewing/refactor/proposals.json
6
+ * Filters by --scope patterns, ranks by benefit/cost, prints a table.
7
+ *
8
+ * α.7 ships ranking + reporting only. LLM-backed proposal generation
9
+ * + auto-application land in later alphas. This command's job today
10
+ * is to give the architecture room: any proposer (hand-authored
11
+ * JSON, recon emissions, future LLM agent) drops files into the
12
+ * standard input path + this command consumes them.
13
+ */
14
+ import { existsSync, readFileSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { filterProposalsByScope, rankProposals } from "./score.js";
17
+ function parseArgs(argv) {
18
+ const args = {
19
+ repoRoot: process.cwd(),
20
+ proposalsPath: ".brewing/refactor/proposals.json",
21
+ scope: [],
22
+ json: false,
23
+ limit: 0,
24
+ };
25
+ for (let i = 0; i < argv.length; i++) {
26
+ const a = argv[i];
27
+ const next = argv[i + 1];
28
+ if (a === "--cwd" && next) {
29
+ args.repoRoot = next;
30
+ i++;
31
+ }
32
+ else if (a === "--proposals" && next) {
33
+ args.proposalsPath = next;
34
+ i++;
35
+ }
36
+ else if (a === "--scope" && next) {
37
+ args.scope.push(next);
38
+ i++;
39
+ }
40
+ else if (a === "--json") {
41
+ args.json = true;
42
+ }
43
+ else if (a === "--limit" && next) {
44
+ args.limit = parseInt(next, 10);
45
+ i++;
46
+ }
47
+ else if (a === "--help" || a === "-h") {
48
+ printHelp();
49
+ process.exit(0);
50
+ }
51
+ }
52
+ return args;
53
+ }
54
+ function printHelp() {
55
+ console.log(`
56
+ slowcook refactor — rank refactor proposals by benefit/cost (cli α.7)
57
+
58
+ Reads .brewing/refactor/proposals.json (an array of RefactorProposal),
59
+ filters by --scope, ranks by benefit-per-cost (descending), prints
60
+ a table or JSON.
61
+
62
+ Usage:
63
+ slowcook refactor [options]
64
+
65
+ Options:
66
+ --cwd <path> Repo root (default: cwd).
67
+ --proposals <path> Proposals JSON path (default: .brewing/refactor/proposals.json).
68
+ --scope <pattern> Repeatable. Glob-ish patterns; proposal must
69
+ have ALL filesAffected match at least one. Examples:
70
+ --scope src/**
71
+ --scope src/components/*
72
+ --scope src/lib/
73
+ --limit <n> Show top N. Default 0 = all.
74
+ --json Emit JSON (default: human-readable table).
75
+
76
+ Proposal shape (RefactorProposal):
77
+ { id, title, rationale, filesAffected[], estimatedLocDelta,
78
+ estimatedValueScore, evidence? }
79
+
80
+ Cost = |estimatedLocDelta| × filesAffected.length, clamped ≥1.
81
+ Benefit = estimatedValueScore (caller-supplied 0-10).
82
+ Ranking key = benefit / cost.
83
+ `);
84
+ }
85
+ export async function refactor(argv, _cliVersion) {
86
+ const args = parseArgs(argv);
87
+ const abs = join(args.repoRoot, args.proposalsPath);
88
+ if (!existsSync(abs)) {
89
+ console.error(`No proposals file at ${args.proposalsPath} (cwd=${args.repoRoot}).`);
90
+ console.error(`Drop a JSON array of RefactorProposal there. See \`slowcook refactor --help\`.`);
91
+ process.exit(2);
92
+ }
93
+ let proposals;
94
+ try {
95
+ const raw = readFileSync(abs, "utf8");
96
+ proposals = JSON.parse(raw);
97
+ if (!Array.isArray(proposals))
98
+ throw new Error("proposals JSON must be an array");
99
+ }
100
+ catch (e) {
101
+ console.error(`Could not parse ${args.proposalsPath}: ${e.message}`);
102
+ process.exit(2);
103
+ }
104
+ const filtered = filterProposalsByScope(proposals, args.scope);
105
+ const ranked = rankProposals(filtered);
106
+ const out = args.limit > 0 ? ranked.slice(0, args.limit) : ranked;
107
+ if (args.json) {
108
+ console.log(JSON.stringify(out, null, 2));
109
+ return;
110
+ }
111
+ console.log(`slowcook refactor · ${proposals.length} proposal(s) · ${filtered.length} after scope filter`);
112
+ if (args.scope.length > 0) {
113
+ console.log(` scope: ${args.scope.join(", ")}`);
114
+ }
115
+ console.log();
116
+ if (out.length === 0) {
117
+ console.log("(no proposals to rank)");
118
+ return;
119
+ }
120
+ for (const r of out) {
121
+ const a = r.assessment;
122
+ console.log(` ${r.proposal.id} benefit/cost=${a.benefitPerCost.toFixed(3)} benefit=${a.benefitScore} cost=${a.costScore} files=${r.proposal.filesAffected.length}`);
123
+ console.log(` ${r.proposal.title}`);
124
+ }
125
+ }
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/refactor/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 0.19.0-alpha.7 (#64) — pure scoring + filtering helpers for the
3
+ * refactor command. No IO; testable in isolation.
4
+ */
5
+ import type { ProposalAssessment, RefactorProposal } from "./types.js";
6
+ /**
7
+ * Compute the cost / benefit / benefit-per-cost numbers for one
8
+ * proposal. Cost is `abs(estimatedLocDelta) * filesAffected.length`
9
+ * (clamped to ≥1 so the ratio is finite for zero-cost edge cases).
10
+ */
11
+ export declare function assessProposal(p: RefactorProposal): ProposalAssessment;
12
+ /**
13
+ * Match a single file path against a glob-ish scope pattern. Supports:
14
+ * - exact match: "src/foo.ts"
15
+ * - directory prefix: "src/" (matches anything under src/)
16
+ * - star at the end: "src/components/*" (one segment after)
17
+ * - double-star: "src/**" (any depth)
18
+ *
19
+ * Pure regex translation; no fs lookup.
20
+ */
21
+ export declare function matchesScope(filePath: string, pattern: string): boolean;
22
+ /**
23
+ * Filter proposals to those whose `filesAffected` ALL match at least
24
+ * one scope pattern. A proposal that touches even one out-of-scope
25
+ * file is excluded entirely (boundedness rule — refactors stay
26
+ * surgical).
27
+ */
28
+ export declare function filterProposalsByScope(proposals: RefactorProposal[], scope: string[]): RefactorProposal[];
29
+ /**
30
+ * Rank a list of proposals by benefit-per-cost (descending). Returns
31
+ * a NEW array of [proposal, assessment] pairs; doesn't mutate input.
32
+ * Stable for ties (preserves original order).
33
+ */
34
+ export declare function rankProposals(proposals: RefactorProposal[]): Array<{
35
+ proposal: RefactorProposal;
36
+ assessment: ProposalAssessment;
37
+ }>;
38
+ //# sourceMappingURL=score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../../src/commands/refactor/score.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,CAWtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAevE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,KAAK,EAAE,MAAM,EAAE,GACd,gBAAgB,EAAE,CAKpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,gBAAgB,EAAE,GAC5B,KAAK,CAAC;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAYvE"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 0.19.0-alpha.7 (#64) — pure scoring + filtering helpers for the
3
+ * refactor command. No IO; testable in isolation.
4
+ */
5
+ /**
6
+ * Compute the cost / benefit / benefit-per-cost numbers for one
7
+ * proposal. Cost is `abs(estimatedLocDelta) * filesAffected.length`
8
+ * (clamped to ≥1 so the ratio is finite for zero-cost edge cases).
9
+ */
10
+ export function assessProposal(p) {
11
+ const fileCount = p.filesAffected.length || 0;
12
+ const rawCost = Math.abs(p.estimatedLocDelta) * Math.max(1, fileCount);
13
+ const cost = Math.max(1, rawCost);
14
+ const benefit = p.estimatedValueScore;
15
+ return {
16
+ proposalId: p.id,
17
+ costScore: cost,
18
+ benefitScore: benefit,
19
+ benefitPerCost: benefit / cost,
20
+ };
21
+ }
22
+ /**
23
+ * Match a single file path against a glob-ish scope pattern. Supports:
24
+ * - exact match: "src/foo.ts"
25
+ * - directory prefix: "src/" (matches anything under src/)
26
+ * - star at the end: "src/components/*" (one segment after)
27
+ * - double-star: "src/**" (any depth)
28
+ *
29
+ * Pure regex translation; no fs lookup.
30
+ */
31
+ export function matchesScope(filePath, pattern) {
32
+ if (pattern === filePath)
33
+ return true;
34
+ if (pattern.endsWith("/")) {
35
+ return filePath.startsWith(pattern);
36
+ }
37
+ if (pattern.endsWith("/**")) {
38
+ return filePath.startsWith(pattern.slice(0, -3) + "/") || filePath === pattern.slice(0, -3);
39
+ }
40
+ if (pattern.endsWith("/*")) {
41
+ const dir = pattern.slice(0, -2);
42
+ if (!filePath.startsWith(dir + "/"))
43
+ return false;
44
+ const rest = filePath.slice(dir.length + 1);
45
+ return !rest.includes("/");
46
+ }
47
+ return false;
48
+ }
49
+ /**
50
+ * Filter proposals to those whose `filesAffected` ALL match at least
51
+ * one scope pattern. A proposal that touches even one out-of-scope
52
+ * file is excluded entirely (boundedness rule — refactors stay
53
+ * surgical).
54
+ */
55
+ export function filterProposalsByScope(proposals, scope) {
56
+ if (scope.length === 0)
57
+ return proposals.slice();
58
+ return proposals.filter((p) => p.filesAffected.every((f) => scope.some((pat) => matchesScope(f, pat))));
59
+ }
60
+ /**
61
+ * Rank a list of proposals by benefit-per-cost (descending). Returns
62
+ * a NEW array of [proposal, assessment] pairs; doesn't mutate input.
63
+ * Stable for ties (preserves original order).
64
+ */
65
+ export function rankProposals(proposals) {
66
+ const indexed = proposals.map((p, i) => ({
67
+ proposal: p,
68
+ assessment: assessProposal(p),
69
+ origIndex: i,
70
+ }));
71
+ indexed.sort((a, b) => {
72
+ const diff = b.assessment.benefitPerCost - a.assessment.benefitPerCost;
73
+ if (diff !== 0)
74
+ return diff;
75
+ return a.origIndex - b.origIndex; // stable
76
+ });
77
+ return indexed.map(({ proposal, assessment }) => ({ proposal, assessment }));
78
+ }
79
+ //# sourceMappingURL=score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../src/commands/refactor/score.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 0.19.0-alpha.7 (#64) — refactor command data shapes.
3
+ *
4
+ * The refactor command takes a list of candidate refactors (proposals)
5
+ * + computes per-proposal cost/benefit, filters by codebase scope,
6
+ * and ranks them. Proposals come from a source the cli treats as
7
+ * opaque today — could be hand-authored JSON, recon emissions, or a
8
+ * future LLM proposer agent. The scoring + filtering logic stays
9
+ * separate so any source feeds into the same ranking.
10
+ *
11
+ * Goals:
12
+ * - Boundedness: caller specifies scope (e.g. `src/components/**`)
13
+ * so refactors don't sprawl across the repo.
14
+ * - Cheapness-first: prefer high-value low-cost proposals; defer
15
+ * expensive ones until they pay back.
16
+ * - Auditability: each proposal carries a rationale + estimated
17
+ * deltas so the cli can show its work + a PM can sanity-check.
18
+ *
19
+ * Out of scope for α.7 (deferred):
20
+ * - LLM-backed proposer that READS the codebase + suggests
21
+ * refactors. The pure ranking layer ships first; proposer comes
22
+ * when the data shape has settled empirically.
23
+ * - Auto-application. α.7 ranks + reports; a future α may apply.
24
+ */
25
+ /**
26
+ * A single candidate refactor. The cli treats `id` as opaque (caller
27
+ * picks; e.g., a slug or hash). `filesAffected` is canonical (no
28
+ * globs in the proposal itself — globs live in scope filters).
29
+ */
30
+ export interface RefactorProposal {
31
+ /** Stable identifier, caller-chosen. */
32
+ id: string;
33
+ /** One-line summary (≤120 chars). Shown in ranked output. */
34
+ title: string;
35
+ /** What the refactor changes + WHY it's worth doing. */
36
+ rationale: string;
37
+ /** Concrete file paths the refactor would touch. Repo-relative. */
38
+ filesAffected: string[];
39
+ /** Net lines changed estimate (added - removed). Negative is fine
40
+ * (refactors that reduce LOC are usually high-value). */
41
+ estimatedLocDelta: number;
42
+ /** Subjective value score, 0-10. Caller's job to populate. */
43
+ estimatedValueScore: number;
44
+ /** Optional: external value signals (e.g., dup-count eliminated,
45
+ * cyclomatic-complexity drop). Surface-only; no scoring weight
46
+ * applied unless the caller folds them into estimatedValueScore. */
47
+ evidence?: Record<string, number | string>;
48
+ }
49
+ /**
50
+ * The cost/benefit assessment of a single proposal. Pure: derived
51
+ * from the proposal alone (no IO).
52
+ */
53
+ export interface ProposalAssessment {
54
+ proposalId: string;
55
+ /** Cost: |estimatedLocDelta| × number of files (handwave, but
56
+ * monotonic with reviewer effort). Higher = more expensive. */
57
+ costScore: number;
58
+ /** Benefit: estimatedValueScore as-is. */
59
+ benefitScore: number;
60
+ /** Ratio: benefit / max(cost, 1). Higher = better return per unit
61
+ * effort. Used as the default ranking key. */
62
+ benefitPerCost: number;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/refactor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;8DAC0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;yEAEqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB;oEACgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB;mDAC+C;IAC/C,cAAc,EAAE,MAAM,CAAC;CACxB"}