@slowcook-ai/cli 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Amin Azar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,88 @@
1
+ # @slowcook-ai/cli
2
+
3
+ CLI for the slowcook brewing harness. Installs the `slowcook` binary.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i -D @slowcook-ai/cli
9
+ ```
10
+
11
+ ## Commands (v0.1)
12
+
13
+ ### `slowcook guard`
14
+
15
+ Checks for frozen-path violations between two git refs. Intended for CI.
16
+
17
+ ```bash
18
+ npx slowcook guard --base origin/main --head HEAD
19
+ ```
20
+
21
+ **Options:**
22
+
23
+ | Flag | Default | Description |
24
+ |---|---|---|
25
+ | `--base <ref>` | `origin/main` | Base git ref to compare from |
26
+ | `--head <ref>` | `HEAD` | Head git ref to compare to |
27
+ | `--override` | false | Report violations but exit 0 (audit-only) |
28
+ | `--config <path>` | `.brewing/frozen-paths.json` | Config file location |
29
+
30
+ **Exit codes:**
31
+
32
+ - `0` — no violations (or `--override` was set and violations existed)
33
+ - `1` — violations detected
34
+ - `2` — script error (missing config, git failure)
35
+
36
+ **Config file** — a JSON file the consumer project ships, typically at `.brewing/frozen-paths.json`:
37
+
38
+ ```json
39
+ {
40
+ "directories": ["tests/", "tests-fixtures/"],
41
+ "files": ["vitest.config.ts", "playwright.config.ts"],
42
+ "partial": {
43
+ "package.json": {
44
+ "frozen_key_paths": ["scripts.test", "scripts.e2e"]
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ - `directories` — prefix match; anything under these paths is frozen.
51
+ - `files` — exact path match.
52
+ - `partial` — for files where only certain JSON keys are frozen (e.g., only `scripts.test*` in `package.json`).
53
+
54
+ ### Use in GitHub Actions
55
+
56
+ ```yaml
57
+ # .github/workflows/frozen-paths-guard.yml
58
+ name: frozen-paths-guard
59
+ on:
60
+ pull_request:
61
+ types: [opened, synchronize, reopened, labeled, unlabeled]
62
+
63
+ jobs:
64
+ check:
65
+ runs-on: ubuntu-latest
66
+ steps:
67
+ - uses: actions/checkout@v4
68
+ with: { fetch-depth: 0 }
69
+ - uses: actions/setup-node@v4
70
+ with: { node-version: 20 }
71
+ - name: Run guard
72
+ env:
73
+ HAS_OVERRIDE: ${{ contains(github.event.pull_request.labels.*.name, 'override-freeze') }}
74
+ run: |
75
+ ARGS="--base origin/${{ github.base_ref }} --head HEAD"
76
+ if [ "$HAS_OVERRIDE" = "true" ]; then ARGS="$ARGS --override"; fi
77
+ npx --yes @slowcook-ai/cli@latest guard $ARGS
78
+ ```
79
+
80
+ The guard emits `::error file=...::` annotations and writes to `$GITHUB_STEP_SUMMARY` when run in GitHub Actions.
81
+
82
+ ## Coming in later versions
83
+
84
+ See the [monorepo README](../../README.md) for the roadmap.
85
+
86
+ ## License
87
+
88
+ MIT
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ import { guard } from "./commands/guard.js";
3
+ const VERSION = "0.1.0";
4
+ const USAGE = `
5
+ slowcook — TDD-first agentic development harness
6
+
7
+ Usage:
8
+ slowcook guard --base <ref> --head <ref> [--override] [--config <path>]
9
+ slowcook version
10
+ slowcook help
11
+
12
+ Commands available in ${VERSION}:
13
+ guard Check for frozen-path violations between two git refs.
14
+
15
+ Coming in later versions:
16
+ init, manifest, refine, testgen, brew, review, dashboard
17
+
18
+ Docs: https://github.com/aminazar/slowcook
19
+ `;
20
+ async function main() {
21
+ const args = process.argv.slice(2);
22
+ const command = args[0];
23
+ switch (command) {
24
+ case "guard":
25
+ await guard(args.slice(1));
26
+ return;
27
+ case "version":
28
+ case "--version":
29
+ case "-v":
30
+ console.log(`slowcook ${VERSION}`);
31
+ return;
32
+ case undefined:
33
+ case "help":
34
+ case "--help":
35
+ case "-h":
36
+ console.log(USAGE);
37
+ return;
38
+ default:
39
+ console.error(`Unknown command: ${command}\n${USAGE}`);
40
+ process.exit(64); // EX_USAGE
41
+ }
42
+ }
43
+ main().catch((err) => {
44
+ console.error(err instanceof Error ? err.stack ?? err.message : String(err));
45
+ process.exit(1);
46
+ });
47
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export declare function guard(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/commands/guard.ts"],"names":[],"mappings":"AAgFA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFzD"}
@@ -0,0 +1,138 @@
1
+ import { readFileSync, appendFileSync } from "node:fs";
2
+ import { execSync } from "node:child_process";
3
+ import { checkFrozenPaths, } from "@slowcook-ai/core";
4
+ function parseArgs(argv) {
5
+ const args = {
6
+ base: "origin/main",
7
+ head: "HEAD",
8
+ override: false,
9
+ config: ".brewing/frozen-paths.json",
10
+ };
11
+ for (let i = 0; i < argv.length; i++) {
12
+ const arg = argv[i];
13
+ const next = argv[i + 1];
14
+ if (arg === "--base" && next) {
15
+ args.base = next;
16
+ i++;
17
+ }
18
+ else if (arg === "--head" && next) {
19
+ args.head = next;
20
+ i++;
21
+ }
22
+ else if (arg === "--override") {
23
+ args.override = true;
24
+ }
25
+ else if (arg === "--config" && next) {
26
+ args.config = next;
27
+ i++;
28
+ }
29
+ else if (arg === "--help" || arg === "-h") {
30
+ printHelp();
31
+ process.exit(0);
32
+ }
33
+ }
34
+ return args;
35
+ }
36
+ function printHelp() {
37
+ console.log(`
38
+ slowcook guard — enforce frozen paths between two git refs
39
+
40
+ Usage:
41
+ slowcook guard [options]
42
+
43
+ Options:
44
+ --base <ref> Base git ref to compare from (default: origin/main)
45
+ --head <ref> Head git ref to compare to (default: HEAD)
46
+ --override Report violations but exit 0 (use via CI label for audit)
47
+ --config <path> Config file path (default: .brewing/frozen-paths.json)
48
+ --help, -h Show this help
49
+
50
+ Exit codes:
51
+ 0 = no violations (or --override and there were violations)
52
+ 1 = violations
53
+ 2 = script error (bad config, git failure)
54
+ `);
55
+ }
56
+ function sh(cmd) {
57
+ return execSync(cmd, { encoding: "utf8" }).trim();
58
+ }
59
+ function appendGhSummary(md) {
60
+ const summary = process.env.GITHUB_STEP_SUMMARY;
61
+ if (!summary)
62
+ return;
63
+ try {
64
+ appendFileSync(summary, md);
65
+ }
66
+ catch {
67
+ // best effort — CI output is the source of truth
68
+ }
69
+ }
70
+ export async function guard(argv) {
71
+ const args = parseArgs(argv);
72
+ // Load config
73
+ let config;
74
+ try {
75
+ config = JSON.parse(readFileSync(args.config, "utf8"));
76
+ }
77
+ catch (e) {
78
+ console.error(`Could not read config at ${args.config}: ${e.message}`);
79
+ process.exit(2);
80
+ }
81
+ // Collect changed files
82
+ let paths;
83
+ try {
84
+ const out = sh(`git diff --name-only ${args.base}...${args.head}`);
85
+ paths = out ? out.split("\n").filter(Boolean) : [];
86
+ }
87
+ catch (e) {
88
+ console.error(`git diff failed between ${args.base} and ${args.head}: ${e.message}`);
89
+ process.exit(2);
90
+ }
91
+ if (paths.length === 0) {
92
+ console.log("No changed files.");
93
+ process.exit(0);
94
+ }
95
+ // For partial-freeze files, fetch base/head content
96
+ const partial = config.partial ?? {};
97
+ const changed = paths.map((path) => {
98
+ const out = { path };
99
+ if (partial[path]) {
100
+ try {
101
+ out.baseContent = sh(`git show ${args.base}:${path}`);
102
+ }
103
+ catch {
104
+ // file didn't exist at base — leave undefined
105
+ }
106
+ try {
107
+ out.headContent = readFileSync(path, "utf8");
108
+ }
109
+ catch {
110
+ // file doesn't exist in working tree (deleted)
111
+ }
112
+ }
113
+ return out;
114
+ });
115
+ const violations = checkFrozenPaths(changed, config);
116
+ if (violations.length === 0) {
117
+ console.log(`No frozen-path violations in ${paths.length} changed file(s).`);
118
+ appendGhSummary(`### Frozen-path guard\n\n✅ No violations in ${paths.length} changed file(s).\n`);
119
+ process.exit(0);
120
+ }
121
+ const lines = violations.map((v) => `- \`${v.file}\` — ${v.rule}`);
122
+ console.error(`Frozen-path violations (${violations.length}):`);
123
+ console.error(lines.join("\n"));
124
+ const mdHeader = `### Frozen-path guard\n\n`;
125
+ if (args.override) {
126
+ appendGhSummary(`${mdHeader}⚠️ ${violations.length} violation(s), but \`--override\` is set — advisory only.\n\n${lines.join("\n")}\n`);
127
+ console.log("::warning::override flag present — not failing.");
128
+ process.exit(0);
129
+ }
130
+ else {
131
+ appendGhSummary(`${mdHeader}❌ ${violations.length} violation(s).\n\n${lines.join("\n")}\n`);
132
+ for (const v of violations) {
133
+ console.log(`::error file=${v.file}::Frozen-path violation — ${v.rule}`);
134
+ }
135
+ process.exit(1);
136
+ }
137
+ }
138
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/commands/guard.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@slowcook-ai/cli",
3
+ "version": "0.1.0",
4
+ "description": "CLI for the slowcook brewing harness",
5
+ "license": "MIT",
6
+ "author": "aminazar",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/aminazar/slowcook.git",
10
+ "directory": "packages/cli"
11
+ },
12
+ "homepage": "https://github.com/aminazar/slowcook/tree/main/packages/cli#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/aminazar/slowcook/issues"
15
+ },
16
+ "keywords": [
17
+ "tdd",
18
+ "ai",
19
+ "agents",
20
+ "testing",
21
+ "cli",
22
+ "brewing",
23
+ "slowcook"
24
+ ],
25
+ "type": "module",
26
+ "bin": {
27
+ "slowcook": "./dist/cli.js"
28
+ },
29
+ "main": "./dist/cli.js",
30
+ "types": "./dist/cli.d.ts",
31
+ "files": [
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "dependencies": {
36
+ "@slowcook-ai/core": "^0.1.0"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "engines": {
42
+ "node": ">=20"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc -b",
46
+ "test": "vitest run --passWithNoTests",
47
+ "typecheck": "tsc --noEmit"
48
+ }
49
+ }