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.
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 +12 -0
  47. package/dist/engine/pipeline/ensemble.exec.js +343 -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
@@ -33,77 +33,21 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.invokePlanner = void 0;
36
+ exports.assembleBaseUserPrompt = void 0;
37
37
  const fs = __importStar(require("node:fs"));
38
38
  const path = __importStar(require("node:path"));
39
- const claude_exec_1 = require("../claude/claude.exec");
40
- const stream_decode_1 = require("../claude/stream.decode");
41
- const phases_1 = require("../../store/phases");
42
- const output_1 = require("../../ui/output");
43
- const resolveAgentPrompt = (filename) => {
44
- // Try dist/agents/core/ first (installed package), then src/agents/core/ (development)
45
- const distPath = path.join(__dirname, "..", "agents", "core", filename);
46
- if (fs.existsSync(distPath))
47
- return fs.readFileSync(distPath, "utf-8");
48
- const srcPath = path.join(__dirname, "..", "..", "agents", "core", filename);
49
- if (fs.existsSync(srcPath))
50
- return fs.readFileSync(srcPath, "utf-8");
51
- // Fallback: relative to project root
52
- const rootPath = path.join(__dirname, "..", "..", "..", "src", "agents", "core", filename);
53
- return fs.readFileSync(rootPath, "utf-8");
54
- };
55
- const assembleUserPrompt = (config) => {
39
+ const pipeline_shared_1 = require("./pipeline.shared");
40
+ /** Assemble the shared portion of the user prompt: spec, constraints, taste, target model. */
41
+ const assembleBaseUserPrompt = (config) => {
56
42
  const sections = [];
57
43
  const specPath = path.join(config.buildDir, "spec.md");
58
44
  sections.push("## spec.md\n");
59
45
  sections.push(fs.readFileSync(specPath, "utf-8"));
60
46
  sections.push("");
61
- sections.push("## constraints.md\n");
62
- sections.push(fs.readFileSync(config.constraintsPath, "utf-8"));
63
- sections.push("");
64
- if (config.tastePath) {
65
- sections.push("## taste.md\n");
66
- sections.push(fs.readFileSync(config.tastePath, "utf-8"));
67
- sections.push("");
68
- }
47
+ (0, pipeline_shared_1.appendConstraintsAndTaste)(sections, config);
69
48
  sections.push("## Target Model\n");
70
49
  sections.push(`The builder will use the \`${config.model}\` model.`);
71
- sections.push("");
72
- sections.push("## Output Directory\n");
73
- sections.push(`Write phase spec files to: ${config.phasesDir}`);
74
- sections.push("Use the naming convention: 01-<slug>.md, 02-<slug>.md, etc.");
75
50
  return sections.join("\n");
76
51
  };
77
- const invokePlanner = async (config) => {
78
- const systemPrompt = resolveAgentPrompt("planner.md");
79
- const userPrompt = assembleUserPrompt(config);
80
- const { onStdout, flush } = (0, stream_decode_1.createDisplayCallbacks)();
81
- try {
82
- const result = await (0, claude_exec_1.invokeClaude)({
83
- systemPrompt,
84
- userPrompt,
85
- model: config.model,
86
- allowedTools: ["Write"],
87
- cwd: process.cwd(),
88
- timeoutMs: config.timeoutMinutes * 60 * 1000,
89
- onStdout,
90
- onStderr: (text) => {
91
- const lower = text.toLowerCase();
92
- if (lower.includes("error") || lower.includes("auth") || lower.includes("unauthorized") || lower.includes("forbidden")) {
93
- (0, output_1.printError)(`claude stderr: ${text.trim()}`);
94
- }
95
- },
96
- });
97
- // Scan for generated phase files
98
- const phases = (0, phases_1.scanPhases)(config.phasesDir);
99
- if (phases.length === 0) {
100
- throw new Error("Planner did not generate any phase files");
101
- }
102
- return { result, phases };
103
- }
104
- finally {
105
- flush();
106
- }
107
- };
108
- exports.invokePlanner = invokePlanner;
52
+ exports.assembleBaseUserPrompt = assembleBaseUserPrompt;
109
53
  //# sourceMappingURL=plan.exec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/plan.exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/plan.exec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAEjC,uDAA6D;AAE7D,8FAA8F;AACvF,MAAM,sBAAsB,GAAG,CAAC,MAAuB,EAAU,EAAE;IACxE,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACtD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjB,IAAA,2CAAyB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE3C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,KAAK,WAAW,CAAC,CAAA;IAEpE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AAdY,QAAA,sBAAsB,0BAclC"}
@@ -39,10 +39,9 @@ const claude_exec_1 = require("../claude/claude.exec");
39
39
  const agent_prompt_1 = require("../claude/agent.prompt");
40
40
  const stream_decode_1 = require("../claude/stream.decode");
41
41
  const git_1 = require("../../git");
42
- const agent_scan_1 = require("../discovery/agent.scan");
43
- const plugin_scan_1 = require("../discovery/plugin.scan");
44
42
  const feedback_1 = require("../../store/feedback");
45
- const output_1 = require("../../ui/output");
43
+ const plugin_scan_1 = require("../discovery/plugin.scan");
44
+ const pipeline_shared_1 = require("./pipeline.shared");
46
45
  const assembleUserPrompt = (config, phase, checkpointTag) => {
47
46
  const sections = [];
48
47
  sections.push("## Phase Spec\n");
@@ -67,44 +66,22 @@ const assembleUserPrompt = (config, phase, checkpointTag) => {
67
66
  const invokeReviewer = async (config, phase, checkpointTag) => {
68
67
  const systemPrompt = (0, agent_prompt_1.resolveAgentPrompt)("reviewer.md");
69
68
  const userPrompt = assembleUserPrompt(config, phase, checkpointTag);
70
- const { onStdout, flush } = (0, stream_decode_1.createDisplayCallbacks)({ suppressJsonBlock: true });
71
- const builtinAgents = (0, agent_scan_1.discoverBuiltinAgents)();
72
- const agents = (0, agent_scan_1.buildAgentsFlag)(builtinAgents);
73
- const pluginDirs = (0, plugin_scan_1.discoverPluginDirs)(config);
74
- // Include core hooks plugin when running in unsafe mode (no sandbox)
75
- if (config.unsafe && !config.sandboxProvider) {
76
- const coreDir = (0, plugin_scan_1.getCorePluginDir)();
77
- if (coreDir) {
78
- pluginDirs.push({ dir: coreDir, createdPluginJson: false });
79
- }
80
- }
69
+ const { onStdout, flush } = (0, stream_decode_1.createDisplayCallbacks)({ suppressJsonBlock: true, projectRoot: config.worktreePath ?? process.cwd() });
70
+ const prepared = (0, pipeline_shared_1.prepareAgentsAndPlugins)(config);
81
71
  try {
82
72
  const result = await (0, claude_exec_1.invokeClaude)({
83
73
  systemPrompt,
84
74
  userPrompt,
85
75
  model: config.model,
86
76
  allowedTools: ["Read", "Bash", "Glob", "Grep", "Agent"],
87
- agents: Object.keys(agents).length > 0 ? agents : undefined,
88
- pluginDirs: pluginDirs.length > 0 ? pluginDirs.map((p) => p.dir) : undefined,
89
- cwd: config.worktreePath ?? process.cwd(),
90
- timeoutMs: config.timeoutMinutes * 60 * 1000,
91
- onStdout,
92
- onStderr: (text) => {
93
- const lower = text.toLowerCase();
94
- if (lower.includes("error") || lower.includes("auth") || lower.includes("unauthorized") || lower.includes("forbidden")) {
95
- (0, output_1.printError)(`claude stderr: ${text.trim()}`);
96
- }
97
- },
98
- sandboxProvider: config.sandboxProvider,
99
- networkAllowlist: config.networkAllowlist,
100
- additionalWritePaths: [config.buildDir],
77
+ ...(0, pipeline_shared_1.commonInvokeOptions)(config, prepared, onStdout),
101
78
  });
102
79
  const verdict = (0, feedback_1.parseVerdict)(result.result);
103
80
  return { result, verdict };
104
81
  }
105
82
  finally {
106
83
  flush();
107
- (0, plugin_scan_1.cleanupPluginDirs)(pluginDirs);
84
+ (0, plugin_scan_1.cleanupPluginDirs)(prepared.pluginDirs);
108
85
  }
109
86
  };
110
87
  exports.invokeReviewer = invokeReviewer;
@@ -1 +1 @@
1
- {"version":3,"file":"review.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/review.exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/review.exec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAE7B,uDAAoD;AACpD,yDAA2D;AAC3D,2DAAgE;AAChE,mCAAmC;AACnC,mDAAmD;AACnD,0DAA4D;AAC5D,uDAAgF;AAEhF,MAAM,kBAAkB,GAAG,CACzB,MAAuB,EACvB,KAAgB,EAChB,aAAqB,EACb,EAAE;IACV,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjB,MAAM,IAAI,GAAG,IAAA,aAAO,EAAC,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS,CAAC,CAAA;IACrE,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IACnD,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IACvC,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AAEM,MAAM,cAAc,GAAG,KAAK,EACjC,MAAuB,EACvB,KAAgB,EAChB,aAAqB,EACsC,EAAE;IAC7D,MAAM,YAAY,GAAG,IAAA,iCAAkB,EAAC,aAAa,CAAC,CAAA;IACtD,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IACnE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAA,sCAAsB,EAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClI,MAAM,QAAQ,GAAG,IAAA,yCAAuB,EAAC,MAAM,CAAC,CAAA;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAY,EAAC;YAChC,YAAY;YACZ,UAAU;YACV,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YACvD,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACnD,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAA;QACP,IAAA,+BAAiB,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACxC,CAAC;AACH,CAAC,CAAA;AAzBY,QAAA,cAAc,kBAyB1B"}
@@ -1,10 +1,5 @@
1
1
  export declare const worktreePath: (repoRoot: string, buildName: string) => string;
2
2
  export declare const wipBranch: (buildName: string) => string;
3
- /**
4
- * Ensure the working directory is a git repo with at least one commit.
5
- * If not, initialise one with a generated .gitignore and root commit.
6
- * Returns true if a new repo was created, false if one already existed.
7
- */
8
3
  export declare const ensureGitRepo: (repoRoot: string) => boolean;
9
4
  export declare const createWorktree: (repoRoot: string, buildName: string) => string;
10
5
  export declare const validateWorktree: (repoRoot: string, buildName: string) => boolean;
@@ -73,34 +73,29 @@ const generateGitignore = (repoRoot) => {
73
73
  * If not, initialise one with a generated .gitignore and root commit.
74
74
  * Returns true if a new repo was created, false if one already existed.
75
75
  */
76
+ const seedInitialCommit = (repoRoot) => {
77
+ const gitignorePath = path.join(repoRoot, ".gitignore");
78
+ if (!fs.existsSync(gitignorePath)) {
79
+ fs.writeFileSync(gitignorePath, generateGitignore(repoRoot));
80
+ }
81
+ run("git add -A", repoRoot);
82
+ run('git commit -m "initial commit"', repoRoot);
83
+ };
76
84
  const ensureGitRepo = (repoRoot) => {
77
85
  try {
78
86
  run("git rev-parse --git-dir", repoRoot);
79
- // Git repo exists — check for at least one commit (HEAD must be valid)
80
87
  try {
81
88
  run("git rev-parse HEAD", repoRoot);
82
89
  return false;
83
90
  }
84
91
  catch {
85
- // Repo exists but no commits — create initial commit
86
- const gitignorePath = path.join(repoRoot, ".gitignore");
87
- if (!fs.existsSync(gitignorePath)) {
88
- fs.writeFileSync(gitignorePath, generateGitignore(repoRoot));
89
- }
90
- run("git add -A", repoRoot);
91
- run('git commit -m "initial commit"', repoRoot);
92
+ seedInitialCommit(repoRoot);
92
93
  return true;
93
94
  }
94
95
  }
95
96
  catch {
96
- // Not a git repo — initialise
97
97
  run("git init", repoRoot);
98
- const gitignorePath = path.join(repoRoot, ".gitignore");
99
- if (!fs.existsSync(gitignorePath)) {
100
- fs.writeFileSync(gitignorePath, generateGitignore(repoRoot));
101
- }
102
- run("git add -A", repoRoot);
103
- run('git commit -m "initial commit"', repoRoot);
98
+ seedInitialCommit(repoRoot);
104
99
  return true;
105
100
  }
106
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/engine/worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/engine/worktree.ts"],"names":[],"mappings":"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"}
@@ -102,78 +102,79 @@ const tryParseVerdict = (raw) => {
102
102
  : [],
103
103
  };
104
104
  };
105
- // Extract the JSON verdict block from reviewer's text output
106
- const parseVerdict = (text) => {
107
- // Try extracting from fenced code block first
108
- const fencedMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
109
- if (fencedMatch) {
110
- try {
111
- const result = tryParseVerdict(JSON.parse(fencedMatch[1]));
112
- if (result)
113
- return result;
105
+ // Find the end index of a balanced JSON object starting at position 0 in `text`.
106
+ // Returns the index of the closing brace, or -1 if no balanced pair is found.
107
+ const findBalancedBrace = (text) => {
108
+ let depth = 0;
109
+ let inString = false;
110
+ let escape = false;
111
+ for (let j = 0; j < text.length; j++) {
112
+ const ch = text[j];
113
+ if (escape) {
114
+ escape = false;
115
+ continue;
114
116
  }
115
- catch {
116
- // Fall through
117
+ if (ch === "\\") {
118
+ escape = true;
119
+ continue;
120
+ }
121
+ if (ch === '"') {
122
+ inString = !inString;
123
+ continue;
124
+ }
125
+ if (inString)
126
+ continue;
127
+ if (ch === "{")
128
+ depth++;
129
+ if (ch === "}") {
130
+ depth--;
131
+ if (depth === 0)
132
+ return j;
117
133
  }
118
134
  }
119
- // Brute-force: scan every { and try JSON.parse from that position.
120
- // For each {, first try the full slice, then try to find the matching }
121
- // by scanning for } from the end of the string backwards.
122
- for (let i = text.indexOf("{"); i !== -1; i = text.indexOf("{", i + 1)) {
123
- const slice = text.slice(i);
135
+ return -1;
136
+ };
137
+ // Try to parse a JSON object starting at `text` as a ReviewVerdict.
138
+ // First tries the full slice, then tries balanced brace extraction.
139
+ const tryExtractVerdictAt = (text) => {
140
+ try {
141
+ return tryParseVerdict(JSON.parse(text));
142
+ }
143
+ catch {
144
+ const end = findBalancedBrace(text);
145
+ if (end === -1)
146
+ return null;
124
147
  try {
125
- const result = tryParseVerdict(JSON.parse(slice));
126
- if (result)
127
- return result;
148
+ return tryParseVerdict(JSON.parse(text.slice(0, end + 1)));
128
149
  }
129
150
  catch {
130
- // Full slice failed (likely trailing text) — try to find balanced closing brace
131
- let depth = 0;
132
- let inString = false;
133
- let escape = false;
134
- for (let j = 0; j < slice.length; j++) {
135
- const ch = slice[j];
136
- if (escape) {
137
- escape = false;
138
- continue;
139
- }
140
- if (ch === "\\") {
141
- escape = true;
142
- continue;
143
- }
144
- if (ch === '"') {
145
- inString = !inString;
146
- continue;
147
- }
148
- if (inString)
149
- continue;
150
- if (ch === "{")
151
- depth++;
152
- if (ch === "}") {
153
- depth--;
154
- if (depth === 0) {
155
- try {
156
- const result = tryParseVerdict(JSON.parse(slice.slice(0, j + 1)));
157
- if (result)
158
- return result;
159
- }
160
- catch {
161
- // Not valid JSON at this brace pair
162
- }
163
- break;
164
- }
165
- }
166
- }
151
+ return null;
167
152
  }
168
153
  }
169
- // Default: unparseable
170
- return {
171
- passed: false,
172
- summary: "Could not parse reviewer verdict from output",
173
- criteriaResults: [],
174
- issues: [{ description: "Reviewer output did not contain a valid JSON verdict", severity: "blocking" }],
175
- suggestions: [],
176
- };
154
+ };
155
+ const UNPARSEABLE_VERDICT = {
156
+ passed: false,
157
+ summary: "Could not parse reviewer verdict from output",
158
+ criteriaResults: [],
159
+ issues: [{ description: "Reviewer output did not contain a valid JSON verdict", severity: "blocking" }],
160
+ suggestions: [],
161
+ };
162
+ // Extract the JSON verdict block from reviewer's text output
163
+ const parseVerdict = (text) => {
164
+ // Try extracting from fenced code block first
165
+ const fencedMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
166
+ if (fencedMatch) {
167
+ const result = tryExtractVerdictAt(fencedMatch[1]);
168
+ if (result)
169
+ return result;
170
+ }
171
+ // Scan every { and try to parse a verdict from that position
172
+ for (let i = text.indexOf("{"); i !== -1; i = text.indexOf("{", i + 1)) {
173
+ const result = tryExtractVerdictAt(text.slice(i));
174
+ if (result)
175
+ return result;
176
+ }
177
+ return UNPARSEABLE_VERDICT;
177
178
  };
178
179
  exports.parseVerdict = parseVerdict;
179
180
  // Format a ReviewIssue for display
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/store/feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/store/feedback.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export { loadBudget, saveBudget, recordCost, getTotalCost } from './budget';
2
2
  export { feedbackPath, archiveFeedbackPath, readFeedback, writeFeedback, archiveFeedback, parseVerdict, formatIssue, generateFeedback, } from './feedback';
3
3
  export { readHandoff, ensureHandoffExists } from './handoff';
4
4
  export { resolveFile, parseCheckCommand } from './inputs';
5
- export { PHASE_FILENAME_PATTERN, isPhaseFile, parsePhaseFilename, type PhaseContent, parsePhaseContent, scanPhases, } from './phases';
5
+ export { PHASE_FILENAME_PATTERN, isPhaseFile, parsePhaseFilename, parsePhaseContent, scanPhases, } from './phases';
6
6
  export { loadState, saveState, initState, updatePhaseStatus, resetRetries, getNextIncompletePhase, } from './state';
7
7
  export { checkpointTagName, completionTagName, createCheckpoint, createCompletionTag, verifyCompletionTag, cleanupBuildTags, } from './tags';
8
8
  export { logTrajectory, makeTrajectoryEntry, readTrajectory } from './trajectory';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2E;AAAlE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,sGAAA,YAAY,OAAA;AACzD,uCASmB;AARjB,wGAAA,YAAY,OAAA;AACZ,+GAAA,mBAAmB,OAAA;AACnB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAElB,qCAA4D;AAAnD,sGAAA,WAAW,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AACzC,mCAAyD;AAAhD,qGAAA,WAAW,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACvC,mCAOiB;AANf,gHAAA,sBAAsB,OAAA;AACtB,qGAAA,WAAW,OAAA;AACX,4GAAA,kBAAkB,OAAA;AAElB,2GAAA,iBAAiB,OAAA;AACjB,oGAAA,UAAU,OAAA;AAEZ,iCAOgB;AANd,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,qGAAA,YAAY,OAAA;AACZ,+GAAA,sBAAsB,OAAA;AAExB,+BAOe;AANb,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,wGAAA,gBAAgB,OAAA;AAChB,2GAAA,mBAAmB,OAAA;AACnB,2GAAA,mBAAmB,OAAA;AACnB,wGAAA,gBAAgB,OAAA;AAElB,2CAAiF;AAAxE,2GAAA,aAAa,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,4GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2E;AAAlE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,sGAAA,YAAY,OAAA;AACzD,uCASmB;AARjB,wGAAA,YAAY,OAAA;AACZ,+GAAA,mBAAmB,OAAA;AACnB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAElB,qCAA4D;AAAnD,sGAAA,WAAW,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AACzC,mCAAyD;AAAhD,qGAAA,WAAW,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACvC,mCAMiB;AALf,gHAAA,sBAAsB,OAAA;AACtB,qGAAA,WAAW,OAAA;AACX,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,oGAAA,UAAU,OAAA;AAEZ,iCAOgB;AANd,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,qGAAA,YAAY,OAAA;AACZ,+GAAA,sBAAsB,OAAA;AAExB,+BAOe;AANb,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,wGAAA,gBAAgB,OAAA;AAChB,2GAAA,mBAAmB,OAAA;AACnB,2GAAA,mBAAmB,OAAA;AACnB,wGAAA,gBAAgB,OAAA;AAElB,2CAAiF;AAAxE,2GAAA,aAAa,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,4GAAA,cAAc,OAAA"}
@@ -1,10 +1,11 @@
1
1
  /** Domains Claude needs for authentication and API access — always allowlisted. */
2
2
  export declare const CLAUDE_REQUIRED_DOMAINS: string[];
3
3
  export declare const DEFAULT_NETWORK_ALLOWLIST: string[];
4
- export type RidgelineSettings = {
4
+ type RidgelineSettings = {
5
5
  network?: {
6
6
  allowlist?: string[];
7
7
  };
8
8
  };
9
9
  export declare const loadSettings: (ridgelineDir: string) => RidgelineSettings;
10
10
  export declare const resolveNetworkAllowlist: (ridgelineDir: string) => string[];
11
+ export {};
package/dist/types.d.ts CHANGED
@@ -16,6 +16,7 @@ export type RidgelineConfig = {
16
16
  networkAllowlist: string[];
17
17
  sandboxProvider?: import("./engine/claude/sandbox").SandboxProvider | null;
18
18
  worktreePath: string | null;
19
+ extraContext: string | null;
19
20
  };
20
21
  export type PhaseInfo = {
21
22
  id: string;
@@ -70,9 +71,29 @@ export type ReviewVerdict = {
70
71
  issues: ReviewIssue[];
71
72
  suggestions: ReviewIssue[];
72
73
  };
74
+ type SpecialistPhaseProposal = {
75
+ title: string;
76
+ slug: string;
77
+ goal: string;
78
+ acceptanceCriteria: string[];
79
+ specReference: string;
80
+ rationale: string;
81
+ };
82
+ export type SpecialistProposal = {
83
+ perspective: string;
84
+ summary: string;
85
+ phases: SpecialistPhaseProposal[];
86
+ tradeoffs: string;
87
+ };
88
+ export type EnsemblePlanResult = {
89
+ specialistResults: ClaudeResult[];
90
+ synthesizerResult: ClaudeResult;
91
+ totalCostUsd: number;
92
+ totalDurationMs: number;
93
+ };
73
94
  export type BudgetEntry = {
74
95
  phase: string;
75
- role: "planner" | "builder" | "reviewer";
96
+ role: "planner" | "builder" | "reviewer" | "specialist" | "synthesizer";
76
97
  attempt: number;
77
98
  costUsd: number;
78
99
  inputTokens: number;
@@ -98,3 +119,4 @@ export type TrajectoryEntry = {
98
119
  costUsd: number | null;
99
120
  summary: string;
100
121
  };
122
+ export {};
@@ -1,3 +1,3 @@
1
- export { type Spinner, pickVerb, formatElapsed, startSpinner } from './spinner';
1
+ export { pickVerb, formatElapsed, startSpinner } from './spinner';
2
2
  export { printInfo, printError, printPhase } from './output';
3
3
  export { askBuildName } from './prompt';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+E;AAAxD,mGAAA,QAAQ,OAAA;AAAE,wGAAA,aAAa,OAAA;AAAE,uGAAA,YAAY,OAAA;AAC5D,mCAA4D;AAAnD,mGAAA,SAAS,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC1C,mCAAuC;AAA9B,sGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":";;;AAAA,qCAAiE;AAAxD,mGAAA,QAAQ,OAAA;AAAE,wGAAA,aAAa,OAAA;AAAE,uGAAA,YAAY,OAAA;AAC9C,mCAA4D;AAAnD,mGAAA,SAAS,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC1C,mCAAuC;AAA9B,sGAAA,YAAY,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ridgeline",
3
- "version": "0.2.25",
3
+ "version": "0.3.6",
4
4
  "description": "Build harness for long-horizon software execution",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -13,9 +13,10 @@
13
13
  "lint:code": "oxlint --ignore-pattern examples",
14
14
  "lint:markdown": "markdownlint-cli2 '**/*.md'",
15
15
  "lint:agents": "agnix",
16
- "lint:fallow": "npx fallow || true",
16
+ "lint:fallow": "npx fallow",
17
17
  "typecheck": "tsc --noEmit --pretty",
18
18
  "prepublishOnly": "npm run build",
19
+ "coverage": "vitest run --coverage",
19
20
  "test": "npm run typecheck && npm run lint && npm run test:unit",
20
21
  "test:unit": "vitest run",
21
22
  "test:e2e": "vitest run --config vitest.e2e.config.ts",
@@ -29,6 +30,7 @@
29
30
  },
30
31
  "devDependencies": {
31
32
  "@types/node": "22.19.17",
33
+ "@vitest/coverage-v8": "4.1.2",
32
34
  "agnix": "0.17.0",
33
35
  "fallow": "2.13.0",
34
36
  "markdownlint-cli2": "0.21.0",
@@ -1,24 +0,0 @@
1
- ---
2
- event: PreToolUse
3
- tool: Bash
4
- ---
5
- Block any bash command that makes outbound network requests.
6
-
7
- Deny commands containing: curl, wget, nc, ncat, netcat, ssh, scp, sftp,
8
- rsync (with remote paths), python -m http.server, node -e with http/https
9
- modules, telnet, ftp.
10
-
11
- Allow these exceptions:
12
-
13
- - npm install, npm ci, npm update
14
- - npx (any arguments)
15
- - pip install, pip3 install
16
- - cargo build, cargo install
17
- - gem install, bundle install
18
- - go get, go install, go mod download
19
- - git fetch, git pull, git clone, git push
20
- - brew install
21
-
22
- If the command is blocked, return "block" with a message explaining that
23
- network access is restricted. Suggest using an allowed package manager
24
- command instead.
@@ -1,4 +0,0 @@
1
- {
2
- "name": "ridgeline-core",
3
- "description": "Ridgeline core hooks and agents"
4
- }