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,18 @@
1
+ import type { SensorAdapter, SensorFinding, SensorInput } from "./index";
2
+ type InvokeVision = (args: {
3
+ systemPrompt: string;
4
+ userPrompt: string;
5
+ model: string;
6
+ cwd: string;
7
+ imagePath: string;
8
+ }) => Promise<{
9
+ result: string;
10
+ }>;
11
+ interface VisionRunInternals {
12
+ invokeVision?: InvokeVision;
13
+ existsSync?: (p: string) => boolean;
14
+ isResolvable?: () => boolean;
15
+ }
16
+ export declare const runVisionSensor: (input: SensorInput, internals?: VisionRunInternals) => Promise<SensorFinding[]>;
17
+ declare const visionSensor: SensorAdapter;
18
+ export default visionSensor;
@@ -0,0 +1,125 @@
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.runVisionSensor = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const claude_exec_1 = require("../engine/claude/claude.exec");
39
+ const PLAYWRIGHT_INSTALL_HINT = "npm install --save-dev playwright && npx playwright install chromium";
40
+ const isPlaywrightResolvable = () => {
41
+ try {
42
+ require.resolve("playwright");
43
+ return true;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ };
49
+ const VISION_SYSTEM_PROMPT = "You are a visual-analysis assistant. Describe the rendered UI at the given screenshot path: "
50
+ + "layout, visible elements, color usage, obvious visual defects. Respond in 3-5 short bullet points. "
51
+ + "Read the image file with the Read tool.";
52
+ const VISION_TIMEOUT_MS = 2 * 60 * 1000;
53
+ const defaultInvokeVision = async (args) => {
54
+ const result = await (0, claude_exec_1.invokeClaude)({
55
+ systemPrompt: args.systemPrompt,
56
+ userPrompt: args.userPrompt,
57
+ model: args.model,
58
+ allowedTools: ["Read"],
59
+ cwd: args.cwd,
60
+ timeoutMs: VISION_TIMEOUT_MS,
61
+ });
62
+ return { result: result.result };
63
+ };
64
+ const unresolvableFinding = () => ({
65
+ kind: "vision",
66
+ severity: "warning",
67
+ summary: `Playwright is not installed. Install with: ${PLAYWRIGHT_INSTALL_HINT}`,
68
+ });
69
+ const runVisionSensor = async (input, internals = {}) => {
70
+ const resolvable = (internals.isResolvable ?? isPlaywrightResolvable)();
71
+ if (!resolvable) {
72
+ return [unresolvableFinding()];
73
+ }
74
+ const imagePath = input.screenshotPath;
75
+ const exists = internals.existsSync ?? fs.existsSync;
76
+ if (!imagePath || !exists(imagePath)) {
77
+ return [
78
+ {
79
+ kind: "vision",
80
+ severity: "warning",
81
+ summary: imagePath
82
+ ? `screenshot not found at ${imagePath}`
83
+ : "no screenshot path provided for vision analysis",
84
+ },
85
+ ];
86
+ }
87
+ const invoke = internals.invokeVision ?? defaultInvokeVision;
88
+ const model = input.model ?? "opus";
89
+ const userPrompt = `Analyze the UI screenshot at: ${imagePath}\n\nRead the image with the Read tool, then respond with 3-5 short observations.`;
90
+ try {
91
+ const { result } = await invoke({
92
+ systemPrompt: VISION_SYSTEM_PROMPT,
93
+ userPrompt,
94
+ model,
95
+ cwd: input.cwd,
96
+ imagePath,
97
+ });
98
+ return [
99
+ {
100
+ kind: "vision",
101
+ severity: "info",
102
+ path: imagePath,
103
+ summary: result.trim() || "(vision returned empty analysis)",
104
+ },
105
+ ];
106
+ }
107
+ catch (err) {
108
+ const message = err instanceof Error ? err.message : String(err);
109
+ return [
110
+ {
111
+ kind: "vision",
112
+ severity: "warning",
113
+ path: imagePath,
114
+ summary: `vision analysis failed: ${message}`,
115
+ },
116
+ ];
117
+ }
118
+ };
119
+ exports.runVisionSensor = runVisionSensor;
120
+ const visionSensor = {
121
+ name: "vision",
122
+ run: (input) => (0, exports.runVisionSensor)(input),
123
+ };
124
+ exports.default = visionSensor;
125
+ //# sourceMappingURL=vision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/sensors/vision.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,15 @@ const generateFeedback = (phaseId, verdict) => {
56
56
  }
