@slowcook-ai/cli 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/cli.js +16 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/amend.d.ts +12 -0
  4. package/dist/commands/amend.d.ts.map +1 -0
  5. package/dist/commands/amend.js +99 -0
  6. package/dist/commands/amend.js.map +1 -0
  7. package/dist/commands/bench-browser.d.ts +2 -0
  8. package/dist/commands/bench-browser.d.ts.map +1 -0
  9. package/dist/commands/bench-browser.js +31 -0
  10. package/dist/commands/bench-browser.js.map +1 -0
  11. package/dist/commands/check/index.d.ts.map +1 -1
  12. package/dist/commands/check/index.js +3 -0
  13. package/dist/commands/check/index.js.map +1 -1
  14. package/dist/commands/check/style-drift.d.ts +18 -0
  15. package/dist/commands/check/style-drift.d.ts.map +1 -0
  16. package/dist/commands/check/style-drift.js +175 -0
  17. package/dist/commands/check/style-drift.js.map +1 -0
  18. package/dist/commands/chef/orchestrate.d.ts.map +1 -1
  19. package/dist/commands/chef/orchestrate.js +22 -2
  20. package/dist/commands/chef/orchestrate.js.map +1 -1
  21. package/dist/commands/extract/as-built-cli.d.ts +1 -0
  22. package/dist/commands/extract/as-built-cli.d.ts.map +1 -1
  23. package/dist/commands/extract/as-built-cli.js +1 -1
  24. package/dist/commands/extract/as-built-cli.js.map +1 -1
  25. package/dist/commands/extract/history-cli.d.ts +6 -0
  26. package/dist/commands/extract/history-cli.d.ts.map +1 -0
  27. package/dist/commands/extract/history-cli.js +58 -0
  28. package/dist/commands/extract/history-cli.js.map +1 -0
  29. package/dist/commands/extract/history.d.ts +42 -0
  30. package/dist/commands/extract/history.d.ts.map +1 -0
  31. package/dist/commands/extract/history.js +114 -0
  32. package/dist/commands/extract/history.js.map +1 -0
  33. package/dist/commands/extract/index.d.ts.map +1 -1
  34. package/dist/commands/extract/index.js +21 -8
  35. package/dist/commands/extract/index.js.map +1 -1
  36. package/dist/commands/eye/run.d.ts.map +1 -1
  37. package/dist/commands/eye/run.js +6 -0
  38. package/dist/commands/eye/run.js.map +1 -1
  39. package/dist/commands/guard.d.ts +4 -0
  40. package/dist/commands/guard.d.ts.map +1 -1
  41. package/dist/commands/guard.js +46 -2
  42. package/dist/commands/guard.js.map +1 -1
  43. package/dist/commands/init/templates.d.ts.map +1 -1
  44. package/dist/commands/init/templates.js +5 -3
  45. package/dist/commands/init/templates.js.map +1 -1
  46. package/dist/commands/recall/brief.d.ts +15 -0
  47. package/dist/commands/recall/brief.d.ts.map +1 -0
  48. package/dist/commands/recall/brief.js +32 -0
  49. package/dist/commands/recall/brief.js.map +1 -0
  50. package/dist/commands/recall/context.d.ts +18 -0
  51. package/dist/commands/recall/context.d.ts.map +1 -0
  52. package/dist/commands/recall/context.js +19 -0
  53. package/dist/commands/recall/context.js.map +1 -0
  54. package/dist/commands/recall/ctx.d.ts +31 -0
  55. package/dist/commands/recall/ctx.d.ts.map +1 -0
  56. package/dist/commands/recall/ctx.js +77 -0
  57. package/dist/commands/recall/ctx.js.map +1 -0
  58. package/dist/commands/recall/index.d.ts +2 -0
  59. package/dist/commands/recall/index.d.ts.map +1 -0
  60. package/dist/commands/recall/index.js +73 -0
  61. package/dist/commands/recall/index.js.map +1 -0
  62. package/dist/commands/vibe/app-gen.d.ts.map +1 -1
  63. package/dist/commands/vibe/app-gen.js +5 -3
  64. package/dist/commands/vibe/app-gen.js.map +1 -1
  65. package/dist/commands/vibe/as-built.d.ts +1 -1
  66. package/dist/commands/vibe/as-built.d.ts.map +1 -1
  67. package/dist/commands/vibe/as-built.js +6 -2
  68. package/dist/commands/vibe/as-built.js.map +1 -1
  69. package/dist/commands/vibe/index.d.ts.map +1 -1
  70. package/dist/commands/vibe/index.js +2 -1
  71. package/dist/commands/vibe/index.js.map +1 -1
  72. package/dist/commands.manifest.d.ts.map +1 -1
  73. package/dist/commands.manifest.js +22 -4
  74. package/dist/commands.manifest.js.map +1 -1
  75. package/dist/lib/browser/bench-worker.d.ts +2 -0
  76. package/dist/lib/browser/bench-worker.d.ts.map +1 -0
  77. package/dist/lib/browser/bench-worker.js +71 -0
  78. package/dist/lib/browser/bench-worker.js.map +1 -0
  79. package/dist/lib/browser/bench.d.ts +26 -0
  80. package/dist/lib/browser/bench.d.ts.map +1 -0
  81. package/dist/lib/browser/bench.js +68 -0
  82. package/dist/lib/browser/bench.js.map +1 -0
  83. package/dist/lib/browser/driver.d.ts +59 -0
  84. package/dist/lib/browser/driver.d.ts.map +1 -0
  85. package/dist/lib/browser/driver.js +19 -0
  86. package/dist/lib/browser/driver.js.map +1 -0
  87. package/dist/lib/browser/index.d.ts +8 -0
  88. package/dist/lib/browser/index.d.ts.map +1 -0
  89. package/dist/lib/browser/index.js +7 -0
  90. package/dist/lib/browser/index.js.map +1 -0
  91. package/dist/lib/browser/playwright-driver.d.ts +3 -0
  92. package/dist/lib/browser/playwright-driver.d.ts.map +1 -0
  93. package/dist/lib/browser/playwright-driver.js +44 -0
  94. package/dist/lib/browser/playwright-driver.js.map +1 -0
  95. package/dist/lib/browser/qa-replay.d.ts +47 -0
  96. package/dist/lib/browser/qa-replay.d.ts.map +1 -0
  97. package/dist/lib/browser/qa-replay.js +69 -0
  98. package/dist/lib/browser/qa-replay.js.map +1 -0
  99. package/dist/lib/browser/rustwright-driver.d.ts +5 -0
  100. package/dist/lib/browser/rustwright-driver.d.ts.map +1 -0
  101. package/dist/lib/browser/rustwright-driver.js +50 -0
  102. package/dist/lib/browser/rustwright-driver.js.map +1 -0
  103. package/dist/lib/browser/select.d.ts +21 -0
  104. package/dist/lib/browser/select.d.ts.map +1 -0
  105. package/dist/lib/browser/select.js +30 -0
  106. package/dist/lib/browser/select.js.map +1 -0
  107. package/package.json +8 -5
