@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.
Files changed (105) hide show
  1. package/dist/src/mcp-client.d.ts.map +1 -1
  2. package/dist/src/mcp-client.js +7 -0
  3. package/dist/src/mcp-client.js.map +1 -1
  4. package/dist/src/mcp-tools/coherence/causal-infer.d.ts +15 -0
  5. package/dist/src/mcp-tools/coherence/causal-infer.d.ts.map +1 -0
  6. package/dist/src/mcp-tools/coherence/causal-infer.js +347 -0
  7. package/dist/src/mcp-tools/coherence/causal-infer.js.map +1 -0
  8. package/dist/src/mcp-tools/coherence/coherence-check.d.ts +15 -0
  9. package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -0
  10. package/dist/src/mcp-tools/coherence/coherence-check.js +206 -0
  11. package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -0
  12. package/dist/src/mcp-tools/coherence/consensus-verify.d.ts +15 -0
  13. package/dist/src/mcp-tools/coherence/consensus-verify.d.ts.map +1 -0
  14. package/dist/src/mcp-tools/coherence/consensus-verify.js +303 -0
  15. package/dist/src/mcp-tools/coherence/consensus-verify.js.map +1 -0
  16. package/dist/src/mcp-tools/coherence/memory-gate.d.ts +15 -0
  17. package/dist/src/mcp-tools/coherence/memory-gate.d.ts.map +1 -0
  18. package/dist/src/mcp-tools/coherence/memory-gate.js +266 -0
  19. package/dist/src/mcp-tools/coherence/memory-gate.js.map +1 -0
  20. package/dist/src/mcp-tools/coherence/quantum-topology.d.ts +15 -0
  21. package/dist/src/mcp-tools/coherence/quantum-topology.d.ts.map +1 -0
  22. package/dist/src/mcp-tools/coherence/quantum-topology.js +406 -0
  23. package/dist/src/mcp-tools/coherence/quantum-topology.js.map +1 -0
  24. package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts +15 -0
  25. package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts.map +1 -0
  26. package/dist/src/mcp-tools/coherence/spectral-analyze.js +293 -0
  27. package/dist/src/mcp-tools/coherence/spectral-analyze.js.map +1 -0
  28. package/dist/src/mcp-tools/coherence/types.d.ts +277 -0
  29. package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -0
  30. package/dist/src/mcp-tools/coherence/types.js +159 -0
  31. package/dist/src/mcp-tools/coherence/types.js.map +1 -0
  32. package/dist/src/mcp-tools/coherence-tools.d.ts +9 -0
  33. package/dist/src/mcp-tools/coherence-tools.d.ts.map +1 -0
  34. package/dist/src/mcp-tools/coherence-tools.js +25 -0
  35. package/dist/src/mcp-tools/coherence-tools.js.map +1 -0
  36. package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts +163 -0
  37. package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts.map +1 -0
  38. package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js +414 -0
  39. package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js.map +1 -0
  40. package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts +128 -0
  41. package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts.map +1 -0
  42. package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js +375 -0
  43. package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js.map +1 -0
  44. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +161 -0
  45. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -0
  46. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +423 -0
  47. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -0
  48. package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts +165 -0
  49. package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts.map +1 -0
  50. package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js +395 -0
  51. package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js.map +1 -0
  52. package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts +165 -0
  53. package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts.map +1 -0
  54. package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js +508 -0
  55. package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js.map +1 -0
  56. package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts +147 -0
  57. package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts.map +1 -0
  58. package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js +391 -0
  59. package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js.map +1 -0
  60. package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts +147 -0
  61. package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts.map +1 -0
  62. package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js +422 -0
  63. package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js.map +1 -0
  64. package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts +185 -0
  65. package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts.map +1 -0
  66. package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js +437 -0
  67. package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js.map +1 -0
  68. package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts +166 -0
  69. package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts.map +1 -0
  70. package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js +410 -0
  71. package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js.map +1 -0
  72. package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts +201 -0
  73. package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts.map +1 -0
  74. package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js +363 -0
  75. package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js.map +1 -0
  76. package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts +166 -0
  77. package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts.map +1 -0
  78. package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js +394 -0
  79. package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js.map +1 -0
  80. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +129 -0
  81. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -0
  82. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +383 -0
  83. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -0
  84. package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts +171 -0
  85. package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts.map +1 -0
  86. package/dist/src/mcp-tools/quality/security-compliance/security-scan.js +476 -0
  87. package/dist/src/mcp-tools/quality/security-compliance/security-scan.js.map +1 -0
  88. package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts +147 -0
  89. package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts.map +1 -0
  90. package/dist/src/mcp-tools/quality/test-generation/generate-tests.js +400 -0
  91. package/dist/src/mcp-tools/quality/test-generation/generate-tests.js.map +1 -0
  92. package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts +145 -0
  93. package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts.map +1 -0
  94. package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js +328 -0
  95. package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js.map +1 -0
  96. package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts +126 -0
  97. package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts.map +1 -0
  98. package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js +348 -0
  99. package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js.map +1 -0
  100. package/dist/src/mcp-tools/quality-tools.d.ts +9 -0
  101. package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -0
  102. package/dist/src/mcp-tools/quality-tools.js +308 -0
  103. package/dist/src/mcp-tools/quality-tools.js.map +1 -0
  104. package/dist/tsconfig.tsbuildinfo +1 -1
  105. package/package.json +1 -1
