agentic-qe 2.3.1 → 2.3.3

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 (128) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +1 -1
  3. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  4. package/dist/agents/CoverageAnalyzerAgent.js +53 -27
  5. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  6. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  7. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  8. package/dist/agents/FlakyTestHunterAgent.js +20 -5
  9. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  10. package/dist/agents/QualityGateAgent.js +44 -6
  11. package/dist/agents/QualityGateAgent.js.map +1 -1
  12. package/dist/cli/index.js +0 -0
  13. package/dist/cli/init/database-init.js +5 -0
  14. package/dist/cli/init/database-init.js.map +1 -1
  15. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  16. package/dist/learning/PerformanceTracker.d.ts +9 -0
  17. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  18. package/dist/learning/PerformanceTracker.js +26 -2
  19. package/dist/learning/PerformanceTracker.js.map +1 -1
  20. package/dist/mcp/server-instructions.d.ts +1 -1
  21. package/dist/mcp/server-instructions.js +1 -1
  22. package/package.json +4 -2
  23. package/scripts/README.md +352 -0
  24. package/scripts/hooks/capture-task-learning.js +191 -0
  25. package/scripts/hooks/emit-task-complete.sh +35 -0
  26. package/scripts/hooks/emit-task-spawn.sh +27 -0
  27. package/.claude/agents/failing-agent.json +0 -9
  28. package/.claude/agents/test-agent.json +0 -9
  29. package/dist/App.d.ts +0 -5
  30. package/dist/App.d.ts.map +0 -1
  31. package/dist/App.js +0 -15
  32. package/dist/App.js.map +0 -1
  33. package/dist/cli/init/utils.d.ts +0 -183
  34. package/dist/cli/init/utils.d.ts.map +0 -1
  35. package/dist/cli/init/utils.js +0 -354
  36. package/dist/cli/init/utils.js.map +0 -1
  37. package/dist/components/Dashboard/Dashboard.d.ts +0 -4
  38. package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
  39. package/dist/components/Dashboard/Dashboard.js +0 -148
  40. package/dist/components/Dashboard/Dashboard.js.map +0 -1
  41. package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
  42. package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
  43. package/dist/components/Dashboard/DashboardHeader.js +0 -138
  44. package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
  45. package/dist/contexts/DashboardContext.d.ts +0 -41
  46. package/dist/contexts/DashboardContext.d.ts.map +0 -1
  47. package/dist/contexts/DashboardContext.js +0 -187
  48. package/dist/contexts/DashboardContext.js.map +0 -1
  49. package/dist/core/transport/QUICTransport.d.ts +0 -320
  50. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  51. package/dist/core/transport/QUICTransport.js +0 -711
  52. package/dist/core/transport/QUICTransport.js.map +0 -1
  53. package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
  54. package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
  55. package/dist/learning/LearningPersistenceAdapter.js +0 -202
  56. package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
  57. package/dist/learning/algorithms/QLearning.d.ts +0 -68
  58. package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
  59. package/dist/learning/algorithms/QLearning.js +0 -116
  60. package/dist/learning/algorithms/QLearning.js.map +0 -1
  61. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
  62. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
  63. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
  64. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
  65. package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
  66. package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
  67. package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
  68. package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
  69. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
  70. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
  71. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
  72. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
  73. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
  74. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
  75. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
  76. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
  77. package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
  78. package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
  79. package/dist/mcp/handlers/optimize-tests.js +0 -533
  80. package/dist/mcp/handlers/optimize-tests.js.map +0 -1
  81. package/dist/mcp/handlers/predict-defects.d.ts +0 -194
  82. package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
  83. package/dist/mcp/handlers/predict-defects.js +0 -722
  84. package/dist/mcp/handlers/predict-defects.js.map +0 -1
  85. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
  86. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
  87. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
  88. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
  89. package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
  90. package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
  91. package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
  92. package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
  93. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
  94. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
  95. package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
  96. package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
  97. package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
  98. package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
  99. package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
  100. package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
  101. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
  102. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
  103. package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
  104. package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
  105. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
  106. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
  107. package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
  108. package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
  109. package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
  110. package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
  111. package/dist/mcp/handlers/quality-analyze.js +0 -720
  112. package/dist/mcp/handlers/quality-analyze.js.map +0 -1
  113. package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
  114. package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
  115. package/dist/mcp/handlers/security/check-authz.js +0 -434
  116. package/dist/mcp/handlers/security/check-authz.js.map +0 -1
  117. package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
  118. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
  119. package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
  120. package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
  121. package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
  122. package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
  123. package/dist/mcp/handlers/security/validate-auth.js +0 -294
  124. package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
  125. package/dist/mcp/handlers/test-generate.d.ts +0 -107
  126. package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
  127. package/dist/mcp/handlers/test-generate.js +0 -454
  128. package/dist/mcp/handlers/test-generate.js.map +0 -1
