@slowcook-ai/cli 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -79,6 +79,55 @@ jobs:
79
79
 
80
80
  The guard emits `::error file=...::` annotations and writes to `$GITHUB_STEP_SUMMARY` when run in GitHub Actions.
81
81
 
82
+ ### `slowcook manifest` (record / verify)
83
+
84
+ Captures the set of discoverable tests so agents can't silently remove or exclude them. 0.2 supports Vitest; Playwright is coming later.
85
+
86
+ ```bash
87
+ # Record a snapshot of every test currently discoverable
88
+ npx slowcook manifest record
89
+
90
+ # Verify later that the recorded set still fully resolves
91
+ npx slowcook manifest verify
92
+ ```
93
+
94
+ **Options (both subcommands):**
95
+
96
+ | Flag | Default | Description |
97
+ |---|---|---|
98
+ | `--stack-config <path>` | `.brewing/stack.json` | Consumer stack config |
99
+ | `--manifest <path>` | `.brewing/manifests/all.json` (or `.brewing/manifests/story-<id>.json` if `--story`) | Where to write / read the manifest |
100
+ | `--story <id>` | none | Tag manifest with a story id (enables per-story freezing) |
101
+ | `--cwd <path>` | `.` | Working directory for discovery commands |
102
+
103
+ **Config file** — `.brewing/stack.json` declares how to discover tests per suite:
104
+
105
+ ```json
106
+ {
107
+ "language": "typescript",
108
+ "test": {
109
+ "backend": {
110
+ "runner": "vitest",
111
+ "run_command": "npx vitest run",
112
+ "discover_command": "npx vitest list",
113
+ "reporter_format": "vitest-list-lines"
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ **Exit codes:**
120
+
121
+ - `record`: `0` manifest written, `2` script error (bad config, suite discovery failed)
122
+ - `verify`: `0` manifest matches (new tests since record are informational), `1` recorded tests no longer discoverable, `2` script error
123
+
124
+ **Use in GitHub Actions** — after the frozen-paths guard:
125
+
126
+ ```yaml
127
+ - name: Verify test manifest
128
+ run: npx --yes @slowcook-ai/cli@latest manifest verify
129
+ ```
130
+
82
131
  ## Coming in later versions
83
132
 
84
133
  See the [monorepo README](../../README.md) for the roadmap.
package/dist/cli.js CHANGED
@@ -1,19 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import { guard } from "./commands/guard.js";
3
- const VERSION = "0.1.0";
3
+ import { manifest } from "./commands/manifest.js";
4
+ const VERSION = "0.2.0";
4
5
  const USAGE = `
5
6
  slowcook — TDD-first agentic development harness
6
7
 
7
8
  Usage:
8
9
  slowcook guard --base <ref> --head <ref> [--override] [--config <path>]
10
+ slowcook manifest record [--stack-config <path>] [--manifest <path>] [--story <id>]
11
+ slowcook manifest verify [--stack-config <path>] [--manifest <path>] [--story <id>]
9
12
  slowcook version
10
13
  slowcook help
11
14
 
12
15
  Commands available in ${VERSION}:
13
16
  guard Check for frozen-path violations between two git refs.
17
+ manifest Record or verify the set of discoverable tests.
14
18
 
15
19
  Coming in later versions:
16
- init, manifest, refine, testgen, brew, review, dashboard
20
+ init, refine, testgen, brew, review, dashboard
17
21
 
18
22
  Docs: https://github.com/aminazar/slowcook
