ridgeline 0.2.25 → 0.3.5

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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/core/builder.md +1 -1
  3. package/dist/agents/core/reviewer.md +3 -3
  4. package/dist/agents/planners/simplicity.md +7 -0
  5. package/dist/agents/planners/synthesizer.md +90 -0
  6. package/dist/agents/planners/thoroughness.md +7 -0
  7. package/dist/agents/planners/velocity.md +7 -0
  8. package/dist/agents/specialists/{depender.md → auditor.md} +2 -2
  9. package/dist/agents/specialists/{navigator.md → scout.md} +2 -2
  10. package/dist/agents/specialists/{checker.md → verifier.md} +10 -10
  11. package/dist/cli.js +17 -37
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/build.d.ts +1 -0
  14. package/dist/commands/build.js +46 -48
  15. package/dist/commands/build.js.map +1 -1
  16. package/dist/commands/dry-run.d.ts +2 -0
  17. package/dist/commands/dry-run.js +66 -0
  18. package/dist/commands/dry-run.js.map +1 -0
  19. package/dist/commands/index.d.ts +2 -2
  20. package/dist/commands/index.js +2 -2
  21. package/dist/commands/index.js.map +1 -1
  22. package/dist/commands/plan.js +14 -7
  23. package/dist/commands/plan.js.map +1 -1
  24. package/dist/commands/spec.js +85 -97
  25. package/dist/commands/spec.js.map +1 -1
  26. package/dist/config.js +1 -0
  27. package/dist/config.js.map +1 -1
  28. package/dist/engine/claude/sandbox.bwrap.d.ts +1 -1
  29. package/dist/engine/claude/sandbox.d.ts +3 -8
  30. package/dist/engine/claude/sandbox.greywall.d.ts +1 -1
  31. package/dist/engine/claude/sandbox.js.map +1 -1
  32. package/dist/engine/claude/sandbox.types.d.ts +7 -0
  33. package/dist/engine/claude/sandbox.types.js +3 -0
  34. package/dist/engine/claude/sandbox.types.js.map +1 -0
  35. package/dist/engine/claude/stream.decode.d.ts +4 -1
  36. package/dist/engine/claude/stream.decode.js +8 -2
  37. package/dist/engine/claude/stream.decode.js.map +1 -1
  38. package/dist/engine/discovery/agent.scan.d.ts +0 -1
  39. package/dist/engine/discovery/agent.scan.js +2 -3
  40. package/dist/engine/discovery/agent.scan.js.map +1 -1
  41. package/dist/engine/index.d.ts +4 -4
  42. package/dist/engine/index.js +3 -4
  43. package/dist/engine/index.js.map +1 -1
  44. package/dist/engine/pipeline/build.exec.js +6 -37
  45. package/dist/engine/pipeline/build.exec.js.map +1 -1
  46. package/dist/engine/pipeline/ensemble.exec.d.ts +6 -0
  47. package/dist/engine/pipeline/ensemble.exec.js +299 -0
  48. package/dist/engine/pipeline/ensemble.exec.js.map +1 -0
  49. package/dist/engine/pipeline/pipeline.shared.d.ts +42 -0
  50. package/dist/engine/pipeline/pipeline.shared.js +111 -0
  51. package/dist/engine/pipeline/pipeline.shared.js.map +1 -0
  52. package/dist/engine/pipeline/plan.exec.d.ts +3 -5
  53. package/dist/engine/pipeline/plan.exec.js +6 -62
  54. package/dist/engine/pipeline/plan.exec.js.map +1 -1
  55. package/dist/engine/pipeline/review.exec.js +6 -29
  56. package/dist/engine/pipeline/review.exec.js.map +1 -1
  57. package/dist/engine/worktree.d.ts +0 -5
  58. package/dist/engine/worktree.js +10 -15
  59. package/dist/engine/worktree.js.map +1 -1
  60. package/dist/store/feedback.js +65 -64
  61. package/dist/store/feedback.js.map +1 -1
  62. package/dist/store/index.d.ts +1 -1
  63. package/dist/store/index.js.map +1 -1
  64. package/dist/store/settings.d.ts +2 -1
  65. package/dist/types.d.ts +23 -1
  66. package/dist/ui/index.d.ts +1 -1
  67. package/dist/ui/index.js.map +1 -1
  68. package/package.json +4 -2
  69. package/dist/agents/core/hooks/network-guard.md +0 -24
  70. 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 **checker** agent — it can intelligently verify your work even when no check command exists.
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 checker agent to verify it passes.
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 **checker** 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 checker will run it along with any other relevant verification.
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 checker reports failures, the phase fails. Analyze the failures and include them in your verdict.
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: depender
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 checker. You analyze the module graph after changes and report integrity issues. You are read-only. You do not modify files.
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: navigator
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 navigator. 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.
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: checker
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 checker. 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.
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
- [check] Tools run: <list>
60
- [check] Check command: PASS | FAIL | not provided
61
- [check] Lint: PASS | <N> fixed, <M> remaining
62
- [check] Types: PASS | <N> errors
63
- [check] Tests: PASS | <N> failed
64
- [check] Fixed: <list of mechanical fixes applied>
65
- [check] CLEAN — all checks pass
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
- [check] ISSUES: <count> require caller attention
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 dryRun_1 = require("./commands/dryRun");
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(async (buildName, opts) => {
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(async (buildName, opts) => {
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(async (buildName, opts) => {
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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { RidgelineConfig } from "../types";
2
+ export declare const ensurePhases: (config: RidgelineConfig) => Promise<import("../types").PhaseInfo[]>;
2
3
  export declare const runBuild: (config: RidgelineConfig) => Promise<void>;
@@ -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(" Attempts Build Review Cost");
119
+ console.log(formatRow("", "Attempts", "Build", "Review", "Cost"));
119
120
  console.log(div);
120
121
  // Planning row
121
- console.log(` ${"Planning".padEnd(24)} ${`$${planCost.toFixed(2)}`.padStart(8)}`);
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
- const name = phaseId.padEnd(24);
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(` ${"Total".padEnd(24)} ${String(totalAttempts).padStart(4)} ${formatDuration(totalBuildTime).padStart(8)} ${formatDuration(totalReviewTime).padStart(8)} ${`$${totalCost.toFixed(2)}`.padStart(8)}`);
130
+ console.log(formatRow("Total", String(totalAttempts), formatDuration(totalBuildTime), formatDuration(totalReviewTime), `$${totalCost.toFixed(2)}`));
135
131
  };
136
- const runBuild = async (config) => {
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
- // Load or init state
148
- let state = (0, state_1.loadState)(config.buildDir);
149
- const isResume = state !== null;
150
- if (!state) {
151
- state = (0, state_1.initState)(config.buildName, phases);
152
- (0, state_1.saveState)(config.buildDir, state);
153
- }
154
- // On resume: reset retries for incomplete phases so they get full attempts
155
- if (isResume) {
156
- (0, state_1.resetRetries)(config.buildDir, state);
157
- const completedCount = state.phases.filter((p) => p.status === "complete").length;
158
- (0, output_1.printInfo)(`Resuming build '${config.buildName}' from phase ${completedCount + 1}/${state.phases.length}`);
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
- // Validate sandbox availability before starting phases
161
- if (!config.unsafe) {
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
- let completed = 0;
175
- let failed = 0;
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; // Halt on failure
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,2 @@
1
+ import { RidgelineConfig } from "../types";
2
+ export declare const runDryRun: (config: RidgelineConfig) => Promise<void>;
@@ -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"}
@@ -1,4 +1,4 @@
1
1
  export { runBuild } from './build';
2
- export { runDryRun } from './dryRun';
2
+ export { runDryRun } from './dry-run';
3
3
  export { runPlan } from './plan';
4
- export { type SpecOptions, runSpec } from './spec';
4
+ export { runSpec } from './spec';