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
@@ -0,0 +1,137 @@
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.__trackedTempFiles = exports.__resetStablePromptState = exports.shouldLogUnavailableOnce = exports.detectExcludeDynamicFlag = exports.minCacheableTokens = exports.approximateTokenCount = exports.writeStablePromptFile = exports.computeStableHash = exports.buildStablePrompt = void 0;
37
+ const os = __importStar(require("node:os"));
38
+ const path = __importStar(require("node:path"));
39
+ const fs = __importStar(require("node:fs"));
40
+ const node_crypto_1 = require("node:crypto");
41
+ const node_child_process_1 = require("node:child_process");
42
+ const buildStablePrompt = (parts) => {
43
+ const sections = [];
44
+ sections.push(`## constraints.md\n\n${parts.constraintsMd.trimEnd()}\n`);
45
+ if (parts.tasteMd && parts.tasteMd.trim().length > 0) {
46
+ sections.push(`## taste.md\n\n${parts.tasteMd.trimEnd()}\n`);
47
+ }
48
+ if (parts.specMd && parts.specMd.trim().length > 0) {
49
+ sections.push(`## spec.md\n\n${parts.specMd.trimEnd()}\n`);
50
+ }
51
+ return sections.join("\n");
52
+ };
53
+ exports.buildStablePrompt = buildStablePrompt;
54
+ const computeStableHash = (content) => (0, node_crypto_1.createHash)("sha256").update(content).digest("hex");
55
+ exports.computeStableHash = computeStableHash;
56
+ const trackedTempFiles = new Set();
57
+ let cleanupRegistered = false;
58
+ const registerCleanup = () => {
59
+ if (cleanupRegistered)
60
+ return;
61
+ cleanupRegistered = true;
62
+ process.on("exit", () => {
63
+ for (const fp of trackedTempFiles) {
64
+ try {
65
+ fs.unlinkSync(fp);
66
+ }
67
+ catch { /* best-effort */ }
68
+ }
69
+ });
70
+ };
71
+ /**
72
+ * Write (or reuse) the stable-block temp file named by sha256 of its content.
73
+ * Files persist for the process lifetime and are unlinked on exit.
74
+ */
75
+ const writeStablePromptFile = (content) => {
76
+ const hash = (0, exports.computeStableHash)(content);
77
+ const fp = path.join(os.tmpdir(), `ridgeline-stable-${hash}.md`);
78
+ if (!fs.existsSync(fp)) {
79
+ fs.writeFileSync(fp, content);
80
+ }
81
+ trackedTempFiles.add(fp);
82
+ registerCleanup();
83
+ return { path: fp, hash, tokenEstimate: (0, exports.approximateTokenCount)(content) };
84
+ };
85
+ exports.writeStablePromptFile = writeStablePromptFile;
86
+ /** Rough 4 chars ≈ 1 token heuristic; sufficient for the preflight threshold check. */
87
+ const approximateTokenCount = (content) => Math.ceil(content.length / 4);
88
+ exports.approximateTokenCount = approximateTokenCount;
89
+ /**
90
+ * Minimum cacheable prefix in tokens per model family.
91
+ * Opus 4.5/4.6/4.7 and Haiku 4.5 → 4,096; Sonnet 4.6 → 2,048.
92
+ */
93
+ const minCacheableTokens = (model) => {
94
+ const m = model.toLowerCase();
95
+ if (m.includes("sonnet"))
96
+ return 2048;
97
+ return 4096;
98
+ };
99
+ exports.minCacheableTokens = minCacheableTokens;
100
+ const defaultHelpRunner = () => {
101
+ const r = (0, node_child_process_1.spawnSync)("claude", ["--help"], { encoding: "utf-8", timeout: 10000 });
102
+ return `${r.stdout ?? ""}${r.stderr ?? ""}`;
103
+ };
104
+ let cachedFlagDetection = null;
105
+ const detectExcludeDynamicFlag = (runner) => {
106
+ if (cachedFlagDetection !== null)
107
+ return cachedFlagDetection;
108
+ try {
109
+ const help = (runner ?? defaultHelpRunner)();
110
+ cachedFlagDetection = help.includes("--exclude-dynamic-system-prompt-sections");
111
+ }
112
+ catch {
113
+ cachedFlagDetection = false;
114
+ }
115
+ return cachedFlagDetection;
116
+ };
117
+ exports.detectExcludeDynamicFlag = detectExcludeDynamicFlag;
118
+ let unavailableLogged = false;
119
+ const shouldLogUnavailableOnce = () => {
120
+ if (unavailableLogged)
121
+ return false;
122
+ unavailableLogged = true;
123
+ return true;
124
+ };
125
+ exports.shouldLogUnavailableOnce = shouldLogUnavailableOnce;
126
+ /** Test helper: reset internal module state. */
127
+ const __resetStablePromptState = () => {
128
+ cachedFlagDetection = null;
129
+ unavailableLogged = false;
130
+ trackedTempFiles.clear();
131
+ cleanupRegistered = false;
132
+ };
133
+ exports.__resetStablePromptState = __resetStablePromptState;
134
+ /** Test helper: inspect tracked files (read-only snapshot). */
135
+ const __trackedTempFiles = () => [...trackedTempFiles];
136
+ exports.__trackedTempFiles = __trackedTempFiles;
137
+ //# sourceMappingURL=stable.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable.prompt.js","sourceRoot":"","sources":["../../../src/engine/claude/stable.prompt.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ interface DisplayCallbackOptions {
3
3
  suppressJsonBlock?: boolean;
