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.
- package/dist/agents/core/builder.md +15 -0
- package/dist/catalog/build-catalog.js +2 -1
- package/dist/catalog/build-catalog.js.map +1 -1
- package/dist/catalog/classify.js +2 -1
- package/dist/catalog/classify.js.map +1 -1
- package/dist/catalog/pack-sprites.js +3 -2
- package/dist/catalog/pack-sprites.js.map +1 -1
- package/dist/catalog/vision-describe.js +3 -2
- package/dist/catalog/vision-describe.js.map +1 -1
- package/dist/cli.js +112 -44
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +0 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.d.ts +1 -5
- package/dist/commands/check.js +2 -60
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/create.d.ts +0 -1
- package/dist/commands/create.js +0 -18
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/design.d.ts +0 -1
- package/dist/commands/design.js +1 -2
- package/dist/commands/design.js.map +1 -1
- package/dist/commands/qa-workflow.js +6 -5
- package/dist/commands/qa-workflow.js.map +1 -1
- package/dist/commands/refine.d.ts +0 -1
- package/dist/commands/refine.js +0 -1
- package/dist/commands/refine.js.map +1 -1
- package/dist/commands/research.d.ts +2 -1
- package/dist/commands/research.js +2 -2
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/retrospective.d.ts +0 -1
- package/dist/commands/retrospective.js +1 -2
- package/dist/commands/retrospective.js.map +1 -1
- package/dist/commands/shape.d.ts +30 -1
- package/dist/commands/shape.js +16 -5
- package/dist/commands/shape.js.map +1 -1
- package/dist/commands/spec.d.ts +2 -1
- package/dist/commands/spec.js +2 -1
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/ui.d.ts +7 -0
- package/dist/commands/ui.js +96 -0
- package/dist/commands/ui.js.map +1 -0
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/engine/claude/claude.exec.d.ts +11 -0
- package/dist/engine/claude/claude.exec.js +73 -36
- package/dist/engine/claude/claude.exec.js.map +1 -1
- package/dist/engine/claude/stable.prompt.d.ts +31 -0
- package/dist/engine/claude/stable.prompt.js +137 -0
- package/dist/engine/claude/stable.prompt.js.map +1 -0
- package/dist/engine/claude/stream.display.d.ts +1 -1
- package/dist/engine/claude/stream.display.js +2 -1
- package/dist/engine/claude/stream.display.js.map +1 -1
- package/dist/engine/detect/index.d.ts +15 -0
- package/dist/engine/detect/index.js +160 -0
- package/dist/engine/detect/index.js.map +1 -0
- package/dist/engine/discovery/agent.registry.d.ts +5 -6
- package/dist/engine/discovery/agent.registry.js +20 -54
- package/dist/engine/discovery/agent.registry.js.map +1 -1
- package/dist/engine/discovery/skill.check.d.ts +3 -3
- package/dist/engine/discovery/skill.check.js +4 -4
- package/dist/engine/discovery/skill.check.js.map +1 -1
- package/dist/engine/index.d.ts +0 -1
- package/dist/engine/index.js +1 -3
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/pipeline/build.exec.js +19 -6
- package/dist/engine/pipeline/build.exec.js.map +1 -1
- package/dist/engine/pipeline/ensemble.exec.d.ts +41 -3
- package/dist/engine/pipeline/ensemble.exec.js +295 -94
- package/dist/engine/pipeline/ensemble.exec.js.map +1 -1
- package/dist/engine/pipeline/phase.sequence.js +97 -4
- package/dist/engine/pipeline/phase.sequence.js.map +1 -1
- package/dist/engine/pipeline/pipeline.shared.d.ts +7 -0
- package/dist/engine/pipeline/pipeline.shared.js +21 -3
- package/dist/engine/pipeline/pipeline.shared.js.map +1 -1
- package/dist/engine/pipeline/refine.exec.d.ts +0 -1
- package/dist/engine/pipeline/refine.exec.js +1 -2
- package/dist/engine/pipeline/refine.exec.js.map +1 -1
- package/dist/engine/pipeline/research.exec.d.ts +2 -1
- package/dist/engine/pipeline/research.exec.js +53 -7
- package/dist/engine/pipeline/research.exec.js.map +1 -1
- package/dist/engine/pipeline/review.exec.d.ts +2 -1
- package/dist/engine/pipeline/review.exec.js +14 -6
- package/dist/engine/pipeline/review.exec.js.map +1 -1
- package/dist/engine/pipeline/sensors.collect.d.ts +6 -0
- package/dist/engine/pipeline/sensors.collect.js +34 -0
- package/dist/engine/pipeline/sensors.collect.js.map +1 -0
- package/dist/engine/pipeline/specialist.verdict.d.ts +19 -0
- package/dist/engine/pipeline/specialist.verdict.js +189 -0
- package/dist/engine/pipeline/specialist.verdict.js.map +1 -0
- package/dist/engine/pipeline/specify.exec.d.ts +2 -1
- package/dist/engine/pipeline/specify.exec.js +159 -7
- package/dist/engine/pipeline/specify.exec.js.map +1 -1
- package/dist/sensors/a11y.d.ts +36 -0
- package/dist/sensors/a11y.js +134 -0
- package/dist/sensors/a11y.js.map +1 -0
- package/dist/sensors/contrast.d.ts +3 -0
- package/dist/sensors/contrast.js +117 -0
- package/dist/sensors/contrast.js.map +1 -0
- package/dist/sensors/index.d.ts +27 -0
- package/dist/sensors/index.js +3 -0
- package/dist/sensors/index.js.map +1 -0
- package/dist/sensors/playwright.d.ts +69 -0
- package/dist/sensors/playwright.js +266 -0
- package/dist/sensors/playwright.js.map +1 -0
- package/dist/sensors/vision.d.ts +18 -0
- package/dist/sensors/vision.js +125 -0
- package/dist/sensors/vision.js.map +1 -0
- package/dist/stores/feedback.format.js +9 -0
- package/dist/stores/feedback.format.js.map +1 -1
- package/dist/stores/feedback.parse.js +2 -0
- package/dist/stores/feedback.parse.js.map +1 -1
- package/dist/stores/settings.d.ts +7 -1
- package/dist/stores/settings.js +10 -1
- package/dist/stores/settings.js.map +1 -1
- package/dist/stores/trajectory.d.ts +9 -2
- package/dist/stores/trajectory.js +6 -0
- package/dist/stores/trajectory.js.map +1 -1
- package/dist/types.d.ts +36 -3
- package/dist/ui/color.d.ts +16 -0
- package/dist/ui/color.js +46 -0
- package/dist/ui/color.js.map +1 -0
- package/dist/ui/contrast.d.ts +2 -0
- package/dist/ui/contrast.js +94 -0
- package/dist/ui/contrast.js.map +1 -0
- package/dist/ui/dashboard/client.d.ts +1 -0
- package/dist/ui/dashboard/client.js +281 -0
- package/dist/ui/dashboard/client.js.map +1 -0
- package/dist/ui/dashboard/css.d.ts +1 -0
- package/dist/ui/dashboard/css.js +341 -0
- package/dist/ui/dashboard/css.js.map +1 -0
- package/dist/ui/dashboard/events.d.ts +15 -0
- package/dist/ui/dashboard/events.js +40 -0
- package/dist/ui/dashboard/events.js.map +1 -0
- package/dist/ui/dashboard/favicon.d.ts +2 -0
- package/dist/ui/dashboard/favicon.js +20 -0
- package/dist/ui/dashboard/favicon.js.map +1 -0
- package/dist/ui/dashboard/hex.d.ts +7 -0
- package/dist/ui/dashboard/hex.js +16 -0
- package/dist/ui/dashboard/hex.js.map +1 -0
- package/dist/ui/dashboard/html.d.ts +7 -0
- package/dist/ui/dashboard/html.js +69 -0
- package/dist/ui/dashboard/html.js.map +1 -0
- package/dist/ui/dashboard/server.d.ts +26 -0
- package/dist/ui/dashboard/server.js +257 -0
- package/dist/ui/dashboard/server.js.map +1 -0
- package/dist/ui/dashboard/snapshot.d.ts +29 -0
- package/dist/ui/dashboard/snapshot.js +71 -0
- package/dist/ui/dashboard/snapshot.js.map +1 -0
- package/dist/ui/dashboard/tokens.d.ts +19 -0
- package/dist/ui/dashboard/tokens.js +25 -0
- package/dist/ui/dashboard/tokens.js.map +1 -0
- package/dist/ui/dashboard/watcher.d.ts +13 -0
- package/dist/ui/dashboard/watcher.js +238 -0
- package/dist/ui/dashboard/watcher.js.map +1 -0
- package/dist/ui/output.js +3 -2
- package/dist/ui/output.js.map +1 -1
- package/dist/ui/preflight.d.ts +21 -0
- package/dist/ui/preflight.js +159 -0
- package/dist/ui/preflight.js.map +1 -0
- package/dist/ui/spinner.d.ts +0 -6
- package/dist/ui/spinner.js +25 -6
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/transcript.js +2 -3
- package/dist/ui/transcript.js.map +1 -1
- package/dist/utils/flavour-removed.d.ts +12 -0
- package/dist/utils/flavour-removed.js +44 -0
- package/dist/utils/flavour-removed.js.map +1 -0
- package/package.json +16 -3
package/dist/engine/index.js
CHANGED
|
@@ -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.
|
|
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");
|
package/dist/engine/index.js.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAEjC,uDAAoD;AACpD,6DAAiE;AACjE,kDAAkD;AAClD,0DAA4D;AAC5D,gEAAgE;AAChE,
|
|
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
|
-
/**
|
|
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[];
|