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,471 +0,0 @@
1
- "use strict";
2
- /**
3
- * Regression Risk Analysis Handler
4
- *
5
- * Analyzes code changes to assess regression risk and suggest
6
- * appropriate testing strategies.
7
- *
8
- * @version 1.0.0
9
- * @author Agentic QE Team
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RegressionRiskAnalyzeHandler = void 0;
13
- const base_handler_js_1 = require("../base-handler.js");
14
- const SecureRandom_js_1 = require("../../../utils/SecureRandom.js");
15
- /**
16
- * Regression Risk Analysis Handler
17
- */
18
- class RegressionRiskAnalyzeHandler extends base_handler_js_1.BaseHandler {
19
- constructor(registry, hookExecutor) {
20
- super();
21
- this.registry = registry;
22
- this.hookExecutor = hookExecutor;
23
- }
24
- async handle(args) {
25
- return this.safeHandle(async () => {
26
- const requestId = this.generateRequestId();
27
- const startTime = performance.now();
28
- this.log('info', 'Starting regression risk analysis', { requestId, args });
29
- // Validate input - accept either 'changeSet' or 'changes'
30
- if (!args.changeSet && !args.changes) {
31
- throw new Error('Either "changeSet" or "changes" parameter is required');
32
- }
33
- // Transform 'changes' to 'changeSet' if needed
34
- const normalizedArgs = this.normalizeArgs(args);
35
- // Validate normalized changeSet
36
- if (!normalizedArgs.changeSet?.repository) {
37
- this.log('warn', 'Repository not provided, using "current" as default');
38
- normalizedArgs.changeSet = normalizedArgs.changeSet || {
39
- repository: 'current',
40
- baseBranch: 'main',
41
- compareBranch: 'HEAD'
42
- };
43
- }
44
- // Execute pre-task hook
45
- await this.hookExecutor.executeHook('pre-task', {
46
- taskId: requestId,
47
- taskType: 'regression-risk-analyze',
48
- metadata: normalizedArgs
49
- });
50
- // Run regression risk analysis
51
- const result = await this.analyzeRegressionRisk(normalizedArgs, requestId);
52
- // Execute post-task hook
53
- await this.hookExecutor.executeHook('post-task', {
54
- taskId: requestId,
55
- taskType: 'regression-risk-analyze',
56
- result
57
- });
58
- const executionTime = performance.now() - startTime;
59
- this.log('info', 'Regression risk analysis completed', {
60
- requestId,
61
- overallRisk: result.overallRisk.level,
62
- executionTime
63
- });
64
- return this.createSuccessResponse(result, requestId);
65
- });
66
- }
67
- /**
68
- * Normalize arguments to support both 'changes' and 'changeSet' formats
69
- */
70
- normalizeArgs(args) {
71
- // If changeSet is already provided, return as-is
72
- if (args.changeSet) {
73
- return args;
74
- }
75
- // Transform 'changes' array to 'changeSet' structure
76
- if (args.changes && args.changes.length > 0) {
77
- const files = args.changes.map(change => {
78
- // Map change type
79
- let changeType = 'modified';
80
- if (change.type === 'add')
81
- changeType = 'added';
82
- else if (change.type === 'delete')
83
- changeType = 'deleted';
84
- else if (change.type === 'rename')
85
- changeType = 'renamed';
86
- else if (change.type === 'refactor' || change.type === 'modify')
87
- changeType = 'modified';
88
- // Estimate linesAdded/linesRemoved from linesChanged
89
- const linesAdded = changeType === 'added' ? change.linesChanged : Math.floor(change.linesChanged * 0.6);
90
- const linesRemoved = changeType === 'deleted' ? change.linesChanged : Math.floor(change.linesChanged * 0.4);
91
- return {
92
- path: change.file,
93
- linesAdded,
94
- linesRemoved,
95
- changeType
96
- };
97
- });
98
- return {
99
- ...args,
100
- changeSet: {
101
- repository: 'current',
102
- baseBranch: 'main',
103
- compareBranch: 'HEAD',
104
- files
105
- }
106
- };
107
- }
108
- // No valid input
109
- throw new Error('Either "changeSet" or "changes" parameter is required');
110
- }
111
- /**
112
- * Analyze regression risk
113
- */
114
- async analyzeRegressionRisk(args, requestId) {
115
- const analysisStartTime = performance.now();
116
- const depth = args.analysisConfig?.depth || 'standard';
117
- // Get files to analyze (args.changeSet is guaranteed to exist after normalization)
118
- const changeSet = args.changeSet;
119
- const files = changeSet.files || await this.detectChangedFiles(changeSet);
120
- // Analyze each file
121
- const fileRisks = await Promise.all(files.map(file => this.analyzeFile(file, args, depth)));
122
- // Calculate overall risk
123
- const overallRisk = this.calculateOverallRisk(fileRisks);
124
- // Perform impact analysis
125
- const impactAnalysis = this.performImpactAnalysis(fileRisks, files);
126
- // Generate testing strategy
127
- const testingStrategy = this.generateTestingStrategy(fileRisks, impactAnalysis, overallRisk);
128
- // Generate recommendations
129
- const recommendations = this.generateRecommendations(overallRisk, impactAnalysis, testingStrategy);
130
- const analysisTime = performance.now() - analysisStartTime;
131
- return {
132
- id: requestId,
133
- overallRisk,
134
- fileRisks,
135
- impactAnalysis,
136
- testingStrategy,
137
- recommendations,
138
- metrics: {
139
- totalFiles: files.length,
140
- highRiskFiles: fileRisks.filter(f => f.riskLevel === 'high' || f.riskLevel === 'critical').length,
141
- criticalPaths: impactAnalysis.criticalPaths.length,
142
- estimatedTestTime: testingStrategy.executionPlan.totalEstimatedTime,
143
- analysisTime
144
- }
145
- };
146
- }
147
- /**
148
- * Detect changed files (simulated)
149
- */
150
- async detectChangedFiles(changeSet) {
151
- // Simulate file detection
152
- return [
153
- { path: 'src/core/payment.ts', linesAdded: 45, linesRemoved: 12, changeType: 'modified' },
154
- { path: 'src/utils/validator.ts', linesAdded: 20, linesRemoved: 5, changeType: 'modified' },
155
- { path: 'src/api/routes.ts', linesAdded: 8, linesRemoved: 3, changeType: 'modified' }
156
- ];
157
- }
158
- /**
159
- * Analyze a single file
160
- */
161
- async analyzeFile(file, args, depth) {
162
- // Calculate risk factors
163
- const factors = this.calculateRiskFactors(file, args);
164
- // Calculate overall risk score
165
- const riskScore = factors.reduce((sum, f) => sum + (f.score * f.weight), 0);
166
- // Determine risk level
167
- let riskLevel = 'low';
168
- if (riskScore > 7)
169
- riskLevel = 'critical';
170
- else if (riskScore > 5)
171
- riskLevel = 'high';
172
- else if (riskScore > 3)
173
- riskLevel = 'medium';
174
- // Analyze impact scope
175
- const impactScope = this.analyzeImpactScope(file);
176
- // Get historical data
177
- const historicalData = this.getHistoricalData(file);
178
- // Suggest tests
179
- const suggestedTests = this.suggestTests(file, riskLevel, factors);
180
- return {
181
- file: file.path,
182
- riskLevel,
183
- riskScore,
184
- factors,
185
- impactScope,
186
- historicalData,
187
- suggestedTests
188
- };
189
- }
190
- /**
191
- * Calculate risk factors for a file
192
- */
193
- calculateRiskFactors(file, args) {
194
- const factors = [];
195
- // Change size factor
196
- const changeSize = file.linesAdded + file.linesRemoved;
197
- const changeSizeScore = Math.min(changeSize / 50, 10);
198
- factors.push({
199
- category: 'change-size',
200
- name: 'Change Magnitude',
201
- score: changeSizeScore,
202
- weight: 0.2,
203
- description: `${changeSize} lines changed`,
204
- mitigation: 'Break into smaller, incremental changes'
205
- });
206
- // Complexity factor (simulated)
207
- const complexityScore = SecureRandom_js_1.SecureRandom.randomFloat() * 10;
208
- factors.push({
209
- category: 'complexity',
210
- name: 'Code Complexity',
211
- score: complexityScore,
212
- weight: 0.25,
213
- description: `Cyclomatic complexity: ${complexityScore.toFixed(1)}`,
214
- mitigation: 'Refactor complex functions'
215
- });
216
- // Coverage factor
217
- const coverageScore = args.testCoverage?.currentCoverage
218
- ? (100 - args.testCoverage.currentCoverage) / 10
219
- : 5;
220
- factors.push({
221
- category: 'coverage',
222
- name: 'Test Coverage',
223
- score: coverageScore,
224
- weight: 0.3,
225
- description: `${(100 - coverageScore * 10).toFixed(0)}% coverage`,
226
- mitigation: 'Increase test coverage to >80%'
227
- });
228
- // Dependencies factor (simulated)
229
- const dependencyScore = SecureRandom_js_1.SecureRandom.randomFloat() * 10;
230
- factors.push({
231
- category: 'dependencies',
232
- name: 'Dependency Impact',
233
- score: dependencyScore,
234
- weight: 0.15,
235
- description: `Affects ${Math.floor(dependencyScore)} dependent modules`,
236
- mitigation: 'Review all dependent modules'
237
- });
238
- // Historical defects factor (simulated)
239
- const historyScore = SecureRandom_js_1.SecureRandom.randomFloat() * 10;
240
- factors.push({
241
- category: 'history',
242
- name: 'Defect History',
243
- score: historyScore,
244
- weight: 0.1,
245
- description: `${Math.floor(historyScore)} past defects`,
246
- mitigation: 'Extra scrutiny during review'
247
- });
248
- return factors;
249
- }
250
- /**
251
- * Analyze impact scope
252
- */
253
- analyzeImpactScope(file) {
254
- return {
255
- directDependents: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 15),
256
- indirectDependents: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 50),
257
- publicAPI: file.path.includes('api') || file.path.includes('public'),
258
- sharedUtility: file.path.includes('util') || file.path.includes('common')
259
- };
260
- }
261
- /**
262
- * Get historical data
263
- */
264
- getHistoricalData(file) {
265
- return {
266
- pastDefects: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 10),
267
- changeFrequency: SecureRandom_js_1.SecureRandom.randomFloat() * 5,
268
- lastModified: new Date(Date.now() - SecureRandom_js_1.SecureRandom.randomFloat() * 90 * 24 * 60 * 60 * 1000).toISOString(),
269
- contributors: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 8) + 1
270
- };
271
- }
272
- /**
273
- * Suggest tests for a file
274
- */
275
- suggestTests(file, riskLevel, factors) {
276
- const tests = [];
277
- tests.push(`Unit tests for ${file.path}`);
278
- if (riskLevel === 'high' || riskLevel === 'critical') {
279
- tests.push(`Integration tests covering ${file.path} dependencies`);
280
- tests.push(`E2E tests for affected user flows`);
281
- }
282
- if (factors.some(f => f.category === 'dependencies' && f.score > 5)) {
283
- tests.push(`Contract tests for API boundaries`);
284
- }
285
- return tests;
286
- }
287
- /**
288
- * Calculate overall risk
289
- */
290
- calculateOverallRisk(fileRisks) {
291
- const avgScore = fileRisks.reduce((sum, f) => sum + f.riskScore, 0) / fileRisks.length;
292
- const criticalCount = fileRisks.filter(f => f.riskLevel === 'critical').length;
293
- const highCount = fileRisks.filter(f => f.riskLevel === 'high').length;
294
- let level = 'low';
295
- if (criticalCount > 0 || avgScore > 7)
296
- level = 'critical';
297
- else if (highCount > 2 || avgScore > 5)
298
- level = 'high';
299
- else if (highCount > 0 || avgScore > 3)
300
- level = 'medium';
301
- const confidence = Math.min(fileRisks.length / 10, 1) * 0.9;
302
- return {
303
- level,
304
- score: avgScore * 10,
305
- confidence,
306
- summary: this.generateRiskSummary(level, fileRisks)
307
- };
308
- }
309
- /**
310
- * Generate risk summary
311
- */
312
- generateRiskSummary(level, fileRisks) {
313
- const criticalCount = fileRisks.filter(f => f.riskLevel === 'critical').length;
314
- const highCount = fileRisks.filter(f => f.riskLevel === 'high').length;
315
- if (level === 'critical') {
316
- return `Critical risk: ${criticalCount} critical and ${highCount} high-risk files. Comprehensive testing required.`;
317
- }
318
- else if (level === 'high') {
319
- return `High risk: ${highCount} high-risk files detected. Extended testing recommended.`;
320
- }
321
- else if (level === 'medium') {
322
- return `Medium risk: Standard testing procedures should suffice.`;
323
- }
324
- return `Low risk: Minimal regression potential detected.`;
325
- }
326
- /**
327
- * Perform impact analysis
328
- */
329
- performImpactAnalysis(fileRisks, files) {
330
- const highRiskFiles = fileRisks.filter(f => f.riskLevel === 'high' || f.riskLevel === 'critical');
331
- let scope = 'isolated';
332
- const totalDependents = fileRisks.reduce((sum, f) => sum + f.impactScope.directDependents, 0);
333
- if (totalDependents > 20)
334
- scope = 'system-wide';
335
- else if (totalDependents > 10)
336
- scope = 'widespread';
337
- else if (totalDependents > 5)
338
- scope = 'moderate';
339
- const criticalPaths = highRiskFiles.map(f => ({
340
- path: f.file,
341
- severity: f.riskLevel,
342
- description: `High-risk change affecting ${f.impactScope.directDependents} components`
343
- }));
344
- return {
345
- scope,
346
- affectedComponents: [...new Set(fileRisks.map(f => f.file.split('/')[1] || 'unknown'))],
347
- criticalPaths,
348
- userImpact: {
349
- affectedFeatures: ['Payment Flow', 'Validation', 'API Routes'],
350
- estimatedUsers: scope === 'system-wide' ? 10000 : scope === 'widespread' ? 5000 : 1000,
351
- severity: highRiskFiles.length > 2 ? 'major' : highRiskFiles.length > 0 ? 'moderate' : 'minor'
352
- },
353
- rollbackComplexity: scope === 'system-wide' ? 'very-difficult' : scope === 'widespread' ? 'difficult' : 'moderate'
354
- };
355
- }
356
- /**
357
- * Generate testing strategy
358
- */
359
- generateTestingStrategy(fileRisks, impactAnalysis, overallRisk) {
360
- const priority = overallRisk.level === 'critical' ? 'critical'
361
- : overallRisk.level === 'high' ? 'high'
362
- : overallRisk.level === 'medium' ? 'elevated'
363
- : 'standard';
364
- const recommendedTests = [
365
- {
366
- type: 'unit',
367
- priority: 'must-have',
368
- scope: 'All changed files',
369
- estimatedTime: fileRisks.length * 15,
370
- rationale: 'Verify individual component functionality'
371
- },
372
- {
373
- type: 'integration',
374
- priority: overallRisk.level === 'critical' ? 'must-have' : 'should-have',
375
- scope: 'Component interactions',
376
- estimatedTime: fileRisks.length * 30,
377
- rationale: 'Verify interactions between modified components'
378
- }
379
- ];
380
- if (overallRisk.level === 'critical' || overallRisk.level === 'high') {
381
- recommendedTests.push({
382
- type: 'e2e',
383
- priority: 'must-have',
384
- scope: 'Critical user flows',
385
- estimatedTime: impactAnalysis.criticalPaths.length * 45,
386
- rationale: 'Verify end-to-end functionality for affected flows'
387
- });
388
- }
389
- return {
390
- priority,
391
- recommendedTests,
392
- coverageGoals: {
393
- overall: 80,
394
- newCode: 90,
395
- modifiedCode: 85
396
- },
397
- executionPlan: {
398
- phases: [
399
- {
400
- name: 'Unit Testing',
401
- tests: ['All unit tests for changed files'],
402
- parallelizable: true,
403
- estimatedDuration: fileRisks.length * 15
404
- },
405
- {
406
- name: 'Integration Testing',
407
- tests: ['Integration tests for affected components'],
408
- parallelizable: true,
409
- estimatedDuration: fileRisks.length * 30
410
- }
411
- ],
412
- totalEstimatedTime: fileRisks.length * 45
413
- }
414
- };
415
- }
416
- /**
417
- * Generate recommendations
418
- */
419
- generateRecommendations(overallRisk, impactAnalysis, testingStrategy) {
420
- const recommendations = [];
421
- if (overallRisk.level === 'critical' || overallRisk.level === 'high') {
422
- recommendations.push({
423
- id: `rec-${Date.now()}-1`,
424
- priority: 'critical',
425
- category: 'testing',
426
- title: 'Execute comprehensive test suite',
427
- description: 'High regression risk requires extensive testing before deployment',
428
- actions: [
429
- 'Run full regression test suite',
430
- 'Perform manual exploratory testing',
431
- 'Execute load testing for critical paths'
432
- ],
433
- estimatedEffort: 8,
434
- riskReduction: 50
435
- });
436
- recommendations.push({
437
- id: `rec-${Date.now()}-2`,
438
- priority: 'high',
439
- category: 'deployment',
440
- title: 'Implement staged rollout',
441
- description: 'Deploy changes gradually to minimize impact',
442
- actions: [
443
- 'Deploy to staging environment first',
444
- 'Use feature flags for gradual rollout',
445
- 'Monitor key metrics closely'
446
- ],
447
- estimatedEffort: 4,
448
- riskReduction: 30
449
- });
450
- }
451
- if (impactAnalysis.rollbackComplexity === 'difficult' || impactAnalysis.rollbackComplexity === 'very-difficult') {
452
- recommendations.push({
453
- id: `rec-${Date.now()}-3`,
454
- priority: 'high',
455
- category: 'rollback-plan',
456
- title: 'Prepare detailed rollback plan',
457
- description: 'Complex changes require clear rollback procedures',
458
- actions: [
459
- 'Document rollback steps',
460
- 'Test rollback procedure in staging',
461
- 'Prepare database migration rollback scripts'
462
- ],
463
- estimatedEffort: 3,
464
- riskReduction: 20
465
- });
466
- }
467
- return recommendations;
468
- }
469
- }
470
- exports.RegressionRiskAnalyzeHandler = RegressionRiskAnalyzeHandler;
471
- //# sourceMappingURL=regression-risk-analyze.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"regression-risk-analyze.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/prediction/regression-risk-analyze.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Quality Decision Make Handler
3
- *
4
- * Makes intelligent go/no-go deployment decisions based on quality metrics,
5
- * risk assessment, and policy compliance.
6
- *
7
- * @version 1.0.0
8
- * @author Agentic QE Team - Agent 2
9
- */
10
- import { BaseHandler, HandlerResponse } from '../base-handler.js';
11
- import { HookExecutor } from '../../services/HookExecutor.js';
12
- export interface DecisionContext {
13
- projectId: string;
14
- buildId: string;
15
- environment: 'development' | 'staging' | 'production';
16
- deploymentType: 'standard' | 'hotfix' | 'rollback' | 'canary';
17
- requestedBy: string;
18
- urgency: 'low' | 'medium' | 'high' | 'critical';
19
- }
20
- export interface DecisionInputs {
21
- qualityGateResult: {
22
- decision: 'PASS' | 'FAIL' | 'ESCALATE';
23
- score: number;
24
- threshold: number;
25
- };
26
- riskAssessment: {
27
- overallRisk: 'critical' | 'high' | 'medium' | 'low';
28
- riskScore: number;
29
- };
30
- policyCompliance: {
31
- compliant: boolean;
32
- violations: number;
33
- criticalViolations: number;
34
- };
35
- historicalPerformance?: {
36
- recentDeploymentSuccessRate: number;
37
- averageIncidentCount: number;
38
- timesSinceLastIncident: number;
39
- };
40
- }
41
- export interface QualityDecisionMakeArgs {
42
- context: DecisionContext;
43
- inputs: DecisionInputs;
44
- overrides?: {
45
- allowPolicyOverride?: boolean;
46
- overrideReason?: string;
47
- approvedBy?: string;
48
- };
49
- decisionCriteria?: {
50
- minQualityScore?: number;
51
- maxRiskLevel?: 'critical' | 'high' | 'medium' | 'low';
52
- requireCompliance?: boolean;
53
- };
54
- }
55
- export interface DeploymentDecision {
56
- decisionId: string;
57
- decision: 'GO' | 'NO_GO' | 'CONDITIONAL_GO' | 'ESCALATE';
58
- confidence: number;
59
- reasoning: string;
60
- factors: DecisionFactor[];
61
- conditions?: DeploymentCondition[];
62
- recommendations: string[];
63
- approvalRequired: boolean;
64
- metadata: {
65
- decidedAt: string;
66
- executionTime: number;
67
- decisionModel: string;
68
- confidence: number;
69
- };
70
- }
71
- export interface DecisionFactor {
72
- name: string;
73
- category: 'quality' | 'risk' | 'compliance' | 'process' | 'historical';
74
- weight: number;
75
- value: number;
76
- threshold: number;
77
- passed: boolean;
78
- impact: 'blocking' | 'warning' | 'informational';
79
- description: string;
80
- }
81
- export interface DeploymentCondition {
82
- id: string;
83
- condition: string;
84
- required: boolean;
85
- verifiable: boolean;
86
- verificationMethod?: string;
87
- }
88
- export declare class QualityDecisionMakeHandler extends BaseHandler {
89
- private hookExecutor;
90
- private decisionWeights;
91
- constructor(hookExecutor: HookExecutor);
92
- handle(args: QualityDecisionMakeArgs): Promise<HandlerResponse>;
93
- private evaluateDecisionFactors;
94
- private calculateCompositeScore;
95
- private applyDecisionLogic;
96
- private applyOverrides;
97
- private requiresApproval;
98
- private generateConditions;
99
- private generateReasoning;
100
- private generateRecommendations;
101
- private calculateDecisionConfidence;
102
- private assessProductionReadiness;
103
- }
104
- //# sourceMappingURL=quality-decision-make.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality-decision-make.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-decision-make.ts"],"names":[],"mappings":"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"}