4
4
  /** When set, strip this prefix from tool-call file paths so the display shows relative paths. */
5
5
  projectRoot?: string;
6
- /** When set, render streamed text in dim grey (ANSI 90). */
6
+ /** When set, render streamed text dimmed. */
7
7
  dimText?: boolean;
8
8
  }
9
9
  /**
@@ -4,6 +4,7 @@ exports.createDisplayCallbacks = void 0;
4
4
  const stream_parse_1 = require("./stream.parse");
5
5
  const spinner_1 = require("../../ui/spinner");
6
6
  const transcript_1 = require("../../ui/transcript");
7
+ const color_1 = require("../../ui/color");
7
8
  const RESUME_DEBOUNCE_MS = 200;
8
9
  /**
9
10
  * Create an onStdout callback that streams assistant text to stdout.
@@ -52,7 +53,7 @@ const createDisplayCallbacks = (opts) => {
52
53
  if (!lastCharWasNewline) {
53
54
  process.stdout.write("\n");
54
55
  }
55
- process.stdout.write(opts?.dimText ? `\x1b[90m${text}\x1b[0m` : text);
56
+ process.stdout.write(opts?.dimText ? (0, color_1.hint)(text, { force: true }) : text);
56
57
  (0, transcript_1.appendTranscript)(text);
57
58
  lastCharWasNewline = text.endsWith("\n");
58
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"stream.display.js","sourceRoot":"","sources":["../../../src/engine/claude/stream.display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.display.js","sourceRoot":"","sources":["../../../src/engine/claude/stream.display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type ProjectType = "web" | "node" | "unknown";
2
+ export type SensorName = "playwright" | "vision" | "a11y" | "contrast";
3
+ export interface DetectionReport {
4
+ projectType: ProjectType;
5
+ isVisualSurface: boolean;
6
+ detectedDeps: string[];
7
+ hasDesignMd: boolean;
8
+ hasAssetDir: boolean;
9
+ suggestedSensors: SensorName[];
10
+ suggestedEnsembleSize: 2 | 3;
11
+ }
12
+ export interface DetectOptions {
13
+ isThorough?: boolean;
14
+ }
15
+ export declare const detect: (cwd: string, opts?: DetectOptions) => Promise<DetectionReport>;
@@ -0,0 +1,160 @@
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.detect = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const VISUAL_DEPS = [
40
+ "react",
41
+ "vue",
42
+ "svelte",
43
+ "solid-js",
44
+ "vite",
45
+ "next",
46
+ "three",
47
+ "phaser",
48
+ "pixi.js",
49
+ "@babylonjs/core",
50
+ "electron",
51
+ "react-native",
52
+ "expo",
53
+ ];
54
+ const VISUAL_FILE_EXTS = new Set([".html", ".tsx", ".jsx", ".vue", ".svelte"]);
55
+ const SCAN_EXCLUDE_DIRS = new Set([
56
+ "node_modules",
57
+ ".git",
58
+ ".worktrees",
59
+ "dist",
60
+ "build",
61
+ ".ridgeline",
62
+ ]);
63
+ const ASSET_DIR_NAMES = ["assets", "public", "static"];
64
+ const SENSOR_ORDER = ["playwright", "vision", "a11y", "contrast"];
65
+ const readPackageJson = (cwd) => {
66
+ const pkgPath = path.join(cwd, "package.json");
67
+ if (!fs.existsSync(pkgPath)) {
68
+ return { deps: [], hasFile: false, isMalformed: false };
69
+ }
70
+ let raw;
71
+ try {
72
+ raw = fs.readFileSync(pkgPath, "utf-8");
73
+ }
74
+ catch {
75
+ return { deps: [], hasFile: true, isMalformed: true };
76
+ }
77
+ let parsed;
78
+ try {
79
+ parsed = JSON.parse(raw);
80
+ }
81
+ catch {
82
+ process.stderr.write(`[ridgeline] WARN: malformed package.json at ${pkgPath}; falling back to filesystem signals\n`);
83
+ return { deps: [], hasFile: true, isMalformed: true };
84
+ }
85
+ const deps = [
86
+ ...Object.keys(parsed.dependencies ?? {}),
87
+ ...Object.keys(parsed.devDependencies ?? {}),
88
+ ];
89
+ return { deps, hasFile: true, isMalformed: false };
90
+ };
91
+ const hasVisualFile = (cwd) => {
92
+ const stack = [cwd];
93
+ while (stack.length > 0) {
94
+ const dir = stack.pop();
95
+ let entries;
96
+ try {
97
+ entries = fs.readdirSync(dir, { withFileTypes: true });
98
+ }
99
+ catch {
100
+ continue;
101
+ }
102
+ for (const entry of entries) {
103
+ if (entry.isDirectory()) {
104
+ if (SCAN_EXCLUDE_DIRS.has(entry.name))
105
+ continue;
106
+ if (entry.name.startsWith(".") && entry.name !== ".")
107
+ continue;
108
+ stack.push(path.join(dir, entry.name));
109
+ continue;
110
+ }
111
+ if (entry.isFile()) {
112
+ const ext = path.extname(entry.name).toLowerCase();
113
+ if (VISUAL_FILE_EXTS.has(ext))
114
+ return true;
115
+ }
116
+ }
117
+ }
118
+ return false;
119
+ };
120
+ const detectAssetDir = (cwd) => {
121
+ for (const name of ASSET_DIR_NAMES) {
122
+ const candidate = path.join(cwd, name);
123
+ try {
124
+ if (fs.statSync(candidate).isDirectory())
125
+ return true;
126
+ }
127
+ catch {
128
+ continue;
129
+ }
130
+ }
131
+ return false;
132
+ };
133
+ const detect = async (cwd, opts = {}) => {
134
+ const { deps, hasFile } = readPackageJson(cwd);
135
+ const matchedVisualDeps = VISUAL_DEPS.filter((d) => deps.includes(d));
136
+ const detectedDeps = [...matchedVisualDeps].sort();
137
+ const hasDesignMd = fs.existsSync(path.join(cwd, ".ridgeline", "design.md"));
138
+ const hasAssetDir = detectAssetDir(cwd);
139
+ const isVisualSurface = matchedVisualDeps.length > 0 || hasVisualFile(cwd);
140
+ let projectType;
141
+ if (!hasFile)
142
+ projectType = "unknown";
143
+ else if (isVisualSurface)
144
+ projectType = "web";
145
+ else
146
+ projectType = "node";
147
+ const suggestedSensors = isVisualSurface ? [...SENSOR_ORDER] : [];
148
+ const suggestedEnsembleSize = opts.isThorough ? 3 : 2;
149
+ return {
150
+ projectType,
151
+ isVisualSurface,
152
+ detectedDeps,
153
+ hasDesignMd,
154
+ hasAssetDir,
155
+ suggestedSensors,
156
+ suggestedEnsembleSize,
157
+ };
158
+ };
159
+ exports.detect = detect;
160
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/detect/index.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ type AgentRegistry = {
12
12
  getSpecialist: (subfolder: string, filename: string) => SpecialistDef | null;
13
13
  /** Get shared context for an ensemble subfolder. Returns null if no context.md. */
