dino-spec 13.6.1 → 14.1.0

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 (231) hide show
  1. package/README.md +118 -5
  2. package/dist/commands/hud.d.ts +1 -8
  3. package/dist/commands/hud.d.ts.map +1 -1
  4. package/dist/commands/hud.js +4 -18
  5. package/dist/commands/hud.js.map +1 -1
  6. package/dist/core/agents/ambiguity-resolver.d.ts +118 -0
  7. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -0
  8. package/dist/core/agents/ambiguity-resolver.js +327 -0
  9. package/dist/core/agents/ambiguity-resolver.js.map +1 -0
  10. package/dist/core/agents/confidence-gate.d.ts +99 -0
  11. package/dist/core/agents/confidence-gate.d.ts.map +1 -0
  12. package/dist/core/agents/confidence-gate.js +295 -0
  13. package/dist/core/agents/confidence-gate.js.map +1 -0
  14. package/dist/core/agents/feedback-collector.d.ts +108 -0
  15. package/dist/core/agents/feedback-collector.d.ts.map +1 -0
  16. package/dist/core/agents/feedback-collector.js +313 -0
  17. package/dist/core/agents/feedback-collector.js.map +1 -0
  18. package/dist/core/agents/parallel-reviewer.d.ts +88 -0
  19. package/dist/core/agents/parallel-reviewer.d.ts.map +1 -0
  20. package/dist/core/agents/parallel-reviewer.js +459 -0
  21. package/dist/core/agents/parallel-reviewer.js.map +1 -0
  22. package/dist/core/agents/reviewer-loop.d.ts +102 -0
  23. package/dist/core/agents/reviewer-loop.d.ts.map +1 -0
  24. package/dist/core/agents/reviewer-loop.js +373 -0
  25. package/dist/core/agents/reviewer-loop.js.map +1 -0
  26. package/dist/core/agents/skill-auditor.d.ts +82 -0
  27. package/dist/core/agents/skill-auditor.d.ts.map +1 -0
  28. package/dist/core/agents/skill-auditor.js +278 -0
  29. package/dist/core/agents/skill-auditor.js.map +1 -0
  30. package/dist/core/config/feature-flags.d.ts +25 -1
  31. package/dist/core/config/feature-flags.d.ts.map +1 -1
  32. package/dist/core/config/feature-flags.js +7 -1
  33. package/dist/core/config/feature-flags.js.map +1 -1
  34. package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
  35. package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
  36. package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
  37. package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
  38. package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
  39. package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
  40. package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
  41. package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
  42. package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
  43. package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
  44. package/dist/core/context/__tests__/output-persistence.test.js +246 -0
  45. package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
  46. package/dist/core/context/auto-injection-engine.d.ts +10 -1
  47. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  48. package/dist/core/context/auto-injection-engine.js +45 -2
  49. package/dist/core/context/auto-injection-engine.js.map +1 -1
  50. package/dist/core/context/budget-thresholds.d.ts +167 -0
  51. package/dist/core/context/budget-thresholds.d.ts.map +1 -0
  52. package/dist/core/context/budget-thresholds.js +234 -0
  53. package/dist/core/context/budget-thresholds.js.map +1 -0
  54. package/dist/core/context/compaction-engine.d.ts +193 -0
  55. package/dist/core/context/compaction-engine.d.ts.map +1 -0
  56. package/dist/core/context/compaction-engine.js +376 -0
  57. package/dist/core/context/compaction-engine.js.map +1 -0
  58. package/dist/core/context/context-health.d.ts +27 -2
  59. package/dist/core/context/context-health.d.ts.map +1 -1
  60. package/dist/core/context/context-health.js +98 -12
  61. package/dist/core/context/context-health.js.map +1 -1
  62. package/dist/core/context/focus-resource-loader.d.ts +143 -0
  63. package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
  64. package/dist/core/context/focus-resource-loader.js +305 -0
  65. package/dist/core/context/focus-resource-loader.js.map +1 -0
  66. package/dist/core/context/index.d.ts +10 -5
  67. package/dist/core/context/index.d.ts.map +1 -1
  68. package/dist/core/context/index.js +40 -5
  69. package/dist/core/context/index.js.map +1 -1
  70. package/dist/core/context/lazy-loader.d.ts +44 -1
  71. package/dist/core/context/lazy-loader.d.ts.map +1 -1
  72. package/dist/core/context/lazy-loader.js +59 -1
  73. package/dist/core/context/lazy-loader.js.map +1 -1
  74. package/dist/core/context/output-persistence.d.ts +142 -0
  75. package/dist/core/context/output-persistence.d.ts.map +1 -0
  76. package/dist/core/context/output-persistence.js +242 -0
  77. package/dist/core/context/output-persistence.js.map +1 -0
  78. package/dist/core/context-repl/__tests__/repl-environment.test.d.ts +7 -0
  79. package/dist/core/context-repl/__tests__/repl-environment.test.d.ts.map +1 -0
  80. package/dist/core/context-repl/__tests__/repl-environment.test.js +335 -0
  81. package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -0
  82. package/dist/core/context-repl/context-window-monitor.d.ts +181 -0
  83. package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -0
  84. package/dist/core/context-repl/context-window-monitor.js +309 -0
  85. package/dist/core/context-repl/context-window-monitor.js.map +1 -0
  86. package/dist/core/context-repl/index.d.ts +8 -3
  87. package/dist/core/context-repl/index.d.ts.map +1 -1
  88. package/dist/core/context-repl/index.js +11 -3
  89. package/dist/core/context-repl/index.js.map +1 -1
  90. package/dist/core/context-repl/repl-environment.d.ts +66 -0
  91. package/dist/core/context-repl/repl-environment.d.ts.map +1 -0
  92. package/dist/core/context-repl/repl-environment.js +795 -0
  93. package/dist/core/context-repl/repl-environment.js.map +1 -0
  94. package/dist/core/context-repl/types.d.ts +277 -1
  95. package/dist/core/context-repl/types.d.ts.map +1 -1
  96. package/dist/core/context-repl/types.js +52 -1
  97. package/dist/core/context-repl/types.js.map +1 -1
  98. package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
  99. package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
  100. package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
  101. package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
  102. package/dist/core/environment/index.d.ts +8 -0
  103. package/dist/core/environment/index.d.ts.map +1 -0
  104. package/dist/core/environment/index.js +7 -0
  105. package/dist/core/environment/index.js.map +1 -0
  106. package/dist/core/environment/pre-verify.d.ts +63 -0
  107. package/dist/core/environment/pre-verify.d.ts.map +1 -0
  108. package/dist/core/environment/pre-verify.js +221 -0
  109. package/dist/core/environment/pre-verify.js.map +1 -0
  110. package/dist/core/environment/types.d.ts +37 -0
  111. package/dist/core/environment/types.d.ts.map +1 -0
  112. package/dist/core/environment/types.js +5 -0
  113. package/dist/core/environment/types.js.map +1 -0
  114. package/dist/core/generator/claude-md.js +1 -1
  115. package/dist/core/intelligence/context-budget.d.ts +10 -5
  116. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  117. package/dist/core/intelligence/context-budget.js +12 -5
  118. package/dist/core/intelligence/context-budget.js.map +1 -1
  119. package/dist/core/provider/storage.d.ts.map +1 -1
  120. package/dist/core/provider/storage.js +1 -2
  121. package/dist/core/provider/storage.js.map +1 -1
  122. package/dist/hooks/post-edit.js +73 -0
  123. package/dist/hooks/post-edit.js.map +1 -1
  124. package/dist/hooks/session-start.js +115 -0
  125. package/dist/hooks/session-start.js.map +1 -1
  126. package/dist/hooks/types.js +1 -1
  127. package/dist/hooks/user-prompt-submit.js +100 -0
  128. package/dist/hooks/user-prompt-submit.js.map +1 -1
  129. package/dist/hud/config.d.ts +3 -28
  130. package/dist/hud/config.d.ts.map +1 -1
  131. package/dist/hud/config.js +8 -60
  132. package/dist/hud/config.js.map +1 -1
  133. package/dist/hud/index.d.ts.map +1 -1
  134. package/dist/hud/index.js +0 -1
  135. package/dist/hud/index.js.map +1 -1
  136. package/dist/hud/render/budget-bar.d.ts +0 -2
  137. package/dist/hud/render/budget-bar.d.ts.map +1 -1
  138. package/dist/hud/render/budget-bar.js +5 -8
  139. package/dist/hud/render/budget-bar.js.map +1 -1
  140. package/dist/hud/stdin.d.ts +0 -3
  141. package/dist/hud/stdin.d.ts.map +1 -1
  142. package/dist/hud/stdin.js +2 -29
  143. package/dist/hud/stdin.js.map +1 -1
  144. package/dist/hud/types.d.ts +0 -2
  145. package/dist/hud/types.d.ts.map +1 -1
  146. package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
  147. package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
  148. package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
  149. package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
  150. package/dist/mcp/dynamic-updates.d.ts +167 -0
  151. package/dist/mcp/dynamic-updates.d.ts.map +1 -0
  152. package/dist/mcp/dynamic-updates.js +313 -0
  153. package/dist/mcp/dynamic-updates.js.map +1 -0
  154. package/dist/mcp/focus-filter.d.ts +74 -0
  155. package/dist/mcp/focus-filter.d.ts.map +1 -0
  156. package/dist/mcp/focus-filter.js +229 -0
  157. package/dist/mcp/focus-filter.js.map +1 -0
  158. package/dist/mcp/index.d.ts +4 -2
  159. package/dist/mcp/index.d.ts.map +1 -1
  160. package/dist/mcp/index.js +5 -2
  161. package/dist/mcp/index.js.map +1 -1
  162. package/dist/mcp/registry.d.ts +4 -4
  163. package/dist/mcp/registry.d.ts.map +1 -1
  164. package/dist/mcp/registry.js +17 -16
  165. package/dist/mcp/registry.js.map +1 -1
  166. package/dist/mcp/server.d.ts +2 -1
  167. package/dist/mcp/server.d.ts.map +1 -1
  168. package/dist/mcp/server.js +12 -3
  169. package/dist/mcp/server.js.map +1 -1
  170. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  171. package/dist/mcp/tool-tiers.js +5 -0
  172. package/dist/mcp/tool-tiers.js.map +1 -1
  173. package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
  174. package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
  175. package/dist/mcp/tools/__tests__/environment.test.js +219 -0
  176. package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
  177. package/dist/mcp/tools/auto-inject.d.ts +36 -0
  178. package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
  179. package/dist/mcp/tools/auto-inject.js +143 -0
  180. package/dist/mcp/tools/auto-inject.js.map +1 -0
  181. package/dist/mcp/tools/auto-unload.d.ts +29 -0
  182. package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
  183. package/dist/mcp/tools/auto-unload.js +151 -0
  184. package/dist/mcp/tools/auto-unload.js.map +1 -0
  185. package/dist/mcp/tools/context-repl.d.ts +48 -0
  186. package/dist/mcp/tools/context-repl.d.ts.map +1 -0
  187. package/dist/mcp/tools/context-repl.js +290 -0
  188. package/dist/mcp/tools/context-repl.js.map +1 -0
  189. package/dist/mcp/tools/environment.d.ts +27 -0
  190. package/dist/mcp/tools/environment.d.ts.map +1 -0
  191. package/dist/mcp/tools/environment.js +97 -0
  192. package/dist/mcp/tools/environment.js.map +1 -0
  193. package/dist/mcp/tools/feedback.d.ts +63 -0
  194. package/dist/mcp/tools/feedback.d.ts.map +1 -0
  195. package/dist/mcp/tools/feedback.js +255 -0
  196. package/dist/mcp/tools/feedback.js.map +1 -0
  197. package/dist/mcp/tools/health.d.ts +29 -0
  198. package/dist/mcp/tools/health.d.ts.map +1 -0
  199. package/dist/mcp/tools/health.js +171 -0
  200. package/dist/mcp/tools/health.js.map +1 -0
  201. package/dist/mcp/tools/index.d.ts +9 -2
  202. package/dist/mcp/tools/index.d.ts.map +1 -1
  203. package/dist/mcp/tools/index.js +37 -2
  204. package/dist/mcp/tools/index.js.map +1 -1
  205. package/dist/mcp/tools/output-persistence.d.ts +44 -0
  206. package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
  207. package/dist/mcp/tools/output-persistence.js +208 -0
  208. package/dist/mcp/tools/output-persistence.js.map +1 -0
  209. package/dist/mcp-server.d.ts +2 -1
  210. package/dist/mcp-server.d.ts.map +1 -1
  211. package/dist/mcp-server.js +36 -7
  212. package/dist/mcp-server.js.map +1 -1
  213. package/dist/rules/index.js +2 -2
  214. package/dist/utils/exec.js +2 -2
  215. package/dist/utils/exec.js.map +1 -1
  216. package/dist/utils/gitignore.d.ts.map +1 -1
  217. package/dist/utils/gitignore.js +5 -0
  218. package/dist/utils/gitignore.js.map +1 -1
  219. package/package.json +76 -77
  220. package/dist/hud/config-tui.d.ts +0 -25
  221. package/dist/hud/config-tui.d.ts.map +0 -1
  222. package/dist/hud/config-tui.js +0 -199
  223. package/dist/hud/config-tui.js.map +0 -1
  224. package/dist/hud/models.d.ts +0 -58
  225. package/dist/hud/models.d.ts.map +0 -1
  226. package/dist/hud/models.js +0 -124
  227. package/dist/hud/models.js.map +0 -1
  228. package/dist/hud/token-estimator.d.ts +0 -79
  229. package/dist/hud/token-estimator.d.ts.map +0 -1
  230. package/dist/hud/token-estimator.js +0 -126
  231. package/dist/hud/token-estimator.js.map +0 -1
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Feedback Collector - v14.1.0
3
+ *
4
+ * Structured feedback collection from reviewer findings.
5
+ * Tracks quality trends across iterations and triggers early stopping.
6
+ *
7
+ * @see Continuous feedback loop for iterative improvement
8
+ */
9
+ // =============================================================================
10
+ // Constants
11
+ // =============================================================================
12
+ const DEFAULT_CONFIG = {
13
+ plateauThreshold: 0.02,
14
+ minIterationsForPlateau: 3,
15
+ maxIterations: 10,
16
+ qualityWeights: {
17
+ critical: 25,
18
+ major: 10,
19
+ minor: 3,
20
+ info: 1,
21
+ },
22
+ };
23
+ // =============================================================================
24
+ // Core Functions
25
+ // =============================================================================
26
+ /**
27
+ * Create a new feedback collector state
28
+ */
29
+ export function createFeedbackCollector() {
30
+ return {
31
+ entries: [],
32
+ history: [],
33
+ currentIteration: 0,
34
+ qualityScore: 100,
35
+ status: 'improving',
36
+ };
37
+ }
38
+ /**
39
+ * Collect feedback from review result
40
+ */
41
+ export function collectFeedback(state, review, iteration) {
42
+ // Convert findings to feedback entries
43
+ const newEntries = review.findings.map((finding, idx) => convertFindingToFeedback(finding, iteration, idx));
44
+ // Calculate quality score
45
+ const qualityScore = calculateQualityScore([...state.entries, ...newEntries], iteration);
46
+ // Create history entry
47
+ const historyEntry = createHistoryEntry(newEntries, iteration, qualityScore);
48
+ // Determine status
49
+ const status = determineStatus([...state.history, historyEntry]);
50
+ return {
51
+ entries: [...state.entries, ...newEntries],
52
+ history: [...state.history, historyEntry],
53
+ currentIteration: iteration,
54
+ qualityScore,
55
+ status,
56
+ };
57
+ }
58
+ /**
59
+ * Convert review finding to feedback entry
60
+ */
61
+ function convertFindingToFeedback(finding, iteration, idx) {
62
+ return {
63
+ id: `feedback-${iteration}-${idx}`,
64
+ type: finding.type,
65
+ severity: finding.severity,
66
+ category: finding.category,
67
+ file: finding.file,
68
+ line: finding.line,
69
+ message: finding.message,
70
+ suggestion: finding.suggestion,
71
+ iteration,
72
+ timestamp: new Date(),
73
+ resolved: false,
74
+ };
75
+ }
76
+ /**
77
+ * Calculate quality score (0-100)
78
+ */
79
+ export function calculateQualityScore(entries, iteration, config = DEFAULT_CONFIG) {
80
+ // Filter to current iteration's unresolved issues
81
+ const currentIssues = entries.filter((e) => e.iteration === iteration && !e.resolved && e.type === 'issue');
82
+ // Calculate penalty
83
+ let penalty = 0;
84
+ for (const issue of currentIssues) {
85
+ penalty += config.qualityWeights[issue.severity] || 0;
86
+ }
87
+ // Score is 100 minus penalty, min 0
88
+ return Math.max(0, 100 - penalty);
89
+ }
90
+ /**
91
+ * Create quality history entry
92
+ */
93
+ function createHistoryEntry(entries, iteration, qualityScore) {
94
+ const issues = entries.filter((e) => e.type === 'issue');
95
+ return {
96
+ iteration,
97
+ score: qualityScore,
98
+ issueCount: issues.length,
99
+ criticalCount: issues.filter((e) => e.severity === 'critical').length,
100
+ majorCount: issues.filter((e) => e.severity === 'major').length,
101
+ minorCount: issues.filter((e) => e.severity === 'minor').length,
102
+ timestamp: new Date(),
103
+ };
104
+ }
105
+ /**
106
+ * Determine quality trend status
107
+ */
108
+ function determineStatus(history, config = DEFAULT_CONFIG) {
109
+ if (history.length < 2)
110
+ return 'improving';
111
+ const recent = history.slice(-config.minIterationsForPlateau);
112
+ if (recent.length < config.minIterationsForPlateau)
113
+ return 'improving';
114
+ // Check for plateau (scores within threshold)
115
+ const scores = recent.map((h) => h.score);
116
+ const maxScore = Math.max(...scores);
117
+ const minScore = Math.min(...scores);
118
+ const range = (maxScore - minScore) / 100;
119
+ if (range <= config.plateauThreshold) {
120
+ return 'plateau';
121
+ }
122
+ // Check trend direction
123
+ const firstHalf = scores.slice(0, Math.floor(scores.length / 2));
124
+ const secondHalf = scores.slice(Math.floor(scores.length / 2));
125
+ const firstAvg = firstHalf.reduce((a, b) => a + b, 0) / firstHalf.length;
126
+ const secondAvg = secondHalf.reduce((a, b) => a + b, 0) / secondHalf.length;
127
+ return secondAvg >= firstAvg ? 'improving' : 'degrading';
128
+ }
129
+ // =============================================================================
130
+ // Early Stopping
131
+ // =============================================================================
132
+ /**
133
+ * Check if early stopping should be triggered
134
+ */
135
+ export function checkEarlyStopping(state, config = DEFAULT_CONFIG) {
136
+ // Check max iterations
137
+ if (state.currentIteration >= config.maxIterations) {
138
+ return {
139
+ shouldStop: true,
140
+ reason: `Reached maximum iterations (${config.maxIterations})`,
141
+ qualityScore: state.qualityScore,
142
+ trend: state.status,
143
+ recommendation: 'Review findings manually and decide next steps',
144
+ };
145
+ }
146
+ // Check plateau
147
+ if (state.status === 'plateau' && state.history.length >= config.minIterationsForPlateau) {
148
+ return {
149
+ shouldStop: true,
150
+ reason: `Quality plateau detected (<${config.plateauThreshold * 100}% improvement)`,
151
+ qualityScore: state.qualityScore,
152
+ trend: 'plateau',
153
+ recommendation: 'Further iterations unlikely to improve quality significantly',
154
+ };
155
+ }
156
+ // Check for perfect score
157
+ if (state.qualityScore >= 100) {
158
+ return {
159
+ shouldStop: true,
160
+ reason: 'Perfect quality score achieved',
161
+ qualityScore: state.qualityScore,
162
+ trend: 'improving',
163
+ recommendation: 'No issues found - ready to proceed',
164
+ };
165
+ }
166
+ // Check degrading trend
167
+ if (state.status === 'degrading' && state.history.length >= 3) {
168
+ return {
169
+ shouldStop: true,
170
+ reason: 'Quality degrading - iterations making things worse',
171
+ qualityScore: state.qualityScore,
172
+ trend: 'degrading',
173
+ recommendation: 'Consider reverting recent changes or changing approach',
174
+ };
175
+ }
176
+ return {
177
+ shouldStop: false,
178
+ reason: 'Quality still improving',
179
+ qualityScore: state.qualityScore,
180
+ trend: state.status,
181
+ recommendation: 'Continue iterations',
182
+ };
183
+ }
184
+ // =============================================================================
185
+ // Learnings Extraction
186
+ // =============================================================================
187
+ /**
188
+ * Extract learnings from feedback for next iteration
189
+ */
190
+ export function extractLearnings(state) {
191
+ const learnings = [];
192
+ // Get unresolved issues from current iteration
193
+ const currentIssues = state.entries.filter((e) => e.iteration === state.currentIteration &&
194
+ !e.resolved &&
195
+ e.type === 'issue' &&
196
+ e.severity !== 'info');
197
+ for (const issue of currentIssues) {
198
+ learnings.push(`[${issue.severity}] ${issue.file}: ${issue.message}`);
199
+ if (issue.suggestion) {
200
+ learnings.push(` Fix: ${issue.suggestion}`);
201
+ }
202
+ }
203
+ // Add quality trend context
204
+ if (state.history.length >= 2) {
205
+ const lastTwo = state.history.slice(-2);
206
+ const improvement = lastTwo[1].score - lastTwo[0].score;
207
+ if (improvement > 0) {
208
+ learnings.push(`Quality improved by ${improvement.toFixed(1)} points`);
209
+ }
210
+ else if (improvement < 0) {
211
+ learnings.push(`Quality decreased by ${Math.abs(improvement).toFixed(1)} points`);
212
+ }
213
+ }
214
+ return learnings;
215
+ }
216
+ /**
217
+ * Mark feedback as resolved
218
+ */
219
+ export function resolveFeedback(state, feedbackId) {
220
+ const entries = state.entries.map((e) => e.id === feedbackId ? { ...e, resolved: true } : e);
221
+ return {
222
+ ...state,
223
+ entries,
224
+ };
225
+ }
226
+ /**
227
+ * Mark all feedback in iteration as resolved
228
+ */
229
+ export function resolveIteration(state, iteration) {
230
+ const entries = state.entries.map((e) => e.iteration === iteration ? { ...e, resolved: true } : e);
231
+ return {
232
+ ...state,
233
+ entries,
234
+ };
235
+ }
236
+ // =============================================================================
237
+ // Formatting
238
+ // =============================================================================
239
+ /**
240
+ * Format feedback collector state for display
241
+ */
242
+ export function formatFeedbackState(state) {
243
+ const lines = [];
244
+ lines.push('## Feedback Summary');
245
+ lines.push('');
246
+ lines.push(`**Iteration:** ${state.currentIteration}`);
247
+ lines.push(`**Quality Score:** ${state.qualityScore}/100`);
248
+ lines.push(`**Trend:** ${formatTrend(state.status)}`);
249
+ lines.push('');
250
+ // Current issues
251
+ const currentIssues = state.entries.filter((e) => e.iteration === state.currentIteration && !e.resolved);
252
+ if (currentIssues.length > 0) {
253
+ lines.push('### Current Issues');
254
+ for (const issue of currentIssues) {
255
+ const emoji = getSeverityEmoji(issue.severity);
256
+ lines.push(`- ${emoji} **[${issue.severity}]** \`${issue.file}\`: ${issue.message}`);
257
+ }
258
+ lines.push('');
259
+ }
260
+ // History
261
+ if (state.history.length > 0) {
262
+ lines.push('### Quality History');
263
+ for (const entry of state.history.slice(-5)) {
264
+ lines.push(`- Iteration ${entry.iteration}: ${entry.score}/100 (${entry.issueCount} issues)`);
265
+ }
266
+ lines.push('');
267
+ }
268
+ return lines.join('\n');
269
+ }
270
+ /**
271
+ * Format trend for display
272
+ */
273
+ function formatTrend(status) {
274
+ switch (status) {
275
+ case 'improving':
276
+ return '📈 Improving';
277
+ case 'plateau':
278
+ return '📊 Plateau';
279
+ case 'degrading':
280
+ return '📉 Degrading';
281
+ }
282
+ }
283
+ /**
284
+ * Get emoji for severity
285
+ */
286
+ function getSeverityEmoji(severity) {
287
+ switch (severity) {
288
+ case 'critical':
289
+ return '🔴';
290
+ case 'major':
291
+ return '🟠';
292
+ case 'minor':
293
+ return '🟡';
294
+ case 'info':
295
+ return '🔵';
296
+ }
297
+ }
298
+ /**
299
+ * Format early stopping result
300
+ */
301
+ export function formatEarlyStoppingResult(result) {
302
+ const lines = [];
303
+ const emoji = result.shouldStop ? '🛑' : '✅';
304
+ lines.push(`## Early Stopping Check`);
305
+ lines.push('');
306
+ lines.push(`**Decision:** ${emoji} ${result.shouldStop ? 'STOP' : 'CONTINUE'}`);
307
+ lines.push(`**Reason:** ${result.reason}`);
308
+ lines.push(`**Quality:** ${result.qualityScore}/100`);
309
+ lines.push(`**Trend:** ${formatTrend(result.trend)}`);
310
+ lines.push(`**Recommendation:** ${result.recommendation}`);
311
+ return lines.join('\n');
312
+ }
313
+ //# sourceMappingURL=feedback-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-collector.js","sourceRoot":"","sources":["../../../src/core/agents/feedback-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Parallel Reviewer - v14.1.0
3
+ *
4
+ * Runs multiple reviewer aspects in parallel (style, security, tests).
5
+ * Merges results into unified review summary.
6
+ *
7
+ * @see Parallel review for comprehensive code analysis
8
+ */
9
+ import type { FileChange, ReviewFinding, ReviewResult } from './reviewer-loop.js';
10
+ /**
11
+ * Review aspect type
12
+ */
13
+ export type ReviewAspect = 'style' | 'security' | 'tests';
14
+ /**
15
+ * Configuration for a single review aspect
16
+ */
17
+ export interface AspectConfig {
18
+ aspect: ReviewAspect;
19
+ enabled: boolean;
20
+ budgetPercent: number;
21
+ maxTokens: number;
22
+ }
23
+ /**
24
+ * Result from a single aspect review
25
+ */
26
+ export interface AspectReviewResult {
27
+ aspect: ReviewAspect;
28
+ findings: ReviewFinding[];
29
+ score: number;
30
+ tokensUsed: number;
31
+ duration: number;
32
+ error?: string;
33
+ }
34
+ /**
35
+ * Merged review result from all aspects
36
+ */
37
+ export interface MergedReviewResult {
38
+ verdict: ReviewResult['verdict'];
39
+ approved: boolean;
40
+ blocking: boolean;
41
+ aspects: AspectReviewResult[];
42
+ findings: ReviewFinding[];
43
+ summary: string;
44
+ totalTokens: number;
45
+ totalDuration: number;
46
+ }
47
+ /**
48
+ * Parallel reviewer configuration
49
+ */
50
+ export interface ParallelReviewerConfig {
51
+ enabled: boolean;
52
+ aspects: AspectConfig[];
53
+ maxConcurrency: number;
54
+ timeoutMs: number;
55
+ failFast: boolean;
56
+ }
57
+ /**
58
+ * Check if parallel review is enabled
59
+ */
60
+ export declare function isParallelReviewEnabled(config?: ParallelReviewerConfig): boolean;
61
+ /**
62
+ * Run parallel reviews across all aspects
63
+ *
64
+ * This is the main entry point for parallel review.
65
+ * Returns merged result from all aspects.
66
+ */
67
+ export declare function parallelReview(changes: FileChange[], config?: ParallelReviewerConfig): Promise<MergedReviewResult>;
68
+ /**
69
+ * Review a single aspect
70
+ */
71
+ export declare function reviewAspect(changes: FileChange[], aspectConfig: AspectConfig, config: ParallelReviewerConfig): Promise<AspectReviewResult>;
72
+ /**
73
+ * Build prompt for aspect review
74
+ */
75
+ export declare function buildAspectPrompt(changes: FileChange[], aspectConfig: AspectConfig): string;
76
+ /**
77
+ * Merge results from all aspects
78
+ */
79
+ export declare function mergeReviewResults(results: AspectReviewResult[], totalDuration: number): MergedReviewResult;
80
+ /**
81
+ * Format merged result for display
82
+ */
83
+ export declare function formatMergedResult(result: MergedReviewResult): string;
84
+ /**
85
+ * Get default aspect configs
86
+ */
87
+ export declare function getDefaultAspectConfigs(): AspectConfig[];
88
+ //# sourceMappingURL=parallel-reviewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-reviewer.d.ts","sourceRoot":"","sources":["../../../src/core/agents/parallel-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+DD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,yBAAiB,GAAG,OAAO,CAExE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,yBAAiB,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAmB7B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA8B7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,YAAY,GACzB,MAAM,CAwCR;AA4LD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,aAAa,EAAE,MAAM,GACpB,kBAAkB,CAsCpB;AA4ED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAwDrE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,EAAE,CAExD"}