57
57
  lines.push("");
58
58
  }
59
+ if (verdict.sensorFindings && verdict.sensorFindings.length > 0) {
60
+ lines.push("## Sensor Findings");
61
+ lines.push("");
62
+ for (const finding of verdict.sensorFindings) {
63
+ const pathPart = finding.path ? ` (${finding.path})` : "";
64
+ lines.push(`- **${finding.severity}** [${finding.kind}]: ${finding.summary}${pathPart}`);
65
+ }
66
+ lines.push("");
67
+ }
59
68
  return lines.join("\n");
60
69
  };
61
70
  exports.generateFeedback = generateFeedback;
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.format.js","sourceRoot":"","sources":["../../src/stores/feedback.format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.format.js","sourceRoot":"","sources":["../../src/stores/feedback.format.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ const tryParseVerdict = (raw) => {
41
41
  suggestions: Array.isArray(obj.suggestions)
42
42
  ? obj.suggestions.map((s) => normalizeIssue(s, "suggestion"))
43
43
  : [],
44
+ sensorFindings: [],
44
45
  };
45
46
  };
46
47
  // Find the end index of a balanced JSON object starting at position 0 in `text`.
@@ -99,6 +100,7 @@ const UNPARSEABLE_VERDICT = {
99
100
  criteriaResults: [],
100
101
  issues: [{ description: "Reviewer output did not contain a valid JSON verdict", severity: "blocking" }],
101
102
  suggestions: [],
103
+ sensorFindings: [],
102
104
  };
103
105
  // Extract the JSON verdict block from reviewer's text output