14
14
  getContext: (subfolder: string) => string | null;
15
- /** Get gap checklist for an ensemble subfolder. Falls back to base if flavour has none. */
15
+ /** Get gap checklist for an ensemble subfolder. Returns null if no gaps.md. */
16
16
  getGaps: (subfolder: string) => string | null;
17
17
  /** Get sub-agents from specialists/ as DiscoveredAgent[]. */
18
18
  getSubAgents: () => DiscoveredAgent[];
@@ -23,12 +23,11 @@ type AgentRegistry = {
23
23
  model?: string;
24
24
  }>;
25
25
  };
26
- /** Clear the cached registry. Exposed for tests and flavour changes. */
26
+ /** Clear the cached registry. Exposed for tests. */
27
27
  export declare const clearRegistryCache: () => void;
28
28
  /**
29
- * Build an agent registry that resolves agents from an optional flavour
30
- * directory with per-subfolder fallback to the generic defaults in src/agents/.
31
- * Results are cached by flavour path for the lifetime of the process.
29
+ * Build an agent registry that resolves agents exclusively from src/agents/.
30
+ * Cached for the lifetime of the process.
32
31
  */
33
- export declare const buildAgentRegistry: (flavourPath: string | null) => AgentRegistry;
32
+ export declare const buildAgentRegistry: () => AgentRegistry;
34
33
  export {};
