Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion web/lib/flow-onboarding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,9 @@ const builder = "${agent}";` });
console.error("Stopped: no ticket arrived with this run, so there was nothing to work on.");
return f.done("needs_human");
}`;
sections.push({ id: 'input', code: `type Input = { issue${hasMarkdown ? '?' : ''}: Issue; approver: string };
// checkCommand: the flow's test command, when Cloud or a local input sets
// one; it replaces check discovery (see the 'discover' section).
sections.push({ id: 'input', code: `type Input = { issue${hasMarkdown ? '?' : ''}: Issue; approver: string; checkCommand?: string };

// Run in a connected repository, on a new branch.
export default flow<Input>("software-factory",
Expand Down
200 changes: 188 additions & 12 deletions web/lib/flow-workflows.ts

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion web/lib/test/flow-budget.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,9 @@ describe('Garden flow time plan (cloud#4235, cloud#4270, agentrelay.com#155)', (
expect(run.names).toContain('adversary');
expect(run.names).not.toContain('time-stop');
expect(FLOW_TIME.setupMinutes + run.chargedMinutes).toBeGreaterThanOrEqual(30);
expect(FLOW_TIME.setupMinutes + run.chargedMinutes).toBeLessThanOrEqual(45);
// Plus the one step that asks whether the implementer changed anything
// (run 91c1a5cd), which this simulation charges 5 seconds like any other.
expect(FLOW_TIME.setupMinutes + run.chargedMinutes).toBeLessThanOrEqual(45 + 5 / 60);
});

it('publishes run bda21b91 (measured step times) within the cap', async () => {
Expand Down
497 changes: 497 additions & 0 deletions web/lib/test/flow-needs-input.test.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion web/lib/test/flow-onboarding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ describe('software factory onboarding', () => {
for (const workflow of ['simple', 'traditional', 'prototype'] as const) {
const source = factorySource({ ...DEFAULT_FACTORY, sources: ['github'], agents: ['claude'], workflow, step: 3 });
const implementer = source.indexOf('f.agent("implementer"');
const again = source.indexOf('if (checkPlan === "none") await f.run(resolveChecks);');
const again = source.indexOf('if (checkPlan === "none" && (await f.run(resolveChecks)).trim() === "default") checkSetup = "default";');
expect(implementer, workflow).toBeGreaterThan(-1);
expect(again, workflow).toBeGreaterThan(implementer);
expect(source.indexOf('await spannedCheck(checkLimit)'), workflow).toBeGreaterThan(again);
Expand Down
14 changes: 9 additions & 5 deletions web/public/flows/software-garden/manifest.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "Software Garden",
"catalogId": "software-factory",
"version": 2,
"sha256": "516ccd18d39e7f03df20442963fe339cfc64fcd09fa3659e53d85cf6a31d60fb",
"bytes": 87545,
"path": "web/public/flows/software-garden/v2.flow.ts",
"url": "https://agentrelay.com/flows/software-garden/v2.flow.ts",
"version": 3,
"sha256": "a54a282e0ac607bf4481aee5c3353c7a5c63178da44080ba72ff872b24fcba73",
"bytes": 95632,
"path": "web/public/flows/software-garden/v3.flow.ts",
"url": "https://agentrelay.com/flows/software-garden/v3.flow.ts",
"target": "cloud",
"draft": {
"version": 4,
Expand All @@ -29,6 +29,10 @@
{
"version": 2,
"sha256": "516ccd18d39e7f03df20442963fe339cfc64fcd09fa3659e53d85cf6a31d60fb"
},
{
"version": 3,
"sha256": "a54a282e0ac607bf4481aee5c3353c7a5c63178da44080ba72ff872b24fcba73"
}
]
}
425 changes: 425 additions & 0 deletions web/public/flows/software-garden/v3.flow.ts

Large diffs are not rendered by default.

Loading