@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,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook chef --pr <num>` — pipeline orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Watches a single slowcook-bot PR. Classifies its failure (or
|
|
5
|
+
* non-failure) and acts on the verdict:
|
|
6
|
+
*
|
|
7
|
+
* self-conflict → rebase against main (fast-forward / structural-only)
|
|
8
|
+
* self-fail → workflow_dispatch the originating agent's retry workflow
|
|
9
|
+
* external-fail → post a diagnostic comment, add `chef:escalate` label
|
|
10
|
+
* infra-fail → re-run the workflow once; escalate if still failing
|
|
11
|
+
* no-failure → no-op
|
|
12
|
+
*
|
|
13
|
+
* Loop protection: chef counts its own prior comments on the PR.
|
|
14
|
+
* After 3, refuses to act regardless of class — escalates instead.
|
|
15
|
+
*
|
|
16
|
+
* **Status: alpha.5c**. Dispatch logic implemented; the rebase
|
|
17
|
+
* substep + auto-resolve of structural conflicts (specs/_index.yaml
|
|
18
|
+
* etc.) is alpha.5c.1. For now self-conflict prints the rebase
|
|
19
|
+
* command + escalates rather than running it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function chef(argv: string[], cliVersion: string): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/chef/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAqFH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G5E"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook chef --pr <num>` — pipeline orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Watches a single slowcook-bot PR. Classifies its failure (or
|
|
5
|
+
* non-failure) and acts on the verdict:
|
|
6
|
+
*
|
|
7
|
+
* self-conflict → rebase against main (fast-forward / structural-only)
|
|
8
|
+
* self-fail → workflow_dispatch the originating agent's retry workflow
|
|
9
|
+
* external-fail → post a diagnostic comment, add `chef:escalate` label
|
|
10
|
+
* infra-fail → re-run the workflow once; escalate if still failing
|
|
11
|
+
* no-failure → no-op
|
|
12
|
+
*
|
|
13
|
+
* Loop protection: chef counts its own prior comments on the PR.
|
|
14
|
+
* After 3, refuses to act regardless of class — escalates instead.
|
|
15
|
+
*
|
|
16
|
+
* **Status: alpha.5c**. Dispatch logic implemented; the rebase
|
|
17
|
+
* substep + auto-resolve of structural conflicts (specs/_index.yaml
|
|
18
|
+
* etc.) is alpha.5c.1. For now self-conflict prints the rebase
|
|
19
|
+
* command + escalates rather than running it.
|
|
20
|
+
*/
|
|
21
|
+
import { execSync } from "node:child_process";
|
|
22
|
+
import { GitHubAdapter } from "@slowcook-ai/forge-github";
|
|
23
|
+
import { classifyPrFailure, originatingAgent, } from "./classify.js";
|
|
24
|
+
function parseArgs(argv) {
|
|
25
|
+
const args = {
|
|
26
|
+
prNumber: 0,
|
|
27
|
+
repoRoot: process.cwd(),
|
|
28
|
+
dryRun: false,
|
|
29
|
+
retryCap: 3,
|
|
30
|
+
};
|
|
31
|
+
for (let i = 0; i < argv.length; i++) {
|
|
32
|
+
const arg = argv[i];
|
|
33
|
+
const next = argv[i + 1];
|
|
34
|
+
if (arg === "--pr" && next) {
|
|
35
|
+
args.prNumber = parseInt(next, 10);
|
|
36
|
+
i++;
|
|
37
|
+
}
|
|
38
|
+
else if (arg === "--cwd" && next) {
|
|
39
|
+
args.repoRoot = next;
|
|
40
|
+
i++;
|
|
41
|
+
}
|
|
42
|
+
else if (arg === "--owner" && next) {
|
|
43
|
+
args.owner = next;
|
|
44
|
+
i++;
|
|
45
|
+
}
|
|
46
|
+
else if (arg === "--repo" && next) {
|
|
47
|
+
args.repo = next;
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
else if (arg === "--dry-run") {
|
|
51
|
+
args.dryRun = true;
|
|
52
|
+
}
|
|
53
|
+
else if (arg === "--retry-cap" && next) {
|
|
54
|
+
args.retryCap = parseInt(next, 10);
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
else if (arg === "--help" || arg === "-h") {
|
|
58
|
+
printHelp();
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return args;
|
|
63
|
+
}
|
|
64
|
+
function printHelp() {
|
|
65
|
+
console.log(`
|
|
66
|
+
slowcook chef — pipeline orchestrator (PR-failure handler)
|
|
67
|
+
|
|
68
|
+
Watches a single slowcook-bot PR and acts on the verdict:
|
|
69
|
+
self-conflict → rebase
|
|
70
|
+
self-fail → dispatch retry to originating agent's workflow
|
|
71
|
+
external-fail → diagnostic comment + chef:escalate label
|
|
72
|
+
infra-fail → re-run workflow once; escalate if still failing
|
|
73
|
+
no-failure → no-op
|
|
74
|
+
|
|
75
|
+
Usage:
|
|
76
|
+
slowcook chef --pr <number> [options]
|
|
77
|
+
|
|
78
|
+
Options:
|
|
79
|
+
--pr <n> PR number to process (required).
|
|
80
|
+
--cwd <path> Repo root (default: cwd).
|
|
81
|
+
--owner <login> Override git-remote auto-detect.
|
|
82
|
+
--repo <name> Override git-remote auto-detect.
|
|
83
|
+
--dry-run Print classification + plan; don't act.
|
|
84
|
+
--retry-cap <n> Max prior chef-bot comments before escalating
|
|
85
|
+
instead of acting (default: 3).
|
|
86
|
+
|
|
87
|
+
Environment:
|
|
88
|
+
GITHUB_TOKEN (required) — write access for comments + dispatches.
|
|
89
|
+
`);
|
|
90
|
+
}
|
|
91
|
+
export async function chef(argv, cliVersion) {
|
|
92
|
+
const args = parseArgs(argv);
|
|
93
|
+
if (!args.prNumber) {
|
|
94
|
+
console.error("slowcook chef: --pr <number> is required");
|
|
95
|
+
printHelp();
|
|
96
|
+
process.exit(64);
|
|
97
|
+
}
|
|
98
|
+
const githubToken = process.env["GITHUB_TOKEN"];
|
|
99
|
+
if (!githubToken) {
|
|
100
|
+
console.error("slowcook chef: GITHUB_TOKEN is required");
|
|
101
|
+
process.exit(78);
|
|
102
|
+
}
|
|
103
|
+
const detected = detectOwnerRepo(args.repoRoot);
|
|
104
|
+
const owner = args.owner ?? detected?.owner;
|
|
105
|
+
const repo = args.repo ?? detected?.repo;
|
|
106
|
+
if (!owner || !repo) {
|
|
107
|
+
console.error("slowcook chef: could not detect owner/repo from git remote");
|
|
108
|
+
process.exit(2);
|
|
109
|
+
}
|
|
110
|
+
const forge = new GitHubAdapter({ owner, repo, token: githubToken });
|
|
111
|
+
// Fetch PR metadata via gh (cheaper than the full forge adapter
|
|
112
|
+
// path; the few fields chef needs aren't all on PullRequestSummary).
|
|
113
|
+
const prMeta = await fetchPrMeta(args.repoRoot, args.prNumber);
|
|
114
|
+
if (!prMeta) {
|
|
115
|
+
console.error(`slowcook chef: PR #${args.prNumber} not found`);
|
|
116
|
+
process.exit(2);
|
|
117
|
+
}
|
|
118
|
+
// Only act on slowcook-bot PRs (head ref starts with `slowcook/`).
|
|
119
|
+
// External PRs (human-authored) aren't our problem.
|
|
120
|
+
if (!prMeta.headRef.startsWith("slowcook/")) {
|
|
121
|
+
console.error(`slowcook chef: PR #${args.prNumber} head ref '${prMeta.headRef}' isn't a slowcook-bot branch — skipping.`);
|
|
122
|
+
process.exit(0);
|
|
123
|
+
}
|
|
124
|
+
// Loop protection — count chef-bot's own prior comments.
|
|
125
|
+
const priorChefComments = await countChefComments(args.repoRoot, args.prNumber);
|
|
126
|
+
if (priorChefComments >= args.retryCap) {
|
|
127
|
+
console.error(`slowcook chef: retry cap reached (${priorChefComments} prior chef comments ≥ ${args.retryCap}). Escalating.`);
|
|
128
|
+
if (!args.dryRun) {
|
|
129
|
+
await postEscalation(forge, args.prNumber, cliVersion, priorChefComments);
|
|
130
|
+
}
|
|
131
|
+
process.exit(0);
|
|
132
|
+
}
|
|
133
|
+
// Gather classification inputs.
|
|
134
|
+
const headChecks = await fetchChecks(args.repoRoot, args.prNumber, "head");
|
|
135
|
+
const baseChecks = await fetchChecks(args.repoRoot, args.prNumber, "base");
|
|
136
|
+
const verdict = classifyPrFailure({
|
|
137
|
+
headChecks,
|
|
138
|
+
baseChecks,
|
|
139
|
+
outOfDate: prMeta.outOfDate,
|
|
140
|
+
});
|
|
141
|
+
console.error(`chef · PR #${args.prNumber} (${prMeta.headRef}) → ${describeVerdict(verdict)}`);
|
|
142
|
+
if (args.dryRun) {
|
|
143
|
+
console.error("(dry-run: not acting)");
|
|
144
|
+
process.exit(0);
|
|
145
|
+
}
|
|
146
|
+
// Act on the verdict.
|
|
147
|
+
switch (verdict.kind) {
|
|
148
|
+
case "no-failure":
|
|
149
|
+
console.error("Nothing to do.");
|
|
150
|
+
return;
|
|
151
|
+
case "self-conflict":
|
|
152
|
+
// alpha.5c: print the rebase suggestion + escalate.
|
|
153
|
+
// Auto-rebase + structural-conflict resolver lands in alpha.5c.1.
|
|
154
|
+
await postEscalation(forge, args.prNumber, cliVersion, priorChefComments, `Branch is out of date with main (rebase needed). Auto-rebase isn't enabled in this chef build (alpha.5c) — rebase manually:\n\n\`\`\`\ngit fetch origin\ngit checkout ${prMeta.headRef}\ngit rebase origin/main\ngit push --force-with-lease\n\`\`\``);
|
|
155
|
+
return;
|
|
156
|
+
case "self-fail":
|
|
157
|
+
await dispatchRetry(forge, args.prNumber, prMeta.headRef, verdict.failingChecks, cliVersion);
|
|
158
|
+
return;
|
|
159
|
+
case "external-fail":
|
|
160
|
+
await postExternalDiagnostic(forge, args.prNumber, cliVersion, verdict.failingChecks, priorChefComments);
|
|
161
|
+
return;
|
|
162
|
+
case "infra-fail":
|
|
163
|
+
await postEscalation(forge, args.prNumber, cliVersion, priorChefComments, `Workflow infra failure (${verdict.failingChecks.join(", ")}). Re-run via the GitHub Actions UI or 'gh run rerun'. Auto-rerun isn't enabled in this chef build.`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function describeVerdict(v) {
|
|
168
|
+
switch (v.kind) {
|
|
169
|
+
case "no-failure":
|
|
170
|
+
return "no failure";
|
|
171
|
+
case "self-conflict":
|
|
172
|
+
return `self-conflict (${v.reason})`;
|
|
173
|
+
case "self-fail":
|
|
174
|
+
return `self-fail (${v.failingChecks.join(", ")})`;
|
|
175
|
+
case "external-fail":
|
|
176
|
+
return `external-fail (${v.failingChecks.join(", ")} — also red on base)`;
|
|
177
|
+
case "infra-fail":
|
|
178
|
+
return `infra-fail (${v.failingChecks.join(", ")})`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
async function fetchPrMeta(repoRoot, prNumber) {
|
|
182
|
+
try {
|
|
183
|
+
const out = execSync(`gh pr view ${prNumber} --json headRefName,mergeStateStatus`, { cwd: repoRoot, encoding: "utf8" });
|
|
184
|
+
const obj = JSON.parse(out);
|
|
185
|
+
return {
|
|
186
|
+
headRef: obj.headRefName,
|
|
187
|
+
// gh's mergeStateStatus = BEHIND when the PR head is older than
|
|
188
|
+
// its base; that's our "needs rebase" signal. DIRTY = merge
|
|
189
|
+
// conflict. Both should trigger the self-conflict path.
|
|
190
|
+
outOfDate: obj.mergeStateStatus === "BEHIND" || obj.mergeStateStatus === "DIRTY",
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function fetchChecks(repoRoot, prNumber, ref) {
|
|
198
|
+
// gh's pr view returns statusCheckRollup for HEAD only. For base
|
|
199
|
+
// we need to find the merge-base SHA + query its check-runs.
|
|
200
|
+
if (ref === "head") {
|
|
201
|
+
try {
|
|
202
|
+
const out = execSync(`gh pr view ${prNumber} --json statusCheckRollup --jq '.statusCheckRollup'`, { cwd: repoRoot, encoding: "utf8", maxBuffer: 1024 * 256 });
|
|
203
|
+
const arr = JSON.parse(out || "[]");
|
|
204
|
+
return arr
|
|
205
|
+
.filter((c) => c.name && c.conclusion !== undefined)
|
|
206
|
+
.map((c) => ({
|
|
207
|
+
name: c.name ?? "",
|
|
208
|
+
conclusion: (c.conclusion ?? "").toLowerCase(),
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// base: get the PR's base ref + grab its latest check-run rollup.
|
|
216
|
+
try {
|
|
217
|
+
const baseRef = execSync(`gh pr view ${prNumber} --json baseRefName --jq '.baseRefName'`, { cwd: repoRoot, encoding: "utf8" }).trim();
|
|
218
|
+
const sha = execSync(`git rev-parse origin/${baseRef}`, {
|
|
219
|
+
cwd: repoRoot,
|
|
220
|
+
encoding: "utf8",
|
|
221
|
+
}).trim();
|
|
222
|
+
const out = execSync(`gh api "repos/{owner}/{repo}/commits/${sha}/check-runs" --jq '.check_runs'`, { cwd: repoRoot, encoding: "utf8" });
|
|
223
|
+
const arr = JSON.parse(out || "[]");
|
|
224
|
+
return arr
|
|
225
|
+
.filter((c) => c.name && c.conclusion)
|
|
226
|
+
.map((c) => ({
|
|
227
|
+
name: c.name ?? "",
|
|
228
|
+
conclusion: (c.conclusion ?? "").toLowerCase(),
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
async function countChefComments(repoRoot, prNumber) {
|
|
236
|
+
try {
|
|
237
|
+
const out = execSync(`gh pr view ${prNumber} --json comments --jq '.comments'`, { cwd: repoRoot, encoding: "utf8", maxBuffer: 1024 * 1024 });
|
|
238
|
+
const arr = JSON.parse(out || "[]");
|
|
239
|
+
return arr.filter((c) => (c.body ?? "").startsWith("### slowcook · chef")).length;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return 0;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function postEscalation(forge, prNumber, cliVersion, priorComments, detail = "Multiple retries didn't resolve the failure. Operator action needed.") {
|
|
246
|
+
const body = `### slowcook · chef ⚠️ escalate\n\n${detail}\n\n` +
|
|
247
|
+
`<sub>chef ${cliVersion} · prior chef-comments on this PR: ${priorComments}</sub>`;
|
|
248
|
+
await forge.createIssueComment(prNumber, body);
|
|
249
|
+
}
|
|
250
|
+
async function postExternalDiagnostic(forge, prNumber, cliVersion, failingChecks, priorComments) {
|
|
251
|
+
const body = `### slowcook · chef · external-failure\n\n` +
|
|
252
|
+
`The following check(s) are failing on this PR but are also failing on the merge base:\n\n` +
|
|
253
|
+
failingChecks.map((c) => `- \`${c}\``).join("\n") +
|
|
254
|
+
`\n\nThe PR's diff didn't introduce these — they're pre-existing. Chef won't iterate. Operator: admin-merge if appropriate, or fix the underlying on a separate PR.\n\n` +
|
|
255
|
+
`<sub>chef ${cliVersion} · prior chef-comments: ${priorComments}</sub>`;
|
|
256
|
+
await forge.createIssueComment(prNumber, body);
|
|
257
|
+
}
|
|
258
|
+
async function dispatchRetry(forge, prNumber, headRef, failingChecks, cliVersion) {
|
|
259
|
+
const agent = originatingAgent(headRef);
|
|
260
|
+
if (!agent) {
|
|
261
|
+
await postEscalation(forge, prNumber, cliVersion, 0, `Self-fail detected but originating agent is unknown for head ref '${headRef}'. No retry dispatched.`);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const body = `### slowcook · chef · self-failure (dispatch pending)\n\n` +
|
|
265
|
+
`Failing checks introduced by this PR:\n\n` +
|
|
266
|
+
failingChecks.map((c) => `- \`${c}\``).join("\n") +
|
|
267
|
+
`\n\nWould dispatch retry to the **${agent}** workflow. Auto-dispatch isn't wired up in chef alpha.5c — operator: rerun the failing job(s) manually via the GitHub Actions UI or 'gh run rerun'.\n\n` +
|
|
268
|
+
`<sub>chef ${cliVersion} · alpha.5c</sub>`;
|
|
269
|
+
await forge.createIssueComment(prNumber, body);
|
|
270
|
+
}
|
|
271
|
+
function detectOwnerRepo(repoRoot) {
|
|
272
|
+
try {
|
|
273
|
+
const url = execSync("git remote get-url origin", {
|
|
274
|
+
cwd: repoRoot,
|
|
275
|
+
encoding: "utf8",
|
|
276
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
277
|
+
}).trim();
|
|
278
|
+
const m = url.match(/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?$/);
|
|
279
|
+
if (m && m[1] && m[2])
|
|
280
|
+
return { owner: m[1], repo: m[2] };
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
/* not a git repo */
|
|
284
|
+
}
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/chef/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/dispatch/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/dispatch/index.ts"],"names":[],"mappings":"AA6KA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwF5D"}
|
|
@@ -49,10 +49,17 @@ function parseArgs(argv) {
|
|
|
49
49
|
result.help = true;
|
|
50
50
|
return result;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
// 0.13.0-alpha.1 — `recipe` is the canonical name for the testgen
|
|
53
|
+
// step. Both names dispatch to the same workflow.
|
|
54
|
+
if (first === "recipe") {
|
|
55
|
+
result.step = "testgen";
|
|
56
|
+
}
|
|
57
|
+
else if (first !== "brew" && first !== "testgen" && first !== "refine") {
|
|
58
|
+
throw new Error(`Unknown step '${first}'. Supported: brew, recipe (testgen), refine.`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
result.step = first;
|
|
54
62
|
}
|
|
55
|
-
result.step = first;
|
|
56
63
|
for (let i = 1; i < argv.length; i++) {
|
|
57
64
|
const arg = argv[i];
|
|
58
65
|
if (arg === "-h" || arg === "--help") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dispatch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAgCxC,SAAS,eAAe,CAAC,IAAU,EAAE,IAA4B;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,mBAAmB;gBAC7B,MAAM,EAAE;oBACN,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;oBAC3C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;oBACrD,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;oBACjE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,mBAAmB;iBACzC;gBACD,cAAc,EAAE,CAAC,UAAU,CAAC;aAC7B,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,QAAQ,EAAE,sBAAsB;gBAChC,MAAM,EAAE,EAAE;gBACV,cAAc,EAAE,EAAE;aACnB,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,QAAQ,EAAE,qBAAqB;gBAC/B,MAAM,EAAE;oBACN,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;iBACpD;gBACD,cAAc,EAAE,CAAC,cAAc,CAAC;aACjC,CAAC;QACJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,IAAI,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAM/B,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAmB;QACzB,IAAI,EAAE,EAA4B;QAClC,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,KAAK;KACZ,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dispatch/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Investigate agent loop. Reads a GitHub issue, runs a Claude
|
|
3
|
+
* tool-use loop with read-only repo tools, and emits a validated
|
|
4
|
+
* BugProfile.
|
|
5
|
+
*
|
|
6
|
+
* alpha.2b — real LLM integration. PR opening (creating a branch
|
|
7
|
+
* + pushing the bug-profile.yaml + opening the PR) lands in
|
|
8
|
+
* alpha.2c; this returns the profile to the caller for now.
|
|
9
|
+
*
|
|
10
|
+
* Pattern mirrors brew/agent.ts's runTurn loop but smaller:
|
|
11
|
+
* - read-only tools (no write_file, no justify_diff_overflow)
|
|
12
|
+
* - single conversation, not multi-turn ratchet
|
|
13
|
+
* - output validated against bug-profile schema
|
|
14
|
+
*/
|
|
15
|
+
import { type BugProfile } from "./schema.js";
|
|
16
|
+
export interface InvestigateContext {
|
|
17
|
+
repoRoot: string;
|
|
18
|
+
anthropicApiKey: string;
|
|
19
|
+
model: string;
|
|
20
|
+
/** Filled in by the caller; the LLM doesn't pick the bug-id. */
|
|
21
|
+
bugId: string;
|
|
22
|
+
/** CLI version stamp for `investigated_by`. */
|
|
23
|
+
cliVersion: string;
|
|
24
|
+
issue: {
|
|
25
|
+
number: number;
|
|
26
|
+
title: string;
|
|
27
|
+
body: string;
|
|
28
|
+
/** Prior comments (oldest first), already filtered to non-bot. */
|
|
29
|
+
priorComments: string[];
|
|
30
|
+
};
|
|
31
|
+
/** Used to stamp `created_at` deterministically in tests. */
|
|
32
|
+
now?: () => Date;
|
|
33
|
+
}
|
|
34
|
+
export interface InvestigateResult {
|
|
35
|
+
profile: BugProfile;
|
|
36
|
+
/** USD spent on the investigation round. */
|
|
37
|
+
spendUsd: number;
|
|
38
|
+
/** Number of LLM rounds (1 round = one LLM call + tool execution). */
|
|
39
|
+
rounds: number;
|
|
40
|
+
/** True if the agent emitted a `<halt>` block instead of a profile. */
|
|
41
|
+
halted: boolean;
|
|
42
|
+
/** Halt reason from the agent (only set when halted=true). */
|
|
43
|
+
haltReason?: string;
|
|
44
|
+
/** Raw final-round text the agent emitted (debugging aid). */
|
|
45
|
+
finalText: string;
|
|
46
|
+
}
|
|
47
|
+
export declare function runInvestigation(ctx: InvestigateContext): Promise<InvestigateResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Extract the YAML body from a `<bug_profile>...</bug_profile>` block,
|
|
50
|
+
* parse + validate it. Throws on missing block / invalid YAML / failed
|
|
51
|
+
* schema validation. The agent prompt explicitly requires the block;
|
|
52
|
+
* a missing block is a contract violation.
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseBugProfileBlock(finalText: string, ctx: InvestigateContext): BugProfile;
|
|
55
|
+
/**
|
|
56
|
+
* Minimal YAML subset parser. Handles the shape investigate emits:
|
|
57
|
+
* - top-level scalar `key: value` (string, number, or quoted string)
|
|
58
|
+
* - `key:` followed by ` - "string"` list items
|
|
59
|
+
* - `key:` followed by indented `child: value` pairs (one level deep)
|
|
60
|
+
* - block scalars `key: |` followed by indented lines
|
|
61
|
+
*
|
|
62
|
+
* NOT a general YAML parser. We avoid pulling `yaml` dep into this
|
|
63
|
+
* module; the agent's output has a constrained shape that this can
|
|
64
|
+
* cover. Falls back to throwing on anything outside that shape, which
|
|
65
|
+
* surfaces parser drift as a clear error rather than silent miss.
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseSimpleYaml(src: string): Record<string, unknown>;
|
|
68
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/commands/investigate/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAsBH,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,kEAAkE;QAClE,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA+G5B;AAuID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,kBAAkB,GACtB,UAAU,CAoCZ;AAgCD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4GpE"}
|