ridgeline 0.2.25 → 0.3.6
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 +1 -1
- package/dist/agents/core/builder.md +1 -1
- package/dist/agents/core/reviewer.md +3 -3
- package/dist/agents/planners/simplicity.md +7 -0
- package/dist/agents/planners/synthesizer.md +90 -0
- package/dist/agents/planners/thoroughness.md +7 -0
- package/dist/agents/planners/velocity.md +7 -0
- package/dist/agents/specialists/{depender.md → auditor.md} +2 -2
- package/dist/agents/specialists/{navigator.md → scout.md} +2 -2
- package/dist/agents/specialists/{checker.md → verifier.md} +10 -10
- package/dist/cli.js +17 -37
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts +1 -0
- package/dist/commands/build.js +46 -48
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dry-run.d.ts +2 -0
- package/dist/commands/dry-run.js +66 -0
- package/dist/commands/dry-run.js.map +1 -0
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.js +2 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plan.js +14 -7
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/spec.js +85 -97
- package/dist/commands/spec.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/engine/claude/sandbox.bwrap.d.ts +1 -1
- package/dist/engine/claude/sandbox.d.ts +3 -8
- package/dist/engine/claude/sandbox.greywall.d.ts +1 -1
- package/dist/engine/claude/sandbox.js.map +1 -1
- package/dist/engine/claude/sandbox.types.d.ts +7 -0
- package/dist/engine/claude/sandbox.types.js +3 -0
- package/dist/engine/claude/sandbox.types.js.map +1 -0
- package/dist/engine/claude/stream.decode.d.ts +4 -1
- package/dist/engine/claude/stream.decode.js +8 -2
- package/dist/engine/claude/stream.decode.js.map +1 -1
- package/dist/engine/discovery/agent.scan.d.ts +0 -1
- package/dist/engine/discovery/agent.scan.js +2 -3
- package/dist/engine/discovery/agent.scan.js.map +1 -1
- package/dist/engine/index.d.ts +4 -4
- package/dist/engine/index.js +3 -4
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/pipeline/build.exec.js +6 -37
- package/dist/engine/pipeline/build.exec.js.map +1 -1
- package/dist/engine/pipeline/ensemble.exec.d.ts +12 -0
- package/dist/engine/pipeline/ensemble.exec.js +343 -0
- package/dist/engine/pipeline/ensemble.exec.js.map +1 -0
- package/dist/engine/pipeline/pipeline.shared.d.ts +42 -0
- package/dist/engine/pipeline/pipeline.shared.js +111 -0
- package/dist/engine/pipeline/pipeline.shared.js.map +1 -0
- package/dist/engine/pipeline/plan.exec.d.ts +3 -5
- package/dist/engine/pipeline/plan.exec.js +6 -62
- package/dist/engine/pipeline/plan.exec.js.map +1 -1
- package/dist/engine/pipeline/review.exec.js +6 -29
- package/dist/engine/pipeline/review.exec.js.map +1 -1
- package/dist/engine/worktree.d.ts +0 -5
- package/dist/engine/worktree.js +10 -15
- package/dist/engine/worktree.js.map +1 -1
- package/dist/store/feedback.js +65 -64
- package/dist/store/feedback.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/settings.d.ts +2 -1
- package/dist/types.d.ts +23 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/agents/core/hooks/network-guard.md +0 -24
- package/dist/agents/core/plugin.json +0 -4
package/README.md
CHANGED
|
@@ -168,7 +168,7 @@ npm test # Typecheck, lint, and run unit tests
|
|
|
168
168
|
npm run test:unit # Unit tests only (vitest)
|
|
169
169
|
npm run test:e2e # End-to-end tests
|
|
170
170
|
npm run test:watch # Watch mode
|
|
171
|
-
npm run lint # Run all linters (oxlint, markdownlint, agnix)
|
|
171
|
+
npm run lint # Run all linters (oxlint, markdownlint, agnix, fallow)
|
|
172
172
|
npm run typecheck # Type-check without emitting
|
|
173
173
|
```
|
|
174
174
|
|
|
@@ -30,7 +30,7 @@ Do not implement work belonging to other phases. Do not add features not in your
|
|
|
30
30
|
|
|
31
31
|
### 3. Check
|
|
32
32
|
|
|
33
|
-
Verify your work after making changes. If a check command is specified in constraints.md, run it. If specialist agents are available, use the **
|
|
33
|
+
Verify your work after making changes. If a check command is specified in constraints.md, run it. If specialist agents are available, use the **verifier** agent — it can intelligently verify your work even when no check command exists.
|
|
34
34
|
|
|
35
35
|
- If checks pass, continue.
|
|
36
36
|
- If checks fail, fix the failures. Then check again.
|
|
@@ -15,7 +15,7 @@ These are injected into your context before you start:
|
|
|
15
15
|
1. **Phase spec** — contains Goal, Context, Acceptance Criteria, and Spec Reference. The acceptance criteria are your primary gate.
|
|
16
16
|
2. **Git diff** — from the phase checkpoint to HEAD. Everything the builder changed.
|
|
17
17
|
3. **constraints.md** — technical guardrails the builder was required to follow.
|
|
18
|
-
4. **Check command** (if specified in constraints.md) — the command the builder was expected to run. Use the
|
|
18
|
+
4. **Check command** (if specified in constraints.md) — the command the builder was expected to run. Use the verifier agent to verify it passes.
|
|
19
19
|
|
|
20
20
|
You have tool access (Read, Bash, Glob, Grep, Agent). Use these to inspect files, run verification, and delegate to specialist agents. The diff shows what changed — use it to decide what to read in full.
|
|
21
21
|
|
|
@@ -31,9 +31,9 @@ Diffs lie by omission. A clean diff inside a broken file still produces broken c
|
|
|
31
31
|
|
|
32
32
|
### 3. Run verification checks
|
|
33
33
|
|
|
34
|
-
If specialist agents are available, use the **
|
|
34
|
+
If specialist agents are available, use the **verifier** agent to run verification against the changed code. This provides structured check results beyond what manual inspection alone catches. If a check command exists in constraints.md, the verifier will run it along with any other relevant verification.
|
|
35
35
|
|
|
36
|
-
If the
|
|
36
|
+
If the verifier reports failures, the phase fails. Analyze the failures and include them in your verdict.
|
|
37
37
|
|
|
38
38
|
### 4. Walk each acceptance criterion
|
|
39
39
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: simplicity
|
|
3
|
+
description: Plans the most direct path — fewest phases, most pragmatic boundaries
|
|
4
|
+
perspective: simplicity
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Simplicity Planner. Your goal is to find the most direct path from zero to a working product. Prefer fewer, larger phases. Combine features aggressively when they share infrastructure. Avoid phases that exist only for organizational tidiness. If something can be built in 3 phases, do not propose 5. Every phase you add has a cost: context loss, handoff overhead, and risk of misalignment. Justify each phase boundary by the concrete technical dependency it represents.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synthesizer
|
|
3
|
+
description: Synthesizes the best plan from multiple specialist planning proposals
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Plan Synthesizer for a software build harness. You receive multiple specialist planning proposals for the same project, each from a different strategic perspective. Your job is to produce the final phase plan by synthesizing the best ideas from all proposals.
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
You receive:
|
|
12
|
+
|
|
13
|
+
1. **spec.md** — Business requirements describing features as outcomes.
|
|
14
|
+
2. **constraints.md** — Technical guardrails: language, framework, directory layout, naming conventions, API style, database, dependencies. Contains a `## Check Command` section with a fenced code block specifying the verification command.
|
|
15
|
+
3. **taste.md** (optional) — Coding style preferences.
|
|
16
|
+
4. **Target model name** — The model the builder will use.
|
|
17
|
+
5. **Specialist proposals** — Multiple structured plans, each labeled with its perspective (e.g., Simplicity, Thoroughness, Velocity).
|
|
18
|
+
|
|
19
|
+
Read every input document and all proposals before producing any output.
|
|
20
|
+
|
|
21
|
+
## Synthesis Strategy
|
|
22
|
+
|
|
23
|
+
1. **Identify consensus.** Phases that all specialists agree on — even if named or scoped differently — are strong candidates for inclusion. Consensus signals a natural boundary in the work.
|
|
24
|
+
|
|
25
|
+
2. **Resolve conflicts.** When specialists disagree on phase boundaries, scope, or sequencing, use judgment. Prefer the approach that balances completeness with pragmatism. Consider the rationale each specialist provides.
|
|
26
|
+
|
|
27
|
+
3. **Incorporate unique insights.** If one specialist identifies a concern the others missed — an edge case, a dependency risk, a sequencing insight — include it. The value of multiple perspectives is surfacing what any single viewpoint would miss.
|
|
28
|
+
|
|
29
|
+
4. **Trim excess.** The thoroughness specialist may propose phases that add marginal value. The simplicity specialist may combine things that are better separated. Find the right balance — comprehensive but not bloated.
|
|
30
|
+
|
|
31
|
+
5. **Respect phase sizing.** Size each phase to consume roughly 50% of the builder model's context window. Estimates:
|
|
32
|
+
- **opus** (~1M tokens): large phases, broad scope per phase
|
|
33
|
+
- **sonnet** (~200K tokens): smaller phases, narrower scope per phase
|
|
34
|
+
|
|
35
|
+
Err on the side of fewer, larger phases over many small ones.
|
|
36
|
+
|
|
37
|
+
## File Naming
|
|
38
|
+
|
|
39
|
+
Write files as `phases/01-<slug>.md`, `phases/02-<slug>.md`, etc. Slugs are descriptive kebab-case: `01-project-scaffold`, `02-core-api`, `03-auth`.
|
|
40
|
+
|
|
41
|
+
## Phase Spec Format
|
|
42
|
+
|
|
43
|
+
Every phase file must follow this structure exactly:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
# Phase <N>: <Name>
|
|
47
|
+
|
|
48
|
+
## Goal
|
|
49
|
+
|
|
50
|
+
<1-3 paragraphs describing what this phase accomplishes in business/product terms. No implementation details. Describes the end state, not the steps.>
|
|
51
|
+
|
|
52
|
+
## Context
|
|
53
|
+
|
|
54
|
+
<What the builder needs to know about the current state of the project. For phase 1, this is minimal. For later phases, summarize what prior phases built and what constraints carry forward.>
|
|
55
|
+
|
|
56
|
+
## Acceptance Criteria
|
|
57
|
+
|
|
58
|
+
<Numbered list of concrete, verifiable outcomes. Each criterion must be testable by running a command, making an HTTP request, checking file existence, or verifying observable behavior.>
|
|
59
|
+
|
|
60
|
+
1. ...
|
|
61
|
+
2. ...
|
|
62
|
+
|
|
63
|
+
## Spec Reference
|
|
64
|
+
|
|
65
|
+
<Relevant sections of spec.md for this phase, quoted or summarized.>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
70
|
+
**No implementation details.** Do not specify file paths to create, dependency graphs between tasks, sub-agent assignments, implementation patterns, code samples, or technical approach. The builder decides all of this. You describe the destination, not the route.
|
|
71
|
+
|
|
72
|
+
**Acceptance criteria must be verifiable.** Every criterion must be checkable by running a command, making an HTTP request, checking file existence, or observing behavior.
|
|
73
|
+
|
|
74
|
+
**Early phases establish foundations.** Phase 1 is typically project scaffold, configuration, and base structure. Later phases layer features on top.
|
|
75
|
+
|
|
76
|
+
**Brownfield awareness.** When the project already has infrastructure, do not recreate it. Scope phases to build on the existing codebase.
|
|
77
|
+
|
|
78
|
+
**Each phase must be self-contained.** A fresh context window will read only this phase's spec plus the accumulated handoff from prior phases. Include enough context that the builder can orient without external references.
|
|
79
|
+
|
|
80
|
+
**Be ambitious about scope.** Look for opportunities to add depth beyond what the user literally specified — richer error handling, better edge-case coverage, more complete API surfaces — where it makes the product meaningfully better.
|
|
81
|
+
|
|
82
|
+
**Use constraints.md for scoping, not for repetition.** Do not parrot constraints back into phase specs — the builder receives constraints.md separately.
|
|
83
|
+
|
|
84
|
+
## Process
|
|
85
|
+
|
|
86
|
+
1. Read all input documents and specialist proposals.
|
|
87
|
+
2. Analyze where proposals agree and disagree.
|
|
88
|
+
3. Synthesize the best phase plan, drawing on each proposal's strengths.
|
|
89
|
+
4. Write each phase file to the output directory using the Write tool.
|
|
90
|
+
5. Produce nothing else. No summaries, no commentary, no index file. Just the phase specs.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thoroughness
|
|
3
|
+
description: Plans for comprehensive coverage — edge cases, validation, security from the start
|
|
4
|
+
perspective: thoroughness
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Thoroughness Planner. Your goal is to ensure comprehensive coverage of the spec. Consider edge cases, error handling, validation, security boundaries, and observability from the start. Propose phases that build robustness incrementally — not as an afterthought bolted on at the end. Where the spec is ambiguous, scope phases to cover the wider interpretation. Better to propose a phase that the synthesizer trims than to miss a concern entirely.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: velocity
|
|
3
|
+
description: Plans for fastest time-to-working-product — progressive enhancement, visible value first
|
|
4
|
+
perspective: velocity
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Velocity Planner. Your goal is to reach a working, demonstrable product as fast as possible. Front-load the most visible, highest-value features. Defer polish, optimization, and nice-to-haves to later phases. Phase 1 should produce something a user can interact with, even if it's rough. Propose a progressive enhancement strategy where each phase delivers incremental, shippable value.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: auditor
|
|
3
3
|
description: Checks module graph integrity — circular deps, unresolved imports, cross-boundary type issues
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
You are a dependency
|
|
7
|
+
You are a dependency auditor. You analyze the module graph after changes and report integrity issues. You are read-only. You do not modify files.
|
|
8
8
|
|
|
9
9
|
## Your inputs
|
|
10
10
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: scout
|
|
3
3
|
description: Explores codebase and returns structured context briefing for a targeted area
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
You are a codebase
|
|
7
|
+
You are a codebase scout. You receive a question about an area of the codebase and return a structured briefing. You are read-only. You do not modify files. You explore, analyze, and report.
|
|
8
8
|
|
|
9
9
|
## Your inputs
|
|
10
10
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: verifier
|
|
3
3
|
description: Verifies build correctness — runs check commands, lint, type-check, and tests intelligently
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
You are a
|
|
7
|
+
You are a verifier. You verify that code works. You run whatever verification is appropriate — explicit check commands, lint tools, type checkers, test suites, or manual inspection. You fix mechanical issues (lint, formatting, type errors) inline. You report everything else.
|
|
8
8
|
|
|
9
9
|
## Your inputs
|
|
10
10
|
|
|
@@ -56,19 +56,19 @@ Produce a structured summary.
|
|
|
56
56
|
## Output format
|
|
57
57
|
|
|
58
58
|
```text
|
|
59
|
-
[
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
[
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
[
|
|
59
|
+
[verify] Tools run: <list>
|
|
60
|
+
[verify] Check command: PASS | FAIL | not provided
|
|
61
|
+
[verify] Lint: PASS | <N> fixed, <M> remaining
|
|
62
|
+
[verify] Types: PASS | <N> errors
|
|
63
|
+
[verify] Tests: PASS | <N> failed
|
|
64
|
+
[verify] Fixed: <list of mechanical fixes applied>
|
|
65
|
+
[verify] CLEAN — all checks pass
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
Or if non-mechanical issues remain:
|
|
69
69
|
|
|
70
70
|
```text
|
|
71
|
-
[
|
|
71
|
+
[verify] ISSUES: <count> require caller attention
|
|
72
72
|
- <file>:<line> — <description> (type error / test failure / logic issue)
|
|
73
73
|
```
|
|
74
74
|
|
package/dist/cli.js
CHANGED
|
@@ -6,8 +6,20 @@ const config_1 = require("./config");
|
|
|
6
6
|
const prompt_1 = require("./ui/prompt");
|
|
7
7
|
const spec_1 = require("./commands/spec");
|
|
8
8
|
const plan_1 = require("./commands/plan");
|
|
9
|
-
const
|
|
9
|
+
const dry_run_1 = require("./commands/dry-run");
|
|
10
10
|
const build_1 = require("./commands/build");
|
|
11
|
+
const withConfig = (fn) => async (buildName, opts) => {
|
|
12
|
+
if (!buildName)
|
|
13
|
+
buildName = await (0, prompt_1.askBuildName)();
|
|
14
|
+
try {
|
|
15
|
+
const config = (0, config_1.resolveConfig)(buildName, opts);
|
|
16
|
+
await fn(config);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
console.error(`Error: ${err}`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
11
23
|
const program = new commander_1.Command();
|
|
12
24
|
program
|
|
13
25
|
.name("ridgeline")
|
|
@@ -44,18 +56,7 @@ program
|
|
|
44
56
|
.option("--timeout <minutes>", "Max duration for planning", "120")
|
|
45
57
|
.option("--constraints <path>", "Path to constraints.md")
|
|
46
58
|
.option("--taste <path>", "Path to taste.md")
|
|
47
|
-
.action(
|
|
48
|
-
if (!buildName)
|
|
49
|
-
buildName = await (0, prompt_1.askBuildName)();
|
|
50
|
-
try {
|
|
51
|
-
const config = (0, config_1.resolveConfig)(buildName, opts);
|
|
52
|
-
await (0, plan_1.runPlan)(config);
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
console.error(`Error: ${err}`);
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
+
.action(withConfig(plan_1.runPlan));
|
|
59
60
|
program
|
|
60
61
|
.command("dry-run [build-name]")
|
|
61
62
|
.description("Display the plan without executing")
|
|
@@ -63,18 +64,7 @@ program
|
|
|
63
64
|
.option("--timeout <minutes>", "Max duration for planning", "120")
|
|
64
65
|
.option("--constraints <path>", "Path to constraints.md")
|
|
65
66
|
.option("--taste <path>", "Path to taste.md")
|
|
66
|
-
.action(
|
|
67
|
-
if (!buildName)
|
|
68
|
-
buildName = await (0, prompt_1.askBuildName)();
|
|
69
|
-
try {
|
|
70
|
-
const config = (0, config_1.resolveConfig)(buildName, opts);
|
|
71
|
-
await (0, dryRun_1.runDryRun)(config);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
console.error(`Error: ${err}`);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
67
|
+
.action(withConfig(dry_run_1.runDryRun));
|
|
78
68
|
program
|
|
79
69
|
.command("build [build-name]")
|
|
80
70
|
.description("Execute the build pipeline (automatically resumes from last successful phase)")
|
|
@@ -86,19 +76,9 @@ program
|
|
|
86
76
|
.option("--max-budget-usd <n>", "Halt if cumulative cost exceeds this amount")
|
|
87
77
|
.option("--constraints <path>", "Path to constraints.md")
|
|
88
78
|
.option("--taste <path>", "Path to taste.md")
|
|
79
|
+
.option("--context <text>", "Extra context appended to builder and planner prompts")
|
|
89
80
|
.option("--unsafe", "Disable sandbox auto-detection")
|
|
90
|
-
.action(
|
|
91
|
-
if (!buildName)
|
|
92
|
-
buildName = await (0, prompt_1.askBuildName)();
|
|
93
|
-
try {
|
|
94
|
-
const config = (0, config_1.resolveConfig)(buildName, opts);
|
|
95
|
-
await (0, build_1.runBuild)(config);
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
console.error(`Error: ${err}`);
|
|
99
|
-
process.exit(1);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
81
|
+
.action(withConfig(build_1.runBuild));
|
|
102
82
|
program
|
|
103
83
|
.command("clean")
|
|
104
84
|
.description("Remove all build worktrees and WIP branches")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAmC;AACnC,qCAAqD;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/build.d.ts
CHANGED
package/dist/commands/build.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.runBuild = void 0;
|
|
36
|
+
exports.runBuild = exports.ensurePhases = void 0;
|
|
37
37
|
const output_1 = require("../ui/output");
|
|
38
38
|
const sandbox_1 = require("../engine/claude/sandbox");
|
|
39
39
|
const phases_1 = require("../store/phases");
|
|
@@ -114,28 +114,23 @@ const printSummaryTable = (config, completed, failed, totalPhases) => {
|
|
|
114
114
|
console.log(` Phases: ${completed} passed, ${failed} failed, ${totalPhases} total`);
|
|
115
115
|
console.log(sep);
|
|
116
116
|
// Breakdown table
|
|
117
|
+
const formatRow = (name, attempts, build, review, cost) => ` ${name.padEnd(24)} ${attempts.padStart(4)} ${build.padStart(8)} ${review.padStart(8)} ${cost.padStart(8)}`;
|
|
117
118
|
console.log("");
|
|
118
|
-
console.log("
|
|
119
|
+
console.log(formatRow("", "Attempts", "Build", "Review", "Cost"));
|
|
119
120
|
console.log(div);
|
|
120
121
|
// Planning row
|
|
121
|
-
console.log(
|
|
122
|
+
console.log(formatRow("Planning", "", "", "", `$${planCost.toFixed(2)}`));
|
|
122
123
|
console.log(div);
|
|
123
124
|
// Per-phase rows
|
|
124
125
|
for (const [phaseId, stats] of phaseStats) {
|
|
125
|
-
|
|
126
|
-
const attempts = String(stats.attempts).padStart(4);
|
|
127
|
-
const buildTime = formatDuration(stats.buildTime).padStart(8);
|
|
128
|
-
const reviewTime = formatDuration(stats.reviewTime).padStart(8);
|
|
129
|
-
const cost = `$${stats.cost.toFixed(2)}`.padStart(8);
|
|
130
|
-
console.log(` ${name} ${attempts} ${buildTime} ${reviewTime} ${cost}`);
|
|
126
|
+
console.log(formatRow(phaseId, String(stats.attempts), formatDuration(stats.buildTime), formatDuration(stats.reviewTime), `$${stats.cost.toFixed(2)}`));
|
|
131
127
|
}
|
|
132
128
|
console.log(div);
|
|
133
129
|
// Total row
|
|
134
|
-
console.log(
|
|
130
|
+
console.log(formatRow("Total", String(totalAttempts), formatDuration(totalBuildTime), formatDuration(totalReviewTime), `$${totalCost.toFixed(2)}`));
|
|
135
131
|
};
|
|
136
|
-
const
|
|
132
|
+
const ensurePhases = async (config) => {
|
|
137
133
|
let phases = (0, phases_1.scanPhases)(config.phasesDir);
|
|
138
|
-
// Plan if no phases exist
|
|
139
134
|
if (phases.length === 0) {
|
|
140
135
|
(0, output_1.printInfo)("No phases found. Running planner first...\n");
|
|
141
136
|
await (0, plan_1.runPlan)(config);
|
|
@@ -144,48 +139,33 @@ const runBuild = async (config) => {
|
|
|
144
139
|
if (phases.length === 0) {
|
|
145
140
|
throw new Error("No phases generated");
|
|
146
141
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
(0,
|
|
157
|
-
|
|
158
|
-
|
|
142
|
+
return phases;
|
|
143
|
+
};
|
|
144
|
+
exports.ensurePhases = ensurePhases;
|
|
145
|
+
const configureSandbox = (config) => {
|
|
146
|
+
if (config.unsafe)
|
|
147
|
+
return;
|
|
148
|
+
const { provider, warning } = (0, sandbox_1.detectSandbox)();
|
|
149
|
+
config.sandboxProvider = provider;
|
|
150
|
+
if (warning) {
|
|
151
|
+
(0, output_1.printInfo)(`Warning: ${warning}`);
|
|
152
|
+
}
|
|
153
|
+
else if (provider) {
|
|
154
|
+
(0, output_1.printInfo)(`Sandbox: ${provider.name}`);
|
|
159
155
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const { provider, warning } = (0, sandbox_1.detectSandbox)();
|
|
163
|
-
config.sandboxProvider = provider;
|
|
164
|
-
if (warning) {
|
|
165
|
-
(0, output_1.printInfo)(`Warning: ${warning}`);
|
|
166
|
-
}
|
|
167
|
-
else if (provider) {
|
|
168
|
-
(0, output_1.printInfo)(`Sandbox: ${provider.name}`);
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
(0, output_1.printInfo)("Warning: no sandbox available (install greywall or bwrap)");
|
|
172
|
-
}
|
|
156
|
+
else {
|
|
157
|
+
(0, output_1.printInfo)("Warning: no sandbox available (install greywall or bwrap)");
|
|
173
158
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
(0, output_1.printInfo)(`Starting build: ${config.buildName} (${phases.length} phases)\n`);
|
|
177
|
-
// Ensure we're in a git repo with at least one commit (needed for worktrees)
|
|
178
|
-
const repoRoot = process.cwd();
|
|
159
|
+
};
|
|
160
|
+
const setupWorktree = (repoRoot, config) => {
|
|
179
161
|
if ((0, worktree_1.ensureGitRepo)(repoRoot)) {
|
|
180
162
|
(0, output_1.printInfo)("Initialised git repo with initial commit");
|
|
181
163
|
}
|
|
182
|
-
// Set up worktree
|
|
183
164
|
if ((0, worktree_1.validateWorktree)(repoRoot, config.buildName)) {
|
|
184
165
|
config.worktreePath = (0, worktree_1.worktreePath)(repoRoot, config.buildName);
|
|
185
166
|
(0, output_1.printInfo)(`Resuming in worktree: ${config.worktreePath}`);
|
|
186
167
|
}
|
|
187
168
|
else {
|
|
188
|
-
// Clean up broken worktree if it exists
|
|
189
169
|
const existingPath = (0, worktree_1.worktreePath)(repoRoot, config.buildName);
|
|
190
170
|
if (fs.existsSync(existingPath)) {
|
|
191
171
|
(0, worktree_1.removeWorktree)(repoRoot, config.buildName);
|
|
@@ -193,6 +173,27 @@ const runBuild = async (config) => {
|
|
|
193
173
|
config.worktreePath = (0, worktree_1.createWorktree)(repoRoot, config.buildName);
|
|
194
174
|
(0, output_1.printInfo)(`Worktree: ${config.worktreePath}`);
|
|
195
175
|
}
|
|
176
|
+
};
|
|
177
|
+
const runBuild = async (config) => {
|
|
178
|
+
const phases = await (0, exports.ensurePhases)(config);
|
|
179
|
+
// Load or init state
|
|
180
|
+
let state = (0, state_1.loadState)(config.buildDir);
|
|
181
|
+
const isResume = state !== null;
|
|
182
|
+
if (!state) {
|
|
183
|
+
state = (0, state_1.initState)(config.buildName, phases);
|
|
184
|
+
(0, state_1.saveState)(config.buildDir, state);
|
|
185
|
+
}
|
|
186
|
+
if (isResume) {
|
|
187
|
+
(0, state_1.resetRetries)(config.buildDir, state);
|
|
188
|
+
const completedCount = state.phases.filter((p) => p.status === "complete").length;
|
|
189
|
+
(0, output_1.printInfo)(`Resuming build '${config.buildName}' from phase ${completedCount + 1}/${state.phases.length}`);
|
|
190
|
+
}
|
|
191
|
+
configureSandbox(config);
|
|
192
|
+
(0, output_1.printInfo)(`Starting build: ${config.buildName} (${phases.length} phases)\n`);
|
|
193
|
+
const repoRoot = process.cwd();
|
|
194
|
+
setupWorktree(repoRoot, config);
|
|
195
|
+
let completed = 0;
|
|
196
|
+
let failed = 0;
|
|
196
197
|
// Run phases
|
|
197
198
|
let nextPhaseState = (0, state_1.getNextIncompletePhase)(state);
|
|
198
199
|
while (nextPhaseState) {
|
|
@@ -205,8 +206,6 @@ const runBuild = async (config) => {
|
|
|
205
206
|
const result = await (0, phase_sequence_1.runPhase)(phase, config, state);
|
|
206
207
|
if (result === "passed") {
|
|
207
208
|
completed++;
|
|
208
|
-
// Commit any uncommitted work in the worktree before merging
|
|
209
|
-
// (the sandbox prevents the builder from committing directly)
|
|
210
209
|
if (config.worktreePath && (0, git_1.isWorkingTreeDirty)(config.worktreePath)) {
|
|
211
210
|
(0, git_1.commitAll)(`ridgeline: ${phase.id}`, config.worktreePath);
|
|
212
211
|
}
|
|
@@ -214,9 +213,8 @@ const runBuild = async (config) => {
|
|
|
214
213
|
}
|
|
215
214
|
else {
|
|
216
215
|
failed++;
|
|
217
|
-
break;
|
|
216
|
+
break;
|
|
218
217
|
}
|
|
219
|
-
// Budget check after phase
|
|
220
218
|
if (config.maxBudgetUsd) {
|
|
221
219
|
const budget = (0, budget_1.loadBudget)(config.buildDir);
|
|
222
220
|
if (budget.totalCostUsd > config.maxBudgetUsd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runDryRun = void 0;
|
|
37
|
+
const fs = __importStar(require("node:fs"));
|
|
38
|
+
const output_1 = require("../ui/output");
|
|
39
|
+
const phases_1 = require("../store/phases");
|
|
40
|
+
const build_1 = require("./build");
|
|
41
|
+
const runDryRun = async (config) => {
|
|
42
|
+
const phases = await (0, build_1.ensurePhases)(config);
|
|
43
|
+
console.log(`\n${"=".repeat(60)}`);
|
|
44
|
+
console.log(` Build: ${config.buildName}`);
|
|
45
|
+
console.log(` Phases: ${phases.length}`);
|
|
46
|
+
console.log(` Model: ${config.model}`);
|
|
47
|
+
console.log(` Max retries: ${config.maxRetries}`);
|
|
48
|
+
console.log(`${"=".repeat(60)}\n`);
|
|
49
|
+
for (const phase of phases) {
|
|
50
|
+
const content = fs.readFileSync(phase.filepath, "utf-8");
|
|
51
|
+
const { title: parsedTitle, goal, criteria } = (0, phases_1.parsePhaseContent)(content);
|
|
52
|
+
const title = parsedTitle || phase.id;
|
|
53
|
+
console.log(`--- ${title} ---`);
|
|
54
|
+
if (goal) {
|
|
55
|
+
console.log(`\nGoal: ${goal.split("\n")[0]}`);
|
|
56
|
+
}
|
|
57
|
+
if (criteria) {
|
|
58
|
+
console.log(`\nAcceptance Criteria:`);
|
|
59
|
+
console.log(criteria);
|
|
60
|
+
}
|
|
61
|
+
console.log("");
|
|
62
|
+
}
|
|
63
|
+
(0, output_1.printInfo)(`Review the phases above. To execute: ridgeline build ${config.buildName}`);
|
|
64
|
+
};
|
|
65
|
+
exports.runDryRun = runDryRun;
|
|
66
|
+
//# sourceMappingURL=dry-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../src/commands/dry-run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAE7B,yCAAwC;AACxC,4CAAmD;AACnD,mCAAsC;AAE/B,MAAM,SAAS,GAAG,KAAK,EAAE,MAAuB,EAAiB,EAAE;IACxE,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAA;IAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,WAAW,IAAI,KAAK,CAAC,EAAE,CAAA;QAErC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAA;QAC/B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAED,IAAA,kBAAS,EAAC,wDAAwD,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;AACvF,CAAC,CAAA;AA5BY,QAAA,SAAS,aA4BrB"}
|
package/dist/commands/index.d.ts
CHANGED