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.
- package/README.md +118 -5
- package/dist/commands/hud.d.ts +1 -8
- package/dist/commands/hud.d.ts.map +1 -1
- package/dist/commands/hud.js +4 -18
- package/dist/commands/hud.js.map +1 -1
- package/dist/core/agents/ambiguity-resolver.d.ts +118 -0
- package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -0
- package/dist/core/agents/ambiguity-resolver.js +327 -0
- package/dist/core/agents/ambiguity-resolver.js.map +1 -0
- package/dist/core/agents/confidence-gate.d.ts +99 -0
- package/dist/core/agents/confidence-gate.d.ts.map +1 -0
- package/dist/core/agents/confidence-gate.js +295 -0
- package/dist/core/agents/confidence-gate.js.map +1 -0
- package/dist/core/agents/feedback-collector.d.ts +108 -0
- package/dist/core/agents/feedback-collector.d.ts.map +1 -0
- package/dist/core/agents/feedback-collector.js +313 -0
- package/dist/core/agents/feedback-collector.js.map +1 -0
- package/dist/core/agents/parallel-reviewer.d.ts +88 -0
- package/dist/core/agents/parallel-reviewer.d.ts.map +1 -0
- package/dist/core/agents/parallel-reviewer.js +459 -0
- package/dist/core/agents/parallel-reviewer.js.map +1 -0
- package/dist/core/agents/reviewer-loop.d.ts +102 -0
- package/dist/core/agents/reviewer-loop.d.ts.map +1 -0
- package/dist/core/agents/reviewer-loop.js +373 -0
- package/dist/core/agents/reviewer-loop.js.map +1 -0
- package/dist/core/agents/skill-auditor.d.ts +82 -0
- package/dist/core/agents/skill-auditor.d.ts.map +1 -0
- package/dist/core/agents/skill-auditor.js +278 -0
- package/dist/core/agents/skill-auditor.js.map +1 -0
- package/dist/core/config/feature-flags.d.ts +25 -1
- package/dist/core/config/feature-flags.d.ts.map +1 -1
- package/dist/core/config/feature-flags.js +7 -1
- package/dist/core/config/feature-flags.js.map +1 -1
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
- package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.js +246 -0
- package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
- package/dist/core/context/auto-injection-engine.d.ts +10 -1
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +45 -2
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- package/dist/core/context/budget-thresholds.d.ts +167 -0
- package/dist/core/context/budget-thresholds.d.ts.map +1 -0
- package/dist/core/context/budget-thresholds.js +234 -0
- package/dist/core/context/budget-thresholds.js.map +1 -0
- package/dist/core/context/compaction-engine.d.ts +193 -0
- package/dist/core/context/compaction-engine.d.ts.map +1 -0
- package/dist/core/context/compaction-engine.js +376 -0
- package/dist/core/context/compaction-engine.js.map +1 -0
- package/dist/core/context/context-health.d.ts +27 -2
- package/dist/core/context/context-health.d.ts.map +1 -1
- package/dist/core/context/context-health.js +98 -12
- package/dist/core/context/context-health.js.map +1 -1
- package/dist/core/context/focus-resource-loader.d.ts +143 -0
- package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
- package/dist/core/context/focus-resource-loader.js +305 -0
- package/dist/core/context/focus-resource-loader.js.map +1 -0
- package/dist/core/context/index.d.ts +10 -5
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +40 -5
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/lazy-loader.d.ts +44 -1
- package/dist/core/context/lazy-loader.d.ts.map +1 -1
- package/dist/core/context/lazy-loader.js +59 -1
- package/dist/core/context/lazy-loader.js.map +1 -1
- package/dist/core/context/output-persistence.d.ts +142 -0
- package/dist/core/context/output-persistence.d.ts.map +1 -0
- package/dist/core/context/output-persistence.js +242 -0
- package/dist/core/context/output-persistence.js.map +1 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.d.ts +7 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.d.ts.map +1 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js +335 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -0
- package/dist/core/context-repl/context-window-monitor.d.ts +181 -0
- package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -0
- package/dist/core/context-repl/context-window-monitor.js +309 -0
- package/dist/core/context-repl/context-window-monitor.js.map +1 -0
- package/dist/core/context-repl/index.d.ts +8 -3
- package/dist/core/context-repl/index.d.ts.map +1 -1
- package/dist/core/context-repl/index.js +11 -3
- package/dist/core/context-repl/index.js.map +1 -1
- package/dist/core/context-repl/repl-environment.d.ts +66 -0
- package/dist/core/context-repl/repl-environment.d.ts.map +1 -0
- package/dist/core/context-repl/repl-environment.js +795 -0
- package/dist/core/context-repl/repl-environment.js.map +1 -0
- package/dist/core/context-repl/types.d.ts +277 -1
- package/dist/core/context-repl/types.d.ts.map +1 -1
- package/dist/core/context-repl/types.js +52 -1
- package/dist/core/context-repl/types.js.map +1 -1
- package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
- package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
- package/dist/core/environment/index.d.ts +8 -0
- package/dist/core/environment/index.d.ts.map +1 -0
- package/dist/core/environment/index.js +7 -0
- package/dist/core/environment/index.js.map +1 -0
- package/dist/core/environment/pre-verify.d.ts +63 -0
- package/dist/core/environment/pre-verify.d.ts.map +1 -0
- package/dist/core/environment/pre-verify.js +221 -0
- package/dist/core/environment/pre-verify.js.map +1 -0
- package/dist/core/environment/types.d.ts +37 -0
- package/dist/core/environment/types.d.ts.map +1 -0
- package/dist/core/environment/types.js +5 -0
- package/dist/core/environment/types.js.map +1 -0
- package/dist/core/generator/claude-md.js +1 -1
- package/dist/core/intelligence/context-budget.d.ts +10 -5
- package/dist/core/intelligence/context-budget.d.ts.map +1 -1
- package/dist/core/intelligence/context-budget.js +12 -5
- package/dist/core/intelligence/context-budget.js.map +1 -1
- package/dist/core/provider/storage.d.ts.map +1 -1
- package/dist/core/provider/storage.js +1 -2
- package/dist/core/provider/storage.js.map +1 -1
- package/dist/hooks/post-edit.js +73 -0
- package/dist/hooks/post-edit.js.map +1 -1
- package/dist/hooks/session-start.js +115 -0
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/types.js +1 -1
- package/dist/hooks/user-prompt-submit.js +100 -0
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/hud/config.d.ts +3 -28
- package/dist/hud/config.d.ts.map +1 -1
- package/dist/hud/config.js +8 -60
- package/dist/hud/config.js.map +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +0 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render/budget-bar.d.ts +0 -2
- package/dist/hud/render/budget-bar.d.ts.map +1 -1
- package/dist/hud/render/budget-bar.js +5 -8
- package/dist/hud/render/budget-bar.js.map +1 -1
- package/dist/hud/stdin.d.ts +0 -3
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +2 -29
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +0 -2
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
- package/dist/mcp/dynamic-updates.d.ts +167 -0
- package/dist/mcp/dynamic-updates.d.ts.map +1 -0
- package/dist/mcp/dynamic-updates.js +313 -0
- package/dist/mcp/dynamic-updates.js.map +1 -0
- package/dist/mcp/focus-filter.d.ts +74 -0
- package/dist/mcp/focus-filter.d.ts.map +1 -0
- package/dist/mcp/focus-filter.js +229 -0
- package/dist/mcp/focus-filter.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +4 -4
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +17 -16
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +5 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
- package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/environment.test.js +219 -0
- package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
- package/dist/mcp/tools/auto-inject.d.ts +36 -0
- package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
- package/dist/mcp/tools/auto-inject.js +143 -0
- package/dist/mcp/tools/auto-inject.js.map +1 -0
- package/dist/mcp/tools/auto-unload.d.ts +29 -0
- package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
- package/dist/mcp/tools/auto-unload.js +151 -0
- package/dist/mcp/tools/auto-unload.js.map +1 -0
- package/dist/mcp/tools/context-repl.d.ts +48 -0
- package/dist/mcp/tools/context-repl.d.ts.map +1 -0
- package/dist/mcp/tools/context-repl.js +290 -0
- package/dist/mcp/tools/context-repl.js.map +1 -0
- package/dist/mcp/tools/environment.d.ts +27 -0
- package/dist/mcp/tools/environment.d.ts.map +1 -0
- package/dist/mcp/tools/environment.js +97 -0
- package/dist/mcp/tools/environment.js.map +1 -0
- package/dist/mcp/tools/feedback.d.ts +63 -0
- package/dist/mcp/tools/feedback.d.ts.map +1 -0
- package/dist/mcp/tools/feedback.js +255 -0
- package/dist/mcp/tools/feedback.js.map +1 -0
- package/dist/mcp/tools/health.d.ts +29 -0
- package/dist/mcp/tools/health.d.ts.map +1 -0
- package/dist/mcp/tools/health.js +171 -0
- package/dist/mcp/tools/health.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +9 -2
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +37 -2
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/output-persistence.d.ts +44 -0
- package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
- package/dist/mcp/tools/output-persistence.js +208 -0
- package/dist/mcp/tools/output-persistence.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +36 -7
- package/dist/mcp-server.js.map +1 -1
- package/dist/rules/index.js +2 -2
- package/dist/utils/exec.js +2 -2
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +5 -0
- package/dist/utils/gitignore.js.map +1 -1
- package/package.json +76 -77
- package/dist/hud/config-tui.d.ts +0 -25
- package/dist/hud/config-tui.d.ts.map +0 -1
- package/dist/hud/config-tui.js +0 -199
- package/dist/hud/config-tui.js.map +0 -1
- package/dist/hud/models.d.ts +0 -58
- package/dist/hud/models.d.ts.map +0 -1
- package/dist/hud/models.js +0 -124
- package/dist/hud/models.js.map +0 -1
- package/dist/hud/token-estimator.d.ts +0 -79
- package/dist/hud/token-estimator.d.ts.map +0 -1
- package/dist/hud/token-estimator.js +0 -126
- 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"}
|