@monoes/monomindcli 1.15.4 → 1.15.5
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/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +7 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/causal-infer.js +347 -0
- package/dist/src/mcp-tools/coherence/causal-infer.js.map +1 -0
- package/dist/src/mcp-tools/coherence/coherence-check.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/coherence-check.js +206 -0
- package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.js +303 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.js.map +1 -0
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/memory-gate.js +266 -0
- package/dist/src/mcp-tools/coherence/memory-gate.js.map +1 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.js +406 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.js.map +1 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.js +293 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.js.map +1 -0
- package/dist/src/mcp-tools/coherence/types.d.ts +277 -0
- package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/types.js +159 -0
- package/dist/src/mcp-tools/coherence/types.js.map +1 -0
- package/dist/src/mcp-tools/coherence-tools.d.ts +9 -0
- package/dist/src/mcp-tools/coherence-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence-tools.js +25 -0
- package/dist/src/mcp-tools/coherence-tools.js.map +1 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts +163 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js +414 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts +128 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js +375 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +161 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +423 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts +165 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js +395 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts +165 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js +508 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts +147 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js +391 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts +147 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js +422 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts +185 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js +437 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts +166 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js +410 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts +201 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js +363 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts +166 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js +394 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +129 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +383 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts +171 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.js +476 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts +147 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.js +400 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts +145 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js +328 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts +126 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js +348 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js.map +1 -0
- package/dist/src/mcp-tools/quality-tools.d.ts +9 -0
- package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality-tools.js +308 -0
- package/dist/src/mcp-tools/quality-tools.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* analyze-root-cause.ts - Root cause analysis MCP tool handler
|
|
3
|
+
*
|
|
4
|
+
* Performs deep root cause analysis for defects using causal chain
|
|
5
|
+
* analysis, historical pattern matching, and contributing factor identification.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
// Input schema for analyze-root-cause tool
|
|
9
|
+
export const AnalyzeRootCauseInputSchema = z.object({
|
|
10
|
+
defect: z
|
|
11
|
+
.object({
|
|
12
|
+
id: z.string().optional().describe('Defect ID'),
|
|
13
|
+
description: z.string().describe('Description of the defect'),
|
|
14
|
+
location: z
|
|
15
|
+
.object({
|
|
16
|
+
file: z.string(),
|
|
17
|
+
line: z.number().optional(),
|
|
18
|
+
function: z.string().optional(),
|
|
19
|
+
})
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Location of the defect'),
|
|
22
|
+
category: z.string().optional().describe('Defect category'),
|
|
23
|
+
stackTrace: z.string().optional().describe('Stack trace if available'),
|
|
24
|
+
})
|
|
25
|
+
.describe('Defect information'),
|
|
26
|
+
analysisDepth: z
|
|
27
|
+
.enum(['immediate', 'standard', 'deep'])
|
|
28
|
+
.default('standard')
|
|
29
|
+
.describe('Depth of analysis'),
|
|
30
|
+
includeHistorical: z.boolean().default(true).describe('Include historical pattern analysis'),
|
|
31
|
+
includeRemediation: z.boolean().default(true).describe('Include remediation recommendations'),
|
|
32
|
+
maxContributingFactors: z.number().min(1).max(20).default(5).describe('Maximum factors to identify'),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* MCP Tool Handler for analyze-root-cause
|
|
36
|
+
*/
|
|
37
|
+
export async function handler(input, context) {
|
|
38
|
+
const startTime = Date.now();
|
|
39
|
+
try {
|
|
40
|
+
// Validate input
|
|
41
|
+
const validatedInput = AnalyzeRootCauseInputSchema.parse(input);
|
|
42
|
+
// Get memory bridge for historical analysis
|
|
43
|
+
const bridge = context.get('aqe.bridge');
|
|
44
|
+
// Perform causal chain analysis
|
|
45
|
+
const causalChain = buildCausalChain(validatedInput.defect, validatedInput.analysisDepth);
|
|
46
|
+
// Identify root cause
|
|
47
|
+
const rootCause = identifyRootCause(causalChain, validatedInput.defect);
|
|
48
|
+
// Find contributing factors
|
|
49
|
+
const contributingFactors = identifyContributingFactors(validatedInput.defect, validatedInput.maxContributingFactors);
|
|
50
|
+
// Historical analysis
|
|
51
|
+
const historicalAnalysis = validatedInput.includeHistorical
|
|
52
|
+
? await performHistoricalAnalysis(validatedInput.defect, bridge)
|
|
53
|
+
: null;
|
|
54
|
+
// Generate remediation plan
|
|
55
|
+
const remediation = validatedInput.includeRemediation
|
|
56
|
+
? generateRemediationPlan(rootCause, contributingFactors)
|
|
57
|
+
: null;
|
|
58
|
+
// Generate prevention measures
|
|
59
|
+
const preventionMeasures = generatePreventionMeasures(rootCause, contributingFactors);
|
|
60
|
+
// Calculate overall confidence
|
|
61
|
+
const overallConfidence = calculateOverallConfidence(rootCause.confidence, causalChain.map((c) => c.confidence));
|
|
62
|
+
// Build result
|
|
63
|
+
const result = {
|
|
64
|
+
success: true,
|
|
65
|
+
rootCause,
|
|
66
|
+
causalChain,
|
|
67
|
+
contributingFactors,
|
|
68
|
+
historicalAnalysis,
|
|
69
|
+
remediation,
|
|
70
|
+
preventionMeasures,
|
|
71
|
+
metadata: {
|
|
72
|
+
analyzedAt: new Date().toISOString(),
|
|
73
|
+
durationMs: Date.now() - startTime,
|
|
74
|
+
analysisDepth: validatedInput.analysisDepth,
|
|
75
|
+
confidenceScore: overallConfidence,
|
|
76
|
+
methodsUsed: [
|
|
77
|
+
'causal-chain-analysis',
|
|
78
|
+
'pattern-matching',
|
|
79
|
+
validatedInput.includeHistorical ? 'historical-analysis' : '',
|
|
80
|
+
'five-whys',
|
|
81
|
+
].filter(Boolean),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: 'text',
|
|
88
|
+
text: JSON.stringify(result, null, 2),
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
95
|
+
return {
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
98
|
+
type: 'text',
|
|
99
|
+
text: JSON.stringify({
|
|
100
|
+
success: false,
|
|
101
|
+
error: errorMessage,
|
|
102
|
+
metadata: {
|
|
103
|
+
analyzedAt: new Date().toISOString(),
|
|
104
|
+
durationMs: Date.now() - startTime,
|
|
105
|
+
},
|
|
106
|
+
}, null, 2),
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function buildCausalChain(defect, depth) {
|
|
113
|
+
const chain = [];
|
|
114
|
+
// Level 0: Symptom
|
|
115
|
+
chain.push({
|
|
116
|
+
level: 0,
|
|
117
|
+
description: defect.description,
|
|
118
|
+
type: 'symptom',
|
|
119
|
+
evidence: 'Observed behavior reported in defect',
|
|
120
|
+
confidence: 1.0,
|
|
121
|
+
});
|
|
122
|
+
// Level 1: Proximate cause
|
|
123
|
+
const proximateCause = inferProximateCause(defect);
|
|
124
|
+
chain.push({
|
|
125
|
+
level: 1,
|
|
126
|
+
description: proximateCause.description,
|
|
127
|
+
type: 'proximate',
|
|
128
|
+
evidence: proximateCause.evidence,
|
|
129
|
+
confidence: 0.9,
|
|
130
|
+
});
|
|
131
|
+
// Level 2: Intermediate causes (for standard and deep analysis)
|
|
132
|
+
if (depth === 'standard' || depth === 'deep') {
|
|
133
|
+
const intermediateCauses = inferIntermediateCauses(defect, proximateCause);
|
|
134
|
+
for (const cause of intermediateCauses) {
|
|
135
|
+
chain.push({
|
|
136
|
+
level: 2,
|
|
137
|
+
description: cause.description,
|
|
138
|
+
type: 'intermediate',
|
|
139
|
+
evidence: cause.evidence,
|
|
140
|
+
confidence: cause.confidence,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Level 3: Root cause (for deep analysis)
|
|
145
|
+
if (depth === 'deep') {
|
|
146
|
+
const rootCause = inferDeepRootCause(defect, chain);
|
|
147
|
+
chain.push({
|
|
148
|
+
level: 3,
|
|
149
|
+
description: rootCause.description,
|
|
150
|
+
type: 'root',
|
|
151
|
+
evidence: rootCause.evidence,
|
|
152
|
+
confidence: rootCause.confidence,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return chain;
|
|
156
|
+
}
|
|
157
|
+
function inferProximateCause(defect) {
|
|
158
|
+
// Analyze defect description to infer proximate cause
|
|
159
|
+
const descLower = defect.description.toLowerCase();
|
|
160
|
+
if (descLower.includes('null') || descLower.includes('undefined')) {
|
|
161
|
+
return {
|
|
162
|
+
description: 'Null or undefined value accessed without validation',
|
|
163
|
+
evidence: 'Error message indicates null/undefined access',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (descLower.includes('timeout') || descLower.includes('slow')) {
|
|
167
|
+
return {
|
|
168
|
+
description: 'Operation exceeded expected time limit',
|
|
169
|
+
evidence: 'Performance metrics or timeout logs',
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
if (descLower.includes('memory') || descLower.includes('leak')) {
|
|
173
|
+
return {
|
|
174
|
+
description: 'Memory resource not properly released',
|
|
175
|
+
evidence: 'Memory profiling data',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
if (descLower.includes('permission') || descLower.includes('denied')) {
|
|
179
|
+
return {
|
|
180
|
+
description: 'Insufficient permissions for requested operation',
|
|
181
|
+
evidence: 'Access control logs',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
description: 'Code path executed with unexpected state',
|
|
186
|
+
evidence: 'Stack trace and runtime state',
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function inferIntermediateCauses(defect, proximate) {
|
|
190
|
+
const causes = [];
|
|
191
|
+
// Infer based on proximate cause
|
|
192
|
+
if (proximate.description.includes('Null')) {
|
|
193
|
+
causes.push({
|
|
194
|
+
description: 'Input validation missing at API boundary',
|
|
195
|
+
evidence: 'Code review of input handling',
|
|
196
|
+
confidence: 0.85,
|
|
197
|
+
});
|
|
198
|
+
causes.push({
|
|
199
|
+
description: 'Optional value handling not implemented consistently',
|
|
200
|
+
evidence: 'Static analysis of null checks',
|
|
201
|
+
confidence: 0.75,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
else if (proximate.description.includes('time')) {
|
|
205
|
+
causes.push({
|
|
206
|
+
description: 'Database query not optimized for data volume',
|
|
207
|
+
evidence: 'Query execution plan analysis',
|
|
208
|
+
confidence: 0.80,
|
|
209
|
+
});
|
|
210
|
+
causes.push({
|
|
211
|
+
description: 'Missing index on frequently queried column',
|
|
212
|
+
evidence: 'Database schema review',
|
|
213
|
+
confidence: 0.70,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
causes.push({
|
|
218
|
+
description: 'Error handling not comprehensive',
|
|
219
|
+
evidence: 'Code coverage of error paths',
|
|
220
|
+
confidence: 0.75,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
return causes;
|
|
224
|
+
}
|
|
225
|
+
function inferDeepRootCause(defect, chain) {
|
|
226
|
+
// Look at the chain to infer deeper root cause
|
|
227
|
+
const hasValidationIssue = chain.some((c) => c.description.toLowerCase().includes('validation'));
|
|
228
|
+
const hasPerformanceIssue = chain.some((c) => c.description.toLowerCase().includes('time') || c.description.toLowerCase().includes('slow'));
|
|
229
|
+
if (hasValidationIssue) {
|
|
230
|
+
return {
|
|
231
|
+
description: 'Defensive programming practices not followed - missing input validation strategy',
|
|
232
|
+
evidence: 'Code review patterns, lack of validation middleware',
|
|
233
|
+
confidence: 0.70,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
if (hasPerformanceIssue) {
|
|
237
|
+
return {
|
|
238
|
+
description: 'Performance requirements not defined or tested during development',
|
|
239
|
+
evidence: 'Missing performance tests, no SLO definitions',
|
|
240
|
+
confidence: 0.65,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
description: 'Insufficient code review and testing coverage for edge cases',
|
|
245
|
+
evidence: 'Coverage reports, code review history',
|
|
246
|
+
confidence: 0.60,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function identifyRootCause(chain, defect) {
|
|
250
|
+
// Find the deepest link in the chain
|
|
251
|
+
const rootLink = chain.reduce((deepest, current) => current.level > deepest.level ? current : deepest);
|
|
252
|
+
// Determine root cause type
|
|
253
|
+
const type = determineRootCauseType(rootLink.description);
|
|
254
|
+
const category = defect.category || inferCategory(defect.description);
|
|
255
|
+
return {
|
|
256
|
+
id: `rc-${Date.now()}`,
|
|
257
|
+
type,
|
|
258
|
+
category,
|
|
259
|
+
description: rootLink.description,
|
|
260
|
+
confidence: rootLink.confidence,
|
|
261
|
+
evidence: [rootLink.evidence, ...chain.slice(0, -1).map((c) => c.evidence)],
|
|
262
|
+
technicalDetails: {
|
|
263
|
+
codePattern: inferCodePattern(defect),
|
|
264
|
+
antiPattern: inferAntiPattern(rootLink.description),
|
|
265
|
+
affectedComponents: defect.location ? [defect.location.file] : ['unknown'],
|
|
266
|
+
dataFlow: 'Input -> Processing -> Output (failure point identified)',
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
function determineRootCauseType(description) {
|
|
271
|
+
const descLower = description.toLowerCase();
|
|
272
|
+
if (descLower.includes('requirements') || descLower.includes('defined')) {
|
|
273
|
+
return 'process';
|
|
274
|
+
}
|
|
275
|
+
if (descLower.includes('architecture') || descLower.includes('design')) {
|
|
276
|
+
return 'design';
|
|
277
|
+
}
|
|
278
|
+
if (descLower.includes('environment') || descLower.includes('config')) {
|
|
279
|
+
return 'environment';
|
|
280
|
+
}
|
|
281
|
+
if (descLower.includes('training') || descLower.includes('review')) {
|
|
282
|
+
return 'human';
|
|
283
|
+
}
|
|
284
|
+
return 'code';
|
|
285
|
+
}
|
|
286
|
+
function inferCategory(description) {
|
|
287
|
+
const descLower = description.toLowerCase();
|
|
288
|
+
if (descLower.includes('null') || descLower.includes('undefined'))
|
|
289
|
+
return 'null-safety';
|
|
290
|
+
if (descLower.includes('performance') || descLower.includes('slow'))
|
|
291
|
+
return 'performance';
|
|
292
|
+
if (descLower.includes('security') || descLower.includes('permission'))
|
|
293
|
+
return 'security';
|
|
294
|
+
if (descLower.includes('memory') || descLower.includes('leak'))
|
|
295
|
+
return 'resource-management';
|
|
296
|
+
return 'logic-error';
|
|
297
|
+
}
|
|
298
|
+
function inferCodePattern(defect) {
|
|
299
|
+
const descLower = defect.description.toLowerCase();
|
|
300
|
+
if (descLower.includes('null'))
|
|
301
|
+
return 'Nullable type access without guard';
|
|
302
|
+
if (descLower.includes('async') || descLower.includes('promise'))
|
|
303
|
+
return 'Unhandled async operation';
|
|
304
|
+
if (descLower.includes('loop') || descLower.includes('iteration'))
|
|
305
|
+
return 'Loop invariant violation';
|
|
306
|
+
return 'Exception flow not handled';
|
|
307
|
+
}
|
|
308
|
+
function inferAntiPattern(description) {
|
|
309
|
+
const descLower = description.toLowerCase();
|
|
310
|
+
if (descLower.includes('validation'))
|
|
311
|
+
return 'Missing input validation (Garbage In, Garbage Out)';
|
|
312
|
+
if (descLower.includes('error handling'))
|
|
313
|
+
return 'Swallowed exceptions (Empty Catch)';
|
|
314
|
+
if (descLower.includes('performance'))
|
|
315
|
+
return 'Premature optimization or N+1 query';
|
|
316
|
+
return 'God Object or Feature Envy';
|
|
317
|
+
}
|
|
318
|
+
function identifyContributingFactors(defect, maxFactors) {
|
|
319
|
+
const allFactors = [
|
|
320
|
+
{
|
|
321
|
+
id: 'cf-1',
|
|
322
|
+
category: 'technical',
|
|
323
|
+
description: 'Insufficient test coverage for edge cases',
|
|
324
|
+
severity: 'major',
|
|
325
|
+
evidence: 'Coverage report shows 45% branch coverage',
|
|
326
|
+
addressable: true,
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
id: 'cf-2',
|
|
330
|
+
category: 'process',
|
|
331
|
+
description: 'Code review did not catch the defect',
|
|
332
|
+
severity: 'moderate',
|
|
333
|
+
evidence: 'PR was approved without addressing this path',
|
|
334
|
+
addressable: true,
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
id: 'cf-3',
|
|
338
|
+
category: 'technical',
|
|
339
|
+
description: 'Static analysis rules not configured for this pattern',
|
|
340
|
+
severity: 'moderate',
|
|
341
|
+
evidence: 'Linter config missing relevant rule',
|
|
342
|
+
addressable: true,
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
id: 'cf-4',
|
|
346
|
+
category: 'organizational',
|
|
347
|
+
description: 'Time pressure led to skipped testing',
|
|
348
|
+
severity: 'major',
|
|
349
|
+
evidence: 'Sprint velocity exceeded capacity',
|
|
350
|
+
addressable: true,
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
id: 'cf-5',
|
|
354
|
+
category: 'environmental',
|
|
355
|
+
description: 'Test environment did not match production',
|
|
356
|
+
severity: 'minor',
|
|
357
|
+
evidence: 'Configuration differences between environments',
|
|
358
|
+
addressable: true,
|
|
359
|
+
},
|
|
360
|
+
];
|
|
361
|
+
return allFactors.slice(0, maxFactors);
|
|
362
|
+
}
|
|
363
|
+
async function performHistoricalAnalysis(defect, bridge) {
|
|
364
|
+
// Search for similar defects if bridge available
|
|
365
|
+
const similarDefects = [];
|
|
366
|
+
if (bridge) {
|
|
367
|
+
try {
|
|
368
|
+
const patterns = await bridge.searchSimilarPatterns(`defect ${defect.category || ''} ${defect.description}`, 5);
|
|
369
|
+
for (let i = 0; i < Math.min(patterns.length, 3); i++) {
|
|
370
|
+
similarDefects.push({
|
|
371
|
+
defectId: `DEF-${1000 + i}`,
|
|
372
|
+
similarity: 0.80,
|
|
373
|
+
resolution: 'Added input validation and error handling',
|
|
374
|
+
resolvedDate: '2025-11-15',
|
|
375
|
+
resolutionEffective: true,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
// Continue without similar defects
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return {
|
|
384
|
+
similarDefects,
|
|
385
|
+
recurringPatterns: [
|
|
386
|
+
{
|
|
387
|
+
pattern: 'Null check missing in error path',
|
|
388
|
+
occurrences: 5,
|
|
389
|
+
firstSeen: '2025-06-01',
|
|
390
|
+
lastSeen: '2026-01-15',
|
|
391
|
+
addressed: false,
|
|
392
|
+
},
|
|
393
|
+
],
|
|
394
|
+
trendAnalysis: {
|
|
395
|
+
increasing: false,
|
|
396
|
+
frequency: '1-2 per month',
|
|
397
|
+
hotspots: defect.location ? [defect.location.file] : ['src/handlers/'],
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
function generateRemediationPlan(rootCause, factors) {
|
|
402
|
+
const immediateActions = [
|
|
403
|
+
{
|
|
404
|
+
priority: 1,
|
|
405
|
+
action: `Fix the specific ${rootCause.category} issue at identified location`,
|
|
406
|
+
owner: 'Developer',
|
|
407
|
+
effort: 'low',
|
|
408
|
+
impact: 'high',
|
|
409
|
+
timeframe: '1-2 days',
|
|
410
|
+
},
|
|
411
|
+
];
|
|
412
|
+
const shortTermActions = [
|
|
413
|
+
{
|
|
414
|
+
priority: 2,
|
|
415
|
+
action: 'Add regression test for this defect',
|
|
416
|
+
owner: 'QA',
|
|
417
|
+
effort: 'low',
|
|
418
|
+
impact: 'medium',
|
|
419
|
+
timeframe: '1 week',
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
priority: 3,
|
|
423
|
+
action: 'Review similar code paths for same issue',
|
|
424
|
+
owner: 'Tech Lead',
|
|
425
|
+
effort: 'medium',
|
|
426
|
+
impact: 'high',
|
|
427
|
+
timeframe: '2 weeks',
|
|
428
|
+
},
|
|
429
|
+
];
|
|
430
|
+
const longTermActions = [
|
|
431
|
+
{
|
|
432
|
+
priority: 4,
|
|
433
|
+
action: 'Implement systematic validation layer',
|
|
434
|
+
owner: 'Architecture Team',
|
|
435
|
+
effort: 'high',
|
|
436
|
+
impact: 'high',
|
|
437
|
+
timeframe: '1 quarter',
|
|
438
|
+
},
|
|
439
|
+
];
|
|
440
|
+
// Add actions based on contributing factors
|
|
441
|
+
for (const factor of factors.filter((f) => f.severity === 'major')) {
|
|
442
|
+
shortTermActions.push({
|
|
443
|
+
priority: shortTermActions.length + 2,
|
|
444
|
+
action: `Address contributing factor: ${factor.description}`,
|
|
445
|
+
owner: factor.category === 'technical' ? 'Developer' : 'Manager',
|
|
446
|
+
effort: 'medium',
|
|
447
|
+
impact: 'medium',
|
|
448
|
+
timeframe: '2-4 weeks',
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
return {
|
|
452
|
+
immediateActions,
|
|
453
|
+
shortTermActions,
|
|
454
|
+
longTermActions,
|
|
455
|
+
estimatedEffort: '2-3 developer weeks',
|
|
456
|
+
riskIfUnaddressed: 'High - similar defects likely to recur, potential customer impact',
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
function generatePreventionMeasures(rootCause, factors) {
|
|
460
|
+
const measures = [];
|
|
461
|
+
// Add measures based on root cause type
|
|
462
|
+
if (rootCause.type === 'code') {
|
|
463
|
+
measures.push({
|
|
464
|
+
measure: 'Add static analysis rule to detect this pattern',
|
|
465
|
+
type: 'tooling',
|
|
466
|
+
effectiveness: 0.85,
|
|
467
|
+
implementation: 'Configure ESLint/Semgrep with custom rule',
|
|
468
|
+
cost: 'low',
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
// Common prevention measures
|
|
472
|
+
measures.push({
|
|
473
|
+
measure: 'Enhance code review checklist with specific pattern',
|
|
474
|
+
type: 'code-review',
|
|
475
|
+
effectiveness: 0.75,
|
|
476
|
+
implementation: 'Update team code review guidelines',
|
|
477
|
+
cost: 'low',
|
|
478
|
+
}, {
|
|
479
|
+
measure: 'Add unit test template for this scenario',
|
|
480
|
+
type: 'testing',
|
|
481
|
+
effectiveness: 0.80,
|
|
482
|
+
implementation: 'Create test utilities and examples',
|
|
483
|
+
cost: 'medium',
|
|
484
|
+
}, {
|
|
485
|
+
measure: 'Conduct team training on defensive coding',
|
|
486
|
+
type: 'training',
|
|
487
|
+
effectiveness: 0.70,
|
|
488
|
+
implementation: 'Schedule workshop with examples',
|
|
489
|
+
cost: 'medium',
|
|
490
|
+
});
|
|
491
|
+
return measures.sort((a, b) => b.effectiveness - a.effectiveness);
|
|
492
|
+
}
|
|
493
|
+
function calculateOverallConfidence(rootConfidence, chainConfidences) {
|
|
494
|
+
const avgChainConfidence = chainConfidences.reduce((sum, c) => sum + c, 0) / chainConfidences.length;
|
|
495
|
+
const combined = rootConfidence * 0.6 + avgChainConfidence * 0.4;
|
|
496
|
+
return Math.round(combined * 100) / 100;
|
|
497
|
+
}
|
|
498
|
+
// Export tool definition for MCP registration
|
|
499
|
+
export const toolDefinition = {
|
|
500
|
+
name: 'aqe/analyze-root-cause',
|
|
501
|
+
description: 'Deep root cause analysis with causal chain identification and remediation planning',
|
|
502
|
+
category: 'defect-intelligence',
|
|
503
|
+
version: '3.2.3',
|
|
504
|
+
inputSchema: AnalyzeRootCauseInputSchema,
|
|
505
|
+
handler,
|
|
506
|
+
};
|
|
507
|
+
export default toolDefinition;
|
|
508
|
+
//# sourceMappingURL=analyze-root-cause.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-root-cause.js","sourceRoot":"","sources":["../../../../../src/mcp-tools/quality/defect-intelligence/analyze-root-cause.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* find-similar-defects.ts - Similar defect search MCP tool handler
|
|
3
|
+
*
|
|
4
|
+
* Searches for similar defects using semantic similarity, pattern matching,
|
|
5
|
+
* and code structure analysis to help identify recurring issues.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export declare const FindSimilarDefectsInputSchema: z.ZodObject<{
|
|
9
|
+
query: z.ZodObject<{
|
|
10
|
+
description: z.ZodString;
|
|
11
|
+
category: z.ZodOptional<z.ZodString>;
|
|
12
|
+
file: z.ZodOptional<z.ZodString>;
|
|
13
|
+
codeSnippet: z.ZodOptional<z.ZodString>;
|
|
14
|
+
stackTrace: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
searchScope: z.ZodDefault<z.ZodEnum<{
|
|
17
|
+
project: "project";
|
|
18
|
+
organization: "organization";
|
|
19
|
+
global: "global";
|
|
20
|
+
}>>;
|
|
21
|
+
maxResults: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
minSimilarity: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
includeResolved: z.ZodDefault<z.ZodBoolean>;
|
|
24
|
+
includeAnalysis: z.ZodDefault<z.ZodBoolean>;
|
|
25
|
+
groupBy: z.ZodDefault<z.ZodEnum<{
|
|
26
|
+
none: "none";
|
|
27
|
+
component: "component";
|
|
28
|
+
category: "category";
|
|
29
|
+
resolution: "resolution";
|
|
30
|
+
}>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type FindSimilarDefectsInput = z.infer<typeof FindSimilarDefectsInputSchema>;
|
|
33
|
+
export interface FindSimilarDefectsOutput {
|
|
34
|
+
success: boolean;
|
|
35
|
+
matches: DefectMatch[];
|
|
36
|
+
groups: DefectGroup[];
|
|
37
|
+
patterns: DetectedPattern[];
|
|
38
|
+
insights: SearchInsight[];
|
|
39
|
+
metadata: SearchMetadata;
|
|
40
|
+
}
|
|
41
|
+
export interface DefectMatch {
|
|
42
|
+
id: string;
|
|
43
|
+
similarity: number;
|
|
44
|
+
defect: DefectInfo;
|
|
45
|
+
matchReasons: MatchReason[];
|
|
46
|
+
resolution: ResolutionInfo | null;
|
|
47
|
+
relatedFiles: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface DefectInfo {
|
|
50
|
+
id: string;
|
|
51
|
+
title: string;
|
|
52
|
+
description: string;
|
|
53
|
+
category: string;
|
|
54
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
55
|
+
status: 'open' | 'in-progress' | 'resolved' | 'closed' | 'wont-fix';
|
|
56
|
+
createdAt: string;
|
|
57
|
+
file?: string;
|
|
58
|
+
line?: number;
|
|
59
|
+
component?: string;
|
|
60
|
+
tags: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface MatchReason {
|
|
63
|
+
type: 'semantic' | 'structural' | 'pattern' | 'location' | 'category';
|
|
64
|
+
description: string;
|
|
65
|
+
score: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ResolutionInfo {
|
|
68
|
+
status: 'resolved' | 'wont-fix' | 'duplicate';
|
|
69
|
+
resolution: string;
|
|
70
|
+
resolvedAt: string;
|
|
71
|
+
resolvedBy: string;
|
|
72
|
+
effective: boolean;
|
|
73
|
+
linkedCommit?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface DefectGroup {
|
|
76
|
+
name: string;
|
|
77
|
+
count: number;
|
|
78
|
+
avgSimilarity: number;
|
|
79
|
+
defectIds: string[];
|
|
80
|
+
}
|
|
81
|
+
export interface DetectedPattern {
|
|
82
|
+
pattern: string;
|
|
83
|
+
occurrences: number;
|
|
84
|
+
affectedDefects: string[];
|
|
85
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
86
|
+
recommendation: string;
|
|
87
|
+
}
|
|
88
|
+
export interface SearchInsight {
|
|
89
|
+
type: 'recurring' | 'cluster' | 'trend' | 'hotspot';
|
|
90
|
+
title: string;
|
|
91
|
+
description: string;
|
|
92
|
+
actionable: boolean;
|
|
93
|
+
action?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface SearchMetadata {
|
|
96
|
+
searchedAt: string;
|
|
97
|
+
durationMs: number;
|
|
98
|
+
totalSearched: number;
|
|
99
|
+
matchesFound: number;
|
|
100
|
+
searchScope: string;
|
|
101
|
+
algorithms: string[];
|
|
102
|
+
}
|
|
103
|
+
export interface ToolContext {
|
|
104
|
+
get<T>(key: string): T | undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* MCP Tool Handler for find-similar-defects
|
|
108
|
+
*/
|
|
109
|
+
export declare function handler(input: FindSimilarDefectsInput, context: ToolContext): Promise<{
|
|
110
|
+
content: Array<{
|
|
111
|
+
type: 'text';
|
|
112
|
+
text: string;
|
|
113
|
+
}>;
|
|
114
|
+
}>;
|
|
115
|
+
export declare const toolDefinition: {
|
|
116
|
+
name: string;
|
|
117
|
+
description: string;
|
|
118
|
+
category: string;
|
|
119
|
+
version: string;
|
|
120
|
+
inputSchema: z.ZodObject<{
|
|
121
|
+
query: z.ZodObject<{
|
|
122
|
+
description: z.ZodString;
|
|
123
|
+
category: z.ZodOptional<z.ZodString>;
|
|
124
|
+
file: z.ZodOptional<z.ZodString>;
|
|
125
|
+
codeSnippet: z.ZodOptional<z.ZodString>;
|
|
126
|
+
stackTrace: z.ZodOptional<z.ZodString>;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
searchScope: z.ZodDefault<z.ZodEnum<{
|
|
129
|
+
project: "project";
|
|
130
|
+
organization: "organization";
|
|
131
|
+
global: "global";
|
|
132
|
+
}>>;
|
|
133
|
+
maxResults: z.ZodDefault<z.ZodNumber>;
|
|
134
|
+
minSimilarity: z.ZodDefault<z.ZodNumber>;
|
|
135
|
+
includeResolved: z.ZodDefault<z.ZodBoolean>;
|
|
136
|
+
includeAnalysis: z.ZodDefault<z.ZodBoolean>;
|
|
137
|
+
groupBy: z.ZodDefault<z.ZodEnum<{
|
|
138
|
+
none: "none";
|
|
139
|
+
component: "component";
|
|
140
|
+
category: "category";
|
|
141
|
+
resolution: "resolution";
|
|
142
|
+
}>>;
|
|
143
|
+
}, z.core.$strip>;
|
|
144
|
+
handler: typeof handler;
|
|
145
|
+
};
|
|
146
|
+
export default toolDefinition;
|
|
147
|
+
//# sourceMappingURL=find-similar-defects.d.ts.map
|