dino-spec 14.0.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 (34) hide show
  1. package/README.md +37 -1
  2. package/dist/core/agents/ambiguity-resolver.d.ts +118 -0
  3. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -0
  4. package/dist/core/agents/ambiguity-resolver.js +327 -0
  5. package/dist/core/agents/ambiguity-resolver.js.map +1 -0
  6. package/dist/core/agents/confidence-gate.d.ts +99 -0
  7. package/dist/core/agents/confidence-gate.d.ts.map +1 -0
  8. package/dist/core/agents/confidence-gate.js +295 -0
  9. package/dist/core/agents/confidence-gate.js.map +1 -0
  10. package/dist/core/agents/feedback-collector.d.ts +108 -0
  11. package/dist/core/agents/feedback-collector.d.ts.map +1 -0
  12. package/dist/core/agents/feedback-collector.js +313 -0
  13. package/dist/core/agents/feedback-collector.js.map +1 -0
  14. package/dist/core/agents/parallel-reviewer.d.ts +88 -0
  15. package/dist/core/agents/parallel-reviewer.d.ts.map +1 -0
  16. package/dist/core/agents/parallel-reviewer.js +459 -0
  17. package/dist/core/agents/parallel-reviewer.js.map +1 -0
  18. package/dist/core/agents/reviewer-loop.d.ts +102 -0
  19. package/dist/core/agents/reviewer-loop.d.ts.map +1 -0
  20. package/dist/core/agents/reviewer-loop.js +373 -0
  21. package/dist/core/agents/reviewer-loop.js.map +1 -0
  22. package/dist/core/agents/skill-auditor.d.ts +82 -0
  23. package/dist/core/agents/skill-auditor.d.ts.map +1 -0
  24. package/dist/core/agents/skill-auditor.js +278 -0
  25. package/dist/core/agents/skill-auditor.js.map +1 -0
  26. package/dist/mcp/registry.d.ts +1 -1
  27. package/dist/mcp/registry.d.ts.map +1 -1
  28. package/dist/mcp/registry.js +1 -0
  29. package/dist/mcp/registry.js.map +1 -1
  30. package/dist/mcp/tools/feedback.d.ts +63 -0
  31. package/dist/mcp/tools/feedback.d.ts.map +1 -0
  32. package/dist/mcp/tools/feedback.js +255 -0
  33. package/dist/mcp/tools/feedback.js.map +1 -0
  34. package/package.json +1 -1
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Feedback MCP Tools - v14.1.0
3
+ *
4
+ * MCP tools for collecting and managing reviewer feedback.
5
+ * Tracks quality across iterations and provides early stopping recommendations.
6
+ */
7
+ import { defineTool, registry } from '../registry.js';
8
+ import { createFeedbackCollector, collectFeedback, checkEarlyStopping, extractLearnings, formatFeedbackState, formatEarlyStoppingResult, resolveFeedback, resolveIteration, } from '../../core/agents/feedback-collector.js';
9
+ // =============================================================================
10
+ // State Management
11
+ // =============================================================================
12
+ // In-memory state (per session)
13
+ let collectorState = createFeedbackCollector();
14
+ /**
15
+ * Reset the feedback collector state
16
+ */
17
+ export function resetFeedbackCollector() {
18
+ collectorState = createFeedbackCollector();
19
+ }
20
+ /**
21
+ * Get current collector state (for testing)
22
+ */
23
+ export function getCollectorState() {
24
+ return collectorState;
25
+ }
26
+ /**
27
+ * Collect feedback from a review
28
+ */
29
+ async function handleCollectFeedback(params, _projectDir) {
30
+ const iteration = parseInt(params.iteration, 10);
31
+ if (isNaN(iteration)) {
32
+ return 'Error: iteration must be a number';
33
+ }
34
+ let findings;
35
+ try {
36
+ findings = JSON.parse(params.findings);
37
+ }
38
+ catch {
39
+ return 'Error: findings must be valid JSON';
40
+ }
41
+ // Build mock review result
42
+ const reviewResult = {
43
+ verdict: params.verdict || 'needs-discussion',
44
+ approved: params.verdict === 'approve',
45
+ blocking: params.verdict === 'request-changes',
46
+ findings,
47
+ summary: `Review with ${findings.length} finding(s)`,
48
+ reviewerId: 'manual',
49
+ timestamp: new Date(),
50
+ tokensUsed: 0,
51
+ };
52
+ // Collect feedback
53
+ collectorState = collectFeedback(collectorState, reviewResult, iteration);
54
+ // Check early stopping
55
+ const stopping = checkEarlyStopping(collectorState);
56
+ const lines = [
57
+ formatFeedbackState(collectorState),
58
+ '',
59
+ formatEarlyStoppingResult(stopping),
60
+ ];
61
+ return lines.join('\n');
62
+ }
63
+ export const collectFeedbackTool = defineTool({
64
+ name: 'dino_feedback_collect',
65
+ description: 'Collect feedback from a code review for quality tracking (v14.1.0)',
66
+ category: 'feedback',
67
+ tier: 'verification',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ iteration: {
72
+ type: 'string',
73
+ description: 'Current iteration number',
74
+ },
75
+ findings: {
76
+ type: 'string',
77
+ description: 'Review findings as JSON array: [{type, severity, file, message}]',
78
+ },
79
+ verdict: {
80
+ type: 'string',
81
+ description: 'Review verdict: approve, request-changes, needs-discussion',
82
+ enum: ['approve', 'request-changes', 'needs-discussion'],
83
+ },
84
+ },
85
+ required: ['iteration', 'findings'],
86
+ },
87
+ handler: handleCollectFeedback,
88
+ whenToUse: 'After a code review to track quality metrics and determine if early stopping is needed',
89
+ relatedTools: ['dino_feedback_status', 'dino_feedback_learnings', 'dino_feedback_resolve'],
90
+ version: 'v14.1.0',
91
+ });
92
+ /**
93
+ * View current feedback status
94
+ */
95
+ async function handleFeedbackStatus(params, _projectDir) {
96
+ const showHistory = params.showHistory?.toLowerCase() === 'true';
97
+ const lines = [formatFeedbackState(collectorState)];
98
+ // Check early stopping
99
+ const stopping = checkEarlyStopping(collectorState);
100
+ lines.push('');
101
+ lines.push(formatEarlyStoppingResult(stopping));
102
+ if (showHistory && collectorState.history.length > 0) {
103
+ lines.push('');
104
+ lines.push('### Full History');
105
+ for (const entry of collectorState.history) {
106
+ lines.push(`| ${entry.iteration} | ${entry.score} | ${entry.criticalCount}C/${entry.majorCount}M/${entry.minorCount}m | ${entry.timestamp.toISOString()} |`);
107
+ }
108
+ }
109
+ return lines.join('\n');
110
+ }
111
+ export const feedbackStatusTool = defineTool({
112
+ name: 'dino_feedback_status',
113
+ description: 'View current feedback collector status and quality metrics (v14.1.0)',
114
+ category: 'feedback',
115
+ tier: 'verification',
116
+ inputSchema: {
117
+ type: 'object',
118
+ properties: {
119
+ showHistory: {
120
+ type: 'string',
121
+ description: 'Show full quality history (true/false)',
122
+ },
123
+ },
124
+ },
125
+ handler: handleFeedbackStatus,
126
+ whenToUse: 'To check current quality score, trend, and early stopping status',
127
+ relatedTools: ['dino_feedback_collect', 'dino_feedback_learnings', 'dino_feedback_reset'],
128
+ version: 'v14.1.0',
129
+ });
130
+ /**
131
+ * Extract learnings from collected feedback
132
+ */
133
+ async function handleFeedbackLearnings(params, _projectDir) {
134
+ const limit = params.limit ? parseInt(params.limit, 10) : 10;
135
+ const learnings = extractLearnings(collectorState);
136
+ const limited = learnings.slice(0, limit);
137
+ if (limited.length === 0) {
138
+ return 'No learnings to extract from current feedback.';
139
+ }
140
+ const lines = [
141
+ '## Learnings for Next Iteration',
142
+ '',
143
+ `Extracted from iteration ${collectorState.currentIteration}:`,
144
+ '',
145
+ ];
146
+ for (const learning of limited) {
147
+ lines.push(`- ${learning}`);
148
+ }
149
+ if (learnings.length > limit) {
150
+ lines.push('');
151
+ lines.push(`_...and ${learnings.length - limit} more_`);
152
+ }
153
+ return lines.join('\n');
154
+ }
155
+ export const feedbackLearningsTool = defineTool({
156
+ name: 'dino_feedback_learnings',
157
+ description: 'Extract learnings from feedback for the next iteration (v14.1.0)',
158
+ category: 'feedback',
159
+ tier: 'verification',
160
+ inputSchema: {
161
+ type: 'object',
162
+ properties: {
163
+ limit: {
164
+ type: 'string',
165
+ description: 'Maximum number of learnings to return (default: 10)',
166
+ },
167
+ },
168
+ },
169
+ handler: handleFeedbackLearnings,
170
+ whenToUse: 'Before starting a new iteration to inject learnings from previous reviews',
171
+ relatedTools: ['dino_feedback_collect', 'dino_feedback_status', 'dino_feedback_resolve'],
172
+ version: 'v14.1.0',
173
+ });
174
+ /**
175
+ * Mark feedback as resolved
176
+ */
177
+ async function handleFeedbackResolve(params, _projectDir) {
178
+ const { feedbackId } = params;
179
+ if (feedbackId.toLowerCase() === 'all') {
180
+ collectorState = resolveIteration(collectorState, collectorState.currentIteration);
181
+ return `Resolved all feedback for iteration ${collectorState.currentIteration}`;
182
+ }
183
+ const entry = collectorState.entries.find((e) => e.id === feedbackId);
184
+ if (!entry) {
185
+ return `Feedback not found: ${feedbackId}`;
186
+ }
187
+ collectorState = resolveFeedback(collectorState, feedbackId);
188
+ return `Resolved feedback: ${feedbackId}`;
189
+ }
190
+ export const feedbackResolveTool = defineTool({
191
+ name: 'dino_feedback_resolve',
192
+ description: 'Mark feedback as resolved (v14.1.0)',
193
+ category: 'feedback',
194
+ tier: 'verification',
195
+ inputSchema: {
196
+ type: 'object',
197
+ properties: {
198
+ feedbackId: {
199
+ type: 'string',
200
+ description: 'Feedback ID to resolve, or "all" for current iteration',
201
+ },
202
+ },
203
+ required: ['feedbackId'],
204
+ },
205
+ handler: handleFeedbackResolve,
206
+ whenToUse: 'After addressing feedback issues to mark them as resolved',
207
+ relatedTools: ['dino_feedback_collect', 'dino_feedback_status', 'dino_feedback_learnings'],
208
+ version: 'v14.1.0',
209
+ });
210
+ // =============================================================================
211
+ // Reset Tool
212
+ // =============================================================================
213
+ /**
214
+ * Reset feedback collector
215
+ */
216
+ async function handleFeedbackReset(_params, _projectDir) {
217
+ resetFeedbackCollector();
218
+ return 'Feedback collector reset. Quality history cleared.';
219
+ }
220
+ export const feedbackResetTool = defineTool({
221
+ name: 'dino_feedback_reset',
222
+ description: 'Reset feedback collector state (v14.1.0)',
223
+ category: 'feedback',
224
+ tier: 'verification',
225
+ inputSchema: {
226
+ type: 'object',
227
+ properties: {},
228
+ },
229
+ handler: handleFeedbackReset,
230
+ whenToUse: 'To start fresh with a new feedback collection session',
231
+ relatedTools: ['dino_feedback_collect', 'dino_feedback_status'],
232
+ version: 'v14.1.0',
233
+ });
234
+ // =============================================================================
235
+ // Exports
236
+ // =============================================================================
237
+ /**
238
+ * All feedback tools
239
+ */
240
+ export const feedbackTools = [
241
+ collectFeedbackTool,
242
+ feedbackStatusTool,
243
+ feedbackLearningsTool,
244
+ feedbackResolveTool,
245
+ feedbackResetTool,
246
+ ];
247
+ /**
248
+ * Register feedback tools with the registry
249
+ */
250
+ export function registerFeedbackTools() {
251
+ for (const tool of feedbackTools) {
252
+ registry.registerTool(tool);
253
+ }
254
+ }
255
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/mcp/tools/feedback.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dino-spec",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "description": "Automatic context engineering for Claude Code",
5
5
  "type": "module",
6
6
  "exports": {