ridgeline 0.7.21 → 0.8.2

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 (169) hide show
  1. package/dist/agents/core/builder.md +15 -0
  2. package/dist/catalog/build-catalog.js +2 -1
  3. package/dist/catalog/build-catalog.js.map +1 -1
  4. package/dist/catalog/classify.js +2 -1
  5. package/dist/catalog/classify.js.map +1 -1
  6. package/dist/catalog/pack-sprites.js +3 -2
  7. package/dist/catalog/pack-sprites.js.map +1 -1
  8. package/dist/catalog/vision-describe.js +3 -2
  9. package/dist/catalog/vision-describe.js.map +1 -1
  10. package/dist/cli.js +112 -44
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/build.js +0 -1
  13. package/dist/commands/build.js.map +1 -1
  14. package/dist/commands/check.d.ts +1 -5
  15. package/dist/commands/check.js +2 -60
  16. package/dist/commands/check.js.map +1 -1
  17. package/dist/commands/create.d.ts +0 -1
  18. package/dist/commands/create.js +0 -18
  19. package/dist/commands/create.js.map +1 -1
  20. package/dist/commands/design.d.ts +0 -1
  21. package/dist/commands/design.js +1 -2
  22. package/dist/commands/design.js.map +1 -1
  23. package/dist/commands/qa-workflow.js +6 -5
  24. package/dist/commands/qa-workflow.js.map +1 -1
  25. package/dist/commands/refine.d.ts +0 -1
  26. package/dist/commands/refine.js +0 -1
  27. package/dist/commands/refine.js.map +1 -1
  28. package/dist/commands/research.d.ts +2 -1
  29. package/dist/commands/research.js +2 -2
  30. package/dist/commands/research.js.map +1 -1
  31. package/dist/commands/retrospective.d.ts +0 -1
  32. package/dist/commands/retrospective.js +1 -2
  33. package/dist/commands/retrospective.js.map +1 -1
  34. package/dist/commands/shape.d.ts +30 -1
  35. package/dist/commands/shape.js +16 -5
  36. package/dist/commands/shape.js.map +1 -1
  37. package/dist/commands/spec.d.ts +2 -1
  38. package/dist/commands/spec.js +2 -1
  39. package/dist/commands/spec.js.map +1 -1
  40. package/dist/commands/ui.d.ts +7 -0
  41. package/dist/commands/ui.js +96 -0
  42. package/dist/commands/ui.js.map +1 -0
  43. package/dist/config.js +2 -2
  44. package/dist/config.js.map +1 -1
  45. package/dist/engine/claude/claude.exec.d.ts +11 -0
  46. package/dist/engine/claude/claude.exec.js +73 -36
  47. package/dist/engine/claude/claude.exec.js.map +1 -1
  48. package/dist/engine/claude/stable.prompt.d.ts +31 -0
  49. package/dist/engine/claude/stable.prompt.js +137 -0
  50. package/dist/engine/claude/stable.prompt.js.map +1 -0
  51. package/dist/engine/claude/stream.display.d.ts +1 -1
  52. package/dist/engine/claude/stream.display.js +2 -1
  53. package/dist/engine/claude/stream.display.js.map +1 -1
  54. package/dist/engine/detect/index.d.ts +15 -0
  55. package/dist/engine/detect/index.js +160 -0
  56. package/dist/engine/detect/index.js.map +1 -0
  57. package/dist/engine/discovery/agent.registry.d.ts +5 -6
  58. package/dist/engine/discovery/agent.registry.js +20 -54
  59. package/dist/engine/discovery/agent.registry.js.map +1 -1
  60. package/dist/engine/discovery/skill.check.d.ts +3 -3
  61. package/dist/engine/discovery/skill.check.js +4 -4
  62. package/dist/engine/discovery/skill.check.js.map +1 -1
  63. package/dist/engine/index.d.ts +0 -1
  64. package/dist/engine/index.js +1 -3
  65. package/dist/engine/index.js.map +1 -1
  66. package/dist/engine/pipeline/build.exec.js +19 -6
  67. package/dist/engine/pipeline/build.exec.js.map +1 -1
  68. package/dist/engine/pipeline/ensemble.exec.d.ts +41 -3
  69. package/dist/engine/pipeline/ensemble.exec.js +295 -94
  70. package/dist/engine/pipeline/ensemble.exec.js.map +1 -1
  71. package/dist/engine/pipeline/phase.sequence.js +97 -4
  72. package/dist/engine/pipeline/phase.sequence.js.map +1 -1
  73. package/dist/engine/pipeline/pipeline.shared.d.ts +7 -0
  74. package/dist/engine/pipeline/pipeline.shared.js +21 -3
  75. package/dist/engine/pipeline/pipeline.shared.js.map +1 -1
  76. package/dist/engine/pipeline/refine.exec.d.ts +0 -1
  77. package/dist/engine/pipeline/refine.exec.js +1 -2
  78. package/dist/engine/pipeline/refine.exec.js.map +1 -1
  79. package/dist/engine/pipeline/research.exec.d.ts +2 -1
  80. package/dist/engine/pipeline/research.exec.js +53 -7
  81. package/dist/engine/pipeline/research.exec.js.map +1 -1
  82. package/dist/engine/pipeline/review.exec.d.ts +2 -1
  83. package/dist/engine/pipeline/review.exec.js +14 -6
  84. package/dist/engine/pipeline/review.exec.js.map +1 -1
  85. package/dist/engine/pipeline/sensors.collect.d.ts +6 -0
  86. package/dist/engine/pipeline/sensors.collect.js +34 -0
  87. package/dist/engine/pipeline/sensors.collect.js.map +1 -0
  88. package/dist/engine/pipeline/specialist.verdict.d.ts +19 -0
  89. package/dist/engine/pipeline/specialist.verdict.js +189 -0
  90. package/dist/engine/pipeline/specialist.verdict.js.map +1 -0
  91. package/dist/engine/pipeline/specify.exec.d.ts +2 -1
  92. package/dist/engine/pipeline/specify.exec.js +159 -7
  93. package/dist/engine/pipeline/specify.exec.js.map +1 -1
  94. package/dist/sensors/a11y.d.ts +36 -0
  95. package/dist/sensors/a11y.js +134 -0
  96. package/dist/sensors/a11y.js.map +1 -0
  97. package/dist/sensors/contrast.d.ts +3 -0
  98. package/dist/sensors/contrast.js +117 -0
  99. package/dist/sensors/contrast.js.map +1 -0
  100. package/dist/sensors/index.d.ts +27 -0
  101. package/dist/sensors/index.js +3 -0
  102. package/dist/sensors/index.js.map +1 -0
  103. package/dist/sensors/playwright.d.ts +69 -0
  104. package/dist/sensors/playwright.js +266 -0
  105. package/dist/sensors/playwright.js.map +1 -0
  106. package/dist/sensors/vision.d.ts +18 -0
  107. package/dist/sensors/vision.js +125 -0
  108. package/dist/sensors/vision.js.map +1 -0
  109. package/dist/stores/feedback.format.js +9 -0
  110. package/dist/stores/feedback.format.js.map +1 -1
  111. package/dist/stores/feedback.parse.js +2 -0
  112. package/dist/stores/feedback.parse.js.map +1 -1
  113. package/dist/stores/settings.d.ts +7 -1
  114. package/dist/stores/settings.js +10 -1
  115. package/dist/stores/settings.js.map +1 -1
  116. package/dist/stores/trajectory.d.ts +9 -2
  117. package/dist/stores/trajectory.js +6 -0
  118. package/dist/stores/trajectory.js.map +1 -1
  119. package/dist/types.d.ts +36 -3
  120. package/dist/ui/color.d.ts +16 -0
  121. package/dist/ui/color.js +46 -0
  122. package/dist/ui/color.js.map +1 -0
  123. package/dist/ui/contrast.d.ts +2 -0
  124. package/dist/ui/contrast.js +94 -0
  125. package/dist/ui/contrast.js.map +1 -0
  126. package/dist/ui/dashboard/client.d.ts +1 -0
  127. package/dist/ui/dashboard/client.js +281 -0
  128. package/dist/ui/dashboard/client.js.map +1 -0
  129. package/dist/ui/dashboard/css.d.ts +1 -0
  130. package/dist/ui/dashboard/css.js +341 -0
  131. package/dist/ui/dashboard/css.js.map +1 -0
  132. package/dist/ui/dashboard/events.d.ts +15 -0
  133. package/dist/ui/dashboard/events.js +40 -0
  134. package/dist/ui/dashboard/events.js.map +1 -0
  135. package/dist/ui/dashboard/favicon.d.ts +2 -0
  136. package/dist/ui/dashboard/favicon.js +20 -0
  137. package/dist/ui/dashboard/favicon.js.map +1 -0
  138. package/dist/ui/dashboard/hex.d.ts +7 -0
  139. package/dist/ui/dashboard/hex.js +16 -0
  140. package/dist/ui/dashboard/hex.js.map +1 -0
  141. package/dist/ui/dashboard/html.d.ts +7 -0
  142. package/dist/ui/dashboard/html.js +69 -0
  143. package/dist/ui/dashboard/html.js.map +1 -0
  144. package/dist/ui/dashboard/server.d.ts +26 -0
  145. package/dist/ui/dashboard/server.js +257 -0
  146. package/dist/ui/dashboard/server.js.map +1 -0
  147. package/dist/ui/dashboard/snapshot.d.ts +29 -0
  148. package/dist/ui/dashboard/snapshot.js +71 -0
  149. package/dist/ui/dashboard/snapshot.js.map +1 -0
  150. package/dist/ui/dashboard/tokens.d.ts +19 -0
  151. package/dist/ui/dashboard/tokens.js +25 -0
  152. package/dist/ui/dashboard/tokens.js.map +1 -0
  153. package/dist/ui/dashboard/watcher.d.ts +13 -0
  154. package/dist/ui/dashboard/watcher.js +238 -0
  155. package/dist/ui/dashboard/watcher.js.map +1 -0
  156. package/dist/ui/output.js +3 -2
  157. package/dist/ui/output.js.map +1 -1
  158. package/dist/ui/preflight.d.ts +21 -0
  159. package/dist/ui/preflight.js +159 -0
  160. package/dist/ui/preflight.js.map +1 -0
  161. package/dist/ui/spinner.d.ts +0 -6
  162. package/dist/ui/spinner.js +25 -6
  163. package/dist/ui/spinner.js.map +1 -1
  164. package/dist/ui/transcript.js +2 -3
  165. package/dist/ui/transcript.js.map +1 -1
  166. package/dist/utils/flavour-removed.d.ts +12 -0
  167. package/dist/utils/flavour-removed.js +44 -0
  168. package/dist/utils/flavour-removed.js.map +1 -0
  169. package/package.json +16 -3
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDisplayCallbacks = exports.extractResult = exports.createStreamHandler = exports.parseStreamLine = exports.invokeReviewer = exports.cleanupPluginDirs = exports.discoverPluginDirs = exports.invokePlanner = exports.runPhase = exports.invokeClaude = exports.invokeBuilder = exports.resolveFlavour = exports.buildAgentRegistry = exports.buildAgentsFlag = exports.discoverAgentsInDir = exports.parseFrontmatter = void 0;
3
+ exports.createDisplayCallbacks = exports.extractResult = exports.createStreamHandler = exports.parseStreamLine = exports.invokeReviewer = exports.cleanupPluginDirs = exports.discoverPluginDirs = exports.invokePlanner = exports.runPhase = exports.invokeClaude = exports.invokeBuilder = exports.buildAgentRegistry = exports.buildAgentsFlag = exports.discoverAgentsInDir = exports.parseFrontmatter = void 0;
4
4
  var agent_scan_1 = require("./discovery/agent.scan");
