@slowcook-ai/cli 0.12.10 → 0.13.0-alpha.3
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 +25 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/brew/agent.d.ts.map +1 -1
- package/dist/commands/brew/agent.js +31 -6
- package/dist/commands/brew/agent.js.map +1 -1
- package/dist/commands/brew/patterns.d.ts +54 -0
- package/dist/commands/brew/patterns.d.ts.map +1 -0
- package/dist/commands/brew/patterns.js +136 -0
- package/dist/commands/brew/patterns.js.map +1 -0
- package/dist/commands/brew/prompts.d.ts +7 -0
- package/dist/commands/brew/prompts.d.ts.map +1 -1
- package/dist/commands/brew/prompts.js +7 -0
- package/dist/commands/brew/prompts.js.map +1 -1
- 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/init/plan.d.ts.map +1 -1
- package/dist/commands/init/plan.js +7 -1
- package/dist/commands/init/plan.js.map +1 -1
- package/dist/commands/init/templates.d.ts +8 -0
- package/dist/commands/init/templates.d.ts.map +1 -1
- package/dist/commands/init/templates.js +62 -0
- package/dist/commands/init/templates.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 +465 -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 +296 -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 +190 -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/index.d.ts +50 -0
- package/dist/commands/recipe-regression/index.d.ts.map +1 -0
- package/dist/commands/recipe-regression/index.js +150 -0
- package/dist/commands/recipe-regression/index.js.map +1 -0
- package/dist/commands/testgen/agent.d.ts.map +1 -1
- package/dist/commands/testgen/agent.js +16 -4
- package/dist/commands/testgen/agent.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BugProfile — the artefact emitted by `slowcook investigate`.
|
|
3
|
+
*
|
|
4
|
+
* Lives at `.brewing/bug-profiles/B-<id>.yaml`. Plays the role for
|
|
5
|
+
* the bug-fix flow that `specs/story-N.yaml` plays for the story
|
|
6
|
+
* flow: the contract between investigate (or refine) and the next
|
|
7
|
+
* agent down the pipeline (sift / brew).
|
|
8
|
+
*
|
|
9
|
+
* v1 (slowcook 0.13.0) shape. Schema version bump on any field
|
|
10
|
+
* removal or rename.
|
|
11
|
+
*/
|
|
12
|
+
export declare const BUG_PROFILE_SCHEMA_VERSION: 1;
|
|
13
|
+
/**
|
|
14
|
+
* Bug ids are sequential under `B-<n>`. The numbering is independent
|
|
15
|
+
* of `story-<NNN>` — bugs and stories are different artefact types.
|
|
16
|
+
* Race-condition collision avoidance: same logic as story-id picker
|
|
17
|
+
* (slowcook#8 fix); the picker walks `.brewing/bug-profiles/` and
|
|
18
|
+
* matching `slowcook/bug-profile/B-*` branches before assigning.
|
|
19
|
+
*/
|
|
20
|
+
export type BugId = string;
|
|
21
|
+
export interface FailureLocus {
|
|
22
|
+
/** Repo-relative path where the failure originates (or where the
|
|
23
|
+
* fix should land if multi-site). Always present. */
|
|
24
|
+
file: string;
|
|
25
|
+
/** 1-based line of the offending statement when known. */
|
|
26
|
+
line?: number;
|
|
27
|
+
/** Function / method / route name when known. */
|
|
28
|
+
function?: string;
|
|
29
|
+
/** One-paragraph human-readable diagnosis from the investigate
|
|
30
|
+
* agent. The "why broken", not the "how to fix" — fix-shaping
|
|
31
|
+
* happens in sift. */
|
|
32
|
+
diagnosis: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RelatedSpec {
|
|
35
|
+
/** Spec or bug id that's relevant context. */
|
|
36
|
+
id: string;
|
|
37
|
+
/** Relationship hint — guides chef when sequencing fixes. */
|
|
38
|
+
relationship: "touches" | "supersedes" | "related" | "duplicates";
|
|
39
|
+
/** One-line explanation. Optional. */
|
|
40
|
+
note?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface BugProfile {
|
|
43
|
+
/** $schema field for editor tooling. */
|
|
44
|
+
$schema?: string;
|
|
45
|
+
schema_version: typeof BUG_PROFILE_SCHEMA_VERSION;
|
|
46
|
+
bug_id: BugId;
|
|
47
|
+
/** Human title — usually a paraphrase of the issue title. */
|
|
48
|
+
title: string;
|
|
49
|
+
/** GitHub issue number (`#NNN`). */
|
|
50
|
+
source_issue: string;
|
|
51
|
+
/** Lifecycle. Mirrors story-flow status semantics. */
|
|
52
|
+
status: "investigated" | "recipe-emitted" | "sifted" | "shipped" | "closed";
|
|
53
|
+
/** Investigate agent + version that emitted this profile. */
|
|
54
|
+
investigated_by: string;
|
|
55
|
+
/** ISO-8601 timestamp of emission. */
|
|
56
|
+
created_at: string;
|
|
57
|
+
/** What the user / reporter sees. Verbatim or close-paraphrase
|
|
58
|
+
* from the issue body. Refine-style paraphrasing is forbidden;
|
|
59
|
+
* see the "PM intent carries weight" rule. */
|
|
60
|
+
symptom: string[];
|
|
61
|
+
/** What the system should do instead. Often inferable from the
|
|
62
|
+
* issue body; otherwise asked of the PM. */
|
|
63
|
+
expected: string[];
|
|
64
|
+
/** Minimum repro steps. Often a one-liner ("load /feed as authed
|
|
65
|
+
* user"); rarely longer than 3 steps. */
|
|
66
|
+
reproduction: string[];
|
|
67
|
+
/** Where the bug actually lives in the code. The investigate
|
|
68
|
+
* agent's job is to find this. */
|
|
69
|
+
failure_locus: FailureLocus;
|
|
70
|
+
/** What the regression test should assert in plain English.
|
|
71
|
+
* recipe --regression turns this into a vitest file. */
|
|
72
|
+
regression_assertion: string[];
|
|
73
|
+
/** Paths the fix is allowed to touch. Sift uses this as
|
|
74
|
+
* allowed_paths. Narrow on purpose — bug fixes shouldn't sprawl. */
|
|
75
|
+
fix_scope: string[];
|
|
76
|
+
/** Stories or bugs this fix interacts with. */
|
|
77
|
+
related_specs?: RelatedSpec[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate a parsed YAML object against the schema. Returns
|
|
81
|
+
* `{ ok: true, profile }` on success, `{ ok: false, errors }`
|
|
82
|
+
* otherwise. Hand-rolled; we don't want a JSON-schema dep.
|
|
83
|
+
*/
|
|
84
|
+
export declare function validateBugProfile(input: unknown): {
|
|
85
|
+
ok: true;
|
|
86
|
+
profile: BugProfile;
|
|
87
|
+
} | {
|
|
88
|
+
ok: false;
|
|
89
|
+
errors: string[];
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/commands/investigate/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B;0DACsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;2BAEuB;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,YAAY,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;IAClE,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,0BAA0B,CAAC;IAClD,MAAM,EAAE,KAAK,CAAC;IACd,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,cAAc,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5E,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IAEnB;;mDAE+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;iDAC6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;8CAC0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB;uCACmC;IACnC,aAAa,EAAE,YAAY,CAAC;IAE5B;6DACyD;IACzD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B;yEACqE;IACrE,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG;IAClD,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,UAAU,CAAC;CACrB,GAAG;IACF,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsEA"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BugProfile — the artefact emitted by `slowcook investigate`.
|
|
3
|
+
*
|
|
4
|
+
* Lives at `.brewing/bug-profiles/B-<id>.yaml`. Plays the role for
|
|
5
|
+
* the bug-fix flow that `specs/story-N.yaml` plays for the story
|
|
6
|
+
* flow: the contract between investigate (or refine) and the next
|
|
7
|
+
* agent down the pipeline (sift / brew).
|
|
8
|
+
*
|
|
9
|
+
* v1 (slowcook 0.13.0) shape. Schema version bump on any field
|
|
10
|
+
* removal or rename.
|
|
11
|
+
*/
|
|
12
|
+
export const BUG_PROFILE_SCHEMA_VERSION = 1;
|
|
13
|
+
/**
|
|
14
|
+
* Validate a parsed YAML object against the schema. Returns
|
|
15
|
+
* `{ ok: true, profile }` on success, `{ ok: false, errors }`
|
|
16
|
+
* otherwise. Hand-rolled; we don't want a JSON-schema dep.
|
|
17
|
+
*/
|
|
18
|
+
export function validateBugProfile(input) {
|
|
19
|
+
const errors = [];
|
|
20
|
+
if (!isPlainObject(input)) {
|
|
21
|
+
return { ok: false, errors: ["root must be an object"] };
|
|
22
|
+
}
|
|
23
|
+
const obj = input;
|
|
24
|
+
const schemaVersion = obj["schema_version"];
|
|
25
|
+
if (schemaVersion !== BUG_PROFILE_SCHEMA_VERSION) {
|
|
26
|
+
errors.push(`schema_version must be ${BUG_PROFILE_SCHEMA_VERSION}, got ${String(schemaVersion)}`);
|
|
27
|
+
}
|
|
28
|
+
const requireString = (key) => {
|
|
29
|
+
const v = obj[key];
|
|
30
|
+
if (typeof v !== "string" || v.length === 0) {
|
|
31
|
+
errors.push(`${key} must be a non-empty string`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return v;
|
|
35
|
+
};
|
|
36
|
+
const requireStringArray = (key) => {
|
|
37
|
+
const v = obj[key];
|
|
38
|
+
if (!Array.isArray(v) || v.some((x) => typeof x !== "string")) {
|
|
39
|
+
errors.push(`${key} must be an array of strings`);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return v;
|
|
43
|
+
};
|
|
44
|
+
const bugId = requireString("bug_id");
|
|
45
|
+
if (bugId && !/^B-\d+$/.test(bugId)) {
|
|
46
|
+
errors.push(`bug_id must match /^B-\\d+$/ (got "${bugId}")`);
|
|
47
|
+
}
|
|
48
|
+
const sourceIssue = requireString("source_issue");
|
|
49
|
+
if (sourceIssue && !/^#\d+$/.test(sourceIssue)) {
|
|
50
|
+
errors.push(`source_issue must match /^#\\d+$/ (got "${sourceIssue}")`);
|
|
51
|
+
}
|
|
52
|
+
requireString("title");
|
|
53
|
+
requireString("status");
|
|
54
|
+
requireString("investigated_by");
|
|
55
|
+
requireString("created_at");
|
|
56
|
+
requireStringArray("symptom");
|
|
57
|
+
requireStringArray("expected");
|
|
58
|
+
requireStringArray("reproduction");
|
|
59
|
+
requireStringArray("regression_assertion");
|
|
60
|
+
requireStringArray("fix_scope");
|
|
61
|
+
const locus = obj["failure_locus"];
|
|
62
|
+
if (!isPlainObject(locus)) {
|
|
63
|
+
errors.push("failure_locus must be an object");
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const l = locus;
|
|
67
|
+
if (typeof l["file"] !== "string" || l["file"].length === 0) {
|
|
68
|
+
errors.push("failure_locus.file must be a non-empty string");
|
|
69
|
+
}
|
|
70
|
+
if (typeof l["diagnosis"] !== "string" || l["diagnosis"].length === 0) {
|
|
71
|
+
errors.push("failure_locus.diagnosis must be a non-empty string");
|
|
72
|
+
}
|
|
73
|
+
if (l["line"] !== undefined && typeof l["line"] !== "number") {
|
|
74
|
+
errors.push("failure_locus.line must be a number when present");
|
|
75
|
+
}
|
|
76
|
+
if (l["function"] !== undefined && typeof l["function"] !== "string") {
|
|
77
|
+
errors.push("failure_locus.function must be a string when present");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (errors.length > 0)
|
|
81
|
+
return { ok: false, errors };
|
|
82
|
+
return { ok: true, profile: obj };
|
|
83
|
+
}
|
|
84
|
+
function isPlainObject(v) {
|
|
85
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/commands/investigate/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/on-brew-merged/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/on-brew-merged/index.ts"],"names":[],"mappings":"AA2GA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJhE"}
|
|
@@ -67,6 +67,13 @@ Exit codes:
|
|
|
67
67
|
2 script error
|
|
68
68
|
`);
|
|
69
69
|
}
|
|
70
|
+
function centre(text, width) {
|
|
71
|
+
if (text.length >= width)
|
|
72
|
+
return text;
|
|
73
|
+
const totalPad = width - text.length;
|
|
74
|
+
const left = Math.floor(totalPad / 2);
|
|
75
|
+
return " ".repeat(left) + text + " ".repeat(totalPad - left);
|
|
76
|
+
}
|
|
70
77
|
function detectOwnerRepo(cwd) {
|
|
71
78
|
try {
|
|
72
79
|
const url = execSync("git remote get-url origin", {
|
|
@@ -160,18 +167,32 @@ export async function onBrewMerged(argv) {
|
|
|
160
167
|
byAgent.set(m.agent, acc);
|
|
161
168
|
}
|
|
162
169
|
const totalUsd = [...byAgent.values()].reduce((a, b) => a + b.usd, 0);
|
|
163
|
-
|
|
170
|
+
// 0.12.13+ — restaurant-bill rendering. Wrapped in a code block so
|
|
171
|
+
// GitHub renders it in a fixed-width font; columns align.
|
|
172
|
+
// Order respects the pipeline flow (refine → testgen/recipe →
|
|
173
|
+
// brew/sift). Bug-flow agents (investigate, sift) included so
|
|
174
|
+
// future bugs render with the same template.
|
|
175
|
+
const order = ["refine", "investigate", "testgen", "recipe", "brew", "sift"];
|
|
176
|
+
const lineWidth = 38;
|
|
164
177
|
const lines = [];
|
|
165
|
-
|
|
178
|
+
const sep = "─".repeat(lineWidth);
|
|
179
|
+
lines.push(sep);
|
|
180
|
+
lines.push(centre("SLOWCOOK · PIPELINE BILL", lineWidth));
|
|
181
|
+
lines.push(sep);
|
|
166
182
|
for (const agent of order) {
|
|
167
183
|
const acc = byAgent.get(agent);
|
|
168
184
|
if (!acc)
|
|
169
185
|
continue;
|
|
170
|
-
const
|
|
171
|
-
|
|
186
|
+
const left = ` ${agent.padEnd(12)}× ${acc.n}`;
|
|
187
|
+
const right = `$${acc.usd.toFixed(4)} `;
|
|
188
|
+
lines.push(left + " ".repeat(Math.max(1, lineWidth - left.length - right.length)) + right);
|
|
172
189
|
}
|
|
173
|
-
lines.push(
|
|
174
|
-
|
|
190
|
+
lines.push(sep);
|
|
191
|
+
const totalLeft = " TOTAL";
|
|
192
|
+
const totalRight = `$${totalUsd.toFixed(4)} `;
|
|
193
|
+
lines.push(totalLeft + " ".repeat(Math.max(1, lineWidth - totalLeft.length - totalRight.length)) + totalRight);
|
|
194
|
+
lines.push(sep);
|
|
195
|
+
costSummaryMd = "\n\n```\n" + lines.join("\n") + "\n```\n";
|
|
175
196
|
}
|
|
176
197
|
}
|
|
177
198
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/on-brew-merged/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/on-brew-merged/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook recipe --regression --bug B-<n>` — emits a regression
|
|
3
|
+
* test from a bug-profile.
|
|
4
|
+
*
|
|
5
|
+
* **Status: alpha.3a**. Stub-only emitter: writes a deterministic
|
|
6
|
+
* vitest skeleton at `tests/regression/B-<n>-<slug>.test.ts` that
|
|
7
|
+
* asserts via `expect.fail()` so the test is red until sift replaces
|
|
8
|
+
* the body with real assertions (alpha.4) or alpha.3b upgrades this
|
|
9
|
+
* emitter to write real tests via an LLM agent.
|
|
10
|
+
*
|
|
11
|
+
* The skeleton structure is what sift expects to see:
|
|
12
|
+
* - one `describe` named for the bug id + title
|
|
13
|
+
* - one `it` per regression_assertion line
|
|
14
|
+
* - body of each `it` calls `expect.fail(...)` referencing the bug
|
|
15
|
+
* profile so the failure message points the operator at the right
|
|
16
|
+
* artefact when the test runs.
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* slowcook recipe --regression --bug B-1 [--cwd <path>]
|
|
20
|
+
*
|
|
21
|
+
* Internally invoked from the CLI's `recipe`/`testgen` dispatch when
|
|
22
|
+
* `--regression` is present (see cli.ts wiring).
|
|
23
|
+
*/
|
|
24
|
+
import { type BugProfile } from "../investigate/schema.js";
|
|
25
|
+
export interface RecipeRegressionArgs {
|
|
26
|
+
bugId: string;
|
|
27
|
+
repoRoot: string;
|
|
28
|
+
dryRun: boolean;
|
|
29
|
+
/** alpha.3b: when true, route through the LLM emitter. Stub today. */
|
|
30
|
+
useLlm: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function parseRecipeRegressionArgs(argv: string[]): RecipeRegressionArgs;
|
|
33
|
+
/**
|
|
34
|
+
* Accept "1", "B-1", or "B1" and normalise to "B-<n>".
|
|
35
|
+
*/
|
|
36
|
+
export declare function normaliseBugId(raw: string): string;
|
|
37
|
+
export declare function recipeRegression(argv: string[], cliVersion: string): Promise<void>;
|
|
38
|
+
export declare function loadBugProfile(repoRoot: string, bugId: string): BugProfile;
|
|
39
|
+
export interface RegressionFile {
|
|
40
|
+
path: string;
|
|
41
|
+
contents: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build the stub regression test for a bug profile. Deterministic —
|
|
45
|
+
* same profile → same file. Sift overwrites with real assertions in
|
|
46
|
+
* alpha.4; alpha.3b will replace this stub emitter with an LLM-written
|
|
47
|
+
* real test.
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderRegressionStub(profile: BugProfile, cliVersion: string): RegressionFile;
|
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/recipe-regression/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG/E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,sEAAsE;IACtE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAuB9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAe1E;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,GACjB,cAAc,CAkChB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook recipe --regression --bug B-<n>` — emits a regression
|
|
3
|
+
* test from a bug-profile.
|
|
4
|
+
*
|
|
5
|
+
* **Status: alpha.3a**. Stub-only emitter: writes a deterministic
|
|
6
|
+
* vitest skeleton at `tests/regression/B-<n>-<slug>.test.ts` that
|
|
7
|
+
* asserts via `expect.fail()` so the test is red until sift replaces
|
|
8
|
+
* the body with real assertions (alpha.4) or alpha.3b upgrades this
|
|
9
|
+
* emitter to write real tests via an LLM agent.
|
|
10
|
+
*
|
|
11
|
+
* The skeleton structure is what sift expects to see:
|
|
12
|
+
* - one `describe` named for the bug id + title
|
|
13
|
+
* - one `it` per regression_assertion line
|
|
14
|
+
* - body of each `it` calls `expect.fail(...)` referencing the bug
|
|
15
|
+
* profile so the failure message points the operator at the right
|
|
16
|
+
* artefact when the test runs.
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* slowcook recipe --regression --bug B-1 [--cwd <path>]
|
|
20
|
+
*
|
|
21
|
+
* Internally invoked from the CLI's `recipe`/`testgen` dispatch when
|
|
22
|
+
* `--regression` is present (see cli.ts wiring).
|
|
23
|
+
*/
|
|
24
|
+
import { mkdirSync, writeFileSync, existsSync, readFileSync } from "node:fs";
|
|
25
|
+
import { join } from "node:path";
|
|
26
|
+
import { validateBugProfile } from "../investigate/schema.js";
|
|
27
|
+
import { parseSimpleYaml } from "../investigate/agent.js";
|
|
28
|
+
export function parseRecipeRegressionArgs(argv) {
|
|
29
|
+
const args = {
|
|
30
|
+
bugId: "",
|
|
31
|
+
repoRoot: process.cwd(),
|
|
32
|
+
dryRun: false,
|
|
33
|
+
useLlm: false,
|
|
34
|
+
};
|
|
35
|
+
for (let i = 0; i < argv.length; i++) {
|
|
36
|
+
const arg = argv[i];
|
|
37
|
+
const next = argv[i + 1];
|
|
38
|
+
if (arg === "--bug" && next) {
|
|
39
|
+
args.bugId = normaliseBugId(next);
|
|
40
|
+
i++;
|
|
41
|
+
}
|
|
42
|
+
else if (arg === "--cwd" && next) {
|
|
43
|
+
args.repoRoot = next;
|
|
44
|
+
i++;
|
|
45
|
+
}
|
|
46
|
+
else if (arg === "--dry-run") {
|
|
47
|
+
args.dryRun = true;
|
|
48
|
+
}
|
|
49
|
+
else if (arg === "--llm") {
|
|
50
|
+
args.useLlm = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return args;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Accept "1", "B-1", or "B1" and normalise to "B-<n>".
|
|
57
|
+
*/
|
|
58
|
+
export function normaliseBugId(raw) {
|
|
59
|
+
const m = raw.trim().match(/^B?-?(\d+)$/i);
|
|
60
|
+
if (!m || !m[1])
|
|
61
|
+
return raw;
|
|
62
|
+
return `B-${m[1]}`;
|
|
63
|
+
}
|
|
64
|
+
export async function recipeRegression(argv, cliVersion) {
|
|
65
|
+
const args = parseRecipeRegressionArgs(argv);
|
|
66
|
+
if (!args.bugId) {
|
|
67
|
+
console.error("slowcook recipe --regression: --bug <id> is required");
|
|
68
|
+
process.exit(64);
|
|
69
|
+
}
|
|
70
|
+
if (args.useLlm) {
|
|
71
|
+
console.error("slowcook recipe --regression --llm: alpha.3b not yet shipped; falling back to stub emitter.");
|
|
72
|
+
}
|
|
73
|
+
const profile = loadBugProfile(args.repoRoot, args.bugId);
|
|
74
|
+
const file = renderRegressionStub(profile, cliVersion);
|
|
75
|
+
if (args.dryRun) {
|
|
76
|
+
console.log(file.contents);
|
|
77
|
+
console.error(`\n(dry-run: would write ${file.path})`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const fullPath = join(args.repoRoot, file.path);
|
|
81
|
+
mkdirSync(join(args.repoRoot, "tests/regression"), { recursive: true });
|
|
82
|
+
writeFileSync(fullPath, file.contents, "utf8");
|
|
83
|
+
console.error(`Wrote ${file.path} (alpha.3a stub — uses expect.fail; sift / alpha.3b will replace with real assertions).`);
|
|
84
|
+
}
|
|
85
|
+
export function loadBugProfile(repoRoot, bugId) {
|
|
86
|
+
const path = join(repoRoot, ".brewing/bug-profiles", `${bugId}.yaml`);
|
|
87
|
+
if (!existsSync(path)) {
|
|
88
|
+
throw new Error(`bug profile not found: ${path}. Run 'slowcook investigate --issue <n>' first.`);
|
|
89
|
+
}
|
|
90
|
+
const raw = parseSimpleYaml(readFileSync(path, "utf8"));
|
|
91
|
+
const validation = validateBugProfile(raw);
|
|
92
|
+
if (!validation.ok) {
|
|
93
|
+
throw new Error(`bug profile at ${path} is invalid:\n ${validation.errors.join("\n ")}`);
|
|
94
|
+
}
|
|
95
|
+
return validation.profile;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build the stub regression test for a bug profile. Deterministic —
|
|
99
|
+
* same profile → same file. Sift overwrites with real assertions in
|
|
100
|
+
* alpha.4; alpha.3b will replace this stub emitter with an LLM-written
|
|
101
|
+
* real test.
|
|
102
|
+
*/
|
|
103
|
+
export function renderRegressionStub(profile, cliVersion) {
|
|
104
|
+
const slug = slugify(profile.title);
|
|
105
|
+
const path = `tests/regression/${profile.bug_id}-${slug}.test.ts`;
|
|
106
|
+
const lines = [];
|
|
107
|
+
lines.push(`// slowcook ${cliVersion} regression test — ${profile.bug_id}`);
|
|
108
|
+
lines.push(`//`);
|
|
109
|
+
lines.push(`// Bug profile: .brewing/bug-profiles/${profile.bug_id}.yaml`);
|
|
110
|
+
lines.push(`// Source issue: ${profile.source_issue}`);
|
|
111
|
+
lines.push(`// Failure locus: ${profile.failure_locus.file}${profile.failure_locus.line ? `:${profile.failure_locus.line}` : ""}`);
|
|
112
|
+
lines.push(`//`);
|
|
113
|
+
lines.push(`// alpha.3a stub: each \`it\` block calls expect.fail(...) so the`);
|
|
114
|
+
lines.push(`// test is red against current code. Sift (alpha.4) replaces the`);
|
|
115
|
+
lines.push(`// body with real assertions that exercise the regression. Once`);
|
|
116
|
+
lines.push(`// alpha.3b ships an LLM-backed emitter, this comment header goes`);
|
|
117
|
+
lines.push(`// away and the body is real from the start.`);
|
|
118
|
+
lines.push(``);
|
|
119
|
+
lines.push(`import { describe, it, expect } from "vitest";`);
|
|
120
|
+
lines.push(``);
|
|
121
|
+
lines.push(`describe(${jsonString(`${profile.bug_id} regression — ${profile.title}`)}, () => {`);
|
|
122
|
+
for (let i = 0; i < profile.regression_assertion.length; i++) {
|
|
123
|
+
const assertion = profile.regression_assertion[i] ?? "";
|
|
124
|
+
lines.push(` it(${jsonString(assertion)}, () => {`);
|
|
125
|
+
lines.push(` // Diagnosis: ${oneLine(profile.failure_locus.diagnosis)}`);
|
|
126
|
+
lines.push(` // Expected: ${oneLine(profile.expected[0] ?? "(not specified)")}`);
|
|
127
|
+
lines.push(` // alpha.3a stub — sift / alpha.3b replaces this body.`);
|
|
128
|
+
lines.push(` expect.fail(${jsonString(`Regression test stub for ${profile.bug_id}. See .brewing/bug-profiles/${profile.bug_id}.yaml. Sift will replace this body once it lands.`)});`);
|
|
129
|
+
lines.push(` });`);
|
|
130
|
+
if (i < profile.regression_assertion.length - 1)
|
|
131
|
+
lines.push(``);
|
|
132
|
+
}
|
|
133
|
+
lines.push(`});`);
|
|
134
|
+
lines.push(``);
|
|
135
|
+
return { path, contents: lines.join("\n") };
|
|
136
|
+
}
|
|
137
|
+
function slugify(s) {
|
|
138
|
+
return s
|
|
139
|
+
.toLowerCase()
|
|
140
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
141
|
+
.replace(/^-+|-+$/g, "")
|
|
142
|
+
.slice(0, 60);
|
|
143
|
+
}
|
|
144
|
+
function oneLine(s) {
|
|
145
|
+
return s.split("\n").join(" ").trim();
|
|
146
|
+
}
|
|
147
|
+
function jsonString(s) {
|
|
148
|
+
return JSON.stringify(s);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/recipe-regression/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/commands/testgen/agent.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAUlD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,GAAG,EAAE,OAAO,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,GACzG;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA8Q7E;AA6DD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;CACnB;AA0ED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8G5D;AA0ED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAwCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,WAA4B,GACjC,aAAa,CA+Ef;AAWD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAkCxE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAO9D;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,IAAI,GACT;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyC3C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,GACT;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/commands/testgen/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -862,12 +862,24 @@ export function buildSchemaPresenceTestContent(spec) {
|
|
|
862
862
|
` );\n` +
|
|
863
863
|
` if (colRe.test(m[1])) return true;\n` +
|
|
864
864
|
` }\n` +
|
|
865
|
-
` // 2. ALTER TABLE
|
|
866
|
-
`
|
|
867
|
-
`
|
|
865
|
+
` // 2. ALTER TABLE — multi-column form supported (0.12.11 fix):\n` +
|
|
866
|
+
` // alter table foo add column a int, add column b text;\n` +
|
|
867
|
+
` // First find every \`alter table <t> ... ;\` statement, then\n` +
|
|
868
|
+
` // check whether the add-column clause for our column appears\n` +
|
|
869
|
+
` // anywhere in the statement body.\n` +
|
|
870
|
+
` const alterStmtRe = new RegExp(\n` +
|
|
871
|
+
` \`alter\\\\s+table\\\\s+(?:only\\\\s+)?[\\"\\\`]?(?:public\\\\.)?\${t}[\\"\\\`]?\\\\s+([\\\\s\\\\S]*?);\`,\n` +
|
|
872
|
+
` "gi"\n` +
|
|
873
|
+
` );\n` +
|
|
874
|
+
` const addRe = new RegExp(\n` +
|
|
875
|
+
` \`add\\\\s+column\\\\s+(?:if\\\\s+not\\\\s+exists\\\\s+)?[\\"\\\`]?\${c}\\\\b\`,\n` +
|
|
868
876
|
` "i"\n` +
|
|
869
877
|
` );\n` +
|
|
870
|
-
`
|
|
878
|
+
` let stmt;\n` +
|
|
879
|
+
` while ((stmt = alterStmtRe.exec(sql)) !== null) {\n` +
|
|
880
|
+
` if (addRe.test(stmt[1])) return true;\n` +
|
|
881
|
+
` }\n` +
|
|
882
|
+
` return false;\n` +
|
|
871
883
|
` }\n` +
|
|
872
884
|
`\n` +
|
|
873
885
|
` function parseSelectColumns(colsStr: string): string[] {\n` +
|