19
23
  `;
@@ -24,6 +28,9 @@ async function main() {
24
28
  case "guard":
25
29
  await guard(args.slice(1));
26
30
  return;
31
+ case "manifest":
32
+ await manifest(args.slice(1));
33
+ return;
27
34
  case "version":
28
35
  case "--version":
29
36
  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,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,KAAK,GAAG;;;;;;;;wBAQU,OAAO;;;;;;;CAO9B,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;IACjC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,KAAK,GAAG;;;;;;;;;;wBAUU,OAAO;;;;;;;;CAQ9B,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO;QACT,KAAK,UAAU;YACb,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;IACjC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function manifest(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/commands/manifest.ts"],"names":[],"mappings":"AA0IA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5D"}
@@ -0,0 +1,189 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, appendFileSync, } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { buildManifest, diffManifest, } from "@slowcook-ai/core";
4
+ import { discoverTests, validateStackConfig, } from "@slowcook-ai/stack-ts";
5
+ const CLI_VERSION = "0.2.0";
6
+ function defaultManifestPath(storyId) {
7
+ return storyId
8
+ ? `.brewing/manifests/story-${storyId}.json`
9
+ : `.brewing/manifests/all.json`;
10
+ }
11
+ function parseArgs(argv) {
12
+ const sub = argv[0];
13
+ if (sub !== "record" && sub !== "verify") {
14
+ printHelp();
15
+ process.exit(64);
16
+ }
17
+ const args = {
18
+ subcommand: sub,
19
+ stackConfig: ".brewing/stack.json",
20
+ manifestPath: "",
21
+ storyId: null,
22
+ cwd: process.cwd(),
23
+ };
24
+ for (let i = 1; i < argv.length; i++) {
25
+ const arg = argv[i];
26
+ const next = argv[i + 1];
27
+ if (arg === "--stack-config" && next) {
28
+ args.stackConfig = next;
29
+ i++;
30
+ }
31
+ else if (arg === "--manifest" && next) {
32
+ args.manifestPath = next;
33
+ i++;
34
+ }
35
+ else if (arg === "--story" && next) {
36
+ args.storyId = next;
37
+ i++;
38
+ }
39
+ else if (arg === "--cwd" && next) {
40
+ args.cwd = next;
41
+ i++;
42
+ }
43
+ else if (arg === "--help" || arg === "-h") {
44
+ printHelp();
45
+ process.exit(0);
46
+ }
47
+ }
48
+ if (!args.manifestPath) {
49
+ args.manifestPath = defaultManifestPath(args.storyId);
50
+ }
51
+ return args;
52
+ }
53
+ function printHelp() {
54
+ console.log(`
55
+ slowcook manifest — record or verify the set of discoverable tests
56
+
57
+ Usage:
58
+ slowcook manifest record [options]
59
+ slowcook manifest verify [options]
60
+
61
+ Common options:
62
+ --stack-config <path> Path to stack.json (default: .brewing/stack.json)
63
+ --manifest <path> Path to write/read manifest JSON
64
+ (default: .brewing/manifests/all.json, or
65
+ .brewing/manifests/story-<id>.json if --story set)
66
+ --story <id> Tag manifest with this story id
67
+ --cwd <path> Working directory for discovery commands (default: .)
68
+ --help, -h Show this help
69
+
70
+ record:
71
+ Runs every suite's discover_command, writes a manifest capturing the set
72
+ of tests that exist right now. Meant for human-invoked freezing after a
73
+ story's tests are approved.
74
+
75
+ verify:
76
+ Re-runs discovery and compares against the recorded manifest. Exits 1 if
77
+ any recorded test is no longer discoverable (file deleted, renamed, or
78
+ broken). Newly-discovered tests are informational only.
79
+
80
+ Exit codes:
81
+ 0 = verify: manifest matches; record: manifest written
82
+ 1 = verify: missing tests detected
83
+ 2 = script error (missing config, exec failure, parse error)
84
+ `);
85
+ }
86
+ function sh(stackConfigPath, cwd) {
87
+ let raw;
88
+ try {
89
+ raw = JSON.parse(readFileSync(stackConfigPath, "utf8"));
90
+ }
91
+ catch (e) {
92
+ console.error(`Could not read stack config at ${stackConfigPath}: ${e.message}`);
93
+ process.exit(2);
94
+ }
95
+ try {
96
+ return validateStackConfig(raw);
97
+ }
98
+ catch (e) {
99
+ console.error(`Invalid stack config: ${e.message}`);
100
+ process.exit(2);
101
+ }
102
+ // unreachable — the two process.exit calls above terminate
103
+ }
104
+ function appendGhSummary(md) {
105
+ const summary = process.env["GITHUB_STEP_SUMMARY"];
106
+ if (!summary)
107
+ return;
108
+ try {
109
+ appendFileSync(summary, md);
110
+ }
111
+ catch {
112
+ // best effort
113
+ }
114
+ }
115
+ export async function manifest(argv) {
116
+ const args = parseArgs(argv);
117
+ const config = sh(args.stackConfig, args.cwd);
118
+ if (args.subcommand === "record") {
119
+ return recordManifest(args, config);
120
+ }
121
+ return verifyManifest(args, config);
122
+ }
123
+ function recordManifest(args, config) {
124
+ const { tests, suites, errors } = discoverTests(config, { cwd: args.cwd });
125
+ if (errors.length > 0) {
126
+ console.error("Discovery errors (refusing to record an incomplete manifest):");
127
+ for (const err of errors) {
128
+ console.error(` [${err.suite}] ${err.message}`);
129
+ }
130
+ process.exit(2);
131
+ }
132
+ const m = buildManifest({
133
+ slowcookVersion: CLI_VERSION,
134
+ storyId: args.storyId,
135
+ tests,
136
+ suites,
137
+ });
138
+ // Ensure directory exists
139
+ const dir = dirname(args.manifestPath);
140
+ if (!existsSync(dir))
141
+ mkdirSync(dir, { recursive: true });
142
+ writeFileSync(args.manifestPath, JSON.stringify(m, null, 2) + "\n", "utf8");
143
+ console.log(`Recorded ${m.tests.length} test(s) across ${m.suites.length} suite(s) → ${args.manifestPath}`);
144
+ for (const s of m.suites) {
145
+ console.log(` [${s.suite}] ${s.test_count} tests`);
146
+ }
147
+ appendGhSummary(`### Manifest recorded\n\n- ${m.tests.length} tests across ${m.suites.length} suites\n- Written to \`${args.manifestPath}\`\n`);
148
+ }
149
+ function verifyManifest(args, config) {
150
+ let manifest;
151
+ try {
152
+ manifest = JSON.parse(readFileSync(args.manifestPath, "utf8"));
153
+ }
154
+ catch (e) {
155
+ console.error(`Could not read manifest at ${args.manifestPath}: ${e.message}`);
156
+ process.exit(2);
157
+ }
158
+ const { tests, errors } = discoverTests(config, { cwd: args.cwd });
159
+ if (errors.length > 0) {
160
+ console.error("Discovery errors during verify:");
161
+ for (const err of errors) {
162
+ console.error(` [${err.suite}] ${err.message}`);
163
+ }
164
+ // Discovery errors mean we can't trust the current snapshot — exit 2.
165
+ process.exit(2);
166
+ }
167
+ const diff = diffManifest(manifest, tests);
168
+ if (diff.missing.length === 0) {
169
+ const msg = `Manifest verified: all ${manifest.tests.length} recorded tests still discoverable.${diff.added.length ? ` (${diff.added.length} new tests since record — informational.)` : ""}`;
170
+ console.log(msg);
171
+ appendGhSummary(`### Manifest verify\n\n✅ ${msg}\n`);
172
+ if (diff.added.length) {
173
+ console.log(`\nNew tests since record (informational):`);
174
+ for (const t of diff.added)
175
+ console.log(` + ${t.id}`);
176
+ }
177
+ process.exit(0);
178
+ }
179
+ console.error(`Manifest verify FAILED: ${diff.missing.length} recorded test(s) no longer discoverable.`);
180
+ for (const t of diff.missing) {
181
+ console.error(` - ${t.id}`);
182
+ console.log(`::error file=${t.file}::Manifest verify — test missing from current discovery: ${t.id}`);
183
+ }
184
+ appendGhSummary(`### Manifest verify\n\n❌ ${diff.missing.length} recorded test(s) missing from current discovery.\n\n${diff.missing
185
+ .map((t) => `- \`${t.id}\``)
186
+ .join("\n")}\n`);
187
+ process.exit(1);
188
+ }
189
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/commands/manifest.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.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "CLI for the slowcook brewing harness",
5
5
  "license": "MIT",
6
6
  "author": "aminazar",
@@ -33,7 +33,8 @@
33
33
  "README.md"
34
34
  ],
35
35
  "dependencies": {
36
- "@slowcook-ai/core": "^0.1.0"
36
+ "@slowcook-ai/core": "^0.2.0",
37
+ "@slowcook-ai/stack-ts": "^0.2.0"
37
38
  },
38
39
  "publishConfig": {
39
40
  "access": "public"