5
5
  Object.defineProperty(exports, "parseFrontmatter", { enumerable: true, get: function () { return agent_scan_1.parseFrontmatter; } });
6
6
  Object.defineProperty(exports, "discoverAgentsInDir", { enumerable: true, get: function () { return agent_scan_1.discoverAgentsInDir; } });
7
7
  Object.defineProperty(exports, "buildAgentsFlag", { enumerable: true, get: function () { return agent_scan_1.buildAgentsFlag; } });
8
8
  var agent_registry_1 = require("./discovery/agent.registry");
9
9
  Object.defineProperty(exports, "buildAgentRegistry", { enumerable: true, get: function () { return agent_registry_1.buildAgentRegistry; } });
10
- var flavour_resolve_1 = require("./discovery/flavour.resolve");
11
- Object.defineProperty(exports, "resolveFlavour", { enumerable: true, get: function () { return flavour_resolve_1.resolveFlavour; } });
12
10
  var build_exec_1 = require("./pipeline/build.exec");
13
11
  Object.defineProperty(exports, "invokeBuilder", { enumerable: true, get: function () { return build_exec_1.invokeBuilder; } });
14
12
  var claude_exec_1 = require("./claude/claude.exec");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;AAAA,qDAK+B;AAH7B,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,6GAAA,eAAe,OAAA;AAEjB,6DAAmF;AAAtD,oHAAA,kBAAkB,OAAA;AAC/C,+DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,oDAAqD;AAA5C,2GAAA,aAAa,OAAA;AACtB,oDAAuE;AAA1C,2GAAA,YAAY,OAAA;AACzC,4DAAoD;AAA3C,0GAAA,QAAQ,OAAA;AACjB,0DAAwD;AAA/C,8GAAA,aAAa,OAAA;AACtB,uDAGgC;AAF9B,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AAEnB,sDAAuD;AAA9C,6GAAA,cAAc,OAAA;AACvB,sDAG8B;AAF5B,+GAAA,eAAe,OAAA;AACf,mHAAA,mBAAmB,OAAA;AAErB,wDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,0DAAgE;AAAvD,wHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;AAAA,qDAK+B;AAH7B,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,6GAAA,eAAe,OAAA;AAEjB,6DAAmF;AAAtD,oHAAA,kBAAkB,OAAA;AAC/C,oDAAqD;AAA5C,2GAAA,aAAa,OAAA;AACtB,oDAAuE;AAA1C,2GAAA,YAAY,OAAA;AACzC,4DAAoD;AAA3C,0GAAA,QAAQ,OAAA;AACjB,0DAAwD;AAA/C,8GAAA,aAAa,OAAA;AACtB,uDAGgC;AAF9B,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AAEnB,sDAAuD;AAA9C,6GAAA,cAAc,OAAA;AACvB,sDAG8B;AAF5B,+GAAA,eAAe,OAAA;AACf,mHAAA,mBAAmB,OAAA;AAErB,wDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,0DAAgE;AAAvD,wHAAA,sBAAsB,OAAA"}