@@ -37,11 +37,8 @@ exports.buildAgentRegistry = exports.clearRegistryCache = void 0;
37
37
  const fs = __importStar(require("node:fs"));
38
38
  const path = __importStar(require("node:path"));
39
39
  const agent_scan_1 = require("./agent.scan");
40
- // ---------------------------------------------------------------------------
41
- // Path resolution helpers
42
- // ---------------------------------------------------------------------------
43
40
  /** Resolve the built-in agents/ directory across dist and src layouts. */
44
- const resolveDefaultAgentsDir = () => {
41
+ const resolveAgentsDir = () => {
45
42
  const candidates = [
46
43
  path.join(__dirname, "..", "agents"),
47
44
  path.join(__dirname, "..", "..", "agents"),
@@ -53,27 +50,12 @@ const resolveDefaultAgentsDir = () => {
53
50
  }
54
51
  return null;
55
52
  };
56
- /**
57
- * For a given subfolder (core, planners, specifiers, specialists), return the
58
- * directory to use — flavour's version if present, otherwise the default.
59
- */
60
- const resolveSubfolder = (subfolder, flavourPath, defaultAgentsDir) => {
61
- if (flavourPath) {
62
- const flavourSub = path.join(flavourPath, subfolder);
63
- if (fs.existsSync(flavourSub) && fs.statSync(flavourSub).isDirectory()) {
64
- return flavourSub;
65
- }
66
- }
67
- const defaultSub = path.join(defaultAgentsDir, subfolder);
68
- if (fs.existsSync(defaultSub) && fs.statSync(defaultSub).isDirectory()) {
69
- return defaultSub;
70
- }
53
+ const resolveSubfolder = (subfolder, agentsDir) => {
54
+ const dir = path.join(agentsDir, subfolder);
55
+ if (fs.existsSync(dir) && fs.statSync(dir).isDirectory())
56
+ return dir;
71
57
  return null;
72
58
  };
73
- // ---------------------------------------------------------------------------
74
- // Specialist discovery (extracted from ensemble.exec.ts)
75
- // ---------------------------------------------------------------------------
76
- /** Parse a specialist .md file into a SpecialistDef, or null on failure. */
77
59
  const parseSpecialistFile = (filepath) => {
78
60
  try {
79
61
  const content = fs.readFileSync(filepath, "utf-8");
@@ -105,31 +87,23 @@ const discoverSpecialistsInDir = (dir, excludeFiles) => {
105
87
  }
106
88
  return specialists;
107
89
  };
108
- // ---------------------------------------------------------------------------
109
- // Registry builder
110
- // ---------------------------------------------------------------------------
111
- // ---------------------------------------------------------------------------
112
- // Registry cache — avoids re-scanning the filesystem on every invocation
113
- // ---------------------------------------------------------------------------
114
90
  let registryCache = null;
115
- /** Clear the cached registry. Exposed for tests and flavour changes. */
91
+ /** Clear the cached registry. Exposed for tests. */
116
92
  const clearRegistryCache = () => { registryCache = null; };
117
93
  exports.clearRegistryCache = clearRegistryCache;
118
94
  /**
119
- * Build an agent registry that resolves agents from an optional flavour
120
- * directory with per-subfolder fallback to the generic defaults in src/agents/.
121
- * Results are cached by flavour path for the lifetime of the process.
95
+ * Build an agent registry that resolves agents exclusively from src/agents/.
96
+ * Cached for the lifetime of the process.
122
97
  */
123
- const buildAgentRegistry = (flavourPath) => {
124
- const cacheKey = flavourPath ?? "__default__";
125
- if (registryCache && registryCache.key === cacheKey)
126
- return registryCache.registry;
127
- const defaultAgentsDir = resolveDefaultAgentsDir();
128
- if (!defaultAgentsDir) {
98
+ const buildAgentRegistry = () => {
99
+ if (registryCache)
100
+ return registryCache;
101
+ const agentsDir = resolveAgentsDir();
102
+ if (!agentsDir) {
129
103
  throw new Error("Built-in agents directory not found");
130
104
  }
131
105
  const getCorePrompt = (filename) => {
132
- const coreDir = resolveSubfolder("core", flavourPath, defaultAgentsDir);
106
+ const coreDir = resolveSubfolder("core", agentsDir);
133
107
  if (!coreDir)
134
108
  throw new Error("No core agents directory found");
135
109
  const filepath = path.join(coreDir, filename);
@@ -139,13 +113,13 @@ const buildAgentRegistry = (flavourPath) => {
139
113
  return fs.readFileSync(filepath, "utf-8");
140
114
  };
141
115
  const getSpecialists = (subfolder) => {
142
- const dir = resolveSubfolder(subfolder, flavourPath, defaultAgentsDir);
116
+ const dir = resolveSubfolder(subfolder, agentsDir);
143
117
  if (!dir)
144
118
  return [];
145
119
  return discoverSpecialistsInDir(dir, ["context.md", "gaps.md", "visual-coherence.md"]);
146
120
  };
147
121
  const getSpecialist = (subfolder, filename) => {
148
- const dir = resolveSubfolder(subfolder, flavourPath, defaultAgentsDir);
122
+ const dir = resolveSubfolder(subfolder, agentsDir);
149
123
  if (!dir)
150
124
  return null;
151
125
  const filepath = path.join(dir, filename);
@@ -154,7 +128,7 @@ const buildAgentRegistry = (flavourPath) => {
154
128
  return parseSpecialistFile(filepath);
155
129
  };
156
130
  const getContext = (subfolder) => {
157
- const dir = resolveSubfolder(subfolder, flavourPath, defaultAgentsDir);
131
+ const dir = resolveSubfolder(subfolder, agentsDir);
158
132
  if (!dir)
159
133
  return null;
160
134
  const contextPath = path.join(dir, "context.md");
@@ -163,21 +137,13 @@ const buildAgentRegistry = (flavourPath) => {
163
137
  return fs.readFileSync(contextPath, "utf-8");
164
138
  };
165
139
  const getSubAgents = () => {
166
- const dir = resolveSubfolder("specialists", flavourPath, defaultAgentsDir);
140
+ const dir = resolveSubfolder("specialists", agentsDir);
167
141
  if (!dir)
168
142
  return [];
169
143
  return (0, agent_scan_1.discoverAgentsInDir)(dir);
170
144
  };
171
- // Independent fallback: check flavour first, then base — unlike getContext which
172
- // is bound to whichever subfolder resolveSubfolder picks (whole-subfolder replacement).
173
- // This ensures every flavour gets at least the base gap checklist.
174
145
  const getGaps = (subfolder) => {
175
- if (flavourPath) {
176
- const flavourGaps = path.join(flavourPath, subfolder, "gaps.md");
177
- if (fs.existsSync(flavourGaps))
178
- return fs.readFileSync(flavourGaps, "utf-8");
179
- }
180
- const baseGaps = path.join(defaultAgentsDir, subfolder, "gaps.md");
146
+ const baseGaps = path.join(agentsDir, subfolder, "gaps.md");
181
147
  if (fs.existsSync(baseGaps))
182
148
  return fs.readFileSync(baseGaps, "utf-8");
183
149
  return null;
@@ -186,7 +152,7 @@ const buildAgentRegistry = (flavourPath) => {
186
152
  return (0, agent_scan_1.buildAgentsFlag)(getSubAgents());
187
153
  };
188
154
  const registry = { getCorePrompt, getSpecialists, getSpecialist, getContext, getGaps, getSubAgents, getAgentsFlag };
189
- registryCache = { key: cacheKey, registry };
155
+ registryCache = registry;
190
156
  return registry;
191
157
  };
192
158
  exports.buildAgentRegistry = buildAgentRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.registry.js","sourceRoot":"","sources":["../../../src/engine/discovery/agent.registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.registry.js","sourceRoot":"","sources":["../../../src/engine/discovery/agent.registry.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,9 @@ export type SkillAvailability = {
8
8
  */
9
9
  export declare const parseSkillCompatibility: (content: string) => string | null;
10
10
  /**
11
- * Check availability of recommended skills for a flavour.
12
- * Reads SKILL.md files from the bundled plugin directory,
13
- * extracts compatibility info, and checks tool availability.
11
+ * Check availability of recommended skills against the bundled plugin
12
+ * directory. Reads SKILL.md files, extracts compatibility info, and verifies
13
+ * that the underlying CLI tool is on PATH.
14
14
  */
15
15
  export declare const checkRecommendedSkills: (skillNames: string[]) => SkillAvailability[];
16
16
  /**
@@ -78,9 +78,9 @@ const isToolAvailable = (toolName) => {
78
78
  }
79
79
  };
80
80
  /**
81
- * Check availability of recommended skills for a flavour.
82
- * Reads SKILL.md files from the bundled plugin directory,
83
- * extracts compatibility info, and checks tool availability.
81
+ * Check availability of recommended skills against the bundled plugin
82
+ * directory. Reads SKILL.md files, extracts compatibility info, and verifies
83
+ * that the underlying CLI tool is on PATH.
84
84
  */
85
85
  const checkRecommendedSkills = (skillNames) => {
86
86
  if (skillNames.length === 0)
@@ -119,7 +119,7 @@ const formatSkillAvailability = (results) => {
119
119
  if (results.length === 0)
120
120
  return "";
121
121
  const lines = [];
122
- lines.push(" Recommended tools for this flavour:");
122
+ lines.push(" Recommended tools:");
123
123
  for (const { name, isAvailable } of results) {
124
124
  const icon = isAvailable ? "✓" : "✗";
125
125
  const status = isAvailable ? "(found)" : "(not found)";
@@ -1 +1 @@
1
- {"version":3,"file":"skill.check.js","sourceRoot":"","sources":["../../../src/engine/discovery/skill.check.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AACjC,2DAA6C;AAC7C,+CAAmD;AAQnD;;GAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAiB,EAAE;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC,CAAA;AANY,QAAA,uBAAuB,2BAMnC;AAED;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC,aAAqB,EAAiB,EAAE;IACrE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3E,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,aAAqB,EAAiB,EAAE;IAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAW,EAAE;IACpD,IAAI,CAAC;QACH,IAAA,6BAAQ,EAAC,cAAc,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED;;;;GAIG;AACI,MAAM,sBAAsB,GAAG,CAAC,UAAoB,EAAuB,EAAE;IAClF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtC,MAAM,WAAW,GAAG,IAAA,iCAAmB,GAAE,CAAA;IACzC,IAAI,CAAC,WAAW;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEpG,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC3B,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5D,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CACzD,CAAA;YAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;gBAC/E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,SAAQ;gBAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACnD,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAA;gBAEtD,IAAI,CAAC,aAAa;oBAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;gBAE3E,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;gBAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBAEhE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAjCY,QAAA,sBAAsB,0BAiClC;AAED;;GAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAA4B,EAAU,EAAE;IAC9E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IAEnD,KAAK,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACpC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,aAAa,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACtC,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,OAAO,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,aAAc,CAAC,CAAA;YACxD,IAAI,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACpD,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA;AA3BY,QAAA,uBAAuB,2BA2BnC"}
1
+ {"version":3,"file":"skill.check.js","sourceRoot":"","sources":["../../../src/engine/discovery/skill.check.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  export { type DiscoveredAgent, parseFrontmatter, discoverAgentsInDir, buildAgentsFlag, } from './discovery/agent.scan';
2
2
  export { type SpecialistDef, buildAgentRegistry } from './discovery/agent.registry';
3
- export { resolveFlavour } from './discovery/flavour.resolve';
4
3
  export { invokeBuilder } from './pipeline/build.exec';
5
4
  export { type InvokeOptions, invokeClaude } from './claude/claude.exec';
6
5
  export { runPhase } from './pipeline/phase.sequence';