@@ -0,0 +1,410 @@
1
+ /**
2
+ * calculate-risk.ts - Quality risk calculation MCP tool handler
3
+ *
4
+ * Calculates quality risk scores based on code complexity, test coverage,
5
+ * change frequency, defect history, and other factors.
6
+ */
7
+ import { z } from 'zod';
8
+ // Input schema for calculate-risk tool
9
+ export const CalculateRiskInputSchema = z.object({
10
+ targetPath: z.string().describe('Path to file/directory to analyze'),
11
+ factors: z
12
+ .array(z.enum([
13
+ 'complexity',
14
+ 'coverage',
15
+ 'change-frequency',
16
+ 'defect-density',
17
+ 'age',
18
+ 'coupling',
19
+ 'size',
20
+ 'team-experience',
21
+ 'documentation',
22
+ ]))
23
+ .default(['complexity', 'coverage', 'change-frequency', 'defect-density'])
24
+ .describe('Risk factors to consider'),
25
+ weights: z
26
+ .object({
27
+ complexity: z.number().min(0).max(1).default(0.2),
28
+ coverage: z.number().min(0).max(1).default(0.25),
29
+ changeFrequency: z.number().min(0).max(1).default(0.2),
30
+ defectDensity: z.number().min(0).max(1).default(0.15),
31
+ age: z.number().min(0).max(1).default(0.05),
32
+ coupling: z.number().min(0).max(1).default(0.05),
33
+ size: z.number().min(0).max(1).default(0.05),
34
+ teamExperience: z.number().min(0).max(1).default(0.025),
35
+ documentation: z.number().min(0).max(1).default(0.025),
36
+ })
37
+ .optional()
38
+ .describe('Custom weights for risk factors'),
39
+ granularity: z
40
+ .enum(['file', 'module', 'function', 'project'])
41
+ .default('file')
42
+ .describe('Level of granularity for analysis'),
43
+ riskThresholds: z
44
+ .object({
45
+ low: z.number().default(30),
46
+ medium: z.number().default(60),
47
+ high: z.number().default(80),
48
+ })
49
+ .optional()
50
+ .describe('Thresholds for risk categorization'),
51
+ includeRecommendations: z.boolean().default(true).describe('Include mitigation recommendations'),
52
+ });
53
+ // Default weights
54
+ const DEFAULT_WEIGHTS = {
55
+ complexity: 0.2,
56
+ coverage: 0.25,
57
+ changeFrequency: 0.2,
58
+ defectDensity: 0.15,
59
+ age: 0.05,
60
+ coupling: 0.05,
61
+ size: 0.05,
62
+ teamExperience: 0.025,
63
+ documentation: 0.025,
64
+ };
65
+ // Default thresholds
66
+ const DEFAULT_THRESHOLDS = { low: 30, medium: 60, high: 80 };
67
+ /**
68
+ * MCP Tool Handler for calculate-risk
69
+ */
70
+ export async function handler(input, context) {
71
+ const startTime = Date.now();
72
+ try {
73
+ // Validate input
74
+ const validatedInput = CalculateRiskInputSchema.parse(input);
75
+ // Get memory bridge for historical data
76
+ const bridge = context.get('aqe.bridge');
77
+ // Merge weights
78
+ const weights = { ...DEFAULT_WEIGHTS, ...validatedInput.weights };
79
+ const thresholds = { ...DEFAULT_THRESHOLDS, ...validatedInput.riskThresholds };
80
+ // Analyze components
81
+ const componentRisks = await analyzeComponents(validatedInput.targetPath, validatedInput.granularity, validatedInput.factors, weights);
82
+ // Calculate factor contributions
83
+ const factorContributions = calculateFactorContributions(componentRisks, validatedInput.factors, weights);
84
+ // Calculate overall risk
85
+ const overallRisk = calculateOverallRisk(componentRisks, thresholds);
86
+ // Identify hotspots
87
+ const hotspots = identifyHotspots(componentRisks, thresholds);
88
+ // Generate recommendations
89
+ const recommendations = validatedInput.includeRecommendations
90
+ ? generateRecommendations(factorContributions, hotspots)
91
+ : [];
92
+ // Analyze trends
93
+ const trendAnalysis = await analyzeTrends(validatedInput.targetPath, bridge);
94
+ // Build result
95
+ const result = {
96
+ success: true,
97
+ overallRisk,
98
+ componentRisks,
99
+ factorContributions,
100
+ hotspots,
101
+ recommendations,
102
+ trendAnalysis,
103
+ metadata: {
104
+ calculatedAt: new Date().toISOString(),
105
+ durationMs: Date.now() - startTime,
106
+ targetPath: validatedInput.targetPath,
107
+ componentsAnalyzed: componentRisks.length,
108
+ factorsUsed: validatedInput.factors,
109
+ },
110
+ };
111
+ return {
112
+ content: [
113
+ {
114
+ type: 'text',
115
+ text: JSON.stringify(result, null, 2),
116
+ },
117
+ ],
118
+ };
119
+ }
120
+ catch (error) {
121
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
122
+ return {
123
+ content: [
124
+ {
125
+ type: 'text',
126
+ text: JSON.stringify({
127
+ success: false,
128
+ error: errorMessage,
129
+ metadata: {
130
+ calculatedAt: new Date().toISOString(),
131
+ durationMs: Date.now() - startTime,
132
+ },
133
+ }, null, 2),
134
+ },
135
+ ],
136
+ };
137
+ }
138
+ }
139
+ async function analyzeComponents(targetPath, granularity, factors, weights) {
140
+ // Simulated component analysis
141
+ // In real implementation, would parse code and calculate metrics
142
+ const components = generateSimulatedComponents(targetPath, granularity);
143
+ return components.map((component) => {
144
+ const factorScores = {};
145
+ let weightedSum = 0;
146
+ let totalWeight = 0;
147
+ for (const factor of factors) {
148
+ const score = calculateFactorScore(factor, component);
149
+ factorScores[factor] = score;
150
+ const weightKey = factor.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
151
+ const weight = weights[weightKey] || 0.1;
152
+ weightedSum += score * weight;
153
+ totalWeight += weight;
154
+ }
155
+ const riskScore = totalWeight > 0 ? Math.round((weightedSum / totalWeight) * 100) / 100 : 0;
156
+ const riskLevel = scoreToLevel(riskScore * 100);
157
+ return {
158
+ path: component.path,
159
+ type: granularity,
160
+ riskScore,
161
+ riskLevel,
162
+ factors: factorScores,
163
+ topIssues: identifyTopIssues(factorScores),
164
+ };
165
+ });
166
+ }
167
+ function generateSimulatedComponents(targetPath, granularity) {
168
+ const basePath = targetPath.replace(/\.[^.]+$/, '');
169
+ if (granularity === 'function') {
170
+ return [
171
+ { path: `${basePath}::processInput`, lines: 25, complexity: 8, coverage: 85, changes: 5, defects: 1, age: 90 },
172
+ { path: `${basePath}::validateConfig`, lines: 40, complexity: 12, coverage: 60, changes: 8, defects: 3, age: 180 },
173
+ { path: `${basePath}::handleError`, lines: 15, complexity: 4, coverage: 45, changes: 2, defects: 0, age: 120 },
174
+ ];
175
+ }
176
+ return [
177
+ { path: `${basePath}/core.ts`, lines: 350, complexity: 45, coverage: 78, changes: 15, defects: 4, age: 365 },
178
+ { path: `${basePath}/utils.ts`, lines: 150, complexity: 18, coverage: 92, changes: 8, defects: 1, age: 180 },
179
+ { path: `${basePath}/handlers.ts`, lines: 280, complexity: 32, coverage: 65, changes: 22, defects: 6, age: 90 },
180
+ { path: `${basePath}/validators.ts`, lines: 120, complexity: 15, coverage: 88, changes: 5, defects: 0, age: 120 },
181
+ ];
182
+ }
183
+ function calculateFactorScore(factor, component) {
184
+ switch (factor) {
185
+ case 'complexity':
186
+ // Higher complexity = higher risk
187
+ return Math.min(component.complexity / 50, 1);
188
+ case 'coverage':
189
+ // Lower coverage = higher risk
190
+ return Math.max(0, 1 - component.coverage / 100);
191
+ case 'change-frequency':
192
+ // More changes = higher risk
193
+ return Math.min(component.changes / 20, 1);
194
+ case 'defect-density':
195
+ // More defects per line = higher risk
196
+ const density = component.defects / (component.lines / 100);
197
+ return Math.min(density / 5, 1);
198
+ case 'age':
199
+ // Older code = higher risk (if not maintained)
200
+ return Math.min(component.age / 365, 1);
201
+ case 'coupling':
202
+ // Simulated coupling score
203
+ return Math.random() * 0.5 + 0.2;
204
+ case 'size':
205
+ // Larger files = higher risk
206
+ return Math.min(component.lines / 500, 1);
207
+ case 'team-experience':
208
+ // Simulated team experience
209
+ return 1 - (Math.random() * 0.3 + 0.5);
210
+ case 'documentation':
211
+ // Simulated documentation score
212
+ return 1 - (Math.random() * 0.4 + 0.4);
213
+ default:
214
+ return 0.5;
215
+ }
216
+ }
217
+ function scoreToLevel(score) {
218
+ if (score >= 80)
219
+ return 'critical';
220
+ if (score >= 60)
221
+ return 'high';
222
+ if (score >= 30)
223
+ return 'medium';
224
+ return 'low';
225
+ }
226
+ function identifyTopIssues(factors) {
227
+ const issues = [];
228
+ const sortedFactors = Object.entries(factors).sort(([, a], [, b]) => b - a);
229
+ for (const [factor, score] of sortedFactors.slice(0, 3)) {
230
+ if (score > 0.5) {
231
+ const issueMap = {
232
+ complexity: 'High cyclomatic complexity',
233
+ coverage: 'Insufficient test coverage',
234
+ 'change-frequency': 'Frequently modified code',
235
+ 'defect-density': 'High defect density',
236
+ age: 'Legacy code requiring attention',
237
+ coupling: 'High coupling to other modules',
238
+ size: 'Large component size',
239
+ 'team-experience': 'Limited team familiarity',
240
+ documentation: 'Inadequate documentation',
241
+ };
242
+ issues.push(issueMap[factor] || `High ${factor} risk`);
243
+ }
244
+ }
245
+ return issues;
246
+ }
247
+ function calculateFactorContributions(componentRisks, factors, weights) {
248
+ const contributions = [];
249
+ for (const factor of factors) {
250
+ const avgRawScore = componentRisks.reduce((sum, c) => sum + (c.factors[factor] || 0), 0) / componentRisks.length;
251
+ const weightKey = factor.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
252
+ const weight = weights[weightKey] || 0.1;
253
+ const weightedScore = avgRawScore * weight;
254
+ contributions.push({
255
+ factor,
256
+ weight,
257
+ rawScore: Math.round(avgRawScore * 100) / 100,
258
+ weightedScore: Math.round(weightedScore * 100) / 100,
259
+ percentageContribution: 0, // Will be calculated after
260
+ details: generateFactorDetails(factor, avgRawScore),
261
+ });
262
+ }
263
+ // Calculate percentage contributions
264
+ const totalWeighted = contributions.reduce((sum, c) => sum + c.weightedScore, 0);
265
+ for (const contrib of contributions) {
266
+ contrib.percentageContribution = totalWeighted > 0
267
+ ? Math.round((contrib.weightedScore / totalWeighted) * 100)
268
+ : 0;
269
+ }
270
+ return contributions.sort((a, b) => b.weightedScore - a.weightedScore);
271
+ }
272
+ function generateFactorDetails(factor, score) {
273
+ const detailsMap = {
274
+ complexity: `Average complexity score: ${Math.round(score * 50)}`,
275
+ coverage: `Coverage gap: ${Math.round(score * 100)}%`,
276
+ 'change-frequency': `Change rate: ${Math.round(score * 20)} changes/quarter`,
277
+ 'defect-density': `Defect density: ${Math.round(score * 5)} per 100 LOC`,
278
+ age: `Average age: ${Math.round(score * 365)} days`,
279
+ coupling: `Coupling factor: ${Math.round(score * 100)}%`,
280
+ size: `Average size: ${Math.round(score * 500)} lines`,
281
+ 'team-experience': `Team familiarity: ${Math.round((1 - score) * 100)}%`,
282
+ documentation: `Documentation coverage: ${Math.round((1 - score) * 100)}%`,
283
+ };
284
+ return detailsMap[factor] || `Score: ${Math.round(score * 100)}%`;
285
+ }
286
+ function calculateOverallRisk(componentRisks, thresholds) {
287
+ if (componentRisks.length === 0) {
288
+ return {
289
+ score: 0,
290
+ level: 'low',
291
+ confidence: 0,
292
+ breakdown: {},
293
+ };
294
+ }
295
+ // Weighted average based on component risk
296
+ const totalScore = componentRisks.reduce((sum, c) => sum + c.riskScore, 0);
297
+ const avgScore = (totalScore / componentRisks.length) * 100;
298
+ // Calculate breakdown by risk level
299
+ const breakdown = {
300
+ low: componentRisks.filter((c) => c.riskLevel === 'low').length,
301
+ medium: componentRisks.filter((c) => c.riskLevel === 'medium').length,
302
+ high: componentRisks.filter((c) => c.riskLevel === 'high').length,
303
+ critical: componentRisks.filter((c) => c.riskLevel === 'critical').length,
304
+ };
305
+ // Confidence based on number of components analyzed
306
+ const confidence = Math.min(componentRisks.length / 10, 1);
307
+ return {
308
+ score: Math.round(avgScore * 10) / 10,
309
+ level: scoreToLevel(avgScore),
310
+ confidence: Math.round(confidence * 100) / 100,
311
+ breakdown,
312
+ };
313
+ }
314
+ function identifyHotspots(componentRisks, thresholds) {
315
+ return componentRisks
316
+ .filter((c) => c.riskScore * 100 >= thresholds.medium)
317
+ .sort((a, b) => b.riskScore - a.riskScore)
318
+ .slice(0, 5)
319
+ .map((c) => {
320
+ const topFactor = Object.entries(c.factors).sort(([, a], [, b]) => b - a)[0];
321
+ return {
322
+ path: c.path,
323
+ riskScore: Math.round(c.riskScore * 100),
324
+ primaryFactor: topFactor[0],
325
+ description: c.topIssues[0] || 'Multiple risk factors',
326
+ urgency: c.riskLevel === 'critical' ? 'immediate' : c.riskLevel === 'high' ? 'short-term' : 'long-term',
327
+ };
328
+ });
329
+ }
330
+ function generateRecommendations(factorContributions, hotspots) {
331
+ const recommendations = [];
332
+ let priority = 1;
333
+ // Recommendations based on top contributing factors
334
+ for (const contrib of factorContributions.slice(0, 3)) {
335
+ const recommendationMap = {
336
+ complexity: {
337
+ action: 'Refactor complex functions into smaller, more manageable units',
338
+ impact: 'Reduced cognitive load and easier testing',
339
+ effort: 'medium',
340
+ },
341
+ coverage: {
342
+ action: 'Add unit tests targeting uncovered code paths',
343
+ impact: 'Improved defect detection and regression prevention',
344
+ effort: 'medium',
345
+ },
346
+ 'change-frequency': {
347
+ action: 'Stabilize frequently changing components with better abstractions',
348
+ impact: 'Reduced change risk and improved maintainability',
349
+ effort: 'high',
350
+ },
351
+ 'defect-density': {
352
+ action: 'Conduct focused code review and add defensive coding practices',
353
+ impact: 'Lower defect rate and improved reliability',
354
+ effort: 'medium',
355
+ },
356
+ age: {
357
+ action: 'Modernize legacy code with incremental refactoring',
358
+ impact: 'Improved maintainability and reduced technical debt',
359
+ effort: 'high',
360
+ },
361
+ };
362
+ const rec = recommendationMap[contrib.factor];
363
+ if (rec && contrib.rawScore > 0.4) {
364
+ recommendations.push({
365
+ priority: priority++,
366
+ factor: contrib.factor,
367
+ action: rec.action,
368
+ expectedImpact: rec.impact,
369
+ effort: rec.effort,
370
+ affectedComponents: hotspots
371
+ .filter((h) => h.primaryFactor === contrib.factor)
372
+ .map((h) => h.path),
373
+ });
374
+ }
375
+ }
376
+ return recommendations;
377
+ }
378
+ async function analyzeTrends(targetPath, bridge) {
379
+ // Simulated historical data
380
+ const historicalScores = [
381
+ { date: '2026-01-01', score: 55 },
382
+ { date: '2026-01-08', score: 52 },
383
+ { date: '2026-01-15', score: 48 },
384
+ { date: '2026-01-22', score: 45 },
385
+ ];
386
+ const first = historicalScores[0].score;
387
+ const last = historicalScores[historicalScores.length - 1].score;
388
+ const change = last - first;
389
+ const changePercent = (change / first) * 100;
390
+ // Project future score
391
+ const trend = (last - first) / historicalScores.length;
392
+ const projection = Math.max(0, Math.min(100, last + trend * 4));
393
+ return {
394
+ direction: changePercent < -5 ? 'improving' : changePercent > 5 ? 'worsening' : 'stable',
395
+ changePercent: Math.round(changePercent * 10) / 10,
396
+ historicalScores,
397
+ projection: Math.round(projection),
398
+ };
399
+ }
400
+ // Export tool definition for MCP registration
401
+ export const toolDefinition = {
402
+ name: 'aqe/calculate-risk',
403
+ description: 'Calculate quality risk scores based on multiple weighted factors',
404
+ category: 'quality-assessment',
405
+ version: '3.2.3',
406
+ inputSchema: CalculateRiskInputSchema,
407
+ handler,
408
+ };
409
+ export default toolDefinition;
410
+ //# sourceMappingURL=calculate-risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate-risk.js","sourceRoot":"","sources":["../../../../../src/mcp-tools/quality/quality-assessment/calculate-risk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * evaluate-quality-gate.ts - Quality gate evaluation MCP tool handler
3
+ *
4
+ * Evaluates quality gates against defined thresholds to determine
5
+ * release readiness. Supports multiple metrics and custom gate configurations.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const EvaluateQualityGateInputSchema: z.ZodObject<{
9
+ gates: z.ZodOptional<z.ZodArray<z.ZodObject<{
10
+ metric: z.ZodString;
11
+ operator: z.ZodEnum<{
12
+ ">": ">";
13
+ "<": "<";
14
+ ">=": ">=";
15
+ "<=": "<=";
16
+ "==": "==";
17
+ }>;
18
+ threshold: z.ZodNumber;
19
+ weight: z.ZodDefault<z.ZodNumber>;
20
+ blocking: z.ZodDefault<z.ZodBoolean>;
21
+ }, z.core.$strip>>>;
22
+ defaults: z.ZodDefault<z.ZodEnum<{
23
+ minimal: "minimal";
24
+ standard: "standard";
25
+ strict: "strict";
26
+ }>>;
27
+ projectPath: z.ZodOptional<z.ZodString>;
28
+ includeMetrics: z.ZodDefault<z.ZodArray<z.ZodEnum<{
29
+ security: "security";
30
+ coverage: "coverage";
31
+ complexity: "complexity";
32
+ bugs: "bugs";
33
+ vulnerabilities: "vulnerabilities";
34
+ "code-smells": "code-smells";
35
+ duplications: "duplications";
36
+ "technical-debt": "technical-debt";
37
+ reliability: "reliability";
38
+ maintainability: "maintainability";
39
+ }>>>;
40
+ failFast: z.ZodDefault<z.ZodBoolean>;
41
+ generateReport: z.ZodDefault<z.ZodBoolean>;
42
+ }, z.core.$strip>;
43
+ export type EvaluateQualityGateInput = z.infer<typeof EvaluateQualityGateInputSchema>;
44
+ export interface EvaluateQualityGateOutput {
45
+ success: boolean;
46
+ passed: boolean;
47
+ overallScore: number;
48
+ gateResults: GateResult[];
49
+ metrics: CollectedMetrics;
50
+ blockers: GateResult[];
51
+ warnings: GateResult[];
52
+ report: QualityReport | null;
53
+ metadata: QualityGateMetadata;
54
+ }
55
+ export interface GateResult {
56
+ metric: string;
57
+ operator: string;
58
+ threshold: number;
59
+ actual: number;
60
+ passed: boolean;
61
+ blocking: boolean;
62
+ weight: number;
63
+ deviation: number;
64
+ message: string;
65
+ }
66
+ export interface CollectedMetrics {
67
+ coverage: CoverageMetrics;
68
+ bugs: BugMetrics;
69
+ vulnerabilities: VulnerabilityMetrics;
70
+ codeSmells: CodeSmellMetrics;
71
+ duplications: DuplicationMetrics;
72
+ complexity: ComplexityMetrics;
73
+ technicalDebt: TechnicalDebtMetrics;
74
+ ratings: QualityRatings;
75
+ }
76
+ export interface CoverageMetrics {
77
+ line: number;
78
+ branch: number;
79
+ function: number;
80
+ overall: number;
81
+ }
82
+ export interface BugMetrics {
83
+ total: number;
84
+ critical: number;
85
+ major: number;
86
+ minor: number;
87
+ }
88
+ export interface VulnerabilityMetrics {
89
+ total: number;
90
+ critical: number;
91
+ high: number;
92
+ medium: number;
93
+ low: number;
94
+ }
95
+ export interface CodeSmellMetrics {
96
+ total: number;
97
+ debt: string;
98
+ ratio: number;
99
+ }
100
+ export interface DuplicationMetrics {
101
+ lines: number;
102
+ blocks: number;
103
+ percentage: number;
104
+ }
105
+ export interface ComplexityMetrics {
106
+ cyclomatic: number;
107
+ cognitive: number;
108
+ avgPerFunction: number;
109
+ }
110
+ export interface TechnicalDebtMetrics {
111
+ total: string;
112
+ ratio: number;
113
+ rating: 'A' | 'B' | 'C' | 'D' | 'E';
114
+ }
115
+ export interface QualityRatings {
116
+ reliability: 'A' | 'B' | 'C' | 'D' | 'E';
117
+ security: 'A' | 'B' | 'C' | 'D' | 'E';
118
+ maintainability: 'A' | 'B' | 'C' | 'D' | 'E';
119
+ }
120
+ export interface QualityReport {
121
+ summary: string;
122
+ recommendations: string[];
123
+ trends: TrendComparison[];
124
+ riskAreas: RiskArea[];
125
+ }
126
+ export interface TrendComparison {
127
+ metric: string;
128
+ previous: number;
129
+ current: number;
130
+ trend: 'improving' | 'stable' | 'declining';
131
+ }
132
+ export interface RiskArea {
133
+ name: string;
134
+ severity: 'low' | 'medium' | 'high' | 'critical';
135
+ description: string;
136
+ files: string[];
137
+ }
138
+ export interface QualityGateMetadata {
139
+ evaluatedAt: string;
140
+ durationMs: number;
141
+ preset: string;
142
+ totalGates: number;
143
+ passedGates: number;
144
+ failedGates: number;
145
+ }
146
+ export interface ToolContext {
147
+ get<T>(key: string): T | undefined;
148
+ }
149
+ /**
150
+ * MCP Tool Handler for evaluate-quality-gate
151
+ */
152
+ export declare function handler(input: EvaluateQualityGateInput, context: ToolContext): Promise<{
153
+ content: Array<{
154
+ type: 'text';
155
+ text: string;
156
+ }>;
157
+ }>;
158
+ export declare const toolDefinition: {
159
+ name: string;
160
+ description: string;
161
+ category: string;
162
+ version: string;
163
+ inputSchema: z.ZodObject<{
164
+ gates: z.ZodOptional<z.ZodArray<z.ZodObject<{
165
+ metric: z.ZodString;
166
+ operator: z.ZodEnum<{
167
+ ">": ">";
168
+ "<": "<";
169
+ ">=": ">=";
170
+ "<=": "<=";
171
+ "==": "==";
172
+ }>;
173
+ threshold: z.ZodNumber;
174
+ weight: z.ZodDefault<z.ZodNumber>;
175
+ blocking: z.ZodDefault<z.ZodBoolean>;
176
+ }, z.core.$strip>>>;
177
+ defaults: z.ZodDefault<z.ZodEnum<{
178
+ minimal: "minimal";
179
+ standard: "standard";
180
+ strict: "strict";
181
+ }>>;
182
+ projectPath: z.ZodOptional<z.ZodString>;
183
+ includeMetrics: z.ZodDefault<z.ZodArray<z.ZodEnum<{
184
+ security: "security";
185
+ coverage: "coverage";
186
+ complexity: "complexity";
187
+ bugs: "bugs";
188
+ vulnerabilities: "vulnerabilities";
189
+ "code-smells": "code-smells";
190
+ duplications: "duplications";
191
+ "technical-debt": "technical-debt";
192
+ reliability: "reliability";
193
+ maintainability: "maintainability";
194
+ }>>>;
195
+ failFast: z.ZodDefault<z.ZodBoolean>;
196
+ generateReport: z.ZodDefault<z.ZodBoolean>;
197
+ }, z.core.$strip>;
198
+ handler: typeof handler;
199
+ };
200
+ export default toolDefinition;
201
+ //# sourceMappingURL=evaluate-quality-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-quality-gate.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.ts"],"names":[],"mappings":"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"}