104
106
  const parseVerdict = (text) => {
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.parse.js","sourceRoot":"","sources":["../../src/stores/feedback.parse.ts"],"names":[],"mappings":";;;AAEA,iEAAiE;AACjE,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,QAAmC,EAAe,EAAE;IACzF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IACxC,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAA+B,CAAA;QAC3C,OAAO;YACL,SAAS,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACxE,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;YAClG,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACzD,QAAQ;YACR,aAAa,EAAE,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACrF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;AAChD,CAAC,CAAA;AAED,+CAA+C;AAC/C,MAAM,eAAe,GAAG,CAAC,GAAY,EAAwB,EAAE;IAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACxD,MAAM,GAAG,GAAG,GAA8B,CAAA;IAC1C,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAEhD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3D,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YACjD,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAA2B,EAAE,EAAE,CAAC,CAAC;gBACxD,SAAS,EAAE,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;gBAC1D,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aACpD,CAAC,CAAC;YACL,CAAC,CAAC,EAAE;QACN,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/D,CAAC,CAAC,EAAE;QACN,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACtE,CAAC,CAAC,EAAE;KACP,CAAA;AACH,CAAC,CAAA;AAED,iFAAiF;AACjF,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;IACjD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,KAAK,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC5C,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;QAClD,IAAI,QAAQ;YAAE,SAAQ;QACtB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAA;QACvB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,EAAE,CAAA;YACP,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAA;AACX,CAAC,CAAA;AAED,oEAAoE;AACpE,oEAAoE;AACpE,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAwB,EAAE;IACjE,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3B,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAkB;IACzC,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,8CAA8C;IACvD,eAAe,EAAE,EAAE;IACnB,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvG,WAAW,EAAE,EAAE;CAChB,CAAA;AAED,6DAA6D;AACtD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAiB,EAAE;IAC1D,8CAA8C;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;IAC3B,CAAC;IAED,6DAA6D;IAC7D,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;IAC3B,CAAC;IAED,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA;AAfY,QAAA,YAAY,gBAexB"}
1
+ {"version":3,"file":"feedback.parse.js","sourceRoot":"","sources":["../../src/stores/feedback.parse.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,16 @@ type RidgelineSettings = {
5
5
  network?: {
6
6
  allowlist?: string[];
7
7
  };
8
- flavour?: string;
9
8
  assetDir?: string;
10
9
  model?: string;
10
+ /**
11
+ * Per-call specialist timeout in seconds. Recommended 180–600.
12
+ * Applies to ensemble specialist invocations (planner, specifier, researcher).
13
+ */
14
+ specialistTimeoutSeconds?: number;
11
15
  };
16
+ export declare const DEFAULT_SPECIALIST_TIMEOUT_SECONDS = 180;
17
+ export declare const resolveSpecialistTimeoutSeconds: (ridgelineDir: string) => number;
12
18
  /** Resolve the model to use: CLI opt wins, then settings.json, then built-in default. */
13
19
  export declare const resolveModel: (optModel: string | undefined, ridgelineDir: string) => string;
14
20
  export declare const loadSettings: (ridgelineDir: string) => RidgelineSettings;
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.resolveResearchAllowlist = exports.resolveNetworkAllowlist = exports.loadSettings = exports.resolveModel = exports.DEFAULT_NETWORK_ALLOWLIST = exports.CLAUDE_REQUIRED_DOMAINS = void 0;
36
+ exports.resolveResearchAllowlist = exports.resolveNetworkAllowlist = exports.loadSettings = exports.resolveModel = exports.resolveSpecialistTimeoutSeconds = exports.DEFAULT_SPECIALIST_TIMEOUT_SECONDS = exports.DEFAULT_NETWORK_ALLOWLIST = exports.CLAUDE_REQUIRED_DOMAINS = void 0;
37
37
  const fs = __importStar(require("node:fs"));
38
38
  const path = __importStar(require("node:path"));
39
39
  /** Domains Claude needs for authentication and API access — always allowlisted. */
@@ -71,6 +71,15 @@ exports.DEFAULT_NETWORK_ALLOWLIST = [
71
71
  "gitlab.com",
72
72
  "bitbucket.org",
73
73
  ];
74
+ exports.DEFAULT_SPECIALIST_TIMEOUT_SECONDS = 180;
75
+ const resolveSpecialistTimeoutSeconds = (ridgelineDir) => {
76
+ const raw = (0, exports.loadSettings)(ridgelineDir).specialistTimeoutSeconds;
77
+ if (typeof raw !== "number" || !Number.isFinite(raw) || raw <= 0) {
78
+ return exports.DEFAULT_SPECIALIST_TIMEOUT_SECONDS;
79
+ }
80
+ return Math.floor(raw);
81
+ };
82
+ exports.resolveSpecialistTimeoutSeconds = resolveSpecialistTimeoutSeconds;
74
83
  /** Resolve the model to use: CLI opt wins, then settings.json, then built-in default. */
75
84
  const resolveModel = (optModel, ridgelineDir) => optModel ?? (0, exports.loadSettings)(ridgelineDir).model ?? "opus";
76
85
  exports.resolveModel = resolveModel;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/stores/settings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAEjC,mFAAmF;AACtE,QAAA,uBAAuB,GAAa;IAC/C,mBAAmB;IACnB,qBAAqB;IACrB,oCAAoC;CACrC,CAAA;AAED,kFAAkF;AAClF,MAAM,wBAAwB,GAAa;IACzC,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,oBAAoB;IACpB,iBAAiB;IACjB,uBAAuB;IACvB,SAAS;IACT,YAAY;IACZ,qBAAqB;IACrB,YAAY;CACb,CAAA;AAEY,QAAA,yBAAyB,GAAa;IACjD,GAAG,+BAAuB;IAC1B,oBAAoB;IACpB,YAAY;IACZ,+BAA+B;IAC/B,2BAA2B;IAC3B,UAAU;IACV,wBAAwB;IACxB,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,YAAY;IACZ,eAAe;CAChB,CAAA;AAWD,yFAAyF;AAClF,MAAM,YAAY,GAAG,CAAC,QAA4B,EAAE,YAAoB,EAAU,EAAE,CACzF,QAAQ,IAAI,IAAA,oBAAY,EAAC,YAAY,CAAC,CAAC,KAAK,IAAI,MAAM,CAAA;AAD3C,QAAA,YAAY,gBAC+B;AAEjD,MAAM,YAAY,GAAG,CAAC,YAAoB,EAAqB,EAAE;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;IAC7D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AARY,QAAA,YAAY,gBAQxB;AAEM,MAAM,uBAAuB,GAAG,CAAC,YAAoB,EAAY,EAAE;IACxE,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,YAAY,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACjF,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS;QAC5B,CAAC,CAAC,CAAC,GAAG,iCAAyB,CAAC,CAAA;IAClC,iFAAiF;IACjF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,+BAAuB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,MAAM,CAAC,CAAA;AACpB,CAAC,CAAA;AAVY,QAAA,uBAAuB,2BAUnC;AAED,0FAA0F;AACnF,MAAM,wBAAwB,GAAG,CAAC,YAAoB,EAAY,EAAE;IACzE,MAAM,IAAI,GAAG,IAAA,+BAAuB,EAAC,YAAY,CAAC,CAAA;IAClD,uEAAuE;IACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,MAAM,CAAC,CAAA;AACpB,CAAC,CAAA;AANY,QAAA,wBAAwB,4BAMpC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/stores/settings.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import { TrajectoryEntry } from "../types";
2
- export declare const logTrajectory: (buildDir: string, type: TrajectoryEntry["type"], phaseId: string | null, summary: string, opts?: {
2
+ export type TrajectoryOpts = {
3
3
  duration?: number;
4
4
  tokens?: {
5
5
  input: number;
6
6
  output: number;
7
7
  };
8
8
  costUsd?: number;
9
- }) => void;
9
+ reason?: string;
10
+ specialist?: string;
11
+ stage?: string;
12
+ promptStableHash?: string;
13
+ cacheReadInputTokens?: number;
14
+ cacheCreationInputTokens?: number;
15
+ };
16
+ export declare const logTrajectory: (buildDir: string, type: TrajectoryEntry["type"], phaseId: string | null, summary: string, opts?: TrajectoryOpts) => void;
10
17
  export declare const readTrajectory: (buildDir: string) => TrajectoryEntry[];
@@ -45,6 +45,12 @@ const makeEntry = (type, phaseId, summary, opts) => ({
45
45
  tokens: opts?.tokens ?? null,
46
46
  costUsd: opts?.costUsd ?? null,
47
47
  summary,
48
+ ...(opts?.reason ? { reason: opts.reason } : {}),
49
+ ...(opts?.specialist ? { specialist: opts.specialist } : {}),
50
+ ...(opts?.stage ? { stage: opts.stage } : {}),
51
+ ...(opts?.promptStableHash ? { promptStableHash: opts.promptStableHash } : {}),
52
+ ...(typeof opts?.cacheReadInputTokens === "number" ? { cacheReadInputTokens: opts.cacheReadInputTokens } : {}),
53
+ ...(typeof opts?.cacheCreationInputTokens === "number" ? { cacheCreationInputTokens: opts.cacheCreationInputTokens } : {}),
48
54
  });
49
55
  const logTrajectory = (buildDir, type, phaseId, summary, opts) => {
50
56
  fs.appendFileSync(trajectoryPath(buildDir), JSON.stringify(makeEntry(type, phaseId, summary, opts)) + "\n");
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../src/stores/trajectory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAGjC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAU,EAAE,CAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;AAEzC,MAAM,SAAS,GAAG,CAChB,IAA6B,EAC7B,OAAsB,EACtB,OAAe,EACf,IAIC,EACgB,EAAE,CAAC,CAAC;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,IAAI;IACJ,OAAO;IACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;IAChC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;IAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;IAC9B,OAAO;CACR,CAAC,CAAA;AAEK,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,IAA6B,EAC7B,OAAsB,EACtB,OAAe,EACf,IAIC,EACK,EAAE;IACR,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAC7G,CAAC,CAAA;AAZY,QAAA,aAAa,iBAYzB;AAED,kDAAkD;AAC3C,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAqB,EAAE;IACpE,MAAM,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;SAChC,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC,CAAA;AACvD,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B"}
1
+ {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../src/stores/trajectory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAGjC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAU,EAAE,CAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;AAczC,MAAM,SAAS,GAAG,CAChB,IAA6B,EAC7B,OAAsB,EACtB,OAAe,EACf,IAAqB,EACJ,EAAE,CAAC,CAAC;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,IAAI;IACJ,OAAO;IACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;IAChC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;IAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;IAC9B,OAAO;IACP,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,GAAG,CAAC,OAAO,IAAI,EAAE,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,GAAG,CAAC,OAAO,IAAI,EAAE,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC3H,CAAC,CAAA;AAEK,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,IAA6B,EAC7B,OAAsB,EACtB,OAAe,EACf,IAAqB,EACf,EAAE;IACR,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAC7G,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;AAED,kDAAkD;AAC3C,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAqB,EAAE;IACpE,MAAM,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;SAChC,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC,CAAA;AACvD,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B"}
package/dist/types.d.ts CHANGED
@@ -16,8 +16,8 @@ export type RidgelineConfig = {
16
16
  networkAllowlist: string[];
17
17
  sandboxProvider?: import("./engine/claude/sandbox").SandboxProvider | null;
18
18
  extraContext: string | null;
19
- flavour: string | null;
20
- isDeepEnsemble: boolean;
19
+ isThorough: boolean;
20
+ specialistTimeoutSeconds: number;
21
21
  };
22
22
  export type PhaseInfo = {
23
23
  id: string;
@@ -84,6 +84,7 @@ export type ReviewVerdict = {
84
84
  }[];
85
85
  issues: ReviewIssue[];
86
86
  suggestions: ReviewIssue[];
87
+ sensorFindings: import("./sensors").SensorFinding[];
87
88
  };
88
89
  type SpecialistPhaseProposal = {
89
90
  title: string;
@@ -168,7 +169,7 @@ export type BudgetState = {
168
169
  };
169
170
  export type TrajectoryEntry = {
170
171
  timestamp: string;
171
- type: "plan_start" | "plan_complete" | "build_start" | "build_complete" | "review_start" | "review_complete" | "phase_advance" | "phase_fail" | "budget_exceeded" | "research_start" | "research_complete" | "refine_start" | "refine_complete";
172
+ type: "plan_start" | "plan_complete" | "build_start" | "build_complete" | "review_start" | "review_complete" | "phase_advance" | "phase_fail" | "budget_exceeded" | "research_start" | "research_complete" | "refine_start" | "refine_complete" | "specialist_fail" | "synthesis_skipped" | "prompt_stable_hash";
172
173
  phaseId: string | null;
173
174
  duration: number | null;
174
175
  tokens: {
@@ -177,5 +178,37 @@ export type TrajectoryEntry = {
177
178
  } | null;
178
179
  costUsd: number | null;
179
180
  summary: string;
181
+ reason?: string;
182
+ specialist?: string;
183
+ stage?: string;
184
+ promptStableHash?: string;
185
+ cacheReadInputTokens?: number;
186
+ cacheCreationInputTokens?: number;
187
+ };
188
+ export type SpecialistSkeletonSpec = {
189
+ sectionOutline: string[];
190
+ riskList: string[];
191
+ };
192
+ export type SpecialistSkeletonPlan = {
193
+ phaseList: {
194
+ id: string;
195
+ slug: string;
196
+ }[];
197
+ depGraph: [string, string][];
198
+ };
199
+ export type SpecialistSkeletonResearch = {
200
+ findings: string[];
201
+ openQuestions: string[];
202
+ };
203
+ export type SpecialistStage = "spec" | "plan" | "research";
204
+ export type SpecialistVerdict = {
205
+ stage: "spec";
206
+ skeleton: SpecialistSkeletonSpec;
207
+ } | {
208
+ stage: "plan";
209
+ skeleton: SpecialistSkeletonPlan;
210
+ } | {
211
+ stage: "research";
212
+ skeleton: SpecialistSkeletonResearch;
180
213
  };
181
214
  export {};
@@ -0,0 +1,16 @@
1
+ export type ColorStream = "stdout" | "stderr";
2
+ type WrapOpts = {
3
+ stream?: ColorStream;
4
+ force?: boolean;
5
+ };
6
+ export declare const isColorEnabled: (stream?: ColorStream) => boolean;
7
+ export declare const error: (text: string, opts?: WrapOpts) => string;
8
+ export declare const success: (text: string, opts?: WrapOpts) => string;
9
+ export declare const warning: (text: string, opts?: WrapOpts) => string;
10
+ export declare const info: (text: string, opts?: WrapOpts) => string;
11
+ export declare const hint: (text: string, opts?: WrapOpts) => string;
12
+ export declare const bold: (text: string, opts?: WrapOpts) => string;
13
+ export declare const dimInfo: (text: string, opts?: WrapOpts) => string;
14
+ export declare const stripAnsi: (text: string) => string;
15
+ export declare const clearLineSequence: () => string;
16
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearLineSequence = exports.stripAnsi = exports.dimInfo = exports.bold = exports.hint = exports.info = exports.warning = exports.success = exports.error = exports.isColorEnabled = void 0;
4
+ const ESC = String.fromCharCode(27);
5
+ const SGR = (code) => `${ESC}[${code}m`;
6
+ const RESET = SGR("0");
7
+ const ANSI_PATTERN = new RegExp(`${ESC}\\[[0-9;]*m`, "g");
8
+ const CODE_ERROR = "31";
9
+ const CODE_SUCCESS = "32";
10
+ const CODE_WARNING = "33";
11
+ const CODE_INFO = "36";
12
+ const CODE_DIM = "2";
13
+ const CODE_BOLD = "1";
14
+ const streamOf = (s) => s === "stderr" ? process.stderr : process.stdout;
15
+ const isColorEnabled = (stream = "stdout") => {
16
+ const noColor = process.env.NO_COLOR;
17
+ if (noColor !== undefined && noColor !== "")
18
+ return false;
19
+ return Boolean(streamOf(stream).isTTY);
20
+ };
21
+ exports.isColorEnabled = isColorEnabled;
22
+ const wrap = (open, text, opts) => {
23
+ const enabled = opts?.force ?? (0, exports.isColorEnabled)(opts?.stream ?? "stdout");
24
+ if (!enabled)
25
+ return text;
26
+ return `${SGR(open)}${text}${RESET}`;
27
+ };
28
+ const error = (text, opts) => wrap(CODE_ERROR, text, opts);
29
+ exports.error = error;
30
+ const success = (text, opts) => wrap(CODE_SUCCESS, text, opts);
31
+ exports.success = success;
32
+ const warning = (text, opts) => wrap(CODE_WARNING, text, opts);
33
+ exports.warning = warning;
34
+ const info = (text, opts) => wrap(CODE_INFO, text, opts);
35
+ exports.info = info;
36
+ const hint = (text, opts) => wrap(CODE_DIM, text, opts);
37
+ exports.hint = hint;
38
+ const bold = (text, opts) => wrap(CODE_BOLD, text, opts);
39
+ exports.bold = bold;
40
+ const dimInfo = (text, opts) => wrap(`${CODE_DIM};${CODE_INFO}`, text, opts);
41
+ exports.dimInfo = dimInfo;
42
+ const stripAnsi = (text) => text.replace(ANSI_PATTERN, "");
43
+ exports.stripAnsi = stripAnsi;
44
+ const clearLineSequence = () => `\r${ESC}[K`;
45
+ exports.clearLineSequence = clearLineSequence;
46
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/ui/color.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const brightenForContrast: (accentHex: string, bgHex: string, targetRatio?: number) => string;
2
+ export declare const compositeAccentFill: (accentHex: string, bgHex: string) => string;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compositeAccentFill = exports.brightenForContrast = void 0;
4
+ const wcag_contrast_1 = require("wcag-contrast");
5
+ const hex_1 = require("./dashboard/hex");
6
+ const TEXT_FALLBACK = "#E5E7EB";
7
+ const MAX_L_PERCENT = 98;
8
+ const STEP_PERCENT = 2;
9
+ const DEFAULT_TARGET = 4.5;
10
+ const ACCENT_FILL_ALPHA = 0.1;
11
+ const toHex = (rgb) => {
12
+ const part = (n) => Math.max(0, Math.min(255, Math.round(n))).toString(16).padStart(2, "0");
13
+ return `#${part(rgb.r)}${part(rgb.g)}${part(rgb.b)}`.toUpperCase();
14
+ };
15
+ const compositeOver = (fg, bg, alpha) => ({
16
+ r: fg.r * alpha + bg.r * (1 - alpha),
17
+ g: fg.g * alpha + bg.g * (1 - alpha),
18
+ b: fg.b * alpha + bg.b * (1 - alpha),
19
+ });
20
+ const rgbToHsl = (rgb) => {
21
+ const r = rgb.r / 255;
22
+ const g = rgb.g / 255;
23
+ const b = rgb.b / 255;
24
+ const max = Math.max(r, g, b);
25
+ const min = Math.min(r, g, b);
26
+ const l = (max + min) / 2;
27
+ if (max === min)
28
+ return { h: 0, s: 0, l: l * 100 };
29
+ const d = max - min;
30
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
31
+ let h;
32
+ switch (max) {
33
+ case r:
34
+ h = ((g - b) / d) + (g < b ? 6 : 0);
35
+ break;
36
+ case g:
37
+ h = ((b - r) / d) + 2;
38
+ break;
39
+ default: h = ((r - g) / d) + 4;
40
+ }
41
+ return { h: h * 60, s: s * 100, l: l * 100 };
42
+ };
43
+ const hueToRgb = (p, q, t) => {
44
+ if (t < 0)
45
+ t += 1;
46
+ if (t > 1)
47
+ t -= 1;
48
+ if (t < 1 / 6)
49
+ return p + (q - p) * 6 * t;
50
+ if (t < 1 / 2)
51
+ return q;
52
+ if (t < 2 / 3)
53
+ return p + (q - p) * (2 / 3 - t) * 6;
54
+ return p;
55
+ };
56
+ const hslToRgb = (hsl) => {
57
+ const h = hsl.h / 360;
58
+ const s = hsl.s / 100;
59
+ const l = hsl.l / 100;
60
+ if (s === 0) {
61
+ const v = l * 255;
62
+ return { r: v, g: v, b: v };
63
+ }
64
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
65
+ const p = 2 * l - q;
66
+ return {
67
+ r: hueToRgb(p, q, h + 1 / 3) * 255,
68
+ g: hueToRgb(p, q, h) * 255,
69
+ b: hueToRgb(p, q, h - 1 / 3) * 255,
70
+ };
71
+ };
72
+ const brightenForContrast = (accentHex, bgHex, targetRatio = DEFAULT_TARGET) => {
73
+ const accentRgb = (0, hex_1.parseHexRgb)(accentHex);
74
+ const bgRgb = (0, hex_1.parseHexRgb)(bgHex);
75
+ const effectiveFill = toHex(compositeOver(accentRgb, bgRgb, ACCENT_FILL_ALPHA));
76
+ if ((0, wcag_contrast_1.hex)(accentHex, effectiveFill) >= targetRatio) {
77
+ return accentHex.toUpperCase();
78
+ }
79
+ const hsl = rgbToHsl(accentRgb);
80
+ for (let l = hsl.l + STEP_PERCENT; l <= MAX_L_PERCENT; l += STEP_PERCENT) {
81
+ const candidate = toHex(hslToRgb({ h: hsl.h, s: hsl.s, l }));
82
+ if ((0, wcag_contrast_1.hex)(candidate, effectiveFill) >= targetRatio)
83
+ return candidate;
84
+ }
85
+ return TEXT_FALLBACK;
86
+ };
87
+ exports.brightenForContrast = brightenForContrast;
88
+ const compositeAccentFill = (accentHex, bgHex) => {
89
+ const accentRgb = (0, hex_1.parseHexRgb)(accentHex);
90
+ const bgRgb = (0, hex_1.parseHexRgb)(bgHex);
91
+ return toHex(compositeOver(accentRgb, bgRgb, ACCENT_FILL_ALPHA));
92
+ };
93
+ exports.compositeAccentFill = compositeAccentFill;
94
+ //# sourceMappingURL=contrast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/ui/contrast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const renderClientScript: () => string;