@@ -41,10 +41,22 @@ const stream_display_1 = require("../claude/stream.display");
41
41
  const handoff_1 = require("../../stores/handoff");
42
42
  const plugin_scan_1 = require("../discovery/plugin.scan");
43
43
  const agent_registry_1 = require("../discovery/agent.registry");
44
- const flavour_resolve_1 = require("../discovery/flavour.resolve");
45
44
  const pipeline_shared_1 = require("./pipeline.shared");
46
45
  const prompt_document_1 = require("./prompt.document");
47
- const assembleUserPrompt = (config, phase, feedbackPath) => {
46
+ /**
47
+ * Resolve the file path the builder should append handoff notes to.
48
+ * In the sequential path (cwd unset), this is the canonical handoff.md.
49
+ * In the wave path (cwd is a worktree), this is a per-phase fragment
50
+ * inside the worktree's buildDir, so concurrent phases never collide
51
+ * on the same file at git-merge time. Fragments are stitched back into
52
+ * the canonical handoff.md by consolidateHandoffs after the wave merges.
53
+ */
54
+ const resolveHandoffTarget = (config, phase, cwd) => {
55
+ if (!cwd)
56
+ return path.join(config.buildDir, "handoff.md");
57
+ return path.join(cwd, ".ridgeline", "builds", config.buildName, `handoff-${phase.id}.md`);
58
+ };
59
+ const assembleUserPrompt = (config, phase, feedbackPath, cwd) => {
48
60
  const doc = new prompt_document_1.PromptDocument();
49
61
  (0, pipeline_shared_1.appendConstraintsAndTaste)(doc, config);
50
62
  (0, pipeline_shared_1.appendDesign)(doc, config);
@@ -65,8 +77,9 @@ const assembleUserPrompt = (config, phase, feedbackPath) => {
65
77
  if (config.checkCommand) {
66
78
  doc.instruction("Check Command", `Run this command after making changes to verify correctness:\n\n\`\`\`\n${config.checkCommand}\n\`\`\``);
67
79
  }
68
- // Handoff file path for the builder to append to
69
- doc.instruction("Handoff File", `Append your handoff notes to: ${path.join(config.buildDir, "handoff.md")}`);
80
+ // Handoff file path for the builder to append to. Wave runs use a
81
+ // per-phase fragment so parallel phases don't collide at merge time.
82
+ doc.instruction("Handoff File", `Append your handoff notes to: ${resolveHandoffTarget(config, phase, cwd)}`);
70
83
  if (feedbackPath && fs.existsSync(feedbackPath)) {
71
84
  doc.data("Reviewer Feedback (RETRY)", "This is a retry. The reviewer found issues with your previous attempt.\n" +
72
85
  "Focus on fixing these issues. Do not redo work that already passed.\n\n" +
@@ -75,9 +88,9 @@ const assembleUserPrompt = (config, phase, feedbackPath) => {
75
88
  return doc.render();
76
89
  };
77
90
  const invokeBuilder = async (config, phase, feedbackPath, cwd) => {
78
- const registry = (0, agent_registry_1.buildAgentRegistry)((0, flavour_resolve_1.resolveFlavour)(config.flavour));
91
+ const registry = (0, agent_registry_1.buildAgentRegistry)();
79
92
  const systemPrompt = registry.getCorePrompt("builder.md");
80
- const userPrompt = assembleUserPrompt(config, phase, feedbackPath);
93
+ const userPrompt = assembleUserPrompt(config, phase, feedbackPath, cwd);
81
94
  const { onStdout, flush } = (0, stream_display_1.createDisplayCallbacks)({ projectRoot: cwd ?? process.cwd() });
82
95
  const prepared = (0, pipeline_shared_1.prepareAgentsAndPlugins)(config);
83
96
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"build.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/build.exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.exec.js","sourceRoot":"","sources":["../../../src/engine/pipeline/build.exec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RidgelineConfig, PhaseInfo, ClaudeResult, EnsembleResult } from "../../types";
1
+ import { RidgelineConfig, PhaseInfo, ClaudeResult, EnsembleResult, SpecialistStage } from "../../types";
2
2
  import { SpecialistDef } from "../discovery/agent.registry";
3
3
  /**
4
4
  * Attempt to extract a JSON object from a string that may be wrapped in
@@ -37,8 +37,13 @@ type EnsembleConfig<TDraft> = {
37
37
  specialistTools?: string[];
38
38
  /** Model name for invokeClaude */
39
39
  model: string;
40
- /** Timeout in minutes */
40
+ /** Synthesizer timeout in minutes. */
41
41
  timeoutMinutes: number;
42
+ /**
43
+ * Per-specialist call timeout in seconds. Defaults to 180. When `isStructured`
44
+ * is false (research), caller may override with a longer value.
45
+ */
46
+ specialistTimeoutSeconds?: number;
42
47
  /** Budget cap (null = unlimited) */
43
48
  maxBudgetUsd: number | null;
44
49
  /** Optional post-synthesis verification. Throw to signal failure. */
@@ -53,7 +58,6 @@ type EnsembleConfig<TDraft> = {
53
58
  * Enable two-round ensemble: after round 1 (independent drafts), each specialist
54
59
  * sees all other drafts and produces annotations (concerns, agreements, gaps).
55
60
  * The synthesizer then receives both drafts and annotations.
56
- * Default: false (opt-in, because it roughly doubles specialist cost).
57
61
  */
58
62
  isTwoRound?: boolean;
59
63
  /** Build the annotation prompt for round 2, given other drafts. Requires isTwoRound. */
@@ -61,8 +65,42 @@ type EnsembleConfig<TDraft> = {
61
65
  perspective: string;
62
66
  draft: TDraft;
63
67
  }[]) => string;
68
+ /** Stage identifier for structured-verdict agreement detection. */
69
+ stage?: SpecialistStage;
70
+ /**
71
+ * Build directory used for trajectory logging. When absent, specialist
72
+ * failures and agreement skips are logged to stderr only.
73
+ */
74
+ buildDir?: string;
75
+ /**
76
+ * Extract the raw string used for skeleton parsing from a specialist's draft.
77
+ * Defaults to the ClaudeResult.result text.
78
+ */
79
+ skeletonSource?: (result: ClaudeResult, draft: TDraft) => string;
80
+ /**
81
+ * When all specialists' skeletons agree, produce the canonical artifact
82
+ * from the first specialist's draft and return a synthetic synthesizer
83
+ * result describing the skip. When absent, agreement detection is disabled.
84
+ */
85
+ onAgreementSkip?: (successful: {
86
+ perspective: string;
87
+ result: ClaudeResult;
88
+ draft: TDraft;
89
+ }[]) => Promise<ClaudeResult> | ClaudeResult;
64
90
  };
65
91
  export declare const invokeEnsemble: <TDraft>(config: EnsembleConfig<TDraft>) => Promise<EnsembleResult>;
92
+ /**
93
+ * Cap a registered specialist list to the configured ensemble size.
94
+ * Default size: 2; thorough mode: 3.
95
+ */
96
+ export declare const selectSpecialists: (all: SpecialistDef[], { isThorough }: {
97
+ isThorough: boolean;
98
+ }) => SpecialistDef[];
99
+ /**
100
+ * Append the audit note that marks an agreement-based synthesis skip.
101
+ * Idempotent when applied more than once to the same artifact.
102
+ */
103
+ export declare const appendSkipAuditNote: (filepath: string, count: number, stage: SpecialistStage) => void;
66
104
  export declare const invokePlanner: (config: RidgelineConfig) => Promise<{
67
105
  result: ClaudeResult;
68
106
  phases: PhaseInfo[];