@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 +49 -0
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/manifest.d.ts +2 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/manifest.js +189 -0
- package/dist/commands/manifest.js.map +1 -0
- package/package.json +3 -2
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
|
-
|
|
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,
|
|
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;
|
|
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 @@
|
|
|
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":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,aAAa,EACb,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,GAAG,OAAO,CAAC;AAU5B,SAAS,mBAAmB,CAAC,OAAsB;IACjD,OAAO,OAAO;QACZ,CAAC,CAAC,4BAA4B,OAAO,OAAO;QAC5C,CAAC,CAAC,6BAA6B,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzC,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAiB;QACzB,UAAU,EAAE,GAAG;QACf,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,KAAK,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;YAChB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC,eAAuB,EAAE,GAAW;IAC9C,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,kCAAkC,eAAe,KAAM,CAAW,CAAC,OAAO,EAAE,CAC7E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yBAA0B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,2DAA2D;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,IAAkB,EAAE,MAAmB;IAC7D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,aAAa,CAAC;QACtB,eAAe,EAAE,WAAW;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK;QACL,MAAM;KACP,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,eAAe,IAAI,CAAC,YAAY,EAAE,CAC/F,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,eAAe,CACb,8BAA8B,CAAC,CAAC,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC,MAAM,CAAC,MAAM,2BAA2B,IAAI,CAAC,YAAY,MAAM,CAC/H,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAkB,EAAE,MAAmB;IAC7D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,8BAA8B,IAAI,CAAC,YAAY,KAAM,CAAW,CAAC,OAAO,EAAE,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,sEAAsE;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,0BAA0B,QAAQ,CAAC,KAAK,CAAC,MAAM,sCAAsC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,2CAA2C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9L,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,eAAe,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAK,CACX,2BAA2B,IAAI,CAAC,OAAO,CAAC,MAAM,2CAA2C,CAC1F,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,4DAA4D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,eAAe,CACb,4BAA4B,IAAI,CAAC,OAAO,CAAC,MAAM,wDAAwD,IAAI,CAAC,OAAO;SAChH,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;SACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slowcook-ai/cli",
|
|
3
|
-
"version": "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.
|
|
36
|
+
"@slowcook-ai/core": "^0.2.0",
|
|
37
|
+
"@slowcook-ai/stack-ts": "^0.2.0"
|
|
37
38
|
},
|
|
38
39
|
"publishConfig": {
|
|
39
40
|
"access": "public"
|