ridgeline 0.5.9 → 0.7.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/README.md +53 -9
- package/dist/agents/core/designer.md +131 -0
- package/dist/agents/core/refiner.md +61 -0
- package/dist/agents/core/researcher.md +78 -0
- package/dist/agents/core/specifier.md +16 -0
- package/dist/agents/researchers/academic.md +27 -0
- package/dist/agents/researchers/competitive.md +28 -0
- package/dist/agents/researchers/context.md +46 -0
- package/dist/agents/researchers/ecosystem.md +28 -0
- package/dist/agents/researchers/gaps.md +67 -0
- package/dist/agents/specifiers/visual-coherence.md +55 -0
- package/dist/cli.js +83 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.js +20 -2
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/design.d.ts +8 -0
- package/dist/commands/design.js +130 -0
- package/dist/commands/design.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plan.js +3 -3
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/qa-workflow.d.ts +33 -0
- package/dist/commands/qa-workflow.js +139 -0
- package/dist/commands/qa-workflow.js.map +1 -0
- package/dist/commands/refine.d.ts +8 -0
- package/dist/commands/refine.js +105 -0
- package/dist/commands/refine.js.map +1 -0
- package/dist/commands/research.d.ts +10 -0
- package/dist/commands/research.js +146 -0
- package/dist/commands/research.js.map +1 -0
- package/dist/commands/rewind.js +5 -3
- package/dist/commands/rewind.js.map +1 -1
- package/dist/commands/shape.js +36 -121
- package/dist/commands/shape.js.map +1 -1
- package/dist/commands/spec.js +1 -0
- package/dist/commands/spec.js.map +1 -1
- package/dist/engine/claude/stream.display.js +0 -1
- package/dist/engine/claude/stream.display.js.map +1 -1
- package/dist/engine/claude/stream.parse.d.ts +1 -15
- package/dist/engine/claude/stream.parse.js +3 -21
- package/dist/engine/claude/stream.parse.js.map +1 -1
- package/dist/engine/claude/stream.result.js +2 -2
- package/dist/engine/claude/stream.types.d.ts +15 -0
- package/dist/engine/claude/stream.types.js +23 -0
- package/dist/engine/claude/stream.types.js.map +1 -0
- package/dist/engine/discovery/agent.registry.d.ts +4 -0
- package/dist/engine/discovery/agent.registry.js +46 -18
- package/dist/engine/discovery/agent.registry.js.map +1 -1
- package/dist/engine/discovery/flavour.config.d.ts +9 -0
- package/dist/engine/discovery/flavour.config.js +61 -0
- package/dist/engine/discovery/flavour.config.js.map +1 -0
- package/dist/engine/discovery/plugin.scan.d.ts +1 -0
- package/dist/engine/discovery/plugin.scan.js +29 -1
- package/dist/engine/discovery/plugin.scan.js.map +1 -1
- package/dist/engine/discovery/skill.check.d.ts +19 -0
- package/dist/engine/discovery/skill.check.js +145 -0
- package/dist/engine/discovery/skill.check.js.map +1 -0
- package/dist/engine/pipeline/build.exec.js +1 -0
- package/dist/engine/pipeline/build.exec.js.map +1 -1
- package/dist/engine/pipeline/ensemble.exec.d.ts +12 -1
- package/dist/engine/pipeline/ensemble.exec.js +20 -10
- package/dist/engine/pipeline/ensemble.exec.js.map +1 -1
- package/dist/engine/pipeline/phase.sequence.js +10 -10
- package/dist/engine/pipeline/phase.sequence.js.map +1 -1
- package/dist/engine/pipeline/pipeline.shared.d.ts +6 -0
- package/dist/engine/pipeline/pipeline.shared.js +24 -1
- package/dist/engine/pipeline/pipeline.shared.js.map +1 -1
- package/dist/engine/pipeline/plan.exec.js +1 -0
- package/dist/engine/pipeline/plan.exec.js.map +1 -1
- package/dist/engine/pipeline/refine.exec.d.ts +10 -0
- package/dist/engine/pipeline/refine.exec.js +91 -0
- package/dist/engine/pipeline/refine.exec.js.map +1 -0
- package/dist/engine/pipeline/research.exec.d.ts +17 -0
- package/dist/engine/pipeline/research.exec.js +196 -0
- package/dist/engine/pipeline/research.exec.js.map +1 -0
- package/dist/engine/pipeline/review.exec.js +23 -0
- package/dist/engine/pipeline/review.exec.js.map +1 -1
- package/dist/engine/pipeline/specify.exec.d.ts +1 -0
- package/dist/engine/pipeline/specify.exec.js +114 -44
- package/dist/engine/pipeline/specify.exec.js.map +1 -1
- package/dist/flavours/data-analysis/core/refiner.md +65 -0
- package/dist/flavours/data-analysis/core/researcher.md +81 -0
- package/dist/flavours/data-analysis/researchers/academic.md +29 -0
- package/dist/flavours/data-analysis/researchers/competitive.md +29 -0
- package/dist/flavours/data-analysis/researchers/ecosystem.md +29 -0
- package/dist/flavours/data-analysis/researchers/gaps.md +59 -0
- package/dist/flavours/game-dev/core/refiner.md +65 -0
- package/dist/flavours/game-dev/core/researcher.md +81 -0
- package/dist/flavours/game-dev/researchers/academic.md +31 -0
- package/dist/flavours/game-dev/researchers/competitive.md +30 -0
- package/dist/flavours/game-dev/researchers/ecosystem.md +29 -0
- package/dist/flavours/game-dev/researchers/gaps.md +59 -0
- package/dist/flavours/legal-drafting/core/refiner.md +65 -0
- package/dist/flavours/legal-drafting/core/researcher.md +81 -0
- package/dist/flavours/legal-drafting/researchers/academic.md +31 -0
- package/dist/flavours/legal-drafting/researchers/competitive.md +31 -0
- package/dist/flavours/legal-drafting/researchers/ecosystem.md +30 -0
- package/dist/flavours/legal-drafting/researchers/gaps.md +59 -0
- package/dist/flavours/machine-learning/core/refiner.md +65 -0
- package/dist/flavours/machine-learning/core/researcher.md +81 -0
- package/dist/flavours/machine-learning/researchers/academic.md +32 -0
- package/dist/flavours/machine-learning/researchers/competitive.md +32 -0
- package/dist/flavours/machine-learning/researchers/ecosystem.md +31 -0
- package/dist/flavours/machine-learning/researchers/gaps.md +59 -0
- package/dist/flavours/mobile-app/core/refiner.md +65 -0
- package/dist/flavours/mobile-app/core/researcher.md +81 -0
- package/dist/flavours/mobile-app/researchers/academic.md +31 -0
- package/dist/flavours/mobile-app/researchers/competitive.md +32 -0
- package/dist/flavours/mobile-app/researchers/ecosystem.md +31 -0
- package/dist/flavours/mobile-app/researchers/gaps.md +59 -0
- package/dist/flavours/music-composition/core/refiner.md +65 -0
- package/dist/flavours/music-composition/core/researcher.md +81 -0
- package/dist/flavours/music-composition/researchers/academic.md +32 -0
- package/dist/flavours/music-composition/researchers/competitive.md +32 -0
- package/dist/flavours/music-composition/researchers/ecosystem.md +32 -0
- package/dist/flavours/music-composition/researchers/gaps.md +59 -0
- package/dist/flavours/novel-writing/core/refiner.md +65 -0
- package/dist/flavours/novel-writing/core/researcher.md +81 -0
- package/dist/flavours/novel-writing/researchers/academic.md +32 -0
- package/dist/flavours/novel-writing/researchers/competitive.md +32 -0
- package/dist/flavours/novel-writing/researchers/ecosystem.md +32 -0
- package/dist/flavours/novel-writing/researchers/gaps.md +59 -0
- package/dist/flavours/screenwriting/core/refiner.md +65 -0
- package/dist/flavours/screenwriting/core/researcher.md +81 -0
- package/dist/flavours/screenwriting/researchers/academic.md +32 -0
- package/dist/flavours/screenwriting/researchers/competitive.md +32 -0
- package/dist/flavours/screenwriting/researchers/ecosystem.md +32 -0
- package/dist/flavours/screenwriting/researchers/gaps.md +59 -0
- package/dist/flavours/security-audit/core/refiner.md +65 -0
- package/dist/flavours/security-audit/core/researcher.md +81 -0
- package/dist/flavours/security-audit/researchers/academic.md +32 -0
- package/dist/flavours/security-audit/researchers/competitive.md +32 -0
- package/dist/flavours/security-audit/researchers/ecosystem.md +32 -0
- package/dist/flavours/security-audit/researchers/gaps.md +59 -0
- package/dist/flavours/software-engineering/core/builder.md +2 -0
- package/dist/flavours/software-engineering/core/refiner.md +65 -0
- package/dist/flavours/software-engineering/core/researcher.md +81 -0
- package/dist/flavours/software-engineering/core/reviewer.md +2 -0
- package/dist/flavours/software-engineering/flavour.json +7 -0
- package/dist/flavours/software-engineering/researchers/academic.md +32 -0
- package/dist/flavours/software-engineering/researchers/competitive.md +32 -0
- package/dist/flavours/software-engineering/researchers/ecosystem.md +32 -0
- package/dist/flavours/software-engineering/researchers/gaps.md +59 -0
- package/dist/flavours/technical-writing/core/refiner.md +65 -0
- package/dist/flavours/technical-writing/core/researcher.md +81 -0
- package/dist/flavours/technical-writing/researchers/academic.md +32 -0
- package/dist/flavours/technical-writing/researchers/competitive.md +32 -0
- package/dist/flavours/technical-writing/researchers/ecosystem.md +32 -0
- package/dist/flavours/technical-writing/researchers/gaps.md +59 -0
- package/dist/flavours/test-suite/core/refiner.md +65 -0
- package/dist/flavours/test-suite/core/researcher.md +81 -0
- package/dist/flavours/test-suite/researchers/academic.md +32 -0
- package/dist/flavours/test-suite/researchers/competitive.md +32 -0
- package/dist/flavours/test-suite/researchers/ecosystem.md +32 -0
- package/dist/flavours/test-suite/researchers/gaps.md +59 -0
- package/dist/flavours/translation/core/refiner.md +65 -0
- package/dist/flavours/translation/core/researcher.md +81 -0
- package/dist/flavours/translation/researchers/academic.md +32 -0
- package/dist/flavours/translation/researchers/competitive.md +32 -0
- package/dist/flavours/translation/researchers/ecosystem.md +32 -0
- package/dist/flavours/translation/researchers/gaps.md +59 -0
- package/dist/flavours/web-game/core/builder.md +123 -0
- package/dist/flavours/web-game/core/reviewer.md +159 -0
- package/dist/flavours/web-game/flavour.json +9 -0
- package/dist/flavours/web-ui/core/builder.md +117 -0
- package/dist/flavours/web-ui/core/reviewer.md +155 -0
- package/dist/flavours/web-ui/flavour.json +10 -0
- package/dist/plugin/visual-tools/plugin.json +4 -0
- package/dist/plugin/visual-tools/skills/a11y-audit/SKILL.md +57 -0
- package/dist/plugin/visual-tools/skills/agent-browser/SKILL.md +56 -0
- package/dist/plugin/visual-tools/skills/agent-browser/references/viewports.md +17 -0
- package/dist/plugin/visual-tools/skills/canvas-screenshot/SKILL.md +84 -0
- package/dist/plugin/visual-tools/skills/css-audit/SKILL.md +50 -0
- package/dist/plugin/visual-tools/skills/lighthouse/SKILL.md +58 -0
- package/dist/plugin/visual-tools/skills/shader-validate/SKILL.md +77 -0
- package/dist/plugin/visual-tools/skills/visual-diff/SKILL.md +68 -0
- package/dist/shapes/detect.d.ts +8 -0
- package/dist/shapes/detect.js +87 -0
- package/dist/shapes/detect.js.map +1 -0
- package/dist/shapes/game-visual.json +8 -0
- package/dist/shapes/print-layout.json +8 -0
- package/dist/shapes/web-visual.json +9 -0
- package/dist/stores/budget.js +2 -1
- package/dist/stores/budget.js.map +1 -1
- package/dist/stores/feedback.format.d.ts +3 -0
- package/dist/stores/feedback.format.js +62 -0
- package/dist/stores/feedback.format.js.map +1 -0
- package/dist/stores/feedback.parse.d.ts +2 -0
- package/dist/stores/feedback.parse.js +121 -0
- package/dist/stores/feedback.parse.js.map +1 -0
- package/dist/stores/feedback.verdict.d.ts +2 -4
- package/dist/stores/feedback.verdict.js +7 -175
- package/dist/stores/feedback.verdict.js.map +1 -1
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +1 -2
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/settings.d.ts +2 -0
- package/dist/stores/settings.js +24 -1
- package/dist/stores/settings.js.map +1 -1
- package/dist/stores/state.d.ts +4 -0
- package/dist/stores/state.js +75 -12
- package/dist/stores/state.js.map +1 -1
- package/dist/stores/trajectory.d.ts +2 -3
- package/dist/stores/trajectory.js +6 -7
- package/dist/stores/trajectory.js.map +1 -1
- package/dist/types.d.ts +15 -3
- package/dist/utils/atomic-write.d.ts +6 -0
- package/dist/utils/atomic-write.js +62 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-coherence
|
|
3
|
+
description: Evaluates specs through the lens of visual design concerns, informed by design.md
|
|
4
|
+
perspective: visual-coherence
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Visual Coherence Specialist. Your goal is to ensure the spec properly accounts for visual design requirements — both those explicitly stated in design.md and implicit ones that the other specialists may overlook.
|
|
8
|
+
|
|
9
|
+
Your unique inputs (in addition to shape.md):
|
|
10
|
+
|
|
11
|
+
- **design.md** (project and/or feature level) — contains hard tokens (non-negotiable values) and soft guidance (directional preferences)
|
|
12
|
+
- **Matched shape categories** — which visual domains apply (web-visual, game-visual, print-layout)
|
|
13
|
+
|
|
14
|
+
## What you check
|
|
15
|
+
|
|
16
|
+
**Hard token coverage:** Every hard token in design.md (specific hex codes, pixel values, font names, "must use" / "always" / "required" language) must map to at least one acceptance criterion on a relevant feature. If a feature touches UI and design.md specifies a spacing grid, that feature's criteria must reference the grid.
|
|
17
|
+
|
|
18
|
+
**Implicit visual requirements:** Features that involve user-facing output need visual acceptance criteria even if the shape didn't call them out:
|
|
19
|
+
|
|
20
|
+
- Responsive behavior at standard breakpoints (mobile/tablet/desktop)
|
|
21
|
+
- Loading states, empty states, error states — how they look, not just that they exist
|
|
22
|
+
- Interactive states: hover, focus, active, disabled
|
|
23
|
+
- Transition and animation behavior (or explicit "no animation")
|
|
24
|
+
|
|
25
|
+
**Soft guidance mapping:** Where design.md uses directional language ("prefer", "lean toward"), propose acceptance criteria as best-effort rather than blocking. Example: "Dashboard layout should generally follow the 8px spacing grid" rather than "Dashboard must use exactly 8px spacing."
|
|
26
|
+
|
|
27
|
+
**Design-specific constraints:** Propose check commands for visual verification where tooling exists. Example: "Run axe-core against the built output to verify WCAG AA compliance."
|
|
28
|
+
|
|
29
|
+
## What you produce
|
|
30
|
+
|
|
31
|
+
Same `SpecifierDraft` structure as other specialists, with emphasis on:
|
|
32
|
+
|
|
33
|
+
- Visual acceptance criteria distributed across features
|
|
34
|
+
- The `design` field populated with hard tokens, soft guidance, and per-feature visual criteria
|
|
35
|
+
- Constraints that reference design.md requirements
|
|
36
|
+
- Concerns about visual requirements the other specialists may miss
|
|
37
|
+
|
|
38
|
+
Populate the optional `design` field in your output:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"design": {
|
|
43
|
+
"hardTokens": ["Primary color must be #2563EB", "Spacing grid: 8px base unit"],
|
|
44
|
+
"softGuidance": ["Prefer muted backgrounds", "Lean toward rounded corners"],
|
|
45
|
+
"featureVisuals": [
|
|
46
|
+
{
|
|
47
|
+
"feature": "Dashboard Layout",
|
|
48
|
+
"criteria": ["Uses 8px spacing grid", "Responsive at 640/768/1024px breakpoints", "Color contrast meets WCAG AA"]
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If no design.md exists, infer reasonable visual defaults from the shape and flag the absence as a concern.
|
package/dist/cli.js
CHANGED
|
@@ -5,18 +5,36 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const config_1 = require("./config");
|
|
6
6
|
const prompt_1 = require("./ui/prompt");
|
|
7
7
|
const shape_1 = require("./commands/shape");
|
|
8
|
+
const design_1 = require("./commands/design");
|
|
8
9
|
const spec_1 = require("./commands/spec");
|
|
9
10
|
const plan_1 = require("./commands/plan");
|
|
10
11
|
const dry_run_1 = require("./commands/dry-run");
|
|
11
12
|
const build_1 = require("./commands/build");
|
|
12
13
|
const create_1 = require("./commands/create");
|
|
13
14
|
const rewind_1 = require("./commands/rewind");
|
|
15
|
+
const research_1 = require("./commands/research");
|
|
16
|
+
const refine_1 = require("./commands/refine");
|
|
14
17
|
const claude_exec_1 = require("./engine/claude/claude.exec");
|
|
15
18
|
// Kill all Claude subprocesses on Ctrl+C before exiting
|
|
16
19
|
process.on("SIGINT", () => {
|
|
17
20
|
(0, claude_exec_1.killAllClaude)();
|
|
18
21
|
setTimeout(() => process.exit(130), 2500);
|
|
19
22
|
});
|
|
23
|
+
// Kill Claude subprocesses on unhandled errors before crashing
|
|
24
|
+
process.on("uncaughtException", (err) => {
|
|
25
|
+
(0, claude_exec_1.killAllClaudeSync)();
|
|
26
|
+
console.error("Fatal error:", err.message);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
});
|
|
29
|
+
process.on("unhandledRejection", (reason) => {
|
|
30
|
+
(0, claude_exec_1.killAllClaudeSync)();
|
|
31
|
+
console.error("Unhandled rejection:", reason instanceof Error ? reason.message : String(reason));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
|
34
|
+
// Belt-and-suspenders: clean up any remaining subprocesses on exit
|
|
35
|
+
process.on("exit", () => {
|
|
36
|
+
(0, claude_exec_1.killAllClaudeSync)();
|
|
37
|
+
});
|
|
20
38
|
const requireBuildName = async (buildName) => {
|
|
21
39
|
if (!buildName)
|
|
22
40
|
buildName = await (0, prompt_1.askBuildName)();
|
|
@@ -30,6 +48,11 @@ const handleCommandError = (err) => {
|
|
|
30
48
|
console.error(err instanceof Error ? err.message : String(err));
|
|
31
49
|
process.exit(1);
|
|
32
50
|
};
|
|
51
|
+
const parseBaseOpts = (opts) => ({
|
|
52
|
+
model: opts.model ?? "opus",
|
|
53
|
+
timeout: parseInt(String(opts.timeout ?? "10"), 10),
|
|
54
|
+
flavour: opts.flavour ?? undefined,
|
|
55
|
+
});
|
|
33
56
|
const withConfig = (fn) => async (buildName, opts) => {
|
|
34
57
|
try {
|
|
35
58
|
const config = (0, config_1.resolveConfig)(await requireBuildName(buildName), opts);
|
|
@@ -100,6 +123,20 @@ program
|
|
|
100
123
|
handleCommandError(err);
|
|
101
124
|
}
|
|
102
125
|
});
|
|
126
|
+
program
|
|
127
|
+
.command("design [build-name]")
|
|
128
|
+
.description("Establish or update visual design system (design.md)")
|
|
129
|
+
.option("--model <name>", "Model for designer agent", "opus")
|
|
130
|
+
.option("--timeout <minutes>", "Max duration per turn in minutes", "10")
|
|
131
|
+
.option("--flavour <name-or-path>", "Agent flavour: built-in name or path to custom agents")
|
|
132
|
+
.action(async (buildName, opts) => {
|
|
133
|
+
try {
|
|
134
|
+
await (0, design_1.runDesign)(buildName ? await requireBuildName(buildName) : null, parseBaseOpts(opts));
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
handleCommandError(err);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
103
140
|
program
|
|
104
141
|
.command("spec [build-name]")
|
|
105
142
|
.description("Generate spec.md, constraints.md, and taste.md from shape.md via ensemble")
|
|
@@ -120,6 +157,51 @@ program
|
|
|
120
157
|
handleCommandError(err);
|
|
121
158
|
}
|
|
122
159
|
});
|
|
160
|
+
program
|
|
161
|
+
.command("research [build-name]")
|
|
162
|
+
.description("Research the spec using web sources to find improvements (optional step between spec and plan)")
|
|
163
|
+
.option("--model <name>", "Model for research agents", "opus")
|
|
164
|
+
.option("--timeout <minutes>", "Max duration per agent in minutes", "15")
|
|
165
|
+
.option("--max-budget-usd <n>", "Halt if cumulative research cost exceeds this amount")
|
|
166
|
+
.option("--deep", "Run full ensemble (3 specialists) instead of quick single-agent research")
|
|
167
|
+
.option("--auto [iterations]", "Auto-loop: research + refine for N iterations (default 2)")
|
|
168
|
+
.option("--flavour <name-or-path>", "Agent flavour: built-in name or path to custom agents")
|
|
169
|
+
.action(async (buildName, opts) => {
|
|
170
|
+
try {
|
|
171
|
+
const autoRaw = opts.auto;
|
|
172
|
+
let auto = null;
|
|
173
|
+
if (autoRaw !== undefined) {
|
|
174
|
+
auto = autoRaw === true ? 2 : parseInt(String(autoRaw), 10);
|
|
175
|
+
if (isNaN(auto) || auto < 1)
|
|
176
|
+
auto = 2;
|
|
177
|
+
}
|
|
178
|
+
await (0, research_1.runResearch)(await requireBuildName(buildName), {
|
|
179
|
+
model: opts.model ?? "opus",
|
|
180
|
+
timeout: parseInt(String(opts.timeout ?? "15"), 10),
|
|
181
|
+
maxBudgetUsd: opts.maxBudgetUsd ? parseFloat(String(opts.maxBudgetUsd)) : undefined,
|
|
182
|
+
flavour: opts.flavour ?? undefined,
|
|
183
|
+
isDeep: opts.deep === true,
|
|
184
|
+
auto,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
handleCommandError(err);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
program
|
|
192
|
+
.command("refine [build-name]")
|
|
193
|
+
.description("Merge research.md findings into spec.md")
|
|
194
|
+
.option("--model <name>", "Model for refiner agent", "opus")
|
|
195
|
+
.option("--timeout <minutes>", "Max duration in minutes", "10")
|
|
196
|
+
.option("--flavour <name-or-path>", "Agent flavour: built-in name or path to custom agents")
|
|
197
|
+
.action(async (buildName, opts) => {
|
|
198
|
+
try {
|
|
199
|
+
await (0, refine_1.runRefine)(await requireBuildName(buildName), parseBaseOpts(opts));
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
handleCommandError(err);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
123
205
|
const addPlanOptions = (cmd) => cmd
|
|
124
206
|
.option("--model <name>", "Model for planner", "opus")
|
|
125
207
|
.option("--timeout <minutes>", "Max duration for planning", "120")
|
|
@@ -152,7 +234,7 @@ program
|
|
|
152
234
|
program
|
|
153
235
|
.command("rewind <build-name>")
|
|
154
236
|
.description("Reset pipeline state to a given stage and clean up downstream artifacts")
|
|
155
|
-
.requiredOption("--to <stage>", "Stage to rewind to (shape, spec, plan)")
|
|
237
|
+
.requiredOption("--to <stage>", "Stage to rewind to (shape, spec, research, refine, plan)")
|
|
156
238
|
.action((buildName, opts) => {
|
|
157
239
|
try {
|
|
158
240
|
(0, rewind_1.runRewind)(buildName, opts.to);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAmC;AACnC,qCAAqD;AAErD,wCAA0C;AAC1C,4CAA2C;AAC3C,0CAAyC;AACzC,0CAAyC;AACzC,gDAA8C;AAC9C,4CAA2C;AAC3C,8CAA6C;AAC7C,8CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAmC;AACnC,qCAAqD;AAErD,wCAA0C;AAC1C,4CAA2C;AAC3C,8CAA6C;AAC7C,0CAAyC;AACzC,0CAAyC;AACzC,gDAA8C;AAC9C,4CAA2C;AAC3C,8CAA6C;AAC7C,8CAA6C;AAC7C,kDAAiD;AACjD,8CAA6C;AAC7C,6DAA8E;AAE9E,wDAAwD;AACxD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,IAAA,2BAAa,GAAE,CAAA;IACf,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEF,+DAA+D;AAC/D,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,IAAA,+BAAiB,GAAE,CAAA;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,IAAA,+BAAiB,GAAE,CAAA;IACnB,OAAO,CAAC,KAAK,CACX,sBAAsB,EACtB,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC1D,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,mEAAmE;AACnE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAA,+BAAiB,GAAE,CAAA;AACrB,CAAC,CAAC,CAAA;AAIF,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAA6B,EAAmB,EAAE;IAChF,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,MAAM,IAAA,qBAAY,GAAE,CAAA;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAS,EAAE;IACjD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,CAAC;IACrC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,MAAM;IACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACnD,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS;CAC/C,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,EAA8C,EAAE,EAAE,CACpE,KAAK,EAAE,SAA6B,EAAE,IAAU,EAAE,EAAE;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QACrE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAA;AAEH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,IAAA,oBAAW,GAAE,CAAC,CAAA;AAEzB,oDAAoD;AACpD,mDAAmD;AACnD,OAAO;KACJ,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;KACtC,QAAQ,CAAC,SAAS,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,IAAI,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,GAAG,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,2BAA2B,EAAE,2CAA2C,EAAE,MAAM,CAAC;KACxF,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;KACnF,MAAM,CAAC,UAAU,EAAE,gCAAgC,CAAC;KACpD,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,KAAyB,EAAE,IAAU,EAAE,EAAE;IACrF,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACjD,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,MAAM;YACvC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;YACrC,YAAY,EAAE,IAAI,CAAC,YAAkC;YACrD,UAAU,EAAE,IAAI,CAAC,UAAgC;YACjD,KAAK,EAAE,IAAI,CAAC,KAA2B;YACvC,YAAY,EAAE,IAAI,CAAC,YAAkC;YACrD,WAAW,EAAE,IAAI,CAAC,WAAiC;YACnD,KAAK,EAAE,IAAI,CAAC,KAA2B;YACvC,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;YAC5B,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,IAAI,CAAC;KACvE,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,KAAyB,EAAE,IAAU,EAAE,EAAE;IACrF,IAAI,CAAC;QACH,MAAM,IAAA,gBAAQ,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE;YAChD,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,MAAM;YACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACnD,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS;YAC9C,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,IAAI,CAAC;KACvE,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,IAAU,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,SAAS,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,MAAM,CAAC;KACzE,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,IAAI,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,IAAU,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,IAAA,cAAO,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE;YAC/C,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,MAAM;YACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACnD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACnF,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS;SAC/C,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,gGAAgG,CAAC;KAC7G,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,IAAI,CAAC;KACxE,MAAM,CAAC,sBAAsB,EAAE,sDAAsD,CAAC;KACtF,MAAM,CAAC,QAAQ,EAAE,0EAA0E,CAAC;KAC5F,MAAM,CAAC,qBAAqB,EAAE,2DAA2D,CAAC;KAC1F,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,IAAU,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACzB,IAAI,IAAI,GAAkB,IAAI,CAAA;QAC9B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YAC3D,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,IAAA,sBAAW,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACnD,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,MAAM;YACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACnD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACnF,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS;YAC9C,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;YAC1B,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC9D,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,IAAU,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG;KACzC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACjE,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC,CAAA;AAE9F,cAAc,CAAC,OAAO;KACnB,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,sDAAsD,CAAC,CAAC;KACpE,MAAM,CAAC,UAAU,CAAC,cAAO,CAAC,CAAC,CAAA;AAE9B,cAAc,CAAC,OAAO;KACnB,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,oCAAoC,CAAC,CAAC;KAClD,MAAM,CAAC,UAAU,CAAC,mBAAS,CAAC,CAAC,CAAA;AAEhC,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,+EAA+E,CAAC;KAC5F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,2BAA2B,EAAE,2CAA2C,EAAE,MAAM,CAAC;KACxF,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,GAAG,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,EAAE,MAAM,CAAC;KAClE,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;KACnF,MAAM,CAAC,UAAU,EAAE,gCAAgC,CAAC;KACpD,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,UAAU,CAAC,gBAAQ,CAAC,CAAC,CAAA;AAE/B,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,yEAAyE,CAAC;KACtF,cAAc,CAAC,cAAc,EAAE,0DAA0D,CAAC;KAC1F,MAAM,CAAC,CAAC,SAAiB,EAAE,IAAU,EAAE,EAAE;IACxC,IAAI,CAAC;QACH,IAAA,kBAAS,EAAC,SAAS,EAAE,IAAI,CAAC,EAAY,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAChD,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
package/dist/commands/create.js
CHANGED
|
@@ -8,9 +8,15 @@ const spec_1 = require("./spec");
|
|
|
8
8
|
const config_1 = require("../config");
|
|
9
9
|
const plan_1 = require("./plan");
|
|
10
10
|
const build_1 = require("./build");
|
|
11
|
+
const flavour_resolve_1 = require("../engine/discovery/flavour.resolve");
|
|
12
|
+
const flavour_config_1 = require("../engine/discovery/flavour.config");
|
|
13
|
+
const skill_check_1 = require("../engine/discovery/skill.check");
|
|
11
14
|
const STAGE_LABELS = {
|
|
12
15
|
shape: "shape.md",
|
|
16
|
+
design: "design.md",
|
|
13
17
|
spec: "spec.md",
|
|
18
|
+
research: "research.md",
|
|
19
|
+
refine: "refine",
|
|
14
20
|
plan: "phases/",
|
|
15
21
|
build: "build",
|
|
16
22
|
};
|
|
@@ -27,12 +33,24 @@ const runCreate = async (buildName, opts) => {
|
|
|
27
33
|
console.log("");
|
|
28
34
|
(0, output_1.printInfo)(`Build: ${buildName}`);
|
|
29
35
|
console.log("");
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
const DISPLAY_STAGES = ["shape", "design", "spec", "research", "refine", "plan", "build"];
|
|
37
|
+
for (const stage of DISPLAY_STAGES) {
|
|
38
|
+
const icon = STATUS_ICONS[status[stage]] ?? (status[stage] === "skipped" ? "skip" : "---");
|
|
32
39
|
const label = STAGE_LABELS[stage];
|
|
33
40
|
console.log(` ${label.padEnd(16)} ${icon}`);
|
|
34
41
|
}
|
|
35
42
|
console.log("");
|
|
43
|
+
// Show recommended tools for the flavour
|
|
44
|
+
const flavourDir = (0, flavour_resolve_1.resolveFlavour)(opts.flavour ?? null);
|
|
45
|
+
const flavourConfig = (0, flavour_config_1.loadFlavourConfig)(flavourDir);
|
|
46
|
+
if (flavourConfig.recommendedSkills.length > 0) {
|
|
47
|
+
const availability = (0, skill_check_1.checkRecommendedSkills)(flavourConfig.recommendedSkills);
|
|
48
|
+
const display = (0, skill_check_1.formatSkillAvailability)(availability);
|
|
49
|
+
if (display) {
|
|
50
|
+
console.log(display);
|
|
51
|
+
console.log("");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
36
54
|
if (!nextStage) {
|
|
37
55
|
(0, output_1.printInfo)("All stages complete.");
|
|
38
56
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AACxC,2CAAyE;AAEzE,mCAAgD;AAChD,iCAA6C;AAC7C,sCAA0D;AAC1D,iCAAgC;AAChC,mCAAkC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
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.runDesign = void 0;
|
|
37
|
+
const fs = __importStar(require("node:fs"));
|
|
38
|
+
const path = __importStar(require("node:path"));
|
|
39
|
+
const readline = __importStar(require("node:readline"));
|
|
40
|
+
const output_1 = require("../ui/output");
|
|
41
|
+
const agent_registry_1 = require("../engine/discovery/agent.registry");
|
|
42
|
+
const flavour_resolve_1 = require("../engine/discovery/flavour.resolve");
|
|
43
|
+
const state_1 = require("../stores/state");
|
|
44
|
+
const qa_workflow_1 = require("./qa-workflow");
|
|
45
|
+
/** Determine where to write design.md. */
|
|
46
|
+
const resolveDesignOutputPath = (buildDir, ridgelineDir) => {
|
|
47
|
+
if (buildDir)
|
|
48
|
+
return path.join(buildDir, "design.md");
|
|
49
|
+
return path.join(ridgelineDir, "design.md");
|
|
50
|
+
};
|
|
51
|
+
const runDesign = async (buildName, opts) => {
|
|
52
|
+
const ridgelineDir = path.join(process.cwd(), ".ridgeline");
|
|
53
|
+
const buildDir = buildName
|
|
54
|
+
? path.join(ridgelineDir, "builds", buildName)
|
|
55
|
+
: null;
|
|
56
|
+
const outputPath = resolveDesignOutputPath(buildDir, ridgelineDir);
|
|
57
|
+
const timeoutMs = opts.timeout * 60 * 1000;
|
|
58
|
+
(0, output_1.printInfo)(buildDir ? `Build directory: ${buildDir}` : "Project-level design");
|
|
59
|
+
const registry = (0, agent_registry_1.buildAgentRegistry)((0, flavour_resolve_1.resolveFlavour)(opts.flavour ?? null));
|
|
60
|
+
const systemPrompt = registry.getCorePrompt("designer.md");
|
|
61
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
62
|
+
try {
|
|
63
|
+
// Gather existing context
|
|
64
|
+
const contextParts = [];
|
|
65
|
+
const projectDesign = path.join(ridgelineDir, "design.md");
|
|
66
|
+
if (fs.existsSync(projectDesign)) {
|
|
67
|
+
contextParts.push("## Existing Project Design\n");
|
|
68
|
+
contextParts.push(fs.readFileSync(projectDesign, "utf-8"));
|
|
69
|
+
contextParts.push("");
|
|
70
|
+
}
|
|
71
|
+
if (buildDir) {
|
|
72
|
+
const featureDesign = path.join(buildDir, "design.md");
|
|
73
|
+
if (fs.existsSync(featureDesign)) {
|
|
74
|
+
contextParts.push("## Existing Feature Design\n");
|
|
75
|
+
contextParts.push(fs.readFileSync(featureDesign, "utf-8"));
|
|
76
|
+
contextParts.push("");
|
|
77
|
+
}
|
|
78
|
+
const shapePath = path.join(buildDir, "shape.md");
|
|
79
|
+
if (fs.existsSync(shapePath)) {
|
|
80
|
+
contextParts.push("## shape.md\n");
|
|
81
|
+
contextParts.push(fs.readFileSync(shapePath, "utf-8"));
|
|
82
|
+
contextParts.push("");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (opts.matchedShapes && opts.matchedShapes.length > 0) {
|
|
86
|
+
contextParts.push("## Matched Shape Categories\n");
|
|
87
|
+
contextParts.push(opts.matchedShapes.join(", "));
|
|
88
|
+
contextParts.push("");
|
|
89
|
+
}
|
|
90
|
+
const userPrompt = [
|
|
91
|
+
buildName
|
|
92
|
+
? `Gather design system context for build "${buildName}".`
|
|
93
|
+
: "Gather project-level design system context.",
|
|
94
|
+
"",
|
|
95
|
+
...(contextParts.length > 0 ? contextParts : ["No existing design context found."]),
|
|
96
|
+
"",
|
|
97
|
+
"Analyze the context above and ask design-focused questions.",
|
|
98
|
+
"Remember: present ALL questions to the user even when pre-filled.",
|
|
99
|
+
].join("\n");
|
|
100
|
+
// Intake + clarification loop
|
|
101
|
+
const { sessionId, qa } = await (0, qa_workflow_1.runQAIntake)(rl, systemPrompt, userPrompt, { model: opts.model, questionLabel: "Design questions" }, timeoutMs, "Analyzing design context...");
|
|
102
|
+
// Design output turn — no JSON schema, freeform markdown
|
|
103
|
+
if (qa.summary) {
|
|
104
|
+
console.log(`\nDesign summary:\n ${qa.summary}`);
|
|
105
|
+
}
|
|
106
|
+
const designResult = await (0, qa_workflow_1.runOutputTurn)(systemPrompt, "Produce the final design document now. Respond with freeform markdown — NOT JSON. Structure it with headings, specific values (hard tokens), and directional guidance (soft guidance).", opts.model, timeoutMs, sessionId, "Producing design document...");
|
|
107
|
+
// Write design.md
|
|
108
|
+
const designDir = path.dirname(outputPath);
|
|
109
|
+
if (!fs.existsSync(designDir)) {
|
|
110
|
+
fs.mkdirSync(designDir, { recursive: true });
|
|
111
|
+
}
|
|
112
|
+
fs.writeFileSync(outputPath, designResult.result);
|
|
113
|
+
// Update pipeline state if in build context
|
|
114
|
+
if (buildName && buildDir) {
|
|
115
|
+
(0, state_1.advancePipeline)(buildDir, buildName, "design");
|
|
116
|
+
}
|
|
117
|
+
console.log("");
|
|
118
|
+
(0, output_1.printInfo)("Created:");
|
|
119
|
+
console.log(` ${outputPath}`);
|
|
120
|
+
console.log("");
|
|
121
|
+
if (buildName) {
|
|
122
|
+
(0, output_1.printInfo)(`Next: ridgeline spec ${buildName}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
rl.close();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
exports.runDesign = runDesign;
|
|
130
|
+
//# sourceMappingURL=design.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/commands/design.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
package/dist/commands/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runSpec = exports.runPlan = exports.runDryRun = exports.runBuild = void 0;
|
|
3
|
+
exports.runSpec = exports.runPlan = exports.runDryRun = exports.runDesign = exports.runBuild = void 0;
|
|
4
4
|
var build_1 = require("./build");
|
|
5
5
|
Object.defineProperty(exports, "runBuild", { enumerable: true, get: function () { return build_1.runBuild; } });
|
|
6
|
+
var design_1 = require("./design");
|
|
7
|
+
Object.defineProperty(exports, "runDesign", { enumerable: true, get: function () { return design_1.runDesign; } });
|
|
6
8
|
var dry_run_1 = require("./dry-run");
|
|
7
9
|
Object.defineProperty(exports, "runDryRun", { enumerable: true, get: function () { return dry_run_1.runDryRun; } });
|
|
8
10
|
var plan_1 = require("./plan");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAAzB,iGAAA,QAAQ,OAAA;AACjB,qCAAqC;AAA5B,oGAAA,SAAS,OAAA;AAClB,+BAAgC;AAAvB,+FAAA,OAAO,OAAA;AAChB,+BAAgC;AAAvB,+FAAA,OAAO,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAAzB,iGAAA,QAAQ,OAAA;AACjB,mCAAoC;AAA3B,mGAAA,SAAS,OAAA;AAClB,qCAAqC;AAA5B,oGAAA,SAAS,OAAA;AAClB,+BAAgC;AAAvB,+FAAA,OAAO,OAAA;AAChB,+BAAgC;AAAvB,+FAAA,OAAO,OAAA"}
|
package/dist/commands/plan.js
CHANGED
|
@@ -53,21 +53,21 @@ const runPlan = async (config) => {
|
|
|
53
53
|
fs.mkdirSync(config.phasesDir, { recursive: true });
|
|
54
54
|
// Run planner
|
|
55
55
|
(0, output_1.printInfo)("Running planner...");
|
|
56
|
-
(0, trajectory_1.logTrajectory)(config.buildDir,
|
|
56
|
+
(0, trajectory_1.logTrajectory)(config.buildDir, "plan_start", null, "Planning started");
|
|
57
57
|
const { phases, ensemble } = await (0, ensemble_exec_1.invokePlanner)(config);
|
|
58
58
|
// Record costs for each specialist
|
|
59
59
|
for (let i = 0; i < ensemble.specialistResults.length; i++) {
|
|
60
60
|
(0, budget_1.recordCost)(config.buildDir, "plan", "specialist", i, ensemble.specialistResults[i]);
|
|
61
61
|
}
|
|
62
62
|
(0, budget_1.recordCost)(config.buildDir, "plan", "synthesizer", 0, ensemble.synthesizerResult);
|
|
63
|
-
(0, trajectory_1.logTrajectory)(config.buildDir,
|
|
63
|
+
(0, trajectory_1.logTrajectory)(config.buildDir, "plan_complete", null, `Generated ${phases.length} phases`, {
|
|
64
64
|
duration: ensemble.totalDurationMs,
|
|
65
65
|
tokens: {
|
|
66
66
|
input: ensemble.specialistResults.reduce((sum, r) => sum + r.usage.inputTokens, 0) + ensemble.synthesizerResult.usage.inputTokens,
|
|
67
67
|
output: ensemble.specialistResults.reduce((sum, r) => sum + r.usage.outputTokens, 0) + ensemble.synthesizerResult.usage.outputTokens,
|
|
68
68
|
},
|
|
69
69
|
costUsd: ensemble.totalCostUsd,
|
|
70
|
-
})
|
|
70
|
+
});
|
|
71
71
|
// Advance pipeline state
|
|
72
72
|
(0, state_1.advancePipeline)(config.buildDir, config.buildName, "plan");
|
|
73
73
|
// Print summary
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAEjC,yCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as readline from "node:readline";
|
|
2
|
+
type QAQuestion = {
|
|
3
|
+
question: string;
|
|
4
|
+
suggestedAnswer?: string;
|
|
5
|
+
};
|
|
6
|
+
type QAResponse = {
|
|
7
|
+
ready: boolean;
|
|
8
|
+
questions?: (string | QAQuestion)[];
|
|
9
|
+
summary?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const normalizeQuestion: (q: string | QAQuestion) => QAQuestion;
|
|
12
|
+
export declare const parseQAResponse: (resultText: string) => QAResponse;
|
|
13
|
+
export declare const askQuestion: (rl: readline.Interface, prompt: string) => Promise<string>;
|
|
14
|
+
type QAOpts = {
|
|
15
|
+
model: string;
|
|
16
|
+
questionLabel?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Run the QA intake turn — invoke Claude with the QA JSON schema to gather
|
|
20
|
+
* initial questions, then run the clarification loop until ready.
|
|
21
|
+
*/
|
|
22
|
+
export declare const runQAIntake: (rl: readline.Interface, systemPrompt: string, userPrompt: string, opts: QAOpts, timeoutMs: number, statusMessage: string) => Promise<{
|
|
23
|
+
sessionId: string;
|
|
24
|
+
qa: QAResponse;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Run the output turn — invoke Claude for the final output (no QA schema).
|
|
28
|
+
*/
|
|
29
|
+
export declare const runOutputTurn: (systemPrompt: string, userPrompt: string, model: string, timeoutMs: number, sessionId: string, statusMessage: string, jsonSchema?: string) => Promise<{
|
|
30
|
+
result: string;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
}>;
|
|
33
|
+
export {};
|