@clemrig/factory 0.6.0 → 0.7.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 +61 -23
- package/dist/app/define.js +1 -1
- package/dist/app/define.js.map +1 -1
- package/dist/app/init.d.ts +1 -0
- package/dist/app/init.js +1 -0
- package/dist/app/init.js.map +1 -1
- package/dist/app/run.d.ts +2 -1
- package/dist/app/run.js +16 -4
- package/dist/app/run.js.map +1 -1
- package/dist/app/workflows/implement.d.ts +1 -1
- package/dist/app/workflows/implement.js +332 -132
- package/dist/app/workflows/implement.js.map +1 -1
- package/dist/app/workflows/issue-save.js +16 -14
- package/dist/app/workflows/issue-save.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.js +4 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/init.d.ts +3 -2
- package/dist/cli/init.js +10 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/run.js +1 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/domain/definition.d.ts +2 -0
- package/dist/domain/definition.js +1 -0
- package/dist/domain/definition.js.map +1 -1
- package/dist/domain/description.d.ts +51 -0
- package/dist/domain/description.js +78 -0
- package/dist/domain/description.js.map +1 -0
- package/dist/domain/plan.d.ts +2 -0
- package/dist/domain/plan.js +15 -0
- package/dist/domain/plan.js.map +1 -1
- package/dist/domain/pull-request.d.ts +42 -8
- package/dist/domain/pull-request.js +287 -24
- package/dist/domain/pull-request.js.map +1 -1
- package/dist/domain/review.d.ts +19 -11
- package/dist/domain/review.js +42 -21
- package/dist/domain/review.js.map +1 -1
- package/dist/domain/spec.js +12 -4
- package/dist/domain/spec.js.map +1 -1
- package/dist/domain/verification.d.ts +0 -2
- package/dist/domain/verification.js.map +1 -1
- package/dist/system/browser.d.ts +29 -0
- package/dist/system/browser.js +84 -0
- package/dist/system/browser.js.map +1 -0
- package/dist/system/checks.d.ts +5 -6
- package/dist/system/checks.js +3 -3
- package/dist/system/checks.js.map +1 -1
- package/dist/system/git.d.ts +9 -15
- package/dist/system/git.js +92 -100
- package/dist/system/git.js.map +1 -1
- package/dist/system/github.d.ts +15 -0
- package/dist/system/github.js +36 -2
- package/dist/system/github.js.map +1 -1
- package/dist/system/issues.d.ts +5 -2
- package/dist/system/issues.js +5 -3
- package/dist/system/issues.js.map +1 -1
- package/dist/system/run-files.d.ts +22 -2
- package/dist/system/run-files.js +78 -4
- package/dist/system/run-files.js.map +1 -1
- package/dist/system/templates.d.ts +3 -2
- package/dist/system/templates.js +8 -3
- package/dist/system/templates.js.map +1 -1
- package/package.json +3 -3
- package/prompts/implement/describe.md +74 -0
- package/prompts/implement/implement.md +25 -8
- package/prompts/implement/plan.md +35 -7
- package/prompts/implement/review.md +43 -16
- package/templates/init/factory.ts +23 -5
|
@@ -1,36 +1,299 @@
|
|
|
1
1
|
import { isBlocking, natureLabel, } from "./review.js";
|
|
2
2
|
import { seconds } from "./verification.js";
|
|
3
|
+
/** The first `gh` that attaches images to a pull request (`--attach`). */
|
|
4
|
+
export const minimumGhVersion = "2.99.0";
|
|
5
|
+
/** Why this `gh` cannot open the pull request, if it cannot. */
|
|
6
|
+
export function ghVersionProblem(version) {
|
|
7
|
+
const parts = (text) => text.split(".").map(Number);
|
|
8
|
+
const [major = 0, minor = 0, patch = 0] = parts(version);
|
|
9
|
+
const [needMajor = 0, needMinor = 0, needPatch = 0] = parts(minimumGhVersion);
|
|
10
|
+
const recent = major !== needMajor
|
|
11
|
+
? major > needMajor
|
|
12
|
+
: minor !== needMinor
|
|
13
|
+
? minor > needMinor
|
|
14
|
+
: patch >= needPatch;
|
|
15
|
+
return recent
|
|
16
|
+
? undefined
|
|
17
|
+
: `gh ${minimumGhVersion} or later is required to attach screenshots (found ${version}): upgrade gh`;
|
|
18
|
+
}
|
|
19
|
+
/** Below GitHub's limit for a pull request's body (65,536 characters), with room for the screenshots' links. */
|
|
20
|
+
export const maxBodyLength = 60_000;
|
|
21
|
+
/** Agent text on one line. */
|
|
22
|
+
function line(text) {
|
|
23
|
+
return text.replace(/\s*\n\s*/g, " ");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Text shown as prose, from the spec or an agent: nothing in it opens a code
|
|
27
|
+
* block or a comment, which would swallow the rest of the body.
|
|
28
|
+
*/
|
|
29
|
+
function inert(text) {
|
|
30
|
+
return text
|
|
31
|
+
.replaceAll("```", "\\`\\`\\`")
|
|
32
|
+
.replaceAll("~~~", "\\~\\~\\~")
|
|
33
|
+
.replaceAll("<!--", "<!--");
|
|
34
|
+
}
|
|
3
35
|
/** Agent text inside a table cell: one line, no column separator. */
|
|
4
36
|
function cell(text) {
|
|
5
|
-
return text
|
|
37
|
+
return inert(line(text)).replaceAll("|", "\\|");
|
|
6
38
|
}
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
39
|
+
/** A list item whose text may hold several lines. */
|
|
40
|
+
function item(text) {
|
|
41
|
+
return `- ${inert(text.trim()).replace(/\n/g, "\n ")}`;
|
|
42
|
+
}
|
|
43
|
+
/** Agent text as HTML, in a folded section's title. */
|
|
44
|
+
function html(text) {
|
|
45
|
+
return line(text)
|
|
46
|
+
.replaceAll("&", "&")
|
|
47
|
+
.replaceAll("<", "<")
|
|
48
|
+
.replaceAll(">", ">");
|
|
49
|
+
}
|
|
50
|
+
/** Agent text as an image's alternative text: one line, no bracket to end it. */
|
|
51
|
+
function alt(text) {
|
|
52
|
+
return line(text).replace(/[\\[\]]/g, "\\$&");
|
|
53
|
+
}
|
|
54
|
+
function plural(count, noun) {
|
|
55
|
+
return `${count} ${noun}${count === 1 ? "" : "s"}`;
|
|
56
|
+
}
|
|
57
|
+
/** Content folded under its title until the reader opens it. */
|
|
58
|
+
function folded(title, content) {
|
|
59
|
+
return `<details><summary>${title}</summary>\n\n${content}\n\n</details>`;
|
|
60
|
+
}
|
|
61
|
+
/** Above this many files, the review guide folds each group's list. */
|
|
62
|
+
const foldedFiles = 10;
|
|
63
|
+
/** A changed file with its added and removed lines, as the review guide lists it. */
|
|
64
|
+
function changedFile(file) {
|
|
65
|
+
const name = file.from
|
|
66
|
+
? `\`${file.from}\` → \`${file.path}\``
|
|
67
|
+
: `\`${file.path}\``;
|
|
68
|
+
return file.added === undefined || file.removed === undefined
|
|
69
|
+
? `${name} (binary)`
|
|
70
|
+
: `${name} (+${file.added} -${file.removed})`;
|
|
71
|
+
}
|
|
72
|
+
/** A review's finding, as the pull request lists it: where, what, and its nature. */
|
|
73
|
+
function finding({ nature, file, summary, }) {
|
|
74
|
+
const label = natureLabel(nature);
|
|
75
|
+
return item(`${file ? `\`${file}\` — ` : ""}${summary.trim()} _${label[0]?.toUpperCase()}${label.slice(1)}_`);
|
|
76
|
+
}
|
|
77
|
+
/** What the review still asks for, which the operator accepted to deliver. */
|
|
78
|
+
function openItems({ review, acceptedReview }) {
|
|
79
|
+
if (!acceptedReview)
|
|
80
|
+
return [];
|
|
81
|
+
return [
|
|
82
|
+
...review.criteria
|
|
83
|
+
.filter(({ status }) => status === "not_met")
|
|
84
|
+
.map(({ id, evidence }) => item(`${id} is not met — ${evidence.trim()}`)),
|
|
85
|
+
...review.findings.filter(({ nature }) => isBlocking(nature)).map(finding),
|
|
86
|
+
];
|
|
87
|
+
}
|
|
88
|
+
/** The criteria the last review found met. */
|
|
89
|
+
function metCriteria({ criteria, review }) {
|
|
90
|
+
return criteria.filter(({ id }) => review.criteria.find((criterion) => criterion.id === id)?.status ===
|
|
91
|
+
"met").length;
|
|
92
|
+
}
|
|
93
|
+
/** How the review ended, after how many rounds of changes. */
|
|
94
|
+
function rounds(facts) {
|
|
95
|
+
const after = facts.reviewRounds === 0
|
|
96
|
+
? "at the first review"
|
|
97
|
+
: `after ${plural(facts.reviewRounds, "round")} of changes`;
|
|
98
|
+
return openItems(facts).length > 0
|
|
99
|
+
? `Delivered by the operator ${after}`
|
|
100
|
+
: `Approved ${after}`;
|
|
101
|
+
}
|
|
102
|
+
/** The pull request at a glance: its scope, its danger, its proof and its review. */
|
|
103
|
+
function glance(facts) {
|
|
104
|
+
const { files, links, runId, description, checks, skippedChecks } = facts;
|
|
105
|
+
const sum = (key) => files.reduce((total, file) => total + (file[key] ?? 0), 0);
|
|
106
|
+
const { danger, screenshots } = description;
|
|
107
|
+
const open = openItems(facts).length;
|
|
108
|
+
const nonBlocking = facts.review.findings.filter(({ nature }) => !isBlocking(nature)).length;
|
|
109
|
+
const proof = [
|
|
110
|
+
`${metCriteria(facts)} / ${facts.criteria.length} criteria`,
|
|
111
|
+
...(checks.length > 0
|
|
112
|
+
? [`${checks.map(({ name }) => name).join(", ")} passed`]
|
|
113
|
+
: []),
|
|
114
|
+
...(skippedChecks.length > 0
|
|
115
|
+
? [`${skippedChecks.join(", ")} skipped`]
|
|
116
|
+
: []),
|
|
117
|
+
screenshots.length > 0
|
|
118
|
+
? plural(screenshots.length, "screenshot")
|
|
119
|
+
: "no screenshots",
|
|
120
|
+
];
|
|
121
|
+
const review = [
|
|
122
|
+
rounds(facts),
|
|
123
|
+
...(open > 0 ? [`${open} open`] : []),
|
|
124
|
+
...(nonBlocking > 0 ? [plural(nonBlocking, "non-blocking finding")] : []),
|
|
125
|
+
...(facts.resolved.length > 0
|
|
126
|
+
? [`${facts.resolved.length} fixed during review`]
|
|
127
|
+
: []),
|
|
128
|
+
...(facts.deviations.length > 0
|
|
129
|
+
? [`${plural(facts.deviations.length, "deviation")} from the plan`]
|
|
130
|
+
: []),
|
|
131
|
+
];
|
|
132
|
+
return [
|
|
133
|
+
`| **Scope** | ${plural(files.length, "file")}, +${sum("added")} −${sum("removed")} · [spec](${links.spec}) · [plan](${links.plan}) · run \`${runId}\` |`,
|
|
134
|
+
"|:--|:--|",
|
|
135
|
+
`| **Merge** | ${danger.door === "one_way" ? "**One-way door**" : "Two-way door"} · blast radius **${cell(danger.blastRadius)}** |`,
|
|
136
|
+
`| **Proof** | ${proof.join(" · ")} |`,
|
|
137
|
+
`| **Review** | ${review.join(" · ")} |`,
|
|
138
|
+
].join("\n");
|
|
139
|
+
}
|
|
140
|
+
/** A code block around `content`, its fence longer than any it holds. */
|
|
141
|
+
function codeBlock(kind, content) {
|
|
142
|
+
const longest = Math.max(0, ...[...content.matchAll(/`+/g)].map(([run]) => run.length));
|
|
143
|
+
const fence = "`".repeat(Math.max(3, longest + 1));
|
|
144
|
+
return `${fence}${kind}\n${content.trimEnd()}\n${fence}`;
|
|
145
|
+
}
|
|
146
|
+
function howItWorks({ visuals }) {
|
|
147
|
+
if (visuals.length === 0)
|
|
148
|
+
return "The change needs no diagram.";
|
|
149
|
+
return visuals
|
|
150
|
+
.map(({ caption, kind, content }) => `${inert(caption.trim())}\n\n${codeBlock(kind, content)}`)
|
|
151
|
+
.join("\n\n");
|
|
152
|
+
}
|
|
153
|
+
function mergeDanger({ danger }) {
|
|
154
|
+
const afterMerge = danger.afterMerge.length > 0
|
|
155
|
+
? danger.afterMerge
|
|
156
|
+
.map((action, index) => `${index + 1}. ${cell(action)}`)
|
|
157
|
+
.join("<br>")
|
|
158
|
+
: "Nothing.";
|
|
159
|
+
return [
|
|
160
|
+
`| **Door** | **${danger.door === "one_way" ? "One-way" : "Two-way"}.** ${cell(danger.reason)} |`,
|
|
161
|
+
"|:--|:--|",
|
|
162
|
+
`| **Blast radius** | **${cell(danger.blastRadius)}.** ${cell(danger.ramifications)} |`,
|
|
163
|
+
`| **Rollback** | ${cell(danger.rollback)} |`,
|
|
164
|
+
`| **After merge** | ${afterMerge} |`,
|
|
165
|
+
].join("\n");
|
|
166
|
+
}
|
|
167
|
+
function reviewGuide({ description, files }) {
|
|
168
|
+
const { start, groups } = description.guide;
|
|
169
|
+
const byPath = new Map(files.map((file) => [file.path, file]));
|
|
170
|
+
const listed = (paths) => paths.flatMap((path) => {
|
|
171
|
+
const file = byPath.get(path);
|
|
172
|
+
return file ? [`- ${changedFile(file)}`] : [];
|
|
14
173
|
});
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
174
|
+
const grouped = new Set(groups.flatMap((group) => group.files));
|
|
175
|
+
const others = files.filter(({ path }) => !grouped.has(path));
|
|
176
|
+
const sections = [
|
|
177
|
+
...groups.map(({ title, files: paths }, index) => ({
|
|
178
|
+
title: `${index + 1}. ${title.trim()}`,
|
|
179
|
+
lines: listed(paths),
|
|
180
|
+
})),
|
|
181
|
+
...(others.length > 0
|
|
182
|
+
? [
|
|
183
|
+
{
|
|
184
|
+
title: groups.length > 0 ? "Other files" : "Files",
|
|
185
|
+
lines: others.map((file) => `- ${changedFile(file)}`),
|
|
186
|
+
},
|
|
187
|
+
]
|
|
188
|
+
: []),
|
|
18
189
|
];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
190
|
+
// A large change shows its groups, each list folded.
|
|
191
|
+
const fold = files.length > foldedFiles;
|
|
192
|
+
return [
|
|
193
|
+
`Start with \`${start.file}\`: ${inert(start.why.trim())}`,
|
|
194
|
+
...sections.map(({ title, lines }) => fold
|
|
195
|
+
? folded(`<b>${html(title)}</b> · ${plural(lines.length, "file")}`, lines.join("\n"))
|
|
196
|
+
: `**${inert(line(title))}**\n${lines.join("\n")}`),
|
|
197
|
+
].join("\n\n");
|
|
198
|
+
}
|
|
199
|
+
function judgment(facts) {
|
|
200
|
+
const open = openItems(facts);
|
|
201
|
+
const findings = facts.review.findings
|
|
23
202
|
.filter(({ nature }) => !isBlocking(nature))
|
|
24
|
-
.map(
|
|
25
|
-
const
|
|
203
|
+
.map(finding);
|
|
204
|
+
const lists = [
|
|
205
|
+
["Open, accepted by the operator", open],
|
|
206
|
+
["Non-blocking findings", findings],
|
|
207
|
+
["Deviations from the plan", facts.deviations.map(item)],
|
|
208
|
+
];
|
|
209
|
+
const shown = lists
|
|
210
|
+
.filter(([, items]) => items.length > 0)
|
|
211
|
+
.map(([title, items]) => `**${title}**\n${items.join("\n")}`);
|
|
212
|
+
const fixed = facts.resolved.length > 0
|
|
213
|
+
? [
|
|
214
|
+
folded(`Fixed during the review rounds · ${facts.resolved.length}`, facts.resolved
|
|
215
|
+
.map(({ summary, evidence }) => item(`${summary.trim()} Proof: ${evidence.trim()}`))
|
|
216
|
+
.join("\n")),
|
|
217
|
+
]
|
|
218
|
+
: [];
|
|
219
|
+
const assumptions = facts.assumptions.length > 0
|
|
220
|
+
? [
|
|
221
|
+
folded(`The plan's ${plural(facts.assumptions.length, "assumption")}`, facts.assumptions.map(item).join("\n")),
|
|
222
|
+
]
|
|
223
|
+
: [];
|
|
224
|
+
const sections = [...shown, ...fixed, ...assumptions];
|
|
225
|
+
if (sections.length === 0)
|
|
226
|
+
return `${rounds(facts)}. No non-blocking finding, deviation from the plan or assumption.`;
|
|
227
|
+
const left = open.length > 0 ? ", with what it still asked for left open" : "";
|
|
228
|
+
return [`${rounds(facts)}${left}.`, ...sections].join("\n\n");
|
|
229
|
+
}
|
|
230
|
+
function screenshots({ description, screenshotsPending, }) {
|
|
231
|
+
const shots = description.screenshots;
|
|
232
|
+
if (shots.length === 0)
|
|
233
|
+
return `No screenshots: ${inert(description.noScreenshots?.trim() ?? "")}`;
|
|
234
|
+
if (screenshotsPending)
|
|
235
|
+
return `_Attaching ${plural(shots.length, "screenshot")}…_`;
|
|
236
|
+
return shots
|
|
237
|
+
.map(({ file, caption }) =>
|
|
238
|
+
// A backslash would escape the closing underscore. Each image is a
|
|
239
|
+
// paragraph of its own, as gh attached them in a real run; a line
|
|
240
|
+
// that starts with `\n\n_${line(caption).replaceAll("\\", "\\\\")}_`)
|
|
242
|
+
.join("\n\n");
|
|
243
|
+
}
|
|
244
|
+
function evidence(facts) {
|
|
245
|
+
const met = metCriteria(facts);
|
|
246
|
+
const total = facts.criteria.length;
|
|
247
|
+
const checks = [
|
|
248
|
+
...(facts.checks.length > 0
|
|
249
|
+
? [
|
|
250
|
+
`passed: ${facts.checks.map(({ name, command, durationMs }) => `${name} (\`${command.join(" ")}\`, ${seconds(durationMs)})`).join(", ")}`,
|
|
251
|
+
]
|
|
252
|
+
: []),
|
|
253
|
+
...(facts.skippedChecks.length > 0
|
|
254
|
+
? [
|
|
255
|
+
`skipped, no change matching their files: ${facts.skippedChecks.join(", ")}`,
|
|
256
|
+
]
|
|
257
|
+
: []),
|
|
258
|
+
];
|
|
259
|
+
const criteria = facts.criteria.map(({ id, text }) => {
|
|
260
|
+
const judged = facts.review.criteria.find((criterion) => criterion.id === id);
|
|
261
|
+
const unmet = judged?.status === "not_met" ? "Not met: " : "";
|
|
262
|
+
return `| ${cell(`${id}: ${text}`)} | ${cell(`${unmet}${judged?.evidence ?? ""}`)} |`;
|
|
263
|
+
});
|
|
264
|
+
return [
|
|
265
|
+
screenshots(facts),
|
|
266
|
+
`**${met} / ${total} ${total === 1 ? "criterion" : "criteria"} met**, checked by an independent review${met < total ? "; the others are open, accepted by the operator" : ""}.`,
|
|
267
|
+
`Checks ${checks.join("; ")}.`,
|
|
268
|
+
folded("Each criterion and the review's evidence", `| Criterion | Evidence |\n|---|---|\n${criteria.join("\n")}`),
|
|
269
|
+
].join("\n\n");
|
|
270
|
+
}
|
|
271
|
+
/** Everything needed to review the change without remembering its issue or opening the run. */
|
|
272
|
+
export function pullRequestBody(facts) {
|
|
273
|
+
const { description } = facts;
|
|
274
|
+
const { danger } = description;
|
|
275
|
+
const open = openItems(facts).length;
|
|
26
276
|
return `${[
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
277
|
+
...(open > 0
|
|
278
|
+
? [
|
|
279
|
+
`> [!WARNING]\n> **Delivered with ${plural(open, "open review finding")}**, accepted by the operator: see Needs your judgment.`,
|
|
280
|
+
]
|
|
281
|
+
: []),
|
|
282
|
+
...(danger.door === "one_way"
|
|
283
|
+
? [`> [!CAUTION]\n> **One-way door:** ${cell(danger.reason)}`]
|
|
284
|
+
: []),
|
|
285
|
+
glance(facts),
|
|
286
|
+
`## Why\n\n${inert(facts.objective.trim())}`,
|
|
287
|
+
`## What changes\n\n${description.changes.map(item).join("\n")}`,
|
|
288
|
+
`## How it works\n\n${howItWorks(description)}`,
|
|
289
|
+
`## Merge danger\n\n${mergeDanger(description)}`,
|
|
290
|
+
`## Review guide\n\n${reviewGuide(facts)}`,
|
|
291
|
+
`### Needs your judgment\n\n${judgment(facts)}`,
|
|
292
|
+
`## Evidence\n\n${evidence(facts)}`,
|
|
34
293
|
].join("\n\n")}\n`;
|
|
35
294
|
}
|
|
295
|
+
/** The danger of merging, as the terminal shows it once the pull request is open. */
|
|
296
|
+
export function mergeDangerLine({ danger }) {
|
|
297
|
+
return `Merge danger: ${danger.door === "one_way" ? "one-way" : "two-way"} door, blast radius ${danger.blastRadius}`;
|
|
298
|
+
}
|
|
36
299
|
//# sourceMappingURL=pull-request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-request.js","sourceRoot":"","sources":["../../src/domain/pull-request.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull-request.js","sourceRoot":"","sources":["../../src/domain/pull-request.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/review.d.ts
CHANGED
|
@@ -11,16 +11,6 @@ export declare const implementationOutput: z.ZodObject<{
|
|
|
11
11
|
}, z.core.$strict>;
|
|
12
12
|
export type Implementation = z.output<typeof implementationOutput>;
|
|
13
13
|
export declare function implementationProblem(implementation: Implementation, criteria: Criterion[]): string | undefined;
|
|
14
|
-
/**
|
|
15
|
-
* What a finding is. Its severity follows from it in code, never from the
|
|
16
|
-
* reviewer's own judgment: the first six block the change, the others do not.
|
|
17
|
-
*/
|
|
18
|
-
export declare const findingNatures: readonly ["incorrect_behavior", "data_loss", "outage", "security", "regression", "spec_violation", "weak_test", "maintainability", "documentation"];
|
|
19
|
-
export type FindingNature = (typeof findingNatures)[number];
|
|
20
|
-
/** Whether a finding of this nature blocks the change. */
|
|
21
|
-
export declare function isBlocking(nature: FindingNature): boolean;
|
|
22
|
-
/** A nature as people read it: `incorrect_behavior` is "incorrect behavior". */
|
|
23
|
-
export declare function natureLabel(nature: FindingNature): string;
|
|
24
14
|
/** Above this many lines of diff, a change is large: its reviewer reads the diff from a file and may split the review. */
|
|
25
15
|
export declare const largeChangeLines = 1500;
|
|
26
16
|
/** A changed file and its added and removed lines; none for a binary file. */
|
|
@@ -42,6 +32,16 @@ export type Changes = {
|
|
|
42
32
|
large: true;
|
|
43
33
|
diffFile: string;
|
|
44
34
|
});
|
|
35
|
+
/**
|
|
36
|
+
* What a finding is. Its severity follows from it in code, never from the
|
|
37
|
+
* reviewer's own judgment.
|
|
38
|
+
*/
|
|
39
|
+
export declare const findingNatures: readonly ["incorrect_behavior", "data_loss", "outage", "security", "regression", "spec_violation", "weak_test", "maintainability", "documentation"];
|
|
40
|
+
export type FindingNature = (typeof findingNatures)[number];
|
|
41
|
+
/** Whether a finding of this nature blocks the change. */
|
|
42
|
+
export declare function isBlocking(nature: FindingNature): boolean;
|
|
43
|
+
/** A nature as people read it: `incorrect_behavior` is "incorrect behavior". */
|
|
44
|
+
export declare function natureLabel(nature: FindingNature): string;
|
|
45
45
|
/** The reviewer's response: its approval follows from these facts alone. */
|
|
46
46
|
export declare const reviewOutput: z.ZodObject<{
|
|
47
47
|
criteria: z.ZodArray<z.ZodObject<{
|
|
@@ -67,8 +67,16 @@ export declare const reviewOutput: z.ZodObject<{
|
|
|
67
67
|
file: z.ZodOptional<z.ZodString>;
|
|
68
68
|
summary: z.ZodString;
|
|
69
69
|
}, z.core.$strict>>;
|
|
70
|
+
resolved: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
71
|
+
summary: z.ZodString;
|
|
72
|
+
evidence: z.ZodString;
|
|
73
|
+
}, z.core.$strict>>>;
|
|
70
74
|
}, z.core.$strict>;
|
|
71
75
|
export type Review = z.output<typeof reviewOutput>;
|
|
72
76
|
export declare function reviewProblem(review: Review, criteria: Criterion[]): string | undefined;
|
|
73
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* The correction sent to the implementing agent, or nothing when every
|
|
79
|
+
* criterion is met and nothing blocks. Once a round of changes is needed, the
|
|
80
|
+
* findings that do not block go with it, to fix when that is safe.
|
|
81
|
+
*/
|
|
74
82
|
export declare function reviewChanges(review: Review): string | undefined;
|
package/dist/domain/review.js
CHANGED
|
@@ -11,39 +11,35 @@ export const implementationOutput = z.strictObject({
|
|
|
11
11
|
export function implementationProblem(implementation, criteria) {
|
|
12
12
|
return citationProblem(implementation.criteria.map(({ id }) => id), criteria, true);
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export const findingNatures = [
|
|
14
|
+
/** Above this many lines of diff, a change is large: its reviewer reads the diff from a file and may split the review. */
|
|
15
|
+
export const largeChangeLines = 1500;
|
|
16
|
+
/** Natures of the findings that block the change. */
|
|
17
|
+
const blockingNatures = [
|
|
19
18
|
"incorrect_behavior",
|
|
20
19
|
"data_loss",
|
|
21
20
|
"outage",
|
|
22
21
|
"security",
|
|
23
22
|
"regression",
|
|
24
23
|
"spec_violation",
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* What a finding is. Its severity follows from it in code, never from the
|
|
27
|
+
* reviewer's own judgment.
|
|
28
|
+
*/
|
|
29
|
+
export const findingNatures = [
|
|
30
|
+
...blockingNatures,
|
|
25
31
|
"weak_test",
|
|
26
32
|
"maintainability",
|
|
27
33
|
"documentation",
|
|
28
34
|
];
|
|
29
|
-
const blockingNatures = new Set([
|
|
30
|
-
"incorrect_behavior",
|
|
31
|
-
"data_loss",
|
|
32
|
-
"outage",
|
|
33
|
-
"security",
|
|
34
|
-
"regression",
|
|
35
|
-
"spec_violation",
|
|
36
|
-
]);
|
|
37
35
|
/** Whether a finding of this nature blocks the change. */
|
|
38
36
|
export function isBlocking(nature) {
|
|
39
|
-
return blockingNatures.
|
|
37
|
+
return blockingNatures.some((blocking) => blocking === nature);
|
|
40
38
|
}
|
|
41
39
|
/** A nature as people read it: `incorrect_behavior` is "incorrect behavior". */
|
|
42
40
|
export function natureLabel(nature) {
|
|
43
41
|
return nature.replaceAll("_", " ");
|
|
44
42
|
}
|
|
45
|
-
/** Above this many lines of diff, a change is large: its reviewer reads the diff from a file and may split the review. */
|
|
46
|
-
export const largeChangeLines = 1500;
|
|
47
43
|
/** The reviewer's response: its approval follows from these facts alone. */
|
|
48
44
|
export const reviewOutput = z.strictObject({
|
|
49
45
|
criteria: z.array(z.strictObject({
|
|
@@ -57,22 +53,47 @@ export const reviewOutput = z.strictObject({
|
|
|
57
53
|
/** The trigger, then its consequence. */
|
|
58
54
|
summary: text,
|
|
59
55
|
})),
|
|
56
|
+
/**
|
|
57
|
+
* What the previous review asked for that the change now fixes, each with
|
|
58
|
+
* its proof; given when the reviewer received that review.
|
|
59
|
+
*/
|
|
60
|
+
resolved: z
|
|
61
|
+
.array(z.strictObject({ summary: text, evidence: text }))
|
|
62
|
+
.optional(),
|
|
60
63
|
});
|
|
61
64
|
export function reviewProblem(review, criteria) {
|
|
62
65
|
return citationProblem(review.criteria.map(({ id }) => id), criteria, true);
|
|
63
66
|
}
|
|
64
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* The correction sent to the implementing agent, or nothing when every
|
|
69
|
+
* criterion is met and nothing blocks. Once a round of changes is needed, the
|
|
70
|
+
* findings that do not block go with it, to fix when that is safe.
|
|
71
|
+
*/
|
|
65
72
|
export function reviewChanges(review) {
|
|
73
|
+
const where = (file) => (file ? ` (${file})` : "");
|
|
66
74
|
const changes = [
|
|
67
75
|
...review.criteria
|
|
68
76
|
.filter(({ status }) => status === "not_met")
|
|
69
77
|
.map(({ id, evidence }) => `- ${id} is not met: ${evidence}`),
|
|
70
78
|
...review.findings
|
|
71
79
|
.filter(({ nature }) => isBlocking(nature))
|
|
72
|
-
.map(({ nature, file, summary }) => `- Blocking, ${natureLabel(nature)}${
|
|
80
|
+
.map(({ nature, file, summary }) => `- Blocking, ${natureLabel(nature)}${where(file)}: ${summary}`),
|
|
73
81
|
];
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
82
|
+
if (changes.length === 0)
|
|
83
|
+
return undefined;
|
|
84
|
+
const minor = review.findings
|
|
85
|
+
.filter(({ nature }) => !isBlocking(nature))
|
|
86
|
+
.map(({ nature, file, summary }) => `- ${natureLabel(nature)}${where(file)}: ${summary}`);
|
|
87
|
+
return [
|
|
88
|
+
"The review requires changes:",
|
|
89
|
+
...changes,
|
|
90
|
+
...(minor.length > 0
|
|
91
|
+
? [
|
|
92
|
+
"",
|
|
93
|
+
"Fix these findings too when the fix is safe and stays within the spec; otherwise say why in your summary:",
|
|
94
|
+
...minor,
|
|
95
|
+
]
|
|
96
|
+
: []),
|
|
97
|
+
].join("\n");
|
|
77
98
|
}
|
|
78
99
|
//# sourceMappingURL=review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/domain/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAkB,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtC,yCAAyC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;IACjD,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;CAC1B,CAAC,CAAC;AAGH,MAAM,UAAU,qBAAqB,CACnC,cAA8B,EAC9B,QAAqB;IAErB,OAAO,eAAe,CACpB,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAC3C,QAAQ,EACR,IAAI,CACL,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/domain/review.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/spec.js
CHANGED
|
@@ -7,6 +7,11 @@ const sectionHeadings = [
|
|
|
7
7
|
"Constraints",
|
|
8
8
|
"Dependencies",
|
|
9
9
|
];
|
|
10
|
+
/** How to write the items of the sections that hold them, as their problems recall it. */
|
|
11
|
+
const itemFormats = {
|
|
12
|
+
"Acceptance criteria": 'write "- AC<n>: <criterion>"',
|
|
13
|
+
Dependencies: 'write "- <slug>" for each issue this one depends on, or None.',
|
|
14
|
+
};
|
|
10
15
|
/** Reads issue `slug`'s spec.md: a `# ` title, then exactly the six sections, in order. */
|
|
11
16
|
export function parseSpec(text, slug) {
|
|
12
17
|
const [first = "", ...lines] = text.trim().split(/\r?\n/);
|
|
@@ -63,7 +68,10 @@ function sectionProblems(headings) {
|
|
|
63
68
|
const problems = [
|
|
64
69
|
...[...new Set(unknown)].map((heading) => `Unknown section: ## ${heading}`),
|
|
65
70
|
...duplicate.map((heading) => `Duplicate section: ## ${heading}`),
|
|
66
|
-
...missing.map((heading) =>
|
|
71
|
+
...missing.map((heading) => {
|
|
72
|
+
const format = itemFormats[heading];
|
|
73
|
+
return `Missing section: ## ${heading}${format ? ` (${format})` : ""}`;
|
|
74
|
+
}),
|
|
67
75
|
];
|
|
68
76
|
if (problems.length === 0 &&
|
|
69
77
|
headings.join("\n") !== sectionHeadings.join("\n"))
|
|
@@ -97,7 +105,7 @@ function parseCriteria(lines) {
|
|
|
97
105
|
open.text = `${open.text} ${line.trim()}`.trim();
|
|
98
106
|
else {
|
|
99
107
|
close();
|
|
100
|
-
problems.push(`Acceptance criteria: unexpected line "${line.trim()}" (
|
|
108
|
+
problems.push(`Acceptance criteria: unexpected line "${line.trim()}" (${itemFormats["Acceptance criteria"]})`);
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
111
|
close();
|
|
@@ -113,11 +121,11 @@ function parseDependencies(lines, slug) {
|
|
|
113
121
|
for (const line of items) {
|
|
114
122
|
const dependency = /^- (.*)$/.exec(line)?.[1]?.trim();
|
|
115
123
|
if (dependency === undefined)
|
|
116
|
-
problems.push(`Dependencies: unexpected line "${line}" (
|
|
124
|
+
problems.push(`Dependencies: unexpected line "${line}" (${itemFormats.Dependencies})`);
|
|
117
125
|
else if (!isSlug(dependency))
|
|
118
126
|
problems.push(`Dependencies: "${dependency}" is not an issue slug`);
|
|
119
127
|
else if (dependency === slug)
|
|
120
|
-
problems.push(
|
|
128
|
+
problems.push("Dependencies: the issue cannot depend on itself");
|
|
121
129
|
else if (dependencies.includes(dependency))
|
|
122
130
|
problems.push(`Dependencies: ${dependency} is listed twice`);
|
|
123
131
|
else
|
package/dist/domain/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/domain/spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/domain/spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,6 @@ export interface CheckResult {
|
|
|
11
11
|
name: string;
|
|
12
12
|
command: string[];
|
|
13
13
|
durationMs: number;
|
|
14
|
-
/** Where the run kept what the check wrote, for the review. */
|
|
15
|
-
outputFile?: string;
|
|
16
14
|
}
|
|
17
15
|
/** The correction sent to the implementing agent: the failed check, its cause and the end of its output. */
|
|
18
16
|
export declare function failureFeedback(check: VerifyCommand, cause: string, output: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/domain/verification.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/domain/verification.ts"],"names":[],"mappings":"AAgBA,4GAA4G;AAC5G,MAAM,UAAU,eAAe,CAC7B,KAAoB,EACpB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,wBAAwB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,wBAAwB,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,OAAO,CAAC,UAAkB;IACxC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9C,CAAC"}
|