package/dist/cli.js CHANGED
@@ -3,6 +3,7 @@ import { readFileSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { dirname, join } from "node:path";
5
5
  import { guard } from "./commands/guard.js";
6
+ import { amend } from "./commands/amend.js";
6
7
  import { manifest } from "./commands/manifest.js";
7
8
  import { init } from "./commands/init/index.js";
8
9
  import { refine } from "./commands/refine/index.js";
@@ -24,6 +25,7 @@ import { plate } from "./commands/plate/index.js";
24
25
  import { port } from "./commands/port/index.js";
25
26
  import { preview } from "./commands/preview/index.js";
26
27
  import { check } from "./commands/check/index.js";
28
+ import { recall } from "./commands/recall/index.js";
27
29
  import { recon } from "./commands/recon/index.js";
28
30
  import { runMock } from "./commands/run-mock/index.js";
29
31
  import { dispatch } from "./commands/dispatch/index.js";
@@ -39,6 +41,7 @@ import { serve } from "./commands/serve/index.js";
39
41
  import { budget } from "./commands/budget/index.js";
40
42
  import { brand } from "./commands/brand/index.js";
41
43
  import { eye } from "./commands/eye/index.js";
44
+ import { benchBrowser } from "./commands/bench-browser.js";
42
45
  import { gate } from "./commands/gate/index.js";
43
46
  import { menu } from "./commands/menu/index.js";
44
47
  import { trace } from "./commands/trace/index.js";
@@ -73,6 +76,9 @@ async function main() {
73
76
  case "init":
74
77
  await init(args.slice(1), VERSION);
75
78
  return;
79
+ case "amend":
80
+ await amend(args.slice(1));
81
+ return;
76
82
  case "guard":
77
83
  await guard(args.slice(1));
78
84
  return;
@@ -284,6 +290,11 @@ async function main() {
284
290
  // verifies vibe + plate keep mock/ self-contained.
285
291
  await check(args.slice(1), VERSION);
286
292
  return;
293
+ case "recall":
294
+ // 0.28 — recall prior agent work (via ctxrs/ctx) before a task, so
295
+ // brew/chef/refine agents don't start context-blind. Best-effort.
296
+ await recall(args.slice(1), VERSION);
297
+ return;
287
298
  case "recon":
288
299
  // 0.17.6 — pre-brew structural divergence check. Runs after
289
300
  // both mockup PR + tests PR are merged; catches residual
@@ -321,6 +332,11 @@ async function main() {
321
332
  // required role has approved on the PR (agent-unforgeable).
322
333
  await gate(args.slice(1), VERSION);
323
334
  return;
335
+ case "bench-browser":
336
+ // browser-engine benchmark: playwright (default) vs rustwright (option),
337
+ // eye-capture + QA-replay, honest per-process RSS + oracle agreement.
338
+ await benchBrowser(args.slice(1), VERSION);
339
+ return;
324
340
  case "run-mock":
325
341
  // 0.16.0-α.17 — one-command mock launch + auto-pull on plate
326
342
  // amendments. Wraps git fetch/checkout + npm install + next dev
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface AmendmentEntry {
2
+ at: string;
3
+ reason: string;
4
+ pr?: string;
5
+ files?: string[];
6
+ }
7
+ /** append an amendments entry to specs/story-<id>.yaml (creates the list). */
8
+ export declare function appendAmendment(repoRoot: string, storyId: string, entry: AmendmentEntry): string;
9
+ /** resolve which story owns a test file, via the testgen manifests. */
10
+ export declare function owningStory(repoRoot: string, testPath: string): string | null;
11
+ export declare function amend(argv: string[]): Promise<void>;
12
+ //# sourceMappingURL=amend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../src/commands/amend.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAUhG;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB7E;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzD"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * `slowcook amend` — record a frozen-contract amendment ON THE OWNING STORY.
3
+ *
4
+ * (2026-07-11, from the first public LinkedIn thread.) The reason for changing
5
+ * a frozen test must not stop at the CI summary: tests are downstream of
6
+ * stories, so the amendment BACKPROPAGATES — an `amendments:` entry lands in
7
+ * the story's spec yaml, in the SAME PR that changes the test. `slowcook
8
+ * guard --override` refuses when a violated file's owning story (resolved via
9
+ * `.brewing/manifests/story-<id>.json`) has no such entry in the diff. This
10
+ * command writes the entry so satisfying the guard is one line:
11
+ *
12
+ * slowcook amend --story 042 --reason "sort-order contract changed by #88"
13
+ *
14
+ * PRD-level propagation is deliberately out of scope here: specs don't
15
+ * reference PRD sections in OSS; product-level pivots go through the spec
16
+ * supersession flow (supersedes / superseded_by).
17
+ */
18
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
19
+ import { join } from "node:path";
20
+ import * as YAML from "yaml";
21
+ /** append an amendments entry to specs/story-<id>.yaml (creates the list). */
22
+ export function appendAmendment(repoRoot, storyId, entry) {
23
+ const path = join(repoRoot, "specs", `story-${storyId}.yaml`);
24
+ if (!existsSync(path))
25
+ throw new Error(`no spec at specs/story-${storyId}.yaml`);
26
+ const doc = YAML.parseDocument(readFileSync(path, "utf8"));
27
+ const existing = doc.get("amendments");
28
+ const list = YAML.isSeq(existing) ? existing : doc.createNode([]);
29
+ list.add(doc.createNode(entry));
30
+ doc.set("amendments", list);
31
+ writeFileSync(path, doc.toString({ lineWidth: 0 }));
32
+ return path;
33
+ }
34
+ /** resolve which story owns a test file, via the testgen manifests. */
35
+ export function owningStory(repoRoot, testPath) {
36
+ // fast path: story id embedded in the path (tests/**/story-042*.test.*)
37
+ const m = /story-(\d+)/.exec(testPath);
38
+ if (m)
39
+ return m[1];
40
+ const dir = join(repoRoot, ".brewing", "manifests");
41
+ if (!existsSync(dir))
42
+ return null;
43
+ try {
44
+ const { readdirSync } = require("node:fs");
45
+ for (const f of readdirSync(dir)) {
46
+ const mm = /^story-(\d+)\.json$/.exec(f);
47
+ if (!mm)
48
+ continue;
49
+ try {
50
+ const man = JSON.parse(readFileSync(join(dir, f), "utf8"));
51
+ const tests = man.tests ?? man.test_files ?? [];
52
+ if (tests.some((t) => t === testPath || testPath.endsWith(t) || t.endsWith(testPath)))
53
+ return mm[1];
54
+ }
55
+ catch { /* skip bad manifest */ }
56
+ }
57
+ }
58
+ catch { /* no manifests */ }
59
+ return null;
60
+ }
61
+ export async function amend(argv) {
62
+ let story = "", reason = "", pr, files;
63
+ for (let i = 0; i < argv.length; i++) {
64
+ const a = argv[i], n = argv[i + 1];
65
+ if (a === "--story" && n) {
66
+ story = n.replace(/^story-/, "");
67
+ i++;
68
+ }
69
+ else if (a === "--reason" && n) {
70
+ reason = n;
71
+ i++;
72
+ }
73
+ else if (a === "--pr" && n) {
74
+ pr = n;
75
+ i++;
76
+ }
77
+ else if (a === "--files" && n) {
78
+ files = n.split(",");
79
+ i++;
80
+ }
81
+ else if (a === "--help" || a === "-h") {
82
+ console.log(`slowcook amend — record a frozen-contract amendment on its story
83
+
84
+ Usage: slowcook amend --story <id> --reason "<why>" [--pr <#>] [--files a,b]
85
+
86
+ Appends an amendments: entry to specs/story-<id>.yaml so the reason lives
87
+ where the contract lives. Commit it in the SAME PR as the frozen-test change —
88
+ \`slowcook guard --override\` requires it.`);
89
+ return;
90
+ }
91
+ }
92
+ if (!story || !reason) {
93
+ console.error("amend: --story and --reason are required (see --help)");
94
+ process.exit(64);
95
+ }
96
+ const path = appendAmendment(process.cwd(), story, { at: new Date().toISOString(), reason, ...(pr ? { pr } : {}), ...(files ? { files } : {}) });
97
+ console.log(`✓ amendment recorded on ${path} — commit it in the same PR as the test change.`);
98
+ }
99
+ //# sourceMappingURL=amend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.js","sourceRoot":"","sources":["../../src/commands/amend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function benchBrowser(args: string[], _version: string): Promise<void>;
2
+ //# sourceMappingURL=bench-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench-browser.d.ts","sourceRoot":"","sources":["../../src/commands/bench-browser.ts"],"names":[],"mappings":"AASA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBlF"}
@@ -0,0 +1,31 @@
1
+ // `slowcook bench-browser [eye|qa|both] [--iters N] [--plan file.json]`
2
+ // Honest comparison of the two browser engines on slowcook's own workloads —
3
+ // each engine in its own process (RSS is order-dependent otherwise), same
4
+ // browser where PW_EXECUTABLE_PATH/RUSTWRIGHT_CHROMIUM point at one. Playwright
5
+ // is the oracle; the QA run reports pass/fail agreement.
6
+ import { readFileSync } from "node:fs";
7
+ import { runBench, formatReport } from "../lib/browser/bench.js";
8
+ export async function benchBrowser(args, _version) {
9
+ const which = args[0] && !args[0].startsWith("--") ? args[0] : "both";
10
+ const itersArg = args.indexOf("--iters");
11
+ const iterations = itersArg >= 0 ? Math.max(1, Number(args[itersArg + 1]) || 8) : 8;
12
+ const planArg = args.indexOf("--plan");
13
+ const plan = planArg >= 0 ? JSON.parse(readFileSync(args[planArg + 1], "utf8")) : undefined;
14
+ const kinds = which === "eye" ? ["eye"] : which === "qa" ? ["qa"] : ["eye", "qa"];
15
+ console.log("browser-engine benchmark — playwright (default/oracle) vs rustwright (option)");
16
+ console.log("tip: point both at one browser via PW_EXECUTABLE_PATH + RUSTWRIGHT_CHROMIUM for apples-to-apples\n");
17
+ let anyDisagree = false;
18
+ for (const kind of kinds) {
19
+ const report = await runBench(kind, { iterations, plan });
20
+ console.log(formatReport(report));
21
+ console.log();
22
+ if (report.agreement !== null && report.agreement < 1)
23
+ anyDisagree = true;
24
+ }
25
+ // a QA-replay engine that disagrees with the oracle is not adoptable — signal it.
26
+ if (anyDisagree) {
27
+ console.error("⚠ rustwright disagreed with the Playwright oracle on some runs — do not default it for QA until this is understood.");
28
+ process.exitCode = 1;
29
+ }
30
+ }
31
+ //# sourceMappingURL=bench-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench-browser.js","sourceRoot":"","sources":["../../src/commands/bench-browser.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,0EAA0E;AAC1E,gFAAgF;AAChF,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,QAAgB;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAuB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3H,MAAM,KAAK,GAAqB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;IAClH,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;YAAE,WAAW,GAAG,IAAI,CAAC;IAC5E,CAAC;IACD,kFAAkF;IAClF,IAAI,WAAW,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,qHAAqH,CAAC,CAAC;QAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAAC,CAAC;AAClL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B9E"}
@@ -17,6 +17,7 @@ import { runSpecValidateCli } from "./spec-validate.js";
17
17
  import { runProdHonestyCli } from "./prod-honesty.js";
18
18
  import { runProdBundleCli } from "./prod-bundle.js";
19
19
  import { runSurfaceParityCli } from "./surface-parity.js";
20
+ import { runStyleDriftCli } from "./style-drift.js";
20
21
  export async function check(argv, _cliVersion) {
21
22
  const sub = argv[0];
22
23
  switch (sub) {
@@ -30,6 +31,8 @@ export async function check(argv, _cliVersion) {
30
31
  return runProdBundleCli(argv.slice(1));
31
32
  case "surface-parity":
32
33
  return runSurfaceParityCli(argv.slice(1));
34
+ case "style-drift":
35
+ return runStyleDriftCli(argv.slice(1));
33
36
  case undefined:
34
37
  case "help":
35
38
  case "--help":
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface StyleDriftReport {
2
+ counts: Record<string, number>;
3
+ failures: {
4
+ file: string;
5
+ count: number;
6
+ baseline: number;
7
+ sampleProps: string[];
8
+ }[];
9
+ totalDrift: number;
10
+ }
11
+ /** extract the top-level keys of every `style={{ … }}` object in a source. */
12
+ export declare function driftBlocks(source: string): {
13
+ keys: string[];
14
+ }[];
15
+ export declare function isDrift(keys: string[]): boolean;
16
+ export declare function scanStyleDrift(root: string, srcDir: string): Record<string, number>;
17
+ export declare function runStyleDriftCli(argv: string[]): Promise<void>;
18
+ //# sourceMappingURL=style-drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-drift.d.ts","sourceRoot":"","sources":["../../../src/commands/check/style-drift.ts"],"names":[],"mappings":"AAkEA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACrF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAiChE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAI/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CpE"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * `slowcook check style-drift` — the inline-style ratchet (2026-07-08).
3
+ *
4
+ * The dash post-mortem: a real design system (Tailwind @theme + `.sc-*`
5
+ * component classes) shipped and then 1,937 inline `style={{…}}` blocks grew
6
+ * around it — because the mock's first pages set an inline idiom, every
7
+ * subsequent page (agent- or human-written) matched the surrounding code, and
8
+ * nothing deterministic pushed back. Changing a token stayed cheap (styles
9
+ * reference CSS vars) but changing a COMPONENT (what a card/button/chip is)
10
+ * became a mass edit.
11
+ *
12
+ * The contract this check enforces:
13
+ * - tokens (color/font/radius/shadow/spacing scale) come from CSS vars;
14
+ * - recurring patterns come from the design system's classes;
15
+ * - inline `style` is legal ONLY for one-off geometry (flex/grid math,
16
+ * sizes, positions) — never for skin.
17
+ *
18
+ * Deterministic ratchet:
19
+ * - a style block is DRIFT when it contains ≥1 SKIN prop (color, background,
20
+ * border*, font*, boxShadow, borderRadius, …). Geometry-only blocks are
21
+ * free.
22
+ * - per-file drift counts live in a committed baseline
23
+ * (`.slowcook/style-drift-baseline.json`). Counts may only go DOWN:
24
+ * any file above its baseline fails; files at/below refresh automatically
25
+ * with `--write` (which is also how migration progress is recorded).
26
+ * - new files start at baseline 0 — new code must use classes from day one.
27
+ *
28
+ * Usage:
29
+ * slowcook check style-drift # verify against the baseline
30
+ * slowcook check style-drift --write # (re)write the baseline
31
+ * Config (optional, `.slowcook/style-drift.yaml`):
32
+ * src: mock/src # scan root (default: src, then mock/src fallback)
33
+ * baseline: .slowcook/style-drift-baseline.json
34
+ */
35
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
36
+ import { join, dirname, relative } from "node:path";
37
+ function walkTsx(dir, out = []) {
38
+ for (const e of readdirSync(dir)) {
39
+ if (e === "node_modules" || e.startsWith("."))
40
+ continue;
41
+ const p = join(dir, e);
42
+ if (statSync(p).isDirectory())
43
+ walkTsx(p, out);
44
+ else if (/\.(tsx|jsx)$/.test(e) && !/\.test\./.test(e))
45
+ out.push(p);
46
+ }
47
+ return out;
48
+ }
49
+ /** props that may appear inline — layout geometry, not skin. */
50
+ const GEOMETRY = new Set([
51
+ "display", "position", "top", "right", "bottom", "left", "inset", "zIndex",
52
+ "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight",
53
+ "margin", "marginTop", "marginRight", "marginBottom", "marginLeft",
54
+ "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft",
55
+ "flex", "flexDirection", "flexWrap", "flexShrink", "flexGrow", "flexBasis",
56
+ "alignItems", "alignSelf", "alignContent", "justifyContent", "justifySelf", "justifyItems",
57
+ "gap", "rowGap", "columnGap", "grid", "gridTemplateColumns", "gridTemplateRows",
58
+ "gridColumn", "gridRow", "gridArea", "placeItems", "placeContent",
59
+ "overflow", "overflowX", "overflowY", "textAlign", "verticalAlign",
60
+ "transform", "transformOrigin", "pointerEvents", "cursor", "userSelect",
61
+ "visibility", "opacity", "order", "aspectRatio", "objectFit", "whiteSpace",
62
+ "textOverflow", "wordBreak", "overflowWrap", "lineClamp", "WebkitLineClamp",
63
+ "letterSpacing", "lineHeight", "wordSpacing", "tabSize", "listStyle", "listStyleType",
64
+ "textTransform", "textDecoration", "textDecorationLine", "textIndent",
65
+ "WebkitBoxOrient", "float", "clear", "resize", "appearance", "outline",
66
+ ]);
67
+ /** extract the top-level keys of every `style={{ … }}` object in a source. */
68
+ export function driftBlocks(source) {
69
+ const out = [];
70
+ const re = /style=\{\{/g;
71
+ let m;
72
+ while ((m = re.exec(source))) {
73
+ // walk to the matching `}}` of the object literal
74
+ let depth = 1; // inside the object brace (the second `{`)
75
+ let i = m.index + m[0].length;
76
+ const start = i;
77
+ while (i < source.length && depth > 0) {
78
+ const ch = source[i];
79
+ if (ch === "{")
80
+ depth++;
81
+ else if (ch === "}")
82
+ depth--;
83
+ else if (ch === '"' || ch === "'" || ch === "`") {
84
+ const q = ch;
85
+ i++;
86
+ while (i < source.length && source[i] !== q) {
87
+ if (source[i] === "\\")
88
+ i++;
89
+ i++;
90
+ }
91
+ }
92
+ i++;
93
+ }
94
+ const body = source.slice(start, i - 1);
95
+ // top-level keys: strip nested braces/parens first (template exprs, sub-objects)
96
+ let flat = "", d = 0;
97
+ for (let j = 0; j < body.length; j++) {
98
+ const ch = body[j];
99
+ if (ch === "{" || ch === "(")
100
+ d++;
101
+ else if (ch === "}" || ch === ")")
102
+ d--;
103
+ else if (d === 0)
104
+ flat += ch;
105
+ }
106
+ const keys = [...flat.matchAll(/(?:^|,)\s*(?:\.\.\.[a-zA-Z_$][\w$.]*|(["']?)([a-zA-Z_$][\w$-]*)\1\s*:)/g)]
107
+ .map((k) => k[2]).filter((k) => !!k);
108
+ out.push({ keys });
109
+ }
110
+ return out;
111
+ }
112
+ export function isDrift(keys) {
113
+ // spread-only or geometry-only blocks are fine; any skin prop = drift.
114
+ const named = keys.filter((k) => !k.startsWith("..."));
115
+ return named.some((k) => !GEOMETRY.has(k));
116
+ }
117
+ export function scanStyleDrift(root, srcDir) {
118
+ const counts = {};
119
+ const files = walkTsx(join(root, srcDir));
120
+ for (const full of files.sort()) {
121
+ const src = readFileSync(full, "utf8");
122
+ const n = driftBlocks(src).filter((b) => isDrift(b.keys)).length;
123
+ if (n > 0)
124
+ counts[relative(root, full)] = n;
125
+ }
126
+ return counts;
127
+ }
128
+ export async function runStyleDriftCli(argv) {
129
+ const write = argv.includes("--write");
130
+ const root = process.cwd();
131
+ // config: explicit yaml > src/ > mock/src fallback
132
+ let srcDir = "src";
133
+ let baselinePath = ".slowcook/style-drift-baseline.json";
134
+ const cfgPath = join(root, ".slowcook/style-drift.yaml");
135
+ if (existsSync(cfgPath)) {
136
+ const cfg = readFileSync(cfgPath, "utf8");
137
+ srcDir = /^\s*src:\s*(\S+)/m.exec(cfg)?.[1] ?? srcDir;
138
+ baselinePath = /^\s*baseline:\s*(\S+)/m.exec(cfg)?.[1] ?? baselinePath;
139
+ }
140
+ else if (!existsSync(join(root, srcDir)) && existsSync(join(root, "mock/src"))) {
141
+ srcDir = "mock/src";
142
+ }
143
+ const counts = scanStyleDrift(root, srcDir);
144
+ const total = Object.values(counts).reduce((s, n) => s + n, 0);
145
+ if (write) {
146
+ mkdirSync(join(root, dirname(baselinePath)), { recursive: true });
147
+ writeFileSync(join(root, baselinePath), JSON.stringify(counts, null, 2) + "\n");
148
+ console.log(`✓ style-drift baseline written: ${Object.keys(counts).length} files, ${total} skin-styled inline blocks (${baselinePath})`);
149
+ return;
150
+ }
151
+ const baseline = existsSync(join(root, baselinePath))
152
+ ? JSON.parse(readFileSync(join(root, baselinePath), "utf8"))
153
+ : {};
154
+ const failures = [];
155
+ for (const [file, n] of Object.entries(counts)) {
156
+ const base = baseline[file] ?? 0; // new files start at ZERO
157
+ if (n > base)
158
+ failures.push({ file, count: n, baseline: base });
159
+ }
160
+ const healed = Object.entries(baseline).filter(([f, b]) => (counts[f] ?? 0) < b);
161
+ if (failures.length > 0) {
162
+ console.error(`✗ style-drift: inline SKIN styles increased in ${failures.length} file(s) — skin comes from the design system's classes; inline style is for geometry only.`);
163
+ for (const f of failures.slice(0, 20))
164
+ console.error(` ${f.file}: ${f.count} (baseline ${f.baseline})`);
165
+ console.error(` Fix: use .sc-*/utility classes (tokens via CSS vars). If a file was legitimately migrated+edited, re-run with --write AFTER review.`);
166
+ process.exit(1);
167
+ }
168
+ if (healed.length > 0) {
169
+ console.log(`✓ style-drift: no increases. ${healed.length} file(s) improved vs baseline — run --write to ratchet down.`);
170
+ }
171
+ else {
172
+ console.log(`✓ style-drift: no increases (${Object.keys(counts).length} files, ${total} baseline skin blocks).`);
173
+ }
174
+ }
175
+ //# sourceMappingURL=style-drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-drift.js","sourceRoot":"","sources":["../../../src/commands/check/style-drift.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../../src/commands/chef/orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EASL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAuMpC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CA6B1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAWR;AAoFD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHvF"}
1
+ {"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../../src/commands/chef/orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EASL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AA6MpC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CA6B1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAWR;AAoFD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIvF"}
@@ -20,6 +20,7 @@
20
20
  */
21
21
  import { execSync } from "node:child_process";
22
22
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
23
+ import { recallContext } from "../recall/context.js";
23
24
  import { dirname, join } from "node:path";
24
25
  import { AnthropicClient, CHEF_ORCHESTRATE_SYSTEM, buildChefOrchestratePrompt, } from "@slowcook-ai/llm-anthropic";
25
26
  import { isReadOnlyMode, logReadOnlyBanner } from "../../lib/read-only.js";
@@ -179,6 +180,11 @@ function loadOpenPrs(repoRoot, storyId) {
179
180
  }
180
181
  return out;
181
182
  }
183
+ /** a short topic string from the spec YAML (title/name/summary) for recall. */
184
+ function specTopic(spec) {
185
+ const m = spec.yaml.match(/^\s*(?:title|name|summary):\s*(.+)$/im);
186
+ return m ? m[1].replace(/["']/g, "").trim().slice(0, 80) : "";
187
+ }
182
188
  function loadSpec(repoRoot, storyId) {
183
189
  const path = `specs/story-${storyId}.yaml`;
184
190
  const abs = join(repoRoot, path);
@@ -325,12 +331,26 @@ export async function chefOrchestrate(argv, cliVersion) {
325
331
  storyOpenPrs: openPrs,
326
332
  recentRunnerOutput: runnerOutput,
327
333
  });
328
- console.log(` prompt: ${prompt.length} chars · calling chef-orchestrate LLM (${args.model})`);
334
+ // Loop memory (best-effort, via ctx): what did PRIOR agent sessions try or
335
+ // decide about this story? The orchestrator's whole job is "don't repeat
336
+ // what's already been tried" — the on-disk ledger only sees chef-drift's own
337
+ // moves; recall widens that to the full session history. No-op if ctx absent.
338
+ const recalled = recallContext({
339
+ // story + topic is the signal; generic boilerplate ("build failure") only
340
+ // dilutes ctx's ranked match. Prefer the topic, fall back to the story id.
341
+ query: `${specTopic(spec)} story-${args.storyId}`.trim(),
342
+ limit: 4,
343
+ label: `story-${args.storyId}`,
344
+ });
345
+ if (recalled)
346
+ console.log(` recall: injected prior-context brief (${recalled.length} chars) from ctx`);
347
+ const userContent = recalled ? `${recalled}\n\n---\n\n${prompt}` : prompt;
348
+ console.log(` prompt: ${userContent.length} chars · calling chef-orchestrate LLM (${args.model})`);
329
349
  const client = new AnthropicClient(apiKey);
330
350
  const resp = await client.complete({
331
351
  model: args.model,
332
352
  system: CHEF_ORCHESTRATE_SYSTEM,
333
- messages: [{ role: "user", content: prompt }],
353
+ messages: [{ role: "user", content: userContent }],
334
354
  maxTokens: 4096,
335
355
  });
336
356
  console.log(` chef-orchestrate LLM: ${resp.usage.inputTokens}→${resp.usage.outputTokens} tok · $${resp.costUsd.toFixed(4)}`);