@clemrig/factory 0.8.0 → 0.9.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.
Files changed (78) hide show
  1. package/README.md +24 -8
  2. package/dist/app/board.js +44 -9
  3. package/dist/app/board.js.map +1 -1
  4. package/dist/app/define.d.ts +3 -3
  5. package/dist/app/define.js +15 -9
  6. package/dist/app/define.js.map +1 -1
  7. package/dist/app/run.d.ts +1 -1
  8. package/dist/app/run.js +4 -3
  9. package/dist/app/run.js.map +1 -1
  10. package/dist/app/workflows/implement.d.ts +1 -6
  11. package/dist/app/workflows/implement.js +40 -592
  12. package/dist/app/workflows/implement.js.map +1 -1
  13. package/dist/app/workflows/stages/agents.d.ts +34 -0
  14. package/dist/app/workflows/stages/agents.js +93 -0
  15. package/dist/app/workflows/stages/agents.js.map +1 -0
  16. package/dist/app/workflows/stages/choose.d.ts +13 -0
  17. package/dist/app/workflows/stages/choose.js +107 -0
  18. package/dist/app/workflows/stages/choose.js.map +1 -0
  19. package/dist/app/workflows/stages/deliver.d.ts +18 -0
  20. package/dist/app/workflows/stages/deliver.js +167 -0
  21. package/dist/app/workflows/stages/deliver.js.map +1 -0
  22. package/dist/app/workflows/stages/implement.d.ts +5 -0
  23. package/dist/app/workflows/stages/implement.js +42 -0
  24. package/dist/app/workflows/stages/implement.js.map +1 -0
  25. package/dist/app/workflows/stages/plan.d.ts +7 -0
  26. package/dist/app/workflows/stages/plan.js +34 -0
  27. package/dist/app/workflows/stages/plan.js.map +1 -0
  28. package/dist/app/workflows/stages/prepare.d.ts +14 -0
  29. package/dist/app/workflows/stages/prepare.js +195 -0
  30. package/dist/app/workflows/stages/prepare.js.map +1 -0
  31. package/dist/app/workflows/stages/resume.d.ts +7 -0
  32. package/dist/app/workflows/stages/resume.js +54 -0
  33. package/dist/app/workflows/stages/resume.js.map +1 -0
  34. package/dist/app/workflows/stages/review.d.ts +16 -0
  35. package/dist/app/workflows/stages/review.js +103 -0
  36. package/dist/app/workflows/stages/review.js.map +1 -0
  37. package/dist/app/workflows/stages/run.d.ts +60 -0
  38. package/dist/app/workflows/stages/run.js +16 -0
  39. package/dist/app/workflows/stages/run.js.map +1 -0
  40. package/dist/app/workflows/stages/verify.d.ts +11 -0
  41. package/dist/app/workflows/stages/verify.js +47 -0
  42. package/dist/app/workflows/stages/verify.js.map +1 -0
  43. package/dist/app/workflows/tidy.d.ts +7 -0
  44. package/dist/app/workflows/tidy.js +79 -0
  45. package/dist/app/workflows/tidy.js.map +1 -0
  46. package/dist/cli/help.d.ts +1 -1
  47. package/dist/cli/help.js +4 -3
  48. package/dist/cli/help.js.map +1 -1
  49. package/dist/domain/board.d.ts +18 -3
  50. package/dist/domain/board.js +24 -10
  51. package/dist/domain/board.js.map +1 -1
  52. package/dist/domain/definition.d.ts +6 -1
  53. package/dist/domain/definition.js +3 -0
  54. package/dist/domain/definition.js.map +1 -1
  55. package/dist/domain/plan.d.ts +1 -1
  56. package/dist/domain/plan.js +1 -1
  57. package/dist/domain/spec.d.ts +1 -0
  58. package/dist/domain/spec.js +3 -0
  59. package/dist/domain/spec.js.map +1 -1
  60. package/dist/domain/tidy.d.ts +58 -0
  61. package/dist/domain/tidy.js +57 -0
  62. package/dist/domain/tidy.js.map +1 -0
  63. package/dist/system/factory.js +4 -3
  64. package/dist/system/factory.js.map +1 -1
  65. package/dist/system/git.d.ts +16 -2
  66. package/dist/system/git.js +52 -3
  67. package/dist/system/git.js.map +1 -1
  68. package/dist/system/github.d.ts +14 -0
  69. package/dist/system/github.js +38 -0
  70. package/dist/system/github.js.map +1 -1
  71. package/dist/system/lock.js +1 -1
  72. package/dist/system/lock.js.map +1 -1
  73. package/package.json +2 -2
  74. package/prompts/scout.md +53 -0
  75. /package/prompts/{implement/describe.md → describe.md} +0 -0
  76. /package/prompts/{implement/implement.md → implement.md} +0 -0
  77. /package/prompts/{implement/plan.md → plan.md} +0 -0
  78. /package/prompts/{implement/review.md → review.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../src/app/workflows/implement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../src/app/workflows/implement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { RunState, Stage, StageContext } from "@clemrig/flow";
2
+ /** The agents' browser, in the request of the agents that may use it. */
3
+ export declare function browserContext(state: Readonly<RunState>): {
4
+ browser?: string;
5
+ };
6
+ /**
7
+ * Closes the agents' browser once an agent's call is over, failed or not:
8
+ * Playwright CLI keeps it open after the agent that opened it. Every session
9
+ * of the run's workspace is closed, those a stopped call left included.
10
+ */
11
+ export declare function closingBrowser<O extends string>(stage: Stage<O>): Stage<O>;
12
+ /** The agents work on the plan's commit, on the issue's branch: the run stops if one committed or switched branches. */
13
+ export declare function ensureOnPlanCommit({ dir, state }: StageContext, agentName: "implementing" | "reviewing" | "describing"): Promise<void>;
14
+ /** The agents that read the change without changing the repository: the review, then the description. */
15
+ export declare const readers: {
16
+ readonly review: {
17
+ readonly name: "review";
18
+ readonly agent: "reviewing";
19
+ readonly again: "Review the change again";
20
+ };
21
+ readonly describe: {
22
+ readonly name: "description";
23
+ readonly agent: "describing";
24
+ readonly again: "Describe the change again";
25
+ };
26
+ };
27
+ type Reader = (typeof readers)[keyof typeof readers];
28
+ /**
29
+ * An agent that may run commands but never change the repository. The tree
30
+ * it reads is put back before its call and after it, even when the call
31
+ * fails; what it changed makes it start again.
32
+ */
33
+ export declare function reading(reader: Reader, stage: Stage<"ok">): Stage<"ok" | "modified">;
34
+ export {};
@@ -0,0 +1,93 @@
1
+ import { closeBrowser } from "../../../system/browser.js";
2
+ import * as git from "../../../system/git.js";
3
+ import { facts, message } from "./run.js";
4
+ /** The agents' browser, in the request of the agents that may use it. */
5
+ export function browserContext(state) {
6
+ const { browser } = facts(state);
7
+ return browser ? { browser } : {};
8
+ }
9
+ /**
10
+ * Closes the agents' browser once an agent's call is over, failed or not:
11
+ * Playwright CLI keeps it open after the agent that opened it. Every session
12
+ * of the run's workspace is closed, those a stopped call left included.
13
+ */
14
+ export function closingBrowser(stage) {
15
+ return {
16
+ ...stage,
17
+ async run(context) {
18
+ try {
19
+ return await stage.run(context);
20
+ }
21
+ finally {
22
+ const { browser } = facts(context.state);
23
+ const problem = browser && (await closeBrowser(browser));
24
+ if (problem)
25
+ context.log(`Could not close the agents' browser: ${problem}`);
26
+ }
27
+ },
28
+ };
29
+ }
30
+ /** The agents work on the plan's commit, on the issue's branch: the run stops if one committed or switched branches. */
31
+ export async function ensureOnPlanCommit({ dir, state }, agentName) {
32
+ const { slug, planCommit } = facts(state);
33
+ if ((await git.commitOf(dir, "HEAD")) !== planCommit ||
34
+ (await git.currentBranch(dir)) !== slug)
35
+ throw new Error(`The ${agentName} agent committed or switched branches: the run stops`);
36
+ }
37
+ /** The agents that read the change without changing the repository: the review, then the description. */
38
+ export const readers = {
39
+ review: {
40
+ name: "review",
41
+ agent: "reviewing",
42
+ again: "Review the change again",
43
+ },
44
+ describe: {
45
+ name: "description",
46
+ agent: "describing",
47
+ again: "Describe the change again",
48
+ },
49
+ };
50
+ /** Puts back the tree the reader reads, as the diff stage recorded it; returns the paths it put back. */
51
+ async function putBackReviewedTree(context, reader) {
52
+ await ensureOnPlanCommit(context, reader.agent);
53
+ return git.putBack(context.dir, facts(context.state).reviewedTree);
54
+ }
55
+ /** The reader changed the repository, which the run put back: it starts again in a new conversation. */
56
+ function readerModified(log, reader, changed, why) {
57
+ const paths = changed.join(", ");
58
+ const after = why ? ` ${why}` : "";
59
+ log(`The ${reader.name} changed ${paths}${after}: put back`);
60
+ return {
61
+ outcome: "modified",
62
+ reason: `The ${reader.name} changed the repository (${paths})${after}: put back, the ${reader.name} starts again`,
63
+ feedback: `A previous ${reader.name} changed ${paths}; the run put them back as they were. ${reader.again}, without modifying anything in the repository.`,
64
+ };
65
+ }
66
+ /**
67
+ * An agent that may run commands but never change the repository. The tree
68
+ * it reads is put back before its call and after it, even when the call
69
+ * fails; what it changed makes it start again.
70
+ */
71
+ export function reading(reader, stage) {
72
+ return closingBrowser({
73
+ ...stage,
74
+ outcomes: ["ok", "modified"],
75
+ async run(context) {
76
+ // Left by a call that stopped before the run put it back: it counts
77
+ // as that call's change.
78
+ const left = await putBackReviewedTree(context, reader);
79
+ if (left.length > 0)
80
+ return readerModified(context.log, reader, left, "before the run could put it back");
81
+ const ended = await stage.run(context).then((result) => ({ result }), (error) => ({ error }));
82
+ const changed = await putBackReviewedTree(context, reader);
83
+ if (changed.length > 0)
84
+ return readerModified(context.log, reader, changed, "error" in ended
85
+ ? `and its call failed (${message(ended.error)})`
86
+ : undefined);
87
+ if ("error" in ended)
88
+ throw ended.error;
89
+ return ended.result;
90
+ },
91
+ });
92
+ }
93
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../../src/app/workflows/stages/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type AgentProfile, type RunState, type Stage } from "@clemrig/flow";
2
+ /** What the scout needs: recent code, the files of the open pull requests and the cleanups refused. */
3
+ export declare const survey: Stage<"ok">;
4
+ /** The scout: it explores recent code first, then the rest, and answers with the cleanup that comes first, or none. */
5
+ export declare function scout(profile: AgentProfile): Stage<"ok">;
6
+ /** The cleanup must have an issue's formats, and depend on no issue. */
7
+ export declare const judgeChoice: Stage<"chosen" | "invalid" | "nothing">;
8
+ /** Commits the cleanup's issue.md and spec.md on its branch: the spec the run delivers. */
9
+ export declare const commitSpec: Stage<"ok">;
10
+ /** No cleanup: the run goes back to the main branch and deletes its own, which holds nothing. */
11
+ export declare const release: Stage<"ok">;
12
+ /** A cleanup still waiting, none worth it, or the delivered one. */
13
+ export declare function tidyResult(state: Readonly<RunState>): string[];
@@ -0,0 +1,107 @@
1
+ import { agent, gate, pick, step, z, } from "@clemrig/flow";
2
+ import { specCommitMessage } from "../../../domain/spec.js";
3
+ import { choiceOutput, churn, cleanupSpec, isTidyBranch, maxRecentCommits, recentDays, tidySlug, } from "../../../domain/tidy.js";
4
+ import * as git from "../../../system/git.js";
5
+ import * as github from "../../../system/github.js";
6
+ import { artifactPath, writeArtifact } from "../../../system/issues.js";
7
+ import { deliveryResult } from "./deliver.js";
8
+ import { short } from "./run.js";
9
+ function choosing(state) {
10
+ return state.data;
11
+ }
12
+ /** What the scout needs: recent code, the files of the open pull requests and the cleanups refused. */
13
+ export const survey = step(async ({ dir, state, log }) => {
14
+ // Every cleanup's plan.md: the last one merged ends the code already tidied.
15
+ const last = await git.lastCommitTouching(dir, artifactPath(tidySlug("*"), "plan"));
16
+ const commits = await git.recentCommits(dir, last ? { after: last } : { days: recentDays }, maxRecentCommits);
17
+ const rejected = (await github.closedPullRequests(dir))
18
+ .filter(({ branch }) => isTidyBranch(branch))
19
+ .map(({ title }) => title);
20
+ const { openPullRequests } = choosing(state);
21
+ const since = last
22
+ ? `the last cleanup merged, ${short(last)}`
23
+ : `the last ${recentDays} days`;
24
+ log(`Recent code since ${since}: ${commits.length} commits; ${openPullRequests.length} open pull requests; ${rejected.length} cleanups closed`);
25
+ return {
26
+ survey: {
27
+ since,
28
+ commits,
29
+ files: churn(commits),
30
+ openPullRequests: openPullRequests.map(({ title, files }) => ({
31
+ title,
32
+ files,
33
+ })),
34
+ rejected,
35
+ },
36
+ };
37
+ });
38
+ /** The scout: it explores recent code first, then the rest, and answers with the cleanup that comes first, or none. */
39
+ export function scout(profile) {
40
+ return agent({ profile, schema: choiceOutput, context: pick("survey") });
41
+ }
42
+ /** The cleanup must have an issue's formats, and depend on no issue. */
43
+ export const judgeChoice = gate(["chosen", "nothing", "invalid"], async ({ state }) => {
44
+ const parsed = choiceOutput.safeParse(state.output);
45
+ if (!parsed.success)
46
+ return {
47
+ outcome: "invalid",
48
+ reason: `Invalid structured output:\n${z.prettifyError(parsed.error)}`,
49
+ };
50
+ const { reason, cleanup } = parsed.data;
51
+ if (!cleanup)
52
+ return {
53
+ outcome: "nothing",
54
+ reason: "Nothing worth a cleanup",
55
+ data: { nothingToTidy: reason },
56
+ };
57
+ const { slug } = choosing(state);
58
+ const spec = cleanupSpec(cleanup, slug);
59
+ if (!spec.ok)
60
+ return {
61
+ outcome: "invalid",
62
+ reason: [
63
+ "Invalid cleanup:",
64
+ ...spec.problems.map((problem) => `- ${problem}`),
65
+ ].join("\n"),
66
+ };
67
+ return {
68
+ outcome: "chosen",
69
+ reason: `Chose ${slug}: ${spec.value.title}`,
70
+ data: {
71
+ cleanup,
72
+ title: spec.value.title,
73
+ spec: cleanup.spec,
74
+ objective: spec.value.objective,
75
+ criteria: spec.value.criteria,
76
+ },
77
+ };
78
+ });
79
+ /** Commits the cleanup's issue.md and spec.md on its branch: the spec the run delivers. */
80
+ export const commitSpec = step(async ({ dir, state, log }) => {
81
+ const { slug, cleanup, specPath } = choosing(state);
82
+ await writeArtifact(dir, slug, "issue", `${cleanup.issue}\n`);
83
+ await writeArtifact(dir, slug, "spec", `${cleanup.spec}\n`);
84
+ const specCommit = await git.commit(dir, specCommitMessage(slug), [
85
+ artifactPath(slug, "issue"),
86
+ specPath,
87
+ ]);
88
+ log(`Committed issue.md and spec.md as ${short(specCommit)}`);
89
+ return { specCommit };
90
+ });
91
+ /** No cleanup: the run goes back to the main branch and deletes its own, which holds nothing. */
92
+ export const release = step(async ({ dir, state, log }) => {
93
+ const { slug, base } = choosing(state);
94
+ await git.switchTo(dir, base);
95
+ await git.deleteBranch(dir, slug);
96
+ log(`Back on ${base}, branch ${slug} deleted`);
97
+ });
98
+ /** A cleanup still waiting, none worth it, or the delivered one. */
99
+ export function tidyResult(state) {
100
+ const { waitingFor, nothingToTidy } = state.data;
101
+ if (typeof waitingFor === "string")
102
+ return [`A cleanup waits for the operator: ${waitingFor}`];
103
+ if (typeof nothingToTidy === "string")
104
+ return [`Nothing to tidy: ${nothingToTidy}`];
105
+ return deliveryResult(state);
106
+ }
107
+ //# sourceMappingURL=choose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choose.js","sourceRoot":"","sources":["../../../../src/app/workflows/stages/choose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type AgentProfile, type RunState, type Stage } from "@clemrig/flow";
2
+ /**
3
+ * The describing agent: once the change is approved, it explains it to a
4
+ * reader who forgot its issue, and takes its screenshots. It never reads the
5
+ * implementing agent's account of its own work.
6
+ */
7
+ export declare function describer(profile: AgentProfile): Stage<"ok" | "modified">;
8
+ /** Changed files only in the guide, distinct screenshots of their folder, a body GitHub accepts. */
9
+ export declare const judgeDescription: Stage<"invalid" | "ok">;
10
+ /**
11
+ * Commits the changes with the plan's subject, force-pushes the branch, opens
12
+ * or updates its pull request, then returns to the main branch.
13
+ */
14
+ export declare const deliver: Stage<"attach" | "done">;
15
+ /** Uploads the screenshots into the open pull request's body. */
16
+ export declare const attach: Stage<"ok">;
17
+ /** The delivered pull request, its review, checks and merge danger; nothing before it is open. */
18
+ export declare function deliveryResult(state: Readonly<RunState>): string[];
@@ -0,0 +1,167 @@
1
+ import { agent, code, gate, step, z, } from "@clemrig/flow";
2
+ import { descriptionOutput, descriptionProblems, maxScreenshotBytes, } from "../../../domain/description.js";
3
+ import { interpretationsLine, maxBodyLength, mergeDangerLine, pullRequestBody, } from "../../../domain/pull-request.js";
4
+ import * as git from "../../../system/git.js";
5
+ import * as github from "../../../system/github.js";
6
+ import { screenshotProblems } from "../../../system/run-files.js";
7
+ import { browserContext, readers, reading } from "./agents.js";
8
+ import { facts, message, reviewRounds, short, specCommitOf } from "./run.js";
9
+ /** One conversation for the description, a new one once it changed the repository. */
10
+ function describeSession(state) {
11
+ const restarts = state.retries?.["describe.modified"] ?? 0;
12
+ return `describe${restarts > 0 ? `-${restarts}` : ""}`;
13
+ }
14
+ /**
15
+ * The describing agent: once the change is approved, it explains it to a
16
+ * reader who forgot its issue, and takes its screenshots. It never reads the
17
+ * implementing agent's account of its own work.
18
+ */
19
+ export function describer(profile) {
20
+ return reading(readers.describe, agent({
21
+ profile,
22
+ schema: descriptionOutput,
23
+ session: describeSession,
24
+ context: ({ state }) => {
25
+ const f = facts(state);
26
+ return {
27
+ issue: f.slug,
28
+ spec: f.spec,
29
+ plan: f.plan,
30
+ changes: f.changes,
31
+ checks: f.checks,
32
+ review: f.review,
33
+ deviations: f.implementation.deviations,
34
+ repository: { public: f.repository.public },
35
+ screenshots: f.screenshotsDir,
36
+ ...browserContext(state),
37
+ };
38
+ },
39
+ }));
40
+ }
41
+ /** What the pull request shows, from the run's data; its screenshots `pending` until attached. */
42
+ function pullRequestFacts(state, description, pending) {
43
+ const f = facts(state);
44
+ return {
45
+ objective: f.objective,
46
+ criteria: f.criteria,
47
+ deviations: f.implementation.deviations,
48
+ interpretations: f.plan.interpretations,
49
+ assumptions: f.plan.risks,
50
+ review: f.review,
51
+ acceptedReview: f.acceptedReview === true,
52
+ reviewRounds: reviewRounds(state),
53
+ resolved: (f.reviews ?? []).flatMap(({ resolved = [] }) => resolved),
54
+ checks: f.checks,
55
+ skippedChecks: f.skippedChecks,
56
+ files: f.changes.files,
57
+ description,
58
+ screenshotsPending: pending,
59
+ links: {
60
+ spec: `${f.repository.url}/blob/${specCommitOf(f)}/${f.specPath}`,
61
+ plan: `${f.repository.url}/blob/${f.planCommit}/${f.planPath}`,
62
+ },
63
+ runId: state.id,
64
+ };
65
+ }
66
+ /** Changed files only in the guide, distinct screenshots of their folder, a body GitHub accepts. */
67
+ export const judgeDescription = gate(["ok", "invalid"], async ({ state }) => {
68
+ const parsed = descriptionOutput.safeParse(state.output);
69
+ if (!parsed.success)
70
+ return {
71
+ outcome: "invalid",
72
+ reason: `Invalid structured output:\n${z.prettifyError(parsed.error)}`,
73
+ };
74
+ const description = parsed.data;
75
+ const { changes, screenshotsDir } = facts(state);
76
+ const problems = [
77
+ ...descriptionProblems(description, changes.files),
78
+ ...(await screenshotProblems(screenshotsDir, description.screenshots.map(({ file }) => file), maxScreenshotBytes)),
79
+ ];
80
+ const length = pullRequestBody(pullRequestFacts(state, description, false)).length;
81
+ if (length > maxBodyLength)
82
+ problems.push(`The pull request's body would have ${length} characters, over ${maxBodyLength}: shorten the description`);
83
+ if (problems.length > 0)
84
+ return {
85
+ outcome: "invalid",
86
+ reason: [
87
+ "Invalid description:",
88
+ ...problems.map((problem) => `- ${problem}`),
89
+ ].join("\n"),
90
+ };
91
+ return {
92
+ outcome: "ok",
93
+ reason: "Structured output and invariants valid: description",
94
+ data: { description },
95
+ };
96
+ });
97
+ /**
98
+ * Commits the changes with the plan's subject, force-pushes the branch, opens
99
+ * or updates its pull request, then returns to the main branch.
100
+ */
101
+ export const deliver = code(["done", "attach"], async ({ dir, state, log }) => {
102
+ const { slug, base, plan, specPath, description } = facts(state);
103
+ const commit = await git.commit(dir, `${plan.commit}\n\nSpec: ${specPath}`);
104
+ log(`Committed "${plan.commit}" as ${short(commit)}`);
105
+ await git.forcePush(dir, slug);
106
+ log(`Pushed ${slug}, replacing any earlier version of the branch`);
107
+ // Its screenshots are attached once it is open: a failed upload leaves the
108
+ // pull request recorded, and resuming attaches them.
109
+ const attach = description.screenshots.length > 0;
110
+ const pullRequest = await github.openPullRequest(dir, {
111
+ base,
112
+ head: slug,
113
+ title: plan.commit,
114
+ body: pullRequestBody(pullRequestFacts(state, description, attach)),
115
+ });
116
+ log(`Pull request: ${pullRequest}`);
117
+ await git.switchTo(dir, base);
118
+ log(`Back on ${base}`);
119
+ return {
120
+ outcome: attach ? "attach" : "done",
121
+ reason: attach
122
+ ? "Pull request open, its screenshots to attach"
123
+ : "Pull request open",
124
+ data: { pullRequest },
125
+ };
126
+ });
127
+ /** Uploads the screenshots into the open pull request's body. */
128
+ export const attach = step(async ({ dir, state, log }) => {
129
+ const { pullRequest, description, screenshotsDir } = facts(state);
130
+ const files = description.screenshots.map(({ file }) => file);
131
+ try {
132
+ await github.attachImages(screenshotsDir, pullRequest, pullRequestBody(pullRequestFacts(state, description, false)), files);
133
+ }
134
+ catch (error) {
135
+ // gh writes the body even when only some uploads succeeded: the pull
136
+ // request says again that its screenshots are coming.
137
+ await github
138
+ .editBody(dir, pullRequest, pullRequestBody(pullRequestFacts(state, description, true)))
139
+ .catch((restore) => log(`Could not put back the pull request's body: ${message(restore)}`));
140
+ throw error;
141
+ }
142
+ log(`Attached ${files.length} screenshot${files.length === 1 ? "" : "s"} to ${pullRequest}`);
143
+ });
144
+ /** The delivered pull request, its review, checks and merge danger; nothing before it is open. */
145
+ export function deliveryResult(state) {
146
+ const { pullRequest, checks, description, acceptedReview, plan } = facts(state);
147
+ if (typeof pullRequest !== "string")
148
+ return [];
149
+ const rounds = reviewRounds(state);
150
+ const after = rounds === 0
151
+ ? "at the first review"
152
+ : `after ${rounds} round${rounds === 1 ? "" : "s"} of changes`;
153
+ return [
154
+ `Pull request: ${pullRequest}`,
155
+ acceptedReview
156
+ ? `Review: delivered by the operator with open findings ${after}`
157
+ : `Review: approved ${after}`,
158
+ `Checks passed: ${checks.map(({ name }) => name).join(", ")}`,
159
+ // Runs delivered by an earlier factory have no description, and their
160
+ // plans no interpretations.
161
+ ...(description ? [mergeDangerLine(description)] : []),
162
+ ...(plan?.interpretations?.length
163
+ ? [interpretationsLine(plan.interpretations.length)]
164
+ : []),
165
+ ];
166
+ }
167
+ //# sourceMappingURL=deliver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../../src/app/workflows/stages/deliver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type AgentProfile, type Stage } from "@clemrig/flow";
2
+ /** The implementing agent: one conversation for the run, from the spec and the plan. */
3
+ export declare function implementer(profile: AgentProfile): Stage<"ok">;
4
+ /** What the implementing agent did first, whatever it answered; then its evidence for each criterion. */
5
+ export declare const judgeImplementation: Stage<"invalid" | "ok">;
@@ -0,0 +1,42 @@
1
+ import { agent, gate, z, } from "@clemrig/flow";
2
+ import { implementationOutput, implementationProblem, } from "../../../domain/review.js";
3
+ import * as git from "../../../system/git.js";
4
+ import { browserContext, closingBrowser, ensureOnPlanCommit, } from "./agents.js";
5
+ import { facts } from "./run.js";
6
+ /** The implementing agent: one conversation for the run, from the spec and the plan. */
7
+ export function implementer(profile) {
8
+ return closingBrowser(agent({
9
+ profile,
10
+ schema: implementationOutput,
11
+ context: ({ state }) => {
12
+ const { slug, spec, plan } = facts(state);
13
+ return { issue: slug, spec, plan, ...browserContext(state) };
14
+ },
15
+ }));
16
+ }
17
+ /** The implementing agent may not commit, switch branches or touch .factory/: the run stops if it did. */
18
+ async function guard(context) {
19
+ await ensureOnPlanCommit(context, "implementing");
20
+ if (await git.hasChanges(context.dir, ".factory"))
21
+ throw new Error("The implementing agent changed .factory/: the run stops");
22
+ }
23
+ /** What the implementing agent did first, whatever it answered; then its evidence for each criterion. */
24
+ export const judgeImplementation = gate(["ok", "invalid"], async (context) => {
25
+ // A malformed response must not hide a change the agent may not make.
26
+ await guard(context);
27
+ const parsed = implementationOutput.safeParse(context.state.output);
28
+ if (!parsed.success)
29
+ return {
30
+ outcome: "invalid",
31
+ reason: `Invalid structured output:\n${z.prettifyError(parsed.error)}`,
32
+ };
33
+ const problem = implementationProblem(parsed.data, facts(context.state).criteria);
34
+ if (problem)
35
+ return { outcome: "invalid", reason: problem };
36
+ return {
37
+ outcome: "ok",
38
+ reason: "Structured output and invariants valid: implementation",
39
+ data: { implementation: parsed.data },
40
+ };
41
+ });
42
+ //# sourceMappingURL=implement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../../src/app/workflows/stages/implement.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,IAAI,EAGJ,CAAC,GACF,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,OAAqB;IAC/C,OAAO,cAAc,CACnB,KAAK,CAAC;QACJ,OAAO;QACP,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,CAAC;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,0GAA0G;AAC1G,KAAK,UAAU,KAAK,CAAC,OAAqB;IACxC,MAAM,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC/E,CAAC;AAED,yGAAyG;AACzG,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC3E,sEAAsE;IACtE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,OAAO;QACjB,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,+BAA+B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACvE,CAAC;IACJ,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,IAAI,EACX,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC9B,CAAC;IACF,IAAI,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC5D,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,wDAAwD;QAChE,IAAI,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type AgentProfile, type Stage } from "@clemrig/flow";
2
+ /** The planning agent: it explores the code where the spec changes it, then answers with a plan. */
3
+ export declare function planner(profile: AgentProfile): Stage<"ok">;
4
+ /** Every criterion of the spec must be served by a step of the plan. */
5
+ export declare const judgePlan: Stage<"invalid" | "ok">;
6
+ /** Writes plan.md and commits it alone: the run's reference commit. */
7
+ export declare const commitPlan: Stage<"ok">;
@@ -0,0 +1,34 @@
1
+ import { agent, schemaGate, step, } from "@clemrig/flow";
2
+ import { planCommitMessage, planOutput, planProblem, renderPlan, } from "../../../domain/plan.js";
3
+ import * as git from "../../../system/git.js";
4
+ import { artifactPath, writeArtifact } from "../../../system/issues.js";
5
+ import { facts, short, specCommitOf } from "./run.js";
6
+ /** The planning agent: it explores the code where the spec changes it, then answers with a plan. */
7
+ export function planner(profile) {
8
+ return agent({
9
+ profile,
10
+ schema: planOutput,
11
+ context: ({ state }) => ({
12
+ issue: facts(state).slug,
13
+ spec: facts(state).spec,
14
+ }),
15
+ });
16
+ }
17
+ /** Every criterion of the spec must be served by a step of the plan. */
18
+ export const judgePlan = schemaGate({
19
+ schema: planOutput,
20
+ into: "plan",
21
+ check: (plan, { state }) => planProblem(plan, facts(state).criteria),
22
+ });
23
+ /** Writes plan.md and commits it alone: the run's reference commit. */
24
+ export const commitPlan = step(async ({ dir, state, log }) => {
25
+ const f = facts(state);
26
+ const { slug, title, specPath, plan } = f;
27
+ await writeArtifact(dir, slug, "plan", renderPlan(plan, { title, specPath, specCommit: specCommitOf(f) }));
28
+ const planCommit = await git.commit(dir, planCommitMessage(slug), [
29
+ artifactPath(slug, "plan"),
30
+ ]);
31
+ log(`Committed plan.md (${plan.steps.length} steps) as ${short(planCommit)}`);
32
+ return { planCommit };
33
+ });
34
+ //# sourceMappingURL=plan.js.map