@clemrig/factory 0.18.3 → 0.19.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 +14 -18
- package/dist/app/factory.d.ts +2 -0
- package/dist/app/factory.js +5 -1
- package/dist/app/factory.js.map +1 -1
- package/dist/app/review.d.ts +16 -0
- package/dist/app/review.js +87 -0
- package/dist/app/review.js.map +1 -0
- package/dist/app/workflows/implement.js +3 -7
- package/dist/app/workflows/implement.js.map +1 -1
- package/dist/app/workflows/stages/deliver.d.ts +5 -4
- package/dist/app/workflows/stages/deliver.js +47 -53
- package/dist/app/workflows/stages/deliver.js.map +1 -1
- package/dist/app/workflows/stages/prepare.js +11 -7
- package/dist/app/workflows/stages/prepare.js.map +1 -1
- package/dist/app/workflows/stages/resume.js +0 -4
- package/dist/app/workflows/stages/resume.js.map +1 -1
- package/dist/app/workflows/stages/run.d.ts +1 -2
- package/dist/app/workflows/tidy.js +2 -3
- package/dist/app/workflows/tidy.js.map +1 -1
- package/dist/cli/ui.d.ts +4 -2
- package/dist/cli/ui.js +17 -5
- package/dist/cli/ui.js.map +1 -1
- package/dist/domain/board.d.ts +2 -0
- package/dist/domain/board.js +4 -1
- package/dist/domain/board.js.map +1 -1
- package/dist/domain/description.d.ts +57 -5
- package/dist/domain/description.js +133 -12
- package/dist/domain/description.js.map +1 -1
- package/dist/domain/diff.d.ts +8 -0
- package/dist/domain/diff.js +90 -0
- package/dist/domain/diff.js.map +1 -0
- package/dist/domain/pull-request.d.ts +9 -21
- package/dist/domain/pull-request.js +43 -228
- package/dist/domain/pull-request.js.map +1 -1
- package/dist/domain/review-page.d.ts +171 -0
- package/dist/domain/review-page.js +200 -0
- package/dist/domain/review-page.js.map +1 -0
- package/dist/system/environment.d.ts +6 -0
- package/dist/system/environment.js +19 -0
- package/dist/system/environment.js.map +1 -1
- package/dist/system/factory.d.ts +2 -0
- package/dist/system/factory.js +4 -0
- package/dist/system/factory.js.map +1 -1
- package/dist/system/git.d.ts +5 -1
- package/dist/system/git.js +19 -2
- package/dist/system/git.js.map +1 -1
- package/dist/system/github.d.ts +3 -12
- package/dist/system/github.js +7 -31
- package/dist/system/github.js.map +1 -1
- package/dist/system/run-files.d.ts +14 -0
- package/dist/system/run-files.js +51 -8
- package/dist/system/run-files.js.map +1 -1
- package/package.json +2 -2
- package/prompts/describe.md +36 -15
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const escapes = {
|
|
2
|
+
a: "\x07",
|
|
3
|
+
b: "\b",
|
|
4
|
+
t: "\t",
|
|
5
|
+
n: "\n",
|
|
6
|
+
v: "\v",
|
|
7
|
+
f: "\f",
|
|
8
|
+
r: "\r",
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* A name of a `---` or `+++` line, as Git writes it: followed by a tab when
|
|
12
|
+
* it has a space, quoted C style when it has special characters, its bytes
|
|
13
|
+
* outside ASCII in octal.
|
|
14
|
+
*/
|
|
15
|
+
function nameOf(written) {
|
|
16
|
+
const name = written.replace(/\t$/, "");
|
|
17
|
+
if (!name.startsWith('"'))
|
|
18
|
+
return name;
|
|
19
|
+
const bytes = [];
|
|
20
|
+
for (const [, octal, escaped, plain] of name
|
|
21
|
+
.slice(1, -1)
|
|
22
|
+
.matchAll(/\\([0-7]{3})|\\(.)|([^\\]+)/gs)) {
|
|
23
|
+
if (octal)
|
|
24
|
+
bytes.push(Number.parseInt(octal, 8));
|
|
25
|
+
else
|
|
26
|
+
bytes.push(...new TextEncoder().encode(escaped === undefined ? plain : (escapes[escaped] ?? escaped)));
|
|
27
|
+
}
|
|
28
|
+
return new TextDecoder().decode(new Uint8Array(bytes));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The lines of `path`'s hunks in a unified diff of several files, its names
|
|
32
|
+
* after `a/` and `b/`; `undefined` when the diff does not change it.
|
|
33
|
+
*/
|
|
34
|
+
function linesOf(diff, path) {
|
|
35
|
+
for (const section of diff.split(/^(?=diff --git )/m)) {
|
|
36
|
+
const lines = section.split("\n");
|
|
37
|
+
const start = lines.findIndex((line) => line.startsWith("@@ "));
|
|
38
|
+
const head = start === -1 ? lines : lines.slice(0, start);
|
|
39
|
+
const named = (marker) => {
|
|
40
|
+
const line = head.find((each) => each.startsWith(marker));
|
|
41
|
+
return line === undefined ? undefined : nameOf(line.slice(4));
|
|
42
|
+
};
|
|
43
|
+
const deleted = named("+++ ") === "/dev/null";
|
|
44
|
+
if (deleted ? named("--- ") !== `a/${path}` : named("+++ ") !== `b/${path}`)
|
|
45
|
+
continue;
|
|
46
|
+
const numbered = [];
|
|
47
|
+
let hunk = -1;
|
|
48
|
+
let next = 0;
|
|
49
|
+
for (const line of start === -1 ? [] : lines.slice(start)) {
|
|
50
|
+
const range = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(line);
|
|
51
|
+
if (range) {
|
|
52
|
+
hunk += 1;
|
|
53
|
+
next = Number(deleted ? range[1] : range[2]);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const mark = line[0];
|
|
57
|
+
// `` is no line of the file.
|
|
58
|
+
if (mark !== "+" && mark !== "-" && mark !== " ")
|
|
59
|
+
continue;
|
|
60
|
+
numbered.push({ mark, text: line.slice(1), hunk, number: next });
|
|
61
|
+
if (deleted ? mark !== "+" : mark !== "-")
|
|
62
|
+
next += 1;
|
|
63
|
+
}
|
|
64
|
+
return numbered;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The excerpt of `path`'s diff that shows lines `from` to `to` of its new
|
|
70
|
+
* version (of its old one, for a deleted file), with the lines removed just
|
|
71
|
+
* before each of them; each line keeps its mark, the common indentation
|
|
72
|
+
* removed, and `…` separates two hunks. `undefined` when it changes none of
|
|
73
|
+
* these lines.
|
|
74
|
+
*/
|
|
75
|
+
export function diffExcerpt(diff, path, from, to) {
|
|
76
|
+
const kept = (linesOf(diff, path) ?? []).filter(({ number }) => number >= from && number <= to);
|
|
77
|
+
if (!kept.some(({ mark }) => mark !== " "))
|
|
78
|
+
return undefined;
|
|
79
|
+
const indents = kept
|
|
80
|
+
.filter(({ text }) => text.trim() !== "")
|
|
81
|
+
.map(({ text }) => /^[ \t]*/.exec(text)?.[0].length ?? 0);
|
|
82
|
+
const indent = indents.length > 0 ? Math.min(...indents) : 0;
|
|
83
|
+
return kept
|
|
84
|
+
.flatMap(({ mark, text, hunk }, index) => [
|
|
85
|
+
...(index > 0 && kept[index - 1]?.hunk !== hunk ? [" …"] : []),
|
|
86
|
+
`${mark}${text.slice(indent).replaceAll("\t", " ")}`,
|
|
87
|
+
])
|
|
88
|
+
.join("\n");
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/domain/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
import type { Description } from "./description.js";
|
|
2
2
|
import { type ChangedFile, type Review } from "./review.js";
|
|
3
3
|
import type { Criterion } from "./spec.js";
|
|
4
|
-
import {
|
|
5
|
-
/** The first `gh` that attaches images to a pull request (`--attach`). */
|
|
6
|
-
export declare const minimumGhVersion = "2.99.0";
|
|
7
|
-
/** Why this `gh` cannot open the pull request, if it cannot. */
|
|
8
|
-
export declare function ghVersionProblem(version: string): string | undefined;
|
|
9
|
-
/** Below GitHub's limit for a pull request's body (65,536 characters), with room for the screenshots' links. */
|
|
10
|
-
export declare const maxBodyLength = 60000;
|
|
4
|
+
import type { CheckResult } from "./verification.js";
|
|
11
5
|
export interface PullRequestFacts {
|
|
12
|
-
/** The spec's Objective: why the change exists. */
|
|
13
|
-
objective: string;
|
|
14
6
|
criteria: Criterion[];
|
|
15
7
|
/** Where the implementation departs from the plan, and why. */
|
|
16
8
|
deviations: string[];
|
|
17
|
-
/** The plan's reading of the spec where it reads more than one way: to confirm before merging. */
|
|
18
|
-
interpretations: string[];
|
|
19
|
-
/** What the plan assumed: its risks. */
|
|
20
|
-
assumptions: string[];
|
|
21
9
|
review: Review;
|
|
22
10
|
/**
|
|
23
11
|
* Whether the operator delivered the change as the review left it: its
|
|
@@ -37,21 +25,21 @@ export interface PullRequestFacts {
|
|
|
37
25
|
/** The change's files, since the plan's commit. */
|
|
38
26
|
files: ChangedFile[];
|
|
39
27
|
description: Description;
|
|
40
|
-
/**
|
|
41
|
-
* Whether the screenshots are still to attach. Once attached, the body names
|
|
42
|
-
* each by its file, which gh replaces with its upload's link.
|
|
43
|
-
*/
|
|
44
|
-
screenshotsPending: boolean;
|
|
45
28
|
/** Where a reader opens the spec and the plan, at the commits the run read and wrote them. */
|
|
46
29
|
links: {
|
|
47
30
|
spec: string;
|
|
48
31
|
plan: string;
|
|
49
32
|
};
|
|
50
33
|
runId: string;
|
|
34
|
+
/** The review page's address, when `factory ui` has one others can reach. */
|
|
35
|
+
reviewPage?: string;
|
|
51
36
|
}
|
|
52
|
-
/**
|
|
37
|
+
/** The review page's address, relative to where `factory ui` serves. */
|
|
38
|
+
export declare function reviewPath(runId: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* The pull request's body: what it risks and proves at a glance, and the
|
|
41
|
+
* link to its review page, which shows everything else from the run.
|
|
42
|
+
*/
|
|
53
43
|
export declare function pullRequestBody(facts: PullRequestFacts): string;
|
|
54
|
-
/** How many readings of the spec the plan chose, as the terminal shows them once the pull request is open. */
|
|
55
|
-
export declare function interpretationsLine(count: number): string;
|
|
56
44
|
/** The danger of merging, as the terminal shows it once the pull request is open. */
|
|
57
45
|
export declare function mergeDangerLine({ danger }: Description): string;
|
|
@@ -1,89 +1,20 @@
|
|
|
1
|
-
import { isBlocking
|
|
2
|
-
|
|
3
|
-
|
|
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) {
|
|
1
|
+
import { isBlocking } from "./review.js";
|
|
2
|
+
/** Agent text on one line, in a table cell: no column separator. */
|
|
3
|
+
function cell(text) {
|
|
30
4
|
return text
|
|
31
|
-
.
|
|
32
|
-
.replaceAll("
|
|
5
|
+
.replace(/\s*\n\s*/g, " ")
|
|
6
|
+
.replaceAll("|", "\\|")
|
|
33
7
|
.replaceAll("<!--", "<!--");
|
|
34
8
|
}
|
|
35
|
-
/** Agent text inside a table cell: one line, no column separator. */
|
|
36
|
-
function cell(text) {
|
|
37
|
-
return inert(line(text)).replaceAll("|", "\\|");
|
|
38
|
-
}
|
|
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
9
|
function plural(count, noun) {
|
|
55
10
|
return `${count} ${noun}${count === 1 ? "" : "s"}`;
|
|
56
11
|
}
|
|
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
12
|
/** What the review still asks for, which the operator accepted to deliver. */
|
|
78
|
-
function
|
|
13
|
+
function openCount({ review, acceptedReview }) {
|
|
79
14
|
if (!acceptedReview)
|
|
80
|
-
return
|
|
81
|
-
return
|
|
82
|
-
|
|
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
|
-
];
|
|
15
|
+
return 0;
|
|
16
|
+
return (review.criteria.filter(({ status }) => status === "not_met").length +
|
|
17
|
+
review.findings.filter(({ nature }) => isBlocking(nature)).length);
|
|
87
18
|
}
|
|
88
19
|
/** The criteria the last review found met. */
|
|
89
20
|
function metCriteria({ criteria, review }) {
|
|
@@ -95,7 +26,7 @@ function rounds(facts) {
|
|
|
95
26
|
const after = facts.reviewRounds === 0
|
|
96
27
|
? "at the first review"
|
|
97
28
|
: `after ${plural(facts.reviewRounds, "round")} of changes`;
|
|
98
|
-
return
|
|
29
|
+
return openCount(facts) > 0
|
|
99
30
|
? `Delivered by the operator ${after}`
|
|
100
31
|
: `Approved ${after}`;
|
|
101
32
|
}
|
|
@@ -104,7 +35,7 @@ function glance(facts) {
|
|
|
104
35
|
const { files, links, runId, description, checks, skippedChecks } = facts;
|
|
105
36
|
const sum = (key) => files.reduce((total, file) => total + (file[key] ?? 0), 0);
|
|
106
37
|
const { danger, screenshots } = description;
|
|
107
|
-
const open =
|
|
38
|
+
const open = openCount(facts);
|
|
108
39
|
const nonBlocking = facts.review.findings.filter(({ nature }) => !isBlocking(nature)).length;
|
|
109
40
|
const proof = [
|
|
110
41
|
`${metCriteria(facts)} / ${facts.criteria.length} criteria`,
|
|
@@ -137,171 +68,55 @@ function glance(facts) {
|
|
|
137
68
|
`| **Review** | ${review.join(" · ")} |`,
|
|
138
69
|
].join("\n");
|
|
139
70
|
}
|
|
140
|
-
/**
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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)}`] : [];
|
|
173
|
-
});
|
|
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
|
-
]
|
|
71
|
+
/**
|
|
72
|
+
* What the reader answers on the review page: the describer's decisions, one
|
|
73
|
+
* on what the review left, one on what the operator delivered open, and the
|
|
74
|
+
* checks to do by hand.
|
|
75
|
+
*/
|
|
76
|
+
function toAnswer(facts) {
|
|
77
|
+
const { decisions, manualChecks } = facts.description;
|
|
78
|
+
const count = decisions.length +
|
|
79
|
+
(facts.review.findings.some(({ nature }) => !isBlocking(nature)) ? 1 : 0) +
|
|
80
|
+
(openCount(facts) > 0 ? 1 : 0);
|
|
81
|
+
const items = [
|
|
82
|
+
...(count > 0 ? [plural(count, "decision")] : []),
|
|
83
|
+
...(manualChecks.length > 0
|
|
84
|
+
? [`${plural(manualChecks.length, "check")} to do yourself`]
|
|
188
85
|
: []),
|
|
189
86
|
];
|
|
190
|
-
|
|
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");
|
|
87
|
+
return items.length > 0 ? items.join(" and ") : "nothing to decide";
|
|
198
88
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
.
|
|
204
|
-
|
|
205
|
-
["Spec interpretations to confirm", facts.interpretations.map(item)],
|
|
206
|
-
["Open, accepted by the operator", open],
|
|
207
|
-
["Non-blocking findings", findings],
|
|
208
|
-
["Deviations from the plan", facts.deviations.map(item)],
|
|
209
|
-
];
|
|
210
|
-
const shown = lists
|
|
211
|
-
.filter(([, items]) => items.length > 0)
|
|
212
|
-
.map(([title, items]) => `**${title}**\n${items.join("\n")}`);
|
|
213
|
-
const fixed = facts.resolved.length > 0
|
|
214
|
-
? [
|
|
215
|
-
folded(`Resolved during the review rounds · ${facts.resolved.length}`, facts.resolved
|
|
216
|
-
.map(({ summary, evidence }) => item(`${summary.trim()} Proof: ${evidence.trim()}`))
|
|
217
|
-
.join("\n")),
|
|
218
|
-
]
|
|
219
|
-
: [];
|
|
220
|
-
const assumptions = facts.assumptions.length > 0
|
|
221
|
-
? [
|
|
222
|
-
folded(`The plan's ${plural(facts.assumptions.length, "assumption")}`, facts.assumptions.map(item).join("\n")),
|
|
223
|
-
]
|
|
224
|
-
: [];
|
|
225
|
-
const sections = [...shown, ...fixed, ...assumptions];
|
|
226
|
-
if (sections.length === 0)
|
|
227
|
-
return `${rounds(facts)}. No spec interpretation, non-blocking finding, deviation from the plan or assumption.`;
|
|
228
|
-
const left = open.length > 0 ? ", with what it still asked for left open" : "";
|
|
229
|
-
return [`${rounds(facts)}${left}.`, ...sections].join("\n\n");
|
|
89
|
+
/** Where to review the change: its page, from the run's data. */
|
|
90
|
+
function reviewLink(facts) {
|
|
91
|
+
const path = reviewPath(facts.runId);
|
|
92
|
+
return facts.reviewPage
|
|
93
|
+
? `**[Review this change](${facts.reviewPage})**: ${toAnswer(facts)}.`
|
|
94
|
+
: `**Review this change** on its page, ${toAnswer(facts)}: run \`factory ui\` where the run ran, and open \`${path}\`.`;
|
|
230
95
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
return `No screenshots: ${inert(description.noScreenshots?.trim() ?? "")}`;
|
|
235
|
-
if (screenshotsPending)
|
|
236
|
-
return `_Attaching ${plural(shots.length, "screenshot")}…_`;
|
|
237
|
-
return shots
|
|
238
|
-
.map(({ file, caption }) =>
|
|
239
|
-
// A backslash would escape the closing underscore. Each image is a
|
|
240
|
-
// paragraph of its own, as gh attached them in a real run; a line
|
|
241
|
-
// that starts with `\n\n_${line(caption).replaceAll("\\", "\\\\")}_`)
|
|
243
|
-
.join("\n\n");
|
|
96
|
+
/** The review page's address, relative to where `factory ui` serves. */
|
|
97
|
+
export function reviewPath(runId) {
|
|
98
|
+
return `/review?run=${encodeURIComponent(runId)}`;
|
|
244
99
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
...(facts.checks.length > 0
|
|
250
|
-
? [
|
|
251
|
-
`passed: ${facts.checks.map(({ name, command, durationMs }) => `${name} (\`${command.join(" ")}\`, ${seconds(durationMs)})`).join(", ")}`,
|
|
252
|
-
]
|
|
253
|
-
: []),
|
|
254
|
-
...(facts.skippedChecks.length > 0
|
|
255
|
-
? [
|
|
256
|
-
`skipped, no change matching their files: ${facts.skippedChecks.join(", ")}`,
|
|
257
|
-
]
|
|
258
|
-
: []),
|
|
259
|
-
];
|
|
260
|
-
const criteria = facts.criteria.map(({ id, text }) => {
|
|
261
|
-
const judged = facts.review.criteria.find((criterion) => criterion.id === id);
|
|
262
|
-
const unmet = judged?.status === "not_met" ? "Not met: " : "";
|
|
263
|
-
return `| ${cell(`${id}: ${text}`)} | ${cell(`${unmet}${judged?.evidence ?? ""}`)} |`;
|
|
264
|
-
});
|
|
265
|
-
return [
|
|
266
|
-
screenshots(facts),
|
|
267
|
-
`**${met} / ${total} ${total === 1 ? "criterion" : "criteria"} met**, checked by an independent review${met < total ? "; the others are open, accepted by the operator" : ""}.`,
|
|
268
|
-
`Checks ${checks.join("; ")}.`,
|
|
269
|
-
folded("Each criterion and the review's evidence", `| Criterion | Evidence |\n|---|---|\n${criteria.join("\n")}`),
|
|
270
|
-
].join("\n\n");
|
|
271
|
-
}
|
|
272
|
-
/** Everything needed to review the change without remembering its issue or opening the run. */
|
|
100
|
+
/**
|
|
101
|
+
* The pull request's body: what it risks and proves at a glance, and the
|
|
102
|
+
* link to its review page, which shows everything else from the run.
|
|
103
|
+
*/
|
|
273
104
|
export function pullRequestBody(facts) {
|
|
274
|
-
const {
|
|
275
|
-
const
|
|
276
|
-
const open = openItems(facts).length;
|
|
105
|
+
const { danger } = facts.description;
|
|
106
|
+
const open = openCount(facts);
|
|
277
107
|
return `${[
|
|
278
108
|
...(open > 0
|
|
279
109
|
? [
|
|
280
|
-
`> [!WARNING]\n> **Delivered with ${plural(open, "open review finding")}**, accepted by the operator
|
|
110
|
+
`> [!WARNING]\n> **Delivered with ${plural(open, "open review finding")}**, accepted by the operator.`,
|
|
281
111
|
]
|
|
282
112
|
: []),
|
|
283
113
|
...(danger.door === "one_way"
|
|
284
114
|
? [`> [!CAUTION]\n> **One-way door:** ${cell(danger.reason)}`]
|
|
285
115
|
: []),
|
|
286
|
-
|
|
287
|
-
? [
|
|
288
|
-
`> [!IMPORTANT]\n> **${plural(facts.interpretations.length, "spec interpretation")} to confirm**, chosen by the plan: see Needs your judgment.`,
|
|
289
|
-
]
|
|
290
|
-
: []),
|
|
116
|
+
reviewLink(facts),
|
|
291
117
|
glance(facts),
|
|
292
|
-
`## Why\n\n${inert(facts.objective.trim())}`,
|
|
293
|
-
`## What changes\n\n${description.changes.map(item).join("\n")}`,
|
|
294
|
-
`## How it works\n\n${howItWorks(description)}`,
|
|
295
|
-
`## Merge danger\n\n${mergeDanger(description)}`,
|
|
296
|
-
`## Review guide\n\n${reviewGuide(facts)}`,
|
|
297
|
-
`### Needs your judgment\n\n${judgment(facts)}`,
|
|
298
|
-
`## Evidence\n\n${evidence(facts)}`,
|
|
299
118
|
].join("\n\n")}\n`;
|
|
300
119
|
}
|
|
301
|
-
/** How many readings of the spec the plan chose, as the terminal shows them once the pull request is open. */
|
|
302
|
-
export function interpretationsLine(count) {
|
|
303
|
-
return `Spec interpretations to confirm: ${count}, in Needs your judgment`;
|
|
304
|
-
}
|
|
305
120
|
/** The danger of merging, as the terminal shows it once the pull request is open. */
|
|
306
121
|
export function mergeDangerLine({ danger }) {
|
|
307
122
|
return `Merge danger: ${danger.door === "one_way" ? "one-way" : "two-way"} door, blast radius ${danger.blastRadius}`;
|
|
@@ -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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"}
|