@clemrig/factory 0.20.0 → 0.21.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 +13 -12
- package/dist/app/prototype.d.ts +15 -0
- package/dist/app/prototype.js +65 -0
- package/dist/app/prototype.js.map +1 -0
- package/dist/app/review.js +3 -2
- package/dist/app/review.js.map +1 -1
- package/dist/app/spec-page.d.ts +15 -2
- package/dist/app/spec-page.js +45 -10
- package/dist/app/spec-page.js.map +1 -1
- package/dist/app/workflows/issue-save.js +63 -20
- package/dist/app/workflows/issue-save.js.map +1 -1
- package/dist/app/workflows/stages/agents.d.ts +5 -0
- package/dist/app/workflows/stages/agents.js +5 -0
- package/dist/app/workflows/stages/agents.js.map +1 -1
- package/dist/app/workflows/stages/deliver.js +11 -3
- package/dist/app/workflows/stages/deliver.js.map +1 -1
- package/dist/app/workflows/stages/implement.js +8 -2
- package/dist/app/workflows/stages/implement.js.map +1 -1
- package/dist/app/workflows/stages/plan.js +2 -0
- package/dist/app/workflows/stages/plan.js.map +1 -1
- package/dist/app/workflows/stages/prepare.js +15 -1
- package/dist/app/workflows/stages/prepare.js.map +1 -1
- package/dist/app/workflows/stages/review.js +9 -2
- package/dist/app/workflows/stages/review.js.map +1 -1
- package/dist/app/workflows/stages/run.d.ts +14 -1
- package/dist/app/workflows/stages/run.js.map +1 -1
- package/dist/cli/ui.js +3 -2
- package/dist/cli/ui.js.map +1 -1
- package/dist/domain/pull-request.d.ts +9 -2
- package/dist/domain/pull-request.js +12 -2
- package/dist/domain/pull-request.js.map +1 -1
- package/dist/domain/spec-page.d.ts +73 -17
- package/dist/domain/spec-page.js +93 -6
- package/dist/domain/spec-page.js.map +1 -1
- package/dist/domain/spec.d.ts +13 -1
- package/dist/domain/spec.js +60 -8
- package/dist/domain/spec.js.map +1 -1
- package/dist/domain/tidy.d.ts +2 -1
- package/dist/domain/tidy.js +5 -1
- package/dist/domain/tidy.js.map +1 -1
- package/dist/system/git.d.ts +4 -0
- package/dist/system/git.js +13 -0
- package/dist/system/git.js.map +1 -1
- package/dist/system/images.d.ts +16 -0
- package/dist/system/images.js +51 -0
- package/dist/system/images.js.map +1 -0
- package/dist/system/issues.d.ts +18 -1
- package/dist/system/issues.js +63 -3
- package/dist/system/issues.js.map +1 -1
- package/dist/system/run-files.d.ts +0 -8
- package/dist/system/run-files.js +1 -28
- package/dist/system/run-files.js.map +1 -1
- package/package.json +2 -2
- package/prompts/implement.md +11 -1
- package/prompts/plan.md +17 -6
- package/prompts/review.md +11 -4
- package/templates/skills/issue/SKILL.md +48 -18
package/dist/domain/spec-page.js
CHANGED
|
@@ -8,7 +8,16 @@ const id = z
|
|
|
8
8
|
const text = (max) => z.string().trim().min(1).max(max);
|
|
9
9
|
/** Above this size, a mockup is refused: a sketch of an interface fits well below it. */
|
|
10
10
|
export const maxMockupBytes = 256 * 1024;
|
|
11
|
-
|
|
11
|
+
/** Above this size, a capture is refused: a screen fits well below it, as JPEG or WebP above all. */
|
|
12
|
+
export const maxCaptureBytes = 2 * 1024 * 1024;
|
|
13
|
+
/** The images a capture may be, by media type, with the extension it is kept under. */
|
|
14
|
+
const captureExtensions = {
|
|
15
|
+
"image/png": "png",
|
|
16
|
+
"image/jpeg": "jpg",
|
|
17
|
+
"image/webp": "webp",
|
|
18
|
+
};
|
|
19
|
+
/** A sketch of an interface the agent draws: an HTML page, shown at `width` × `height` CSS pixels. */
|
|
20
|
+
const drawnMockup = z.strictObject({
|
|
12
21
|
caption: text(300),
|
|
13
22
|
html: z
|
|
14
23
|
.string()
|
|
@@ -17,6 +26,29 @@ const mockup = z.strictObject({
|
|
|
17
26
|
width: z.number().int().min(320).max(1600),
|
|
18
27
|
height: z.number().int().min(200).max(4000),
|
|
19
28
|
});
|
|
29
|
+
/**
|
|
30
|
+
* A capture of a screen the operator validated, its prototype's: in a draft,
|
|
31
|
+
* the path of an image file; as kept, its name in the issue's captures.
|
|
32
|
+
*/
|
|
33
|
+
const capturedMockup = z.strictObject({
|
|
34
|
+
caption: text(300),
|
|
35
|
+
image: text(4096),
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* A mockup, drawn or captured: one with `image` is a capture. Chosen by that
|
|
39
|
+
* key rather than as a union, so that a malformed mockup says what it lacks.
|
|
40
|
+
*/
|
|
41
|
+
const mockup = z.unknown().transform((value, context) => {
|
|
42
|
+
const schema = typeof value === "object" && value !== null && "image" in value
|
|
43
|
+
? capturedMockup
|
|
44
|
+
: drawnMockup;
|
|
45
|
+
const parsed = schema.safeParse(value);
|
|
46
|
+
if (parsed.success)
|
|
47
|
+
return parsed.data;
|
|
48
|
+
for (const { message, path } of parsed.error.issues)
|
|
49
|
+
context.addIssue({ code: "custom", message, path });
|
|
50
|
+
return z.NEVER;
|
|
51
|
+
});
|
|
20
52
|
/**
|
|
21
53
|
* How the agent that wrote a spec with the operator presents it, for the
|
|
22
54
|
* operator to validate it on the spec page: in plain words, in the spec's
|
|
@@ -59,10 +91,15 @@ export const specPresentation = z.strictObject({
|
|
|
59
91
|
.max(20),
|
|
60
92
|
outOfScope: z.array(text(500)).max(30),
|
|
61
93
|
});
|
|
62
|
-
/**
|
|
94
|
+
/** The name a capture is kept under in its issue's folder: after its change, with its image's extension. */
|
|
95
|
+
const keptCapture = /^change-[1-9]\d*\.(?:png|jpg|webp)$/;
|
|
96
|
+
/**
|
|
97
|
+
* What the factory keeps of a presented spec: the presentation, each capture
|
|
98
|
+
* named as kept, and the spec it presents, word for word.
|
|
99
|
+
*/
|
|
63
100
|
export const presentedSpec = z.strictObject({
|
|
64
101
|
spec: z.string(),
|
|
65
|
-
presentation: specPresentation,
|
|
102
|
+
presentation: specPresentation.refine((presentation) => capturesOf(presentation).every(({ image }) => keptCapture.test(image)), "A capture is kept as change-<n>.<png|jpg|webp>"),
|
|
66
103
|
});
|
|
67
104
|
/** What is wrong with a presentation of `spec`: criteria not presented once each, choices whose options do not hold. */
|
|
68
105
|
export function presentationProblems(presentation, spec) {
|
|
@@ -112,12 +149,50 @@ export function parsePresentation(draft, spec) {
|
|
|
112
149
|
? { ok: false, problems }
|
|
113
150
|
: { ok: true, value: parsed.data };
|
|
114
151
|
}
|
|
152
|
+
/** The changes whose mockup is a capture, by position, with its caption and the image it names. */
|
|
153
|
+
export function capturesOf(presentation) {
|
|
154
|
+
return presentation.changes.flatMap(({ mockup }, change) => mockup && "image" in mockup
|
|
155
|
+
? [{ change, caption: mockup.caption, image: mockup.image }]
|
|
156
|
+
: []);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* The captures of the screens the operator validated for `spec`: those of
|
|
160
|
+
* its presentation, none when the presentation shows another text of it.
|
|
161
|
+
*/
|
|
162
|
+
export function validatedCaptures({ spec: presented, presentation }, spec) {
|
|
163
|
+
return presented === spec
|
|
164
|
+
? capturesOf(presentation).map(({ caption, image }) => ({ caption, image }))
|
|
165
|
+
: [];
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The name the capture of change `change` (from 0) is kept under, from the
|
|
169
|
+
* media type of its image; `undefined` for an image no capture can be.
|
|
170
|
+
*/
|
|
171
|
+
export function captureName(change, type) {
|
|
172
|
+
const extension = captureExtensions[type];
|
|
173
|
+
return extension && `change-${change + 1}.${extension}`;
|
|
174
|
+
}
|
|
175
|
+
/** `presentation` with each capture named as kept, by the position of its change: each must have its name. */
|
|
176
|
+
export function namingCaptures(presentation, names) {
|
|
177
|
+
return {
|
|
178
|
+
...presentation,
|
|
179
|
+
changes: presentation.changes.map((change, index) => {
|
|
180
|
+
if (!change.mockup || !("image" in change.mockup))
|
|
181
|
+
return change;
|
|
182
|
+
const image = names.get(index);
|
|
183
|
+
if (image === undefined)
|
|
184
|
+
throw new Error(`The capture of change ${index + 1} has no name`);
|
|
185
|
+
return { ...change, mockup: { ...change.mockup, image } };
|
|
186
|
+
}),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
115
189
|
/**
|
|
116
190
|
* The page of issue `slug`'s presented spec, in the words of the spec it
|
|
117
191
|
* presents; stale when `current`, the spec now, says something else.
|
|
118
|
-
* `undefined` when the spec it presents no longer reads.
|
|
192
|
+
* `undefined` when the spec it presents no longer reads. `captureUrl` says
|
|
193
|
+
* where the page loads a capture.
|
|
119
194
|
*/
|
|
120
|
-
export function specPage(slug, { spec: text, presentation }, current) {
|
|
195
|
+
export function specPage(slug, { spec: text, presentation }, current, captureUrl) {
|
|
121
196
|
const parsed = parseSpec(text, slug);
|
|
122
197
|
if (!parsed.ok)
|
|
123
198
|
return undefined;
|
|
@@ -127,8 +202,20 @@ export function specPage(slug, { spec: text, presentation }, current) {
|
|
|
127
202
|
issue: slug,
|
|
128
203
|
title: spec.title,
|
|
129
204
|
stale: current !== text,
|
|
205
|
+
...(spec.prototype ? { prototype: spec.prototype } : {}),
|
|
130
206
|
need: presentation.need,
|
|
131
|
-
changes: presentation.changes,
|
|
207
|
+
changes: presentation.changes.map(({ mockup, ...change }) => !mockup
|
|
208
|
+
? change
|
|
209
|
+
: "image" in mockup
|
|
210
|
+
? {
|
|
211
|
+
...change,
|
|
212
|
+
mockup: {
|
|
213
|
+
kind: "captured",
|
|
214
|
+
caption: mockup.caption,
|
|
215
|
+
url: captureUrl(mockup.image),
|
|
216
|
+
},
|
|
217
|
+
}
|
|
218
|
+
: { ...change, mockup: { kind: "drawn", ...mockup } }),
|
|
132
219
|
decisions: presentation.decisions,
|
|
133
220
|
criteria: presentation.criteria.map((group) => ({
|
|
134
221
|
title: group.title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-page.js","sourceRoot":"","sources":["../../src/domain/spec-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"spec-page.js","sourceRoot":"","sources":["../../src/domain/spec-page.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/spec.d.ts
CHANGED
|
@@ -13,8 +13,20 @@ export interface Spec {
|
|
|
13
13
|
constraints: string;
|
|
14
14
|
/** The issues that must be delivered before this one starts, by slug. */
|
|
15
15
|
dependencies: string[];
|
|
16
|
+
/** The throwaway prototype the operator validated and the spec draws on, when there is one. */
|
|
17
|
+
prototype?: Prototype;
|
|
16
18
|
}
|
|
17
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* A prototype, as a spec names it: the commit the operator validated, on a
|
|
21
|
+
* branch of its own that origin keeps, never rewritten, until the issue is
|
|
22
|
+
* delivered.
|
|
23
|
+
*/
|
|
24
|
+
export interface Prototype {
|
|
25
|
+
branch: string;
|
|
26
|
+
/** Its full id: the version validated, whatever the branch becomes. */
|
|
27
|
+
commit: string;
|
|
28
|
+
}
|
|
29
|
+
/** Reads issue `slug`'s spec.md: a `# ` title, then exactly the six sections, in order, and its prototype's if it has one. */
|
|
18
30
|
export declare function parseSpec(text: string, slug: string): Parsed<Spec>;
|
|
19
31
|
export declare function specCommitMessage(slug: string): string;
|
|
20
32
|
/** What is wrong with the criteria a response cites: all of the spec's, no other, and each once if required. */
|
package/dist/domain/spec.js
CHANGED
|
@@ -7,12 +7,15 @@ const sectionHeadings = [
|
|
|
7
7
|
"Constraints",
|
|
8
8
|
"Dependencies",
|
|
9
9
|
];
|
|
10
|
+
/** The section a spec has only when it draws on a prototype: after the others. */
|
|
11
|
+
const prototypeHeading = "Prototype";
|
|
10
12
|
/** How to write the items of the sections that hold them, as their problems recall it. */
|
|
11
13
|
const itemFormats = {
|
|
12
14
|
"Acceptance criteria": 'write "- AC<n>: <criterion>"',
|
|
13
15
|
Dependencies: 'write "- <slug>" for each issue this one depends on, or None.',
|
|
16
|
+
[prototypeHeading]: 'write "- Branch: <branch>" then "- Commit: <full commit id>", or leave the section out',
|
|
14
17
|
};
|
|
15
|
-
/** Reads issue `slug`'s spec.md: a `# ` title, then exactly the six sections, in order. */
|
|
18
|
+
/** Reads issue `slug`'s spec.md: a `# ` title, then exactly the six sections, in order, and its prototype's if it has one. */
|
|
16
19
|
export function parseSpec(text, slug) {
|
|
17
20
|
const [first = "", ...lines] = text.trim().split(/\r?\n/);
|
|
18
21
|
const title = /^# (.*)$/.exec(first)?.[1]?.trim() ?? "";
|
|
@@ -33,17 +36,21 @@ export function parseSpec(text, slug) {
|
|
|
33
36
|
const body = (heading) => (sections.get(heading) ?? []).join("\n").trim();
|
|
34
37
|
const { criteria, problems: criteriaProblems } = parseCriteria(sections.get("Acceptance criteria") ?? []);
|
|
35
38
|
const { dependencies, problems: dependencyProblems } = parseDependencies(sections.get("Dependencies") ?? [], slug);
|
|
39
|
+
const { prototype, problems: prototypeProblems } = body(prototypeHeading)
|
|
40
|
+
? parsePrototype(sections.get(prototypeHeading) ?? [], slug)
|
|
41
|
+
: { problems: [] };
|
|
36
42
|
const problems = [
|
|
37
43
|
...(title ? [] : ["The first line must be a title: # <Title>"]),
|
|
38
44
|
...(preamble.join("").trim()
|
|
39
45
|
? ["Unexpected text before the first section"]
|
|
40
46
|
: []),
|
|
41
47
|
...sectionProblems(headings),
|
|
42
|
-
...sectionHeadings
|
|
48
|
+
...[...sectionHeadings, prototypeHeading]
|
|
43
49
|
.filter((heading) => sections.has(heading) && !body(heading))
|
|
44
50
|
.map((heading) => `Empty section: ## ${heading}`),
|
|
45
51
|
...criteriaProblems,
|
|
46
52
|
...dependencyProblems,
|
|
53
|
+
...prototypeProblems,
|
|
47
54
|
];
|
|
48
55
|
if (problems.length > 0)
|
|
49
56
|
return { ok: false, problems };
|
|
@@ -57,13 +64,15 @@ export function parseSpec(text, slug) {
|
|
|
57
64
|
criteria,
|
|
58
65
|
constraints: body("Constraints"),
|
|
59
66
|
dependencies,
|
|
67
|
+
...(prototype ? { prototype } : {}),
|
|
60
68
|
},
|
|
61
69
|
};
|
|
62
70
|
}
|
|
63
|
-
/** Exactly the expected headings, each once, in order. */
|
|
71
|
+
/** Exactly the expected headings, each once, in order, the prototype's last if there. */
|
|
64
72
|
function sectionProblems(headings) {
|
|
65
|
-
const
|
|
66
|
-
const
|
|
73
|
+
const known = [...sectionHeadings, prototypeHeading];
|
|
74
|
+
const unknown = headings.filter((heading) => !known.includes(heading));
|
|
75
|
+
const duplicate = known.filter((heading) => headings.indexOf(heading) !== headings.lastIndexOf(heading));
|
|
67
76
|
const missing = sectionHeadings.filter((heading) => !headings.includes(heading));
|
|
68
77
|
const problems = [
|
|
69
78
|
...[...new Set(unknown)].map((heading) => `Unknown section: ## ${heading}`),
|
|
@@ -73,9 +82,11 @@ function sectionProblems(headings) {
|
|
|
73
82
|
return `Missing section: ## ${heading}${format ? ` (${format})` : ""}`;
|
|
74
83
|
}),
|
|
75
84
|
];
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
const order = headings.includes(prototypeHeading)
|
|
86
|
+
? [...sectionHeadings, prototypeHeading]
|
|
87
|
+
: sectionHeadings;
|
|
88
|
+
if (problems.length === 0 && headings.join("\n") !== order.join("\n"))
|
|
89
|
+
problems.push(`Sections must appear in this order: ${sectionHeadings.join(", ")}, then ${prototypeHeading} if the spec draws on one`);
|
|
79
90
|
return problems;
|
|
80
91
|
}
|
|
81
92
|
/** `- AC<n>: <text>` items numbered from 1; an indented line continues the item above it. */
|
|
@@ -133,6 +144,47 @@ function parseDependencies(lines, slug) {
|
|
|
133
144
|
}
|
|
134
145
|
return { dependencies, problems };
|
|
135
146
|
}
|
|
147
|
+
/** A full commit id: SHA-1, or SHA-256 in a repository that uses it. */
|
|
148
|
+
const commitId = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
|
|
149
|
+
/** What no branch name holds, as markdown tempts to write one; Git judges the rest. */
|
|
150
|
+
const notBranch = /\s|`/;
|
|
151
|
+
/**
|
|
152
|
+
* `- Branch: <branch>` then `- Commit: <full commit id>`: the prototype the
|
|
153
|
+
* spec draws on. Its branch has a slash, as `prototype/<slug>`: no run takes
|
|
154
|
+
* such a branch, since an issue's is its slug and a cleanup's `tidy-<run>`.
|
|
155
|
+
*/
|
|
156
|
+
function parsePrototype(lines, slug) {
|
|
157
|
+
const items = lines.map((line) => line.trim()).filter(Boolean);
|
|
158
|
+
const labels = ["Branch", "Commit"];
|
|
159
|
+
const values = [];
|
|
160
|
+
const problems = [];
|
|
161
|
+
for (const line of items) {
|
|
162
|
+
const label = labels[values.length];
|
|
163
|
+
const value = label && new RegExp(`^- ${label}:(.*)$`).exec(line)?.[1];
|
|
164
|
+
if (value?.trim())
|
|
165
|
+
values.push(value.trim());
|
|
166
|
+
else
|
|
167
|
+
problems.push(`Prototype: unexpected line "${line}" (${itemFormats[prototypeHeading]})`);
|
|
168
|
+
}
|
|
169
|
+
if (problems.length > 0)
|
|
170
|
+
return { problems };
|
|
171
|
+
const [branch, commit] = values;
|
|
172
|
+
if (branch === undefined || commit === undefined)
|
|
173
|
+
return {
|
|
174
|
+
problems: [
|
|
175
|
+
`Prototype: missing ${labels[values.length]} (${itemFormats[prototypeHeading]})`,
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
if (notBranch.test(branch))
|
|
179
|
+
problems.push(`Prototype: "${branch}" is not a branch name: write the name alone`);
|
|
180
|
+
else if (!branch.includes("/"))
|
|
181
|
+
problems.push(`Prototype: ${branch} may be the branch of a run, which replaces it: keep the prototype on a branch named with a slash, such as prototype/${slug}`);
|
|
182
|
+
if (!commitId.test(commit))
|
|
183
|
+
problems.push(`Prototype: "${commit}" is not a full commit id: write the whole id of the commit the operator validated, as git rev-parse prints it`);
|
|
184
|
+
return problems.length > 0
|
|
185
|
+
? { problems }
|
|
186
|
+
: { prototype: { branch, commit }, problems };
|
|
187
|
+
}
|
|
136
188
|
export function specCommitMessage(slug) {
|
|
137
189
|
return `docs: spec ${slug}`;
|
|
138
190
|
}
|
package/dist/domain/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/domain/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/domain/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAiCpC,MAAM,eAAe,GAAG;IACtB,WAAW;IACX,OAAO;IACP,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,cAAc;CACf,CAAC;AAEF,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC,0FAA0F;AAC1F,MAAM,WAAW,GAAoC;IACnD,qBAAqB,EAAE,8BAA8B;IACrD,YAAY,EAAE,+DAA+D;IAC7E,CAAC,gBAAgB,CAAC,EAChB,wFAAwF;CAC3F,CAAC;AAEF,8HAA8H;AAC9H,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IAClD,MAAM,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzC,CAAC;YACJ,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAC/B,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAC5D,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAC1C,CAAC;IACF,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CACtE,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAClC,IAAI,CACL,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACvE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;QAC5D,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC;QAC/D,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;YAC1B,CAAC,CAAC,CAAC,0CAA0C,CAAC;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC5B,GAAG,CAAC,GAAG,eAAe,EAAE,gBAAgB,CAAC;aACtC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,OAAO,EAAE,CAAC;QACnD,GAAG,gBAAgB;QACnB,GAAG,kBAAkB;QACrB,GAAG,iBAAiB;KACrB,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;YAChC,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;YAChC,YAAY;YACZ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC;KACF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,KAAK,GAAG,CAAC,GAAG,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CACzE,CAAC;IACF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CACpC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzC,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,uBAAuB,OAAO,EAAE,CAAC;QAC3E,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,yBAAyB,OAAO,EAAE,CAAC;QACjE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,uBAAuB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzE,CAAC,CAAC;KACH,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/C,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,gBAAgB,CAAC;QACxC,CAAC,CAAC,eAAe,CAAC;IACpB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,QAAQ,CAAC,IAAI,CACX,uCAAuC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,gBAAgB,2BAA2B,CACvH,CAAC;IACJ,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6FAA6F;AAC7F,SAAS,aAAa,CAAC,KAAe;IAIpC,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,IAA2B,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;YACpC,MAAM,QAAQ,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,EAAE,KAAK,QAAQ;gBACjB,QAAQ,CAAC,IAAI,CAAC,iCAAiC,QAAQ,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1E,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;aAC9C,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,QAAQ,CAAC,IAAI,CACX,yCAAyC,IAAI,CAAC,IAAI,EAAE,MAAM,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,6FAA6F;AAC7F,SAAS,iBAAiB,CACxB,KAAe,EACf,IAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO;QAC5C,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACtD,IAAI,UAAU,KAAK,SAAS;YAC1B,QAAQ,CAAC,IAAI,CACX,kCAAkC,IAAI,MAAM,WAAW,CAAC,YAAY,GAAG,CACxE,CAAC;aACC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,kBAAkB,UAAU,wBAAwB,CAAC,CAAC;aACjE,IAAI,UAAU,KAAK,IAAI;YAC1B,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;aAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,UAAU,kBAAkB,CAAC,CAAC;;YAC1D,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,wEAAwE;AACxE,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AAEnD,uFAAuF;AACvF,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB;;;;GAIG;AACH,SAAS,cAAc,CACrB,KAAe,EACf,IAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,KAAK,EAAE,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;;YAE3C,QAAQ,CAAC,IAAI,CACX,+BAA+B,IAAI,MAAM,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAC1E,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAChC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAC9C,OAAO;YACL,QAAQ,EAAE;gBACR,sBAAsB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,gBAAgB,CAAC,GAAG;aACjF;SACF,CAAC;IACJ,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,CACX,eAAe,MAAM,8CAA8C,CACpE,CAAC;SACC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5B,QAAQ,CAAC,IAAI,CACX,cAAc,MAAM,wHAAwH,IAAI,EAAE,CACnJ,CAAC;IACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,CACX,eAAe,MAAM,gHAAgH,CACtI,CAAC;IACJ,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,EAAE,QAAQ,EAAE;QACd,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,cAAc,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,eAAe,CAC7B,KAAe,EACf,QAAiC,EACjC,IAAI,GAAG,KAAK;IAEZ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI;QACnB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC/C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
package/dist/domain/tidy.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ export type Choice = z.output<typeof choiceOutput>;
|
|
|
53
53
|
export type Cleanup = NonNullable<Choice["cleanup"]>;
|
|
54
54
|
/**
|
|
55
55
|
* The cleanup's spec, once its issue and spec have the formats of any issue's;
|
|
56
|
-
* a cleanup starts from the main branch alone, so it depends on no issue
|
|
56
|
+
* a cleanup starts from the main branch alone, so it depends on no issue,
|
|
57
|
+
* and nobody validated a prototype of it.
|
|
57
58
|
*/
|
|
58
59
|
export declare function cleanupSpec(cleanup: Cleanup, slug: string): Parsed<Spec>;
|
package/dist/domain/tidy.js
CHANGED
|
@@ -40,7 +40,8 @@ export const choiceOutput = z.strictObject({
|
|
|
40
40
|
});
|
|
41
41
|
/**
|
|
42
42
|
* The cleanup's spec, once its issue and spec have the formats of any issue's;
|
|
43
|
-
* a cleanup starts from the main branch alone, so it depends on no issue
|
|
43
|
+
* a cleanup starts from the main branch alone, so it depends on no issue,
|
|
44
|
+
* and nobody validated a prototype of it.
|
|
44
45
|
*/
|
|
45
46
|
export function cleanupSpec(cleanup, slug) {
|
|
46
47
|
const issue = parseIssue(cleanup.issue);
|
|
@@ -51,6 +52,9 @@ export function cleanupSpec(cleanup, slug) {
|
|
|
51
52
|
...(spec.ok && spec.value.dependencies.length > 0
|
|
52
53
|
? ["spec: a cleanup depends on no issue: write None. under Dependencies"]
|
|
53
54
|
: []),
|
|
55
|
+
...(spec.ok && spec.value.prototype
|
|
56
|
+
? ["spec: a cleanup draws on no prototype: leave the section out"]
|
|
57
|
+
: []),
|
|
54
58
|
];
|
|
55
59
|
return problems.length > 0 || !spec.ok ? { ok: false, problems } : spec;
|
|
56
60
|
}
|
package/dist/domain/tidy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tidy.js","sourceRoot":"","sources":["../../src/domain/tidy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,SAAS,EAAa,MAAM,WAAW,CAAC;AAEjD,qFAAqF;AACrF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B,6EAA6E;AAC7E,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAE7B,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAuBpC,0EAA0E;AAC1E,MAAM,UAAU,KAAK,CAAC,OAAuB;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,MAAM,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;SAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACzC,gGAAgG;IAChG,MAAM,EAAE,IAAI;IACZ,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAIH
|
|
1
|
+
{"version":3,"file":"tidy.js","sourceRoot":"","sources":["../../src/domain/tidy.ts"],"names":[],"mappings":"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"}
|
package/dist/system/git.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export declare function hasChanges(dir: string, path?: string, except?: string[]
|
|
|
16
16
|
export declare function fetchBranch(dir: string, branch: string): Promise<void>;
|
|
17
17
|
/** Whether Git still has this object. */
|
|
18
18
|
export declare function hasObject(dir: string, id: string): Promise<boolean>;
|
|
19
|
+
/** Whether Git takes `name` for a branch's: `git check-ref-format`, without expanding anything. */
|
|
20
|
+
export declare function isBranchName(dir: string, name: string): Promise<boolean>;
|
|
21
|
+
/** Whether `commit` is `ref`'s commit or one of its ancestors; a commit Git does not have is in no branch. */
|
|
22
|
+
export declare function isAncestor(dir: string, commit: string, ref: string): Promise<boolean>;
|
|
19
23
|
export declare function commitOf(dir: string, ref: string): Promise<string>;
|
|
20
24
|
/** Switches to a branch; `from` creates it at that commit, replacing a branch of that name. */
|
|
21
25
|
export declare function switchTo(dir: string, branch: string, from?: string): Promise<void>;
|
package/dist/system/git.js
CHANGED
|
@@ -70,6 +70,19 @@ export async function hasObject(dir, id) {
|
|
|
70
70
|
return ((await runProcess(["git", "cat-file", "-e", id], dir, 60_000)).exitCode ===
|
|
71
71
|
0);
|
|
72
72
|
}
|
|
73
|
+
/** Whether Git takes `name` for a branch's: `git check-ref-format`, without expanding anything. */
|
|
74
|
+
export async function isBranchName(dir, name) {
|
|
75
|
+
return ((await runProcess(["git", "check-ref-format", branchRef(name)], dir, 60_000)).exitCode === 0);
|
|
76
|
+
}
|
|
77
|
+
/** Whether `commit` is `ref`'s commit or one of its ancestors; a commit Git does not have is in no branch. */
|
|
78
|
+
export async function isAncestor(dir, commit, ref) {
|
|
79
|
+
const result = await runProcess(["git", "merge-base", "--is-ancestor", commit, ref], dir, 60_000);
|
|
80
|
+
if (result.exitCode === 0)
|
|
81
|
+
return true;
|
|
82
|
+
if (result.exitCode === 1 || !(await hasObject(dir, commit)))
|
|
83
|
+
return false;
|
|
84
|
+
throw new Error(`git merge-base --is-ancestor ${commit} ${ref} failed: ${result.stderr.trim()}`);
|
|
85
|
+
}
|
|
73
86
|
export function commitOf(dir, ref) {
|
|
74
87
|
return output(dir, ["rev-parse", ref]);
|
|
75
88
|
}
|
package/dist/system/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/system/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/system/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** An image file's bytes and media type. */
|
|
2
|
+
export interface Image {
|
|
3
|
+
body: Buffer;
|
|
4
|
+
type: string;
|
|
5
|
+
}
|
|
6
|
+
/** The media type of a PNG, JPEG, GIF or WebP image, from its first bytes; `undefined` for anything else. */
|
|
7
|
+
export declare function imageType(start: Buffer): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* The image at `path`, with its media type: `undefined` when it is no image
|
|
10
|
+
* file of its own there, a link included, or is over `maxBytes`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function readImage(path: string, maxBytes: number): Promise<Image | undefined>;
|
|
13
|
+
/** An image an agent hands over with a draft, by its absolute path; otherwise why it is none. */
|
|
14
|
+
export declare function readDraftImage(path: string, maxBytes: number): Promise<Image | string>;
|
|
15
|
+
/** Image `file` of `folder`, named alone: a path that leaves the folder reads nothing. */
|
|
16
|
+
export declare function readImageIn(folder: string, file: string, maxBytes: number): Promise<Image | undefined>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { lstat, readFile } from "node:fs/promises";
|
|
2
|
+
import { basename, isAbsolute, join } from "node:path";
|
|
3
|
+
/** The media type of a PNG, JPEG, GIF or WebP image, from its first bytes; `undefined` for anything else. */
|
|
4
|
+
export function imageType(start) {
|
|
5
|
+
const ascii = (from, to) => start.subarray(from, to).toString("latin1");
|
|
6
|
+
if (ascii(0, 8) === "\x89PNG\r\n\x1a\n")
|
|
7
|
+
return "image/png";
|
|
8
|
+
if (ascii(0, 3) === "\xff\xd8\xff")
|
|
9
|
+
return "image/jpeg";
|
|
10
|
+
if (ascii(0, 4) === "GIF8")
|
|
11
|
+
return "image/gif";
|
|
12
|
+
if (ascii(0, 4) === "RIFF" && ascii(8, 12) === "WEBP")
|
|
13
|
+
return "image/webp";
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
/** The image at `path`, with its media type, or why it is none: no file of its own there, a link included, or over `maxBytes`. */
|
|
17
|
+
async function inspectImage(path, maxBytes) {
|
|
18
|
+
const found = await lstat(path).catch(() => undefined);
|
|
19
|
+
if (!found)
|
|
20
|
+
return "does not exist";
|
|
21
|
+
if (found.isSymbolicLink())
|
|
22
|
+
return "is a link: give the image file itself";
|
|
23
|
+
if (!found.isFile())
|
|
24
|
+
return "is not a file";
|
|
25
|
+
if (found.size > maxBytes)
|
|
26
|
+
return `has ${found.size} bytes, over ${maxBytes / 1024 / 1024} MiB`;
|
|
27
|
+
const body = await readFile(path);
|
|
28
|
+
const type = imageType(body);
|
|
29
|
+
return type ? { body, type } : "is not a PNG, JPEG, GIF or WebP image";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The image at `path`, with its media type: `undefined` when it is no image
|
|
33
|
+
* file of its own there, a link included, or is over `maxBytes`.
|
|
34
|
+
*/
|
|
35
|
+
export async function readImage(path, maxBytes) {
|
|
36
|
+
const image = await inspectImage(path, maxBytes);
|
|
37
|
+
return typeof image === "string" ? undefined : image;
|
|
38
|
+
}
|
|
39
|
+
/** An image an agent hands over with a draft, by its absolute path; otherwise why it is none. */
|
|
40
|
+
export async function readDraftImage(path, maxBytes) {
|
|
41
|
+
return isAbsolute(path)
|
|
42
|
+
? inspectImage(path, maxBytes)
|
|
43
|
+
: "is not an absolute path";
|
|
44
|
+
}
|
|
45
|
+
/** Image `file` of `folder`, named alone: a path that leaves the folder reads nothing. */
|
|
46
|
+
export async function readImageIn(folder, file, maxBytes) {
|
|
47
|
+
if (basename(file) !== file)
|
|
48
|
+
return undefined;
|
|
49
|
+
return readImage(join(folder, file), maxBytes);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/system/images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQvD,6GAA6G;AAC7G,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,mBAAmB;QAAE,OAAO,WAAW,CAAC;IAC5D,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc;QAAE,OAAO,YAAY,CAAC;IACxD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC;IAC/C,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kIAAkI;AAClI,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,gBAAgB,CAAC;IACpC,IAAI,KAAK,CAAC,cAAc,EAAE;QAAE,OAAO,uCAAuC,CAAC;IAC3E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,eAAe,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ;QACvB,OAAO,OAAO,KAAK,CAAC,IAAI,gBAAgB,QAAQ,GAAG,IAAI,GAAG,IAAI,MAAM,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,QAAgB;IAEhB,OAAO,UAAU,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC9B,CAAC,CAAC,yBAAyB,CAAC;AAChC,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,QAAgB;IAEhB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/system/issues.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Image } from "./images.js";
|
|
1
2
|
/** An issue's files: a folder with none of them is not an issue. */
|
|
2
3
|
declare const artifactKinds: readonly ["issue", "spec", "plan"];
|
|
3
4
|
export type ArtifactKind = (typeof artifactKinds)[number];
|
|
@@ -30,7 +31,23 @@ export declare function readArtifact(repository: string, slug: string, kind: Art
|
|
|
30
31
|
export declare function readDraft(path: string): Promise<string>;
|
|
31
32
|
/** The issue's presented spec, as kept; nothing when its spec is not presented. */
|
|
32
33
|
export declare function readSpecPage(repository: string, slug: string): Promise<unknown | undefined>;
|
|
33
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Keeps the presentation of the issue's spec, `value`, and the captures it
|
|
36
|
+
* names, which replace the previous ones whole. Both are written apart, then
|
|
37
|
+
* renamed in: a failure leaves the previous presentation as it was, with
|
|
38
|
+
* nothing Git would see as a change in progress. Returns where they are.
|
|
39
|
+
*/
|
|
40
|
+
export declare function writeSpecPage(repository: string, slug: string, value: unknown, captures: {
|
|
41
|
+
name: string;
|
|
42
|
+
body: Uint8Array;
|
|
43
|
+
}[]): Promise<{
|
|
44
|
+
page: string;
|
|
45
|
+
captures?: string;
|
|
46
|
+
}>;
|
|
47
|
+
/** Where capture `file` of the issue's spec page is, absolute. */
|
|
48
|
+
export declare function specCapturePath(repository: string, slug: string, file: string): string;
|
|
49
|
+
/** Capture `file` of the issue's spec page; `undefined` when there is no such image. */
|
|
50
|
+
export declare function readSpecCapture(repository: string, slug: string, file: string, maxBytes: number): Promise<Image | undefined>;
|
|
34
51
|
/** Where the operator is in the issue's spec validation; nothing before the first answer. */
|
|
35
52
|
export declare function readSpecAnswers(repository: string, slug: string): Promise<unknown | undefined>;
|
|
36
53
|
export declare function keepSpecAnswers(repository: string, slug: string, answers: unknown): Promise<void>;
|