@slowcook-ai/cli 0.12.12 → 0.13.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/dist/cli.js +41 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/brew/agent.d.ts.map +1 -1
- package/dist/commands/brew/agent.js +19 -6
- package/dist/commands/brew/agent.js.map +1 -1
- package/dist/commands/chef/classify.d.ts +65 -0
- package/dist/commands/chef/classify.d.ts.map +1 -0
- package/dist/commands/chef/classify.js +102 -0
- package/dist/commands/chef/classify.js.map +1 -0
- package/dist/commands/chef/index.d.ts +22 -0
- package/dist/commands/chef/index.d.ts.map +1 -0
- package/dist/commands/chef/index.js +287 -0
- package/dist/commands/chef/index.js.map +1 -0
- package/dist/commands/dispatch/index.d.ts.map +1 -1
- package/dist/commands/dispatch/index.js +10 -3
- package/dist/commands/dispatch/index.js.map +1 -1
- package/dist/commands/investigate/agent.d.ts +68 -0
- package/dist/commands/investigate/agent.d.ts.map +1 -0
- package/dist/commands/investigate/agent.js +503 -0
- package/dist/commands/investigate/agent.js.map +1 -0
- package/dist/commands/investigate/index.d.ts +43 -0
- package/dist/commands/investigate/index.d.ts.map +1 -0
- package/dist/commands/investigate/index.js +413 -0
- package/dist/commands/investigate/index.js.map +1 -0
- package/dist/commands/investigate/prompts.d.ts +90 -0
- package/dist/commands/investigate/prompts.d.ts.map +1 -0
- package/dist/commands/investigate/prompts.js +237 -0
- package/dist/commands/investigate/prompts.js.map +1 -0
- package/dist/commands/investigate/schema.d.ts +91 -0
- package/dist/commands/investigate/schema.d.ts.map +1 -0
- package/dist/commands/investigate/schema.js +87 -0
- package/dist/commands/investigate/schema.js.map +1 -0
- package/dist/commands/on-brew-merged/index.d.ts.map +1 -1
- package/dist/commands/on-brew-merged/index.js +27 -6
- package/dist/commands/on-brew-merged/index.js.map +1 -1
- package/dist/commands/recipe-regression/agent.d.ts +94 -0
- package/dist/commands/recipe-regression/agent.d.ts.map +1 -0
- package/dist/commands/recipe-regression/agent.js +442 -0
- package/dist/commands/recipe-regression/agent.js.map +1 -0
- package/dist/commands/recipe-regression/index.d.ts +61 -0
- package/dist/commands/recipe-regression/index.d.ts.map +1 -0
- package/dist/commands/recipe-regression/index.js +187 -0
- package/dist/commands/recipe-regression/index.js.map +1 -0
- package/dist/commands/sift/agent.d.ts +52 -0
- package/dist/commands/sift/agent.d.ts.map +1 -0
- package/dist/commands/sift/agent.js +392 -0
- package/dist/commands/sift/agent.js.map +1 -0
- package/dist/commands/sift/index.d.ts +23 -0
- package/dist/commands/sift/index.d.ts.map +1 -0
- package/dist/commands/sift/index.js +314 -0
- package/dist/commands/sift/index.js.map +1 -0
- package/dist/commands/sift/prompts.d.ts +114 -0
- package/dist/commands/sift/prompts.d.ts.map +1 -0
- package/dist/commands/sift/prompts.js +193 -0
- package/dist/commands/sift/prompts.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts for the `slowcook sift` agent.
|
|
3
|
+
*
|
|
4
|
+
* Sift is the bug-flow analogue of brew. Where brew is exploratory
|
|
5
|
+
* and ratchets across many iterations to flip many tests green, sift
|
|
6
|
+
* is **narrow**: one bug, one regression test, minimum-diff fix.
|
|
7
|
+
*
|
|
8
|
+
* The system prompt has a different orientation from brew's:
|
|
9
|
+
* - "the regression test is the contract" (not "the spec")
|
|
10
|
+
* - "the bug profile names the failure locus — go there first"
|
|
11
|
+
* - "touch the named file and nothing else; halt voluntarily if
|
|
12
|
+
* the fix needs more"
|
|
13
|
+
* - "this is restoration, not feature work — match existing patterns
|
|
14
|
+
* instead of inventing"
|
|
15
|
+
*/
|
|
16
|
+
export const SIFT_SYSTEM = `You are the sift agent for slowcook — a TDD-first bug-fix flow.
|
|
17
|
+
|
|
18
|
+
## Your role
|
|
19
|
+
|
|
20
|
+
You receive a bug profile (from investigate) and a regression test (from recipe --regression). The regression test is currently RED against the codebase. Your job: make a minimum-diff code change that flips it to GREEN, without disturbing anything else.
|
|
21
|
+
|
|
22
|
+
You are NOT brew. Brew implements features from a fresh spec — you implement fixes for known regressions. Different posture:
|
|
23
|
+
|
|
24
|
+
- **The regression test IS the contract.** You don't read the spec; you read the test. The test names exactly what behavior must hold; your fix makes that behavior hold.
|
|
25
|
+
- **The bug profile names the failure locus.** The investigate agent already did the diagnostic work — \`failure_locus.file\`, \`.line\`, \`.function\`, \`.diagnosis\`. Trust that. Open the file, find the named function, see why the test is failing.
|
|
26
|
+
- **Stay inside fix_scope.** The bug profile lists \`fix_scope\` paths — those are your allowed_paths. If your edit needs to touch something outside, halt voluntarily and let the operator widen scope (the locus is probably wrong).
|
|
27
|
+
- **Restoration, not invention.** Match the patterns already in the file. If you're tempted to introduce a new pattern, halt — that's a story-shaped change, not a bug fix.
|
|
28
|
+
- **Minimum diff.** Bug fixes that look like refactors are bug fixes that have lost the plot. If your diff is more than ~30 lines across more than 2 files, you've drifted. Halt.
|
|
29
|
+
|
|
30
|
+
## Tools
|
|
31
|
+
|
|
32
|
+
- **read_file(path)** — read a file in full.
|
|
33
|
+
- **outline_file(path)** — compact ~200-token outline (imports, exports, signatures with line numbers). Use first.
|
|
34
|
+
- **list_directory(path)** — see what's in a dir.
|
|
35
|
+
- **find_references(symbol)** — find all use sites of a symbol; useful before renaming or extending an existing function.
|
|
36
|
+
- **find_definition(symbol)** — find where a symbol is declared.
|
|
37
|
+
- **grep(pattern, glob?)** — repo-wide ripgrep.
|
|
38
|
+
- **write_file(path, contents)** — replace a file with new contents. Read first, then write the COMPLETE updated contents.
|
|
39
|
+
|
|
40
|
+
You do NOT have \`run_tests\` — slowcook runs the regression test between your turns and tells you the result in the next prompt. Your only output per turn is read calls + at most one write call.
|
|
41
|
+
|
|
42
|
+
## Halting voluntarily
|
|
43
|
+
|
|
44
|
+
If after one turn of investigation the fix doesn't look minimum-diff
|
|
45
|
+
within the bug profile's \`fix_scope\`, end your turn with:
|
|
46
|
+
|
|
47
|
+
\`\`\`
|
|
48
|
+
<halt>
|
|
49
|
+
<reason>One-line reason — e.g., "fix requires touching files outside fix_scope" or "regression test asserts behavior the named locus doesn't actually control".</reason>
|
|
50
|
+
</halt>
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
The operator picks up your halt, edits the bug profile or widens the scope, and re-runs sift. **Don't guess.** A wrong fix that flips the regression test green by accident is worse than a clean halt — sift's mistake compounds into the next bug.
|
|
54
|
+
|
|
55
|
+
## Iteration limits
|
|
56
|
+
|
|
57
|
+
Default budget: 3 iterations, ~$0.50 spend cap. The harness halts you automatically beyond that. If you can't fix it in 3 turns, the bug profile is wrong or the scope is too narrow — halt voluntarily on iteration 2 with a diagnostic.
|
|
58
|
+
`;
|
|
59
|
+
/**
|
|
60
|
+
* Anthropic-shape tool definitions sift presents to the LLM. Subset
|
|
61
|
+
* of brew's: read tools + write_file. Excludes brew's
|
|
62
|
+
* \`justify_diff_overflow\` (sift halts instead of overflowing) and
|
|
63
|
+
* \`find_handler\` (sift's failure locus is already named).
|
|
64
|
+
*/
|
|
65
|
+
export const SIFT_TOOLS = [
|
|
66
|
+
{
|
|
67
|
+
name: "read_file",
|
|
68
|
+
description: "Read a file's full contents. Always read before write_file on the same path.",
|
|
69
|
+
input_schema: {
|
|
70
|
+
type: "object",
|
|
71
|
+
properties: {
|
|
72
|
+
path: { type: "string", description: "Repo-relative path." },
|
|
73
|
+
},
|
|
74
|
+
required: ["path"],
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "outline_file",
|
|
79
|
+
description: "Compact outline (imports, top-level exports, signatures with line numbers). Use first to scope.",
|
|
80
|
+
input_schema: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
path: { type: "string", description: "Repo-relative path." },
|
|
84
|
+
},
|
|
85
|
+
required: ["path"],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "list_directory",
|
|
90
|
+
description: "List entries in a directory.",
|
|
91
|
+
input_schema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
path: { type: "string", description: "Repo-relative path." },
|
|
95
|
+
},
|
|
96
|
+
required: ["path"],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "find_references",
|
|
101
|
+
description: "All use sites of a symbol across the repo (file:line entries).",
|
|
102
|
+
input_schema: {
|
|
103
|
+
type: "object",
|
|
104
|
+
properties: {
|
|
105
|
+
symbol: { type: "string", description: "Identifier name." },
|
|
106
|
+
},
|
|
107
|
+
required: ["symbol"],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "find_definition",
|
|
112
|
+
description: "Where a symbol is declared.",
|
|
113
|
+
input_schema: {
|
|
114
|
+
type: "object",
|
|
115
|
+
properties: {
|
|
116
|
+
symbol: { type: "string", description: "Identifier name." },
|
|
117
|
+
},
|
|
118
|
+
required: ["symbol"],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: "grep",
|
|
123
|
+
description: "Repo-wide ripgrep. Use when find_references is too narrow (e.g. searching column names in SQL files).",
|
|
124
|
+
input_schema: {
|
|
125
|
+
type: "object",
|
|
126
|
+
properties: {
|
|
127
|
+
pattern: { type: "string", description: "Pattern to search." },
|
|
128
|
+
glob: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "Optional glob (e.g., 'supabase/migrations/*.sql').",
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
required: ["pattern"],
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "write_file",
|
|
138
|
+
description: "Create or fully replace a file. ALWAYS read first, then write the complete updated contents. Restricted to paths inside the bug profile's fix_scope.",
|
|
139
|
+
input_schema: {
|
|
140
|
+
type: "object",
|
|
141
|
+
properties: {
|
|
142
|
+
path: { type: "string", description: "Repo-relative path." },
|
|
143
|
+
contents: { type: "string", description: "Full new file contents." },
|
|
144
|
+
},
|
|
145
|
+
required: ["path", "contents"],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
export function buildSiftTurnPrompt(args) {
|
|
150
|
+
const lines = [];
|
|
151
|
+
lines.push(`# Sift iteration ${args.iteration} of ${args.maxIterations}`);
|
|
152
|
+
lines.push("");
|
|
153
|
+
lines.push("## Bug profile");
|
|
154
|
+
lines.push("```yaml");
|
|
155
|
+
lines.push(args.bugProfileYaml);
|
|
156
|
+
lines.push("```");
|
|
157
|
+
lines.push("");
|
|
158
|
+
lines.push("## Regression test (the contract)");
|
|
159
|
+
lines.push(`File: \`${args.regressionTestPath}\``);
|
|
160
|
+
lines.push("```ts");
|
|
161
|
+
lines.push(args.regressionTestSrc);
|
|
162
|
+
lines.push("```");
|
|
163
|
+
lines.push("");
|
|
164
|
+
if (args.testResult) {
|
|
165
|
+
if (args.testResult.status === "green") {
|
|
166
|
+
lines.push("## Last run: GREEN");
|
|
167
|
+
lines.push("");
|
|
168
|
+
lines.push("The regression test now passes. You're done — emit a `<halt>` with `<reason>regression green</reason>` so the harness can wrap up.");
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
lines.push("## Last run: RED");
|
|
172
|
+
if (args.testResult.failureMessage) {
|
|
173
|
+
lines.push("```");
|
|
174
|
+
lines.push(args.testResult.failureMessage.slice(0, 1500));
|
|
175
|
+
lines.push("```");
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
lines.push("(no failure message captured — run the regression file by hand to see why)");
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
lines.push("");
|
|
182
|
+
}
|
|
183
|
+
if (args.priorEdits && args.priorEdits.length > 0) {
|
|
184
|
+
lines.push("## Prior edits this run");
|
|
185
|
+
for (const e of args.priorEdits)
|
|
186
|
+
lines.push(`- \`${e}\``);
|
|
187
|
+
lines.push("");
|
|
188
|
+
}
|
|
189
|
+
lines.push("## Your turn");
|
|
190
|
+
lines.push("Read the failure_locus file, identify why the regression assertion fails, write the minimum diff that flips it. Stay inside fix_scope. Halt voluntarily if the fix needs more.");
|
|
191
|
+
return lines.join("\n");
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/sift/prompts.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.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "CLI for the slowcook brewing harness",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "aminazar",
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"yaml": "^2.6.0",
|
|
40
40
|
"zod": "^3.23.8",
|
|
41
41
|
"@slowcook-ai/core": "^0.11.12",
|
|
42
|
-
"@slowcook-ai/llm-anthropic": "^0.8.1",
|
|
43
42
|
"@slowcook-ai/stack-ts": "^0.9.6",
|
|
44
|
-
"@slowcook-ai/
|
|
45
|
-
"@slowcook-ai/forge-github": "^0.
|
|
43
|
+
"@slowcook-ai/llm-anthropic": "^0.8.1",
|
|
44
|
+
"@slowcook-ai/forge-github": "^0.10.0",
|
|
45
|
+
"@slowcook-ai/recorder": "^0.9.1"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|