@@ -1,288 +0,0 @@
1
- "use strict";
2
- /**
3
- * Quality Validate Metrics Handler
4
- *
5
- * Validates quality metrics against configurable thresholds.
6
- * Provides detailed pass/fail analysis with recommendations.
7
- *
8
- * @version 1.0.0
9
- * @author Agentic QE Team - Agent 2
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QualityValidateMetricsHandler = void 0;
13
- const base_handler_js_1 = require("../base-handler.js");
14
- class QualityValidateMetricsHandler extends base_handler_js_1.BaseHandler {
15
- constructor(hookExecutor) {
16
- super();
17
- this.hookExecutor = hookExecutor;
18
- this.defaultThresholds = this.createDefaultThresholds();
19
- }
20
- async handle(args) {
21
- return this.safeHandle(async () => {
22
- const requestId = this.generateRequestId();
23
- this.log('info', 'Validating quality metrics', { requestId });
24
- // Validate required parameters
25
- this.validateRequired(args, ['metrics']);
26
- // Use provided thresholds or defaults
27
- const thresholds = args.thresholds || this.defaultThresholds;
28
- const strictMode = args.strictMode ?? false;
29
- // Execute pre-task hook
30
- await this.hookExecutor.executePreTask({
31
- description: 'Validating quality metrics against thresholds',
32
- agentType: 'quality-analyzer',
33
- sessionId: requestId
34
- });
35
- // Perform validation
36
- const { result: validationResult, executionTime } = await this.measureExecutionTime(async () => {
37
- const validations = [];
38
- // Validate coverage metrics
39
- if (thresholds.coverage) {
40
- validations.push(...this.validateCoverage(args.metrics.coverage, thresholds.coverage));
41
- }
42
- // Validate test results
43
- if (thresholds.testResults) {
44
- validations.push(...this.validateTestResults(args.metrics.testResults, thresholds.testResults));
45
- }
46
- // Validate security metrics
47
- if (thresholds.security) {
48
- validations.push(...this.validateSecurity(args.metrics.security, thresholds.security));
49
- }
50
- // Validate performance metrics
51
- if (thresholds.performance) {
52
- validations.push(...this.validatePerformance(args.metrics.performance, thresholds.performance));
53
- }
54
- // Validate code quality metrics
55
- if (thresholds.codeQuality) {
56
- validations.push(...this.validateCodeQuality(args.metrics.codeQuality, thresholds.codeQuality));
57
- }
58
- // Calculate summary
59
- const summary = this.calculateSummary(validations);
60
- // Determine overall pass/fail
61
- const passed = strictMode
62
- ? validations.every(v => v.passed)
63
- : summary.critical === 0;
64
- // Calculate overall score
65
- const overallScore = this.calculateOverallScore(validations);
66
- // Generate recommendations
67
- const recommendations = this.generateRecommendations(validations, strictMode);
68
- const result = {
69
- validationId: requestId,
70
- passed,
71
- overallScore,
72
- validations,
73
- summary,
74
- recommendations,
75
- timestamp: new Date().toISOString()
76
- };
77
- return result;
78
- });
79
- this.log('info', `Metrics validated in ${executionTime.toFixed(2)}ms`, {
80
- validationId: validationResult.validationId,
81
- passed: validationResult.passed,
82
- score: validationResult.overallScore
83
- });
84
- // Store result in memory
85
- await this.hookExecutor.executePostEdit({
86
- file: `validation-${requestId}`,
87
- memoryKey: `aqe/swarm/quality-mcp-tools/validations/${requestId}`
88
- });
89
- // Execute post-task hook
90
- await this.hookExecutor.executePostTask({
91
- taskId: requestId,
92
- agentType: 'quality-analyzer',
93
- sessionId: requestId,
94
- results: {
95
- validationId: validationResult.validationId,
96
- passed: validationResult.passed,
97
- score: validationResult.overallScore
98
- }
99
- });
100
- return this.createSuccessResponse(validationResult, requestId);
101
- });
102
- }
103
- createDefaultThresholds() {
104
- return {
105
- coverage: {
106
- line: 80,
107
- branch: 75,
108
- function: 85,
109
- statement: 80
110
- },
111
- testResults: {
112
- minSuccessRate: 95,
113
- maxFailureRate: 5,
114
- maxSkippedRate: 2
115
- },
116
- security: {
117
- maxCritical: 0,
118
- maxHigh: 2,
119
- maxMedium: 10,
120
- maxTotal: 20
121
- },
122
- performance: {
123
- maxResponseTime: 1000,
124
- minThroughput: 100,
125
- maxErrorRate: 0.05
126
- },
127
- codeQuality: {
128
- maxComplexity: 15,
129
- minMaintainability: 70,
130
- maxDuplication: 5
131
- }
132
- };
133
- }
134
- validateCoverage(coverage, thresholds) {
135
- const validations = [];
136
- if (thresholds.line !== undefined) {
137
- validations.push(this.createValidation('Line Coverage', 'coverage', coverage.line, thresholds.line, coverage.line >= thresholds.line, 'minimum'));
138
- }
139
- if (thresholds.branch !== undefined) {
140
- validations.push(this.createValidation('Branch Coverage', 'coverage', coverage.branch, thresholds.branch, coverage.branch >= thresholds.branch, 'minimum'));
141
- }
142
- if (thresholds.function !== undefined) {
143
- validations.push(this.createValidation('Function Coverage', 'coverage', coverage.function, thresholds.function, coverage.function >= thresholds.function, 'minimum'));
144
- }
145
- if (thresholds.statement !== undefined) {
146
- validations.push(this.createValidation('Statement Coverage', 'coverage', coverage.statement, thresholds.statement, coverage.statement >= thresholds.statement, 'minimum'));
147
- }
148
- return validations;
149
- }
150
- validateTestResults(testResults, thresholds) {
151
- const validations = [];
152
- const successRate = (testResults.passed / testResults.total) * 100;
153
- const failureRate = (testResults.failed / testResults.total) * 100;
154
- const skippedRate = (testResults.skipped / testResults.total) * 100;
155
- if (thresholds.minSuccessRate !== undefined) {
156
- validations.push(this.createValidation('Test Success Rate', 'test-results', successRate, thresholds.minSuccessRate, successRate >= thresholds.minSuccessRate, 'minimum'));
157
- }
158
- if (thresholds.maxFailureRate !== undefined) {
159
- validations.push(this.createValidation('Test Failure Rate', 'test-results', failureRate, thresholds.maxFailureRate, failureRate <= thresholds.maxFailureRate, 'maximum'));
160
- }
161
- if (thresholds.maxSkippedRate !== undefined) {
162
- validations.push(this.createValidation('Test Skipped Rate', 'test-results', skippedRate, thresholds.maxSkippedRate, skippedRate <= thresholds.maxSkippedRate, 'maximum'));
163
- }
164
- return validations;
165
- }
166
- validateSecurity(security, thresholds) {
167
- const validations = [];
168
- const total = security.critical + security.high + security.medium + security.low;
169
- if (thresholds.maxCritical !== undefined) {
170
- validations.push(this.createValidation('Critical Vulnerabilities', 'security', security.critical, thresholds.maxCritical, security.critical <= thresholds.maxCritical, 'maximum', 'critical'));
171
- }
172
- if (thresholds.maxHigh !== undefined) {
173
- validations.push(this.createValidation('High Vulnerabilities', 'security', security.high, thresholds.maxHigh, security.high <= thresholds.maxHigh, 'maximum', 'high'));
174
- }
175
- if (thresholds.maxMedium !== undefined) {
176
- validations.push(this.createValidation('Medium Vulnerabilities', 'security', security.medium, thresholds.maxMedium, security.medium <= thresholds.maxMedium, 'maximum', 'medium'));
177
- }
178
- if (thresholds.maxTotal !== undefined) {
179
- validations.push(this.createValidation('Total Vulnerabilities', 'security', total, thresholds.maxTotal, total <= thresholds.maxTotal, 'maximum'));
180
- }
181
- return validations;
182
- }
183
- validatePerformance(performance, thresholds) {
184
- const validations = [];
185
- if (thresholds.maxResponseTime !== undefined) {
186
- validations.push(this.createValidation('Response Time', 'performance', performance.averageResponseTime, thresholds.maxResponseTime, performance.averageResponseTime <= thresholds.maxResponseTime, 'maximum'));
187
- }
188
- if (thresholds.minThroughput !== undefined) {
189
- validations.push(this.createValidation('Throughput', 'performance', performance.throughput, thresholds.minThroughput, performance.throughput >= thresholds.minThroughput, 'minimum'));
190
- }
191
- if (thresholds.maxErrorRate !== undefined) {
192
- const errorRatePercent = performance.errorRate * 100;
193
- const thresholdPercent = thresholds.maxErrorRate * 100;
194
- validations.push(this.createValidation('Error Rate', 'performance', errorRatePercent, thresholdPercent, performance.errorRate <= thresholds.maxErrorRate, 'maximum'));
195
- }
196
- return validations;
197
- }
198
- validateCodeQuality(codeQuality, thresholds) {
199
- const validations = [];
200
- if (thresholds.maxComplexity !== undefined) {
201
- validations.push(this.createValidation('Code Complexity', 'code-quality', codeQuality.complexity, thresholds.maxComplexity, codeQuality.complexity <= thresholds.maxComplexity, 'maximum'));
202
- }
203
- if (thresholds.minMaintainability !== undefined) {
204
- validations.push(this.createValidation('Maintainability Index', 'code-quality', codeQuality.maintainability, thresholds.minMaintainability, codeQuality.maintainability >= thresholds.minMaintainability, 'minimum'));
205
- }
206
- if (thresholds.maxDuplication !== undefined) {
207
- validations.push(this.createValidation('Code Duplication', 'code-quality', codeQuality.duplication, thresholds.maxDuplication, codeQuality.duplication <= thresholds.maxDuplication, 'maximum'));
208
- }
209
- return validations;
210
- }
211
- createValidation(name, category, value, threshold, passed, type, overrideSeverity) {
212
- const deviation = type === 'minimum'
213
- ? ((value - threshold) / threshold) * 100
214
- : ((threshold - value) / threshold) * 100;
215
- const severity = overrideSeverity || this.determineSeverity(deviation, passed);
216
- const message = passed
217
- ? `${name} meets threshold (${value.toFixed(2)} ${type === 'minimum' ? '≥' : '≤'} ${threshold})`
218
- : `${name} below threshold (${value.toFixed(2)} ${type === 'minimum' ? '<' : '>'} ${threshold})`;
219
- return {
220
- name,
221
- category,
222
- value,
223
- threshold,
224
- passed,
225
- deviation,
226
- severity,
227
- message
228
- };
229
- }
230
- determineSeverity(deviation, passed) {
231
- if (passed)
232
- return 'low';
233
- if (deviation < -50)
234
- return 'critical';
235
- if (deviation < -25)
236
- return 'high';
237
- if (deviation < -10)
238
- return 'medium';
239
- return 'low';
240
- }
241
- calculateSummary(validations) {
242
- return {
243
- total: validations.length,
244
- passed: validations.filter(v => v.passed).length,
245
- failed: validations.filter(v => !v.passed).length,
246
- critical: validations.filter(v => !v.passed && v.severity === 'critical').length,
247
- warnings: validations.filter(v => !v.passed && v.severity !== 'critical').length
248
- };
249
- }
250
- calculateOverallScore(validations) {
251
- if (validations.length === 0)
252
- return 0;
253
- const passedCount = validations.filter(v => v.passed).length;
254
- return Math.round((passedCount / validations.length) * 100 * 100) / 100;
255
- }
256
- generateRecommendations(validations, strictMode) {
257
- const recommendations = [];
258
- const failedValidations = validations.filter(v => !v.passed);
259
- for (const validation of failedValidations) {
260
- switch (validation.category) {
261
- case 'coverage':
262
- recommendations.push(`Increase ${validation.name.toLowerCase()} to at least ${validation.threshold}%`);
263
- break;
264
- case 'test-results':
265
- recommendations.push(`Improve ${validation.name.toLowerCase()} to meet ${validation.threshold}% threshold`);
266
- break;
267
- case 'security':
268
- recommendations.push(`Address security vulnerabilities: ${validation.name.toLowerCase()}`);
269
- break;
270
- case 'performance':
271
- recommendations.push(`Optimize ${validation.name.toLowerCase()} to meet performance requirements`);
272
- break;
273
- case 'code-quality':
274
- recommendations.push(`Refactor code to improve ${validation.name.toLowerCase()}`);
275
- break;
276
- }
277
- }
278
- if (failedValidations.length === 0) {
279
- recommendations.push('All quality metrics meet or exceed thresholds');
280
- }
281
- else if (strictMode) {
282
- recommendations.push('Strict mode enabled: all metrics must pass before deployment');
283
- }
284
- return recommendations;
285
- }
286
- }
287
- exports.QualityValidateMetricsHandler = QualityValidateMetricsHandler;
288
- //# sourceMappingURL=quality-validate-metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality-validate-metrics.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-validate-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,279 +0,0 @@
1
- /**
2
- * Quality Analysis Handler
3
- *
4
- * Handles comprehensive quality analysis and reporting.
5
- * Generates insights and recommendations for quality improvement.
6
- *
7
- * @version 1.0.0
8
- * @author Agentic QE Team
9
- */
10
- import { BaseHandler, HandlerResponse } from './base-handler.js';
11
- import { QualityAnalysisParams } from '../tools.js';
12
- import { AgentRegistry } from '../services/AgentRegistry.js';
13
- import { HookExecutor } from '../services/HookExecutor.js';
14
- export interface QualityAnalyzeArgs {
15
- params: QualityAnalysisParams;
16
- dataSource?: {
17
- testResults?: string;
18
- codeMetrics?: string | any;
19
- performanceData?: string;
20
- context?: {
21
- deploymentTarget?: 'development' | 'staging' | 'production';
22
- criticality?: 'low' | 'medium' | 'high' | 'critical';
23
- environment?: string;
24
- changes?: any[];
25
- };
26
- };
27
- }
28
- export interface QualityReport {
29
- id: string;
30
- scope: string;
31
- analysisType: string;
32
- generatedAt: string;
33
- metrics: QualityMetrics;
34
- assessments: QualityAssessment[];
35
- recommendations: Recommendation[];
36
- trends: TrendAnalysis;
37
- thresholds: ThresholdResults;
38
- score: CompositeQualityScore;
39
- }
40
- export interface QualityMetrics {
41
- code: CodeQualityMetrics;
42
- test: TestQualityMetrics;
43
- performance: PerformanceQualityMetrics;
44
- security: SecurityQualityMetrics;
45
- maintainability: MaintainabilityMetrics;
46
- }
47
- export interface CodeQualityMetrics {
48
- complexity: {
49
- cyclomatic: number;
50
- cognitive: number;
51
- maintainabilityIndex: number;
52
- };
53
- coverage: {
54
- line: number;
55
- branch: number;
56
- function: number;
57
- statement: number;
58
- };
59
- duplication: {
60
- percentage: number;
61
- lines: number;
62
- blocks: number;
63
- };
64
- technicalDebt: {
65
- ratio: number;
66
- estimatedHours: number;
67
- issues: TechnicalDebtIssue[];
68
- };
69
- }
70
- export interface TestQualityMetrics {
71
- reliability: {
72
- flakyTests: number;
73
- successRate: number;
74
- averageRetries: number;
75
- };
76
- effectiveness: {
77
- mutationScore: number;
78
- defectDetectionRate: number;
79
- falsePositiveRate: number;
80
- };
81
- efficiency: {
82
- executionTime: number;
83
- parallelization: number;
84
- resourceUsage: number;
85
- };
86
- coverage: {
87
- achieved: number;
88
- target: number;
89
- gaps: CoverageGap[];
90
- };
91
- }
92
- export interface PerformanceQualityMetrics {
93
- responseTime: {
94
- average: number;
95
- p95: number;
96
- p99: number;
97
- };
98
- throughput: {
99
- requestsPerSecond: number;
100
- concurrent: number;
101
- };
102
- resources: {
103
- cpu: number;
104
- memory: number;
105
- network: number;
106
- };
107
- bottlenecks: PerformanceBottleneck[];
108
- }
109
- export interface SecurityQualityMetrics {
110
- vulnerabilities: {
111
- critical: number;
112
- high: number;
113
- medium: number;
114
- low: number;
115
- };
116
- compliance: {
117
- owasp: number;
118
- score: number;
119
- issues: SecurityIssue[];
120
- };
121
- dependencies: {
122
- outdated: number;
123
- vulnerable: number;
124
- licenses: LicenseIssue[];
125
- };
126
- }
127
- export interface MaintainabilityMetrics {
128
- readability: number;
129
- documentation: number;
130
- testability: number;
131
- modularity: number;
132
- changeability: number;
133
- }
134
- export interface QualityAssessment {
135
- category: string;
136
- score: number;
137
- status: 'excellent' | 'good' | 'fair' | 'poor' | 'critical';
138
- details: string;
139
- evidence: string[];
140
- impact: 'low' | 'medium' | 'high' | 'critical';
141
- }
142
- export interface Recommendation {
143
- id: string;
144
- category: string;
145
- priority: 'low' | 'medium' | 'high' | 'critical';
146
- title: string;
147
- description: string;
148
- effort: 'low' | 'medium' | 'high';
149
- impact: 'low' | 'medium' | 'high';
150
- actions: RecommendationAction[];
151
- estimatedHours: number;
152
- }
153
- export interface RecommendationAction {
154
- type: 'code' | 'test' | 'process' | 'tooling';
155
- description: string;
156
- files?: string[];
157
- automated: boolean;
158
- }
159
- export interface TrendAnalysis {
160
- direction: 'improving' | 'stable' | 'declining';
161
- velocity: number;
162
- predictions: TrendPrediction[];
163
- historical: HistoricalDataPoint[];
164
- }
165
- export interface TrendPrediction {
166
- metric: string;
167
- predictedValue: number;
168
- confidence: number;
169
- timeframe: string;
170
- }
171
- export interface HistoricalDataPoint {
172
- date: string;
173
- metrics: Record<string, number>;
174
- }
175
- export interface ThresholdResults {
176
- passed: boolean;
177
- failed: ThresholdFailure[];
178
- warnings: ThresholdWarning[];
179
- }
180
- export interface ThresholdFailure {
181
- metric: string;
182
- actual: number;
183
- threshold: number;
184
- severity: 'warning' | 'error' | 'critical';
185
- }
186
- export interface ThresholdWarning {
187
- metric: string;
188
- actual: number;
189
- threshold: number;
190
- message: string;
191
- }
192
- export interface CompositeQualityScore {
193
- overall: number;
194
- breakdown: Record<string, number>;
195
- grade: 'A+' | 'A' | 'B+' | 'B' | 'C+' | 'C' | 'D' | 'F';
196
- interpretation: string;
197
- }
198
- export interface TechnicalDebtIssue {
199
- file: string;
200
- line: number;
201
- type: string;
202
- severity: string;
203
- estimatedHours: number;
204
- description: string;
205
- }
206
- export interface CoverageGap {
207
- file: string;
208
- lines: number[];
209
- functions: string[];
210
- priority: string;
211
- }
212
- export interface PerformanceBottleneck {
213
- type: string;
214
- location: string;
215
- impact: number;
216
- recommendation: string;
217
- }
218
- export interface SecurityIssue {
219
- type: string;
220
- severity: string;
221
- description: string;
222
- location: string;
223
- cwe?: string;
224
- }
225
- export interface LicenseIssue {
226
- dependency: string;
227
- license: string;
228
- compatibility: string;
229
- risk: string;
230
- }
231
- export declare class QualityAnalyzeHandler extends BaseHandler {
232
- private analysisHistory;
233
- private analyzers;
234
- private registry;
235
- private hookExecutor;
236
- constructor(registry: AgentRegistry, hookExecutor: HookExecutor);
237
- handle(args: QualityAnalyzeArgs): Promise<HandlerResponse>;
238
- private initializeAnalyzers;
239
- private validateQualityAnalysisParams;
240
- private performQualityAnalysis;
241
- private collectMetrics;
242
- private collectCodeMetrics;
243
- private collectTestMetrics;
244
- private collectPerformanceMetrics;
245
- private collectSecurityMetrics;
246
- private collectMaintainabilityMetrics;
247
- private performAssessments;
248
- private assessCodeQuality;
249
- private assessTestQuality;
250
- private assessPerformanceQuality;
251
- private assessSecurityQuality;
252
- private generateRecommendations;
253
- private createRecommendationForAssessment;
254
- private generateProactiveRecommendations;
255
- private analyzeTrends;
256
- private createEmptyTrends;
257
- private evaluateThresholds;
258
- private calculateCompositeScore;
259
- private normalizeScore;
260
- private calculateSecurityScore;
261
- private estimateHours;
262
- private getMetricValue;
263
- private interpretScore;
264
- private generateTechnicalDebtIssues;
265
- private generateCoverageGaps;
266
- private generatePerformanceBottlenecks;
267
- private generateSecurityIssues;
268
- private generateLicenseIssues;
269
- private generateHistoricalData;
270
- /**
271
- * Get quality report by ID
272
- */
273
- getReport(reportId: string): QualityReport | undefined;
274
- /**
275
- * List all quality reports
276
- */
277
- listReports(): QualityReport[];
278
- }
279
- //# sourceMappingURL=quality-analyze.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality-analyze.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/quality-analyze.ts"],"names":[],"mappings":"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"}