@slowcook-ai/cli 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js
CHANGED
|
@@ -14,6 +14,7 @@ import { catchup } from "./commands/catchup/index.js";
|
|
|
14
14
|
import { brew } from "./commands/brew/index.js";
|
|
15
15
|
import { map } from "./commands/map/index.js";
|
|
16
16
|
import { dispatch } from "./commands/dispatch/index.js";
|
|
17
|
+
import { fixtures } from "./commands/fixtures/index.js";
|
|
17
18
|
// Read VERSION from package.json at runtime so the CLI's self-reported
|
|
18
19
|
// version, the spec's `refined_by` field, and the init template's workflow
|
|
19
20
|
// pin all stay in lockstep with the package version. Prevents the silent
|
|
@@ -47,6 +48,7 @@ Usage:
|
|
|
47
48
|
slowcook brew --story <id> [--budget-usd <n>] [--max-iterations <n>] [--model <id>]
|
|
48
49
|
slowcook map (generate|check) [--cwd <path>] [--out <path>] [--md <path>]
|
|
49
50
|
slowcook dispatch <step> [inputs...]
|
|
51
|
+
slowcook fixtures check [--max-age-days <n>] [--story <id>]
|
|
50
52
|
slowcook version
|
|
51
53
|
slowcook help
|
|
52
54
|
|
|
@@ -109,6 +111,9 @@ async function main() {
|
|
|
109
111
|
case "dispatch":
|
|
110
112
|
await dispatch(args.slice(1));
|
|
111
113
|
return;
|
|
114
|
+
case "fixtures":
|
|
115
|
+
await fixtures(args.slice(1));
|
|
116
|
+
return;
|
|
112
117
|
case "version":
|
|
113
118
|
case "--version":
|
|
114
119
|
case "-v":
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAW,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/fixtures/index.ts"],"names":[],"mappings":"AAmLA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5D"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, existsSync, statSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { findStaleFixtures, detectUnscrubbed } from "@slowcook-ai/recorder";
|
|
4
|
+
function parseArgs(argv) {
|
|
5
|
+
const args = {
|
|
6
|
+
subcommand: argv[0] ?? null,
|
|
7
|
+
cwd: process.cwd(),
|
|
8
|
+
maxAgeDays: 14,
|
|
9
|
+
storyId: null,
|
|
10
|
+
};
|
|
11
|
+
for (let i = 1; i < argv.length; i++) {
|
|
12
|
+
const arg = argv[i];
|
|
13
|
+
const next = argv[i + 1];
|
|
14
|
+
if (arg === "--cwd" && next) {
|
|
15
|
+
args.cwd = next;
|
|
16
|
+
i++;
|
|
17
|
+
}
|
|
18
|
+
else if (arg === "--max-age-days" && next) {
|
|
19
|
+
args.maxAgeDays = parseInt(next, 10);
|
|
20
|
+
i++;
|
|
21
|
+
}
|
|
22
|
+
else if (arg === "--story" && next) {
|
|
23
|
+
args.storyId = next;
|
|
24
|
+
i++;
|
|
25
|
+
}
|
|
26
|
+
else if (arg === "--help" || arg === "-h") {
|
|
27
|
+
printHelp();
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return args;
|
|
32
|
+
}
|
|
33
|
+
function printHelp() {
|
|
34
|
+
console.log(`
|
|
35
|
+
slowcook fixtures — manage tier-2 acceptance fixtures
|
|
36
|
+
|
|
37
|
+
Usage:
|
|
38
|
+
slowcook fixtures check [options]
|
|
39
|
+
|
|
40
|
+
Options:
|
|
41
|
+
--cwd <path> Repo root (default: .)
|
|
42
|
+
--max-age-days <n> Fixtures older than this are flagged (default: 14)
|
|
43
|
+
--story <id> Scope to a single story (default: all stories)
|
|
44
|
+
--help, -h Show this help
|
|
45
|
+
|
|
46
|
+
What it does:
|
|
47
|
+
1. Scans every *.json file under tests/fixtures/story-*/**/
|
|
48
|
+
2. Flags fixtures whose recorded_at timestamp is older than the
|
|
49
|
+
threshold. Forces periodic re-record so drift between captured
|
|
50
|
+
data and the live service surfaces quickly.
|
|
51
|
+
3. Scans each fixture's JSON for patterns that should have been
|
|
52
|
+
scrubbed (UUIDs, emails, JWTs, Supabase keys, Bearer tokens).
|
|
53
|
+
Any hit blocks the PR — committed fixtures must never contain
|
|
54
|
+
unscrubbed secrets.
|
|
55
|
+
4. Honours a per-story exemption: if the story's spec has a
|
|
56
|
+
@fixtures-frozen <reason> marker, the story's staleness check
|
|
57
|
+
is skipped (the scrub guard still runs regardless).
|
|
58
|
+
|
|
59
|
+
Exit codes:
|
|
60
|
+
0 all fixtures clean
|
|
61
|
+
1 at least one stale fixture or scrub violation found
|
|
62
|
+
2 script error (bad args, missing directories, etc.)
|
|
63
|
+
`);
|
|
64
|
+
}
|
|
65
|
+
async function fixturesCheck(args) {
|
|
66
|
+
const fixturesRoot = join(args.cwd, "tests/fixtures");
|
|
67
|
+
if (!existsSync(fixturesRoot)) {
|
|
68
|
+
console.log("Noop: tests/fixtures/ does not exist yet. First record run will create it.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// 1. Staleness
|
|
72
|
+
const exemptStories = findFixtureFrozenStories(join(args.cwd, "specs"));
|
|
73
|
+
const stale = findStaleFixtures({
|
|
74
|
+
fixturesRoot,
|
|
75
|
+
...(args.storyId ? { storyId: args.storyId } : {}),
|
|
76
|
+
maxAgeDays: args.maxAgeDays,
|
|
77
|
+
}).filter((s) => {
|
|
78
|
+
const match = s.path.match(/story-([^/]+)/);
|
|
79
|
+
return !(match && exemptStories.has(match[1] ?? ""));
|
|
80
|
+
});
|
|
81
|
+
// 2. Scrub violations
|
|
82
|
+
const scrubHits = [];
|
|
83
|
+
walkJsonFiles(fixturesRoot, (filePath) => {
|
|
84
|
+
try {
|
|
85
|
+
const parsed = JSON.parse(readFileSync(filePath, "utf8"));
|
|
86
|
+
const hits = detectUnscrubbed(parsed);
|
|
87
|
+
if (hits.length > 0)
|
|
88
|
+
scrubHits.push({ path: filePath, hits });
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
/* malformed JSON — leave for another linter */
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
// Report
|
|
95
|
+
let failed = false;
|
|
96
|
+
if (stale.length > 0) {
|
|
97
|
+
failed = true;
|
|
98
|
+
console.error(`\n✗ ${stale.length} stale fixture(s) (older than ${args.maxAgeDays} days):`);
|
|
99
|
+
for (const s of stale) {
|
|
100
|
+
console.error(` ${s.path} — ${s.ageDays}d old (recorded_at: ${s.recordedAt ?? "unknown"})`);
|
|
101
|
+
}
|
|
102
|
+
console.error(`\nRe-record by running tests with SLOWCOOK_RECORD=1, or add a @fixtures-frozen marker to the story's spec.`);
|
|
103
|
+
}
|
|
104
|
+
if (scrubHits.length > 0) {
|
|
105
|
+
failed = true;
|
|
106
|
+
console.error(`\n✗ ${scrubHits.length} fixture(s) contain unscrubbed patterns:`);
|
|
107
|
+
for (const f of scrubHits) {
|
|
108
|
+
const uniqueHits = new Set(f.hits.map((h) => h.pattern));
|
|
109
|
+
console.error(` ${f.path} — patterns: ${Array.from(uniqueHits).join(", ")}`);
|
|
110
|
+
}
|
|
111
|
+
console.error(`\nRe-record with SLOWCOOK_RECORD=1 to regenerate with scrubbing applied, or extend scrubConfig.`);
|
|
112
|
+
}
|
|
113
|
+
if (failed) {
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
console.log(`✓ All fixtures clean (${countJsonFiles(fixturesRoot)} file(s) checked).`);
|
|
117
|
+
}
|
|
118
|
+
function walkJsonFiles(dir, visit) {
|
|
119
|
+
if (!existsSync(dir))
|
|
120
|
+
return;
|
|
121
|
+
for (const entry of readdirSync(dir)) {
|
|
122
|
+
const full = join(dir, entry);
|
|
123
|
+
const stat = tryStat(full);
|
|
124
|
+
if (!stat)
|
|
125
|
+
continue;
|
|
126
|
+
if (stat.isDirectory())
|
|
127
|
+
walkJsonFiles(full, visit);
|
|
128
|
+
else if (stat.isFile() && full.endsWith(".json"))
|
|
129
|
+
visit(full);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function countJsonFiles(dir) {
|
|
133
|
+
let count = 0;
|
|
134
|
+
walkJsonFiles(dir, () => {
|
|
135
|
+
count++;
|
|
136
|
+
});
|
|
137
|
+
return count;
|
|
138
|
+
}
|
|
139
|
+
function tryStat(p) {
|
|
140
|
+
try {
|
|
141
|
+
return statSync(p);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Read specs/story-*.yaml; return story ids whose spec contains a
|
|
149
|
+
* `@fixtures-frozen` marker. Shallow scan — we just grep the raw
|
|
150
|
+
* YAML for the marker. Keeps this command free of a YAML parser.
|
|
151
|
+
*/
|
|
152
|
+
function findFixtureFrozenStories(specsDir) {
|
|
153
|
+
const frozen = new Set();
|
|
154
|
+
if (!existsSync(specsDir))
|
|
155
|
+
return frozen;
|
|
156
|
+
for (const entry of readdirSync(specsDir)) {
|
|
157
|
+
const match = entry.match(/^story-(.+)\.yaml$/);
|
|
158
|
+
if (!match)
|
|
159
|
+
continue;
|
|
160
|
+
try {
|
|
161
|
+
const src = readFileSync(join(specsDir, entry), "utf8");
|
|
162
|
+
if (/@fixtures-frozen\b/.test(src))
|
|
163
|
+
frozen.add(match[1] ?? "");
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
/* unreadable; ignore */
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return frozen;
|
|
170
|
+
}
|
|
171
|
+
export async function fixtures(argv) {
|
|
172
|
+
const args = parseArgs(argv);
|
|
173
|
+
switch (args.subcommand) {
|
|
174
|
+
case "check":
|
|
175
|
+
await fixturesCheck(args);
|
|
176
|
+
return;
|
|
177
|
+
case null:
|
|
178
|
+
printHelp();
|
|
179
|
+
return;
|
|
180
|
+
default:
|
|
181
|
+
console.error(`Unknown fixtures subcommand: ${args.subcommand}`);
|
|
182
|
+
printHelp();
|
|
183
|
+
process.exit(64);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/fixtures/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slowcook-ai/cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "CLI for the slowcook brewing harness",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "aminazar",
|
|
@@ -39,9 +39,10 @@
|
|
|
39
39
|
"yaml": "^2.6.0",
|
|
40
40
|
"zod": "^3.23.8",
|
|
41
41
|
"@slowcook-ai/core": "^0.8.0",
|
|
42
|
-
"@slowcook-ai/stack-ts": "^0.9.
|
|
42
|
+
"@slowcook-ai/stack-ts": "^0.9.2",
|
|
43
43
|
"@slowcook-ai/forge-github": "^0.9.0",
|
|
44
|
-
"@slowcook-ai/llm-anthropic": "^0.8.0"
|
|
44
|
+
"@slowcook-ai/llm-anthropic": "^0.8.0",
|
|
45
|
+
"@slowcook-ai/recorder": "^0.9.1"
|
|
45
46
|
},
|
|
46
47
|
"publishConfig": {
|
|
47
48
|
"access": "public"
|