agentic-qe 2.3.2 → 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 (127) hide show
  1. package/CHANGELOG.md +43 -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/learning/PerformanceTracker.d.ts +9 -0
  16. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  17. package/dist/learning/PerformanceTracker.js +26 -2
  18. package/dist/learning/PerformanceTracker.js.map +1 -1
  19. package/dist/mcp/server-instructions.d.ts +1 -1
  20. package/dist/mcp/server-instructions.js +1 -1
  21. package/package.json +3 -1
  22. package/scripts/README.md +352 -0
  23. package/scripts/hooks/capture-task-learning.js +191 -0
  24. package/scripts/hooks/emit-task-complete.sh +35 -0
  25. package/scripts/hooks/emit-task-spawn.sh +27 -0
  26. package/.claude/agents/failing-agent.json +0 -9
  27. package/.claude/agents/test-agent.json +0 -9
  28. package/dist/App.d.ts +0 -5
  29. package/dist/App.d.ts.map +0 -1
  30. package/dist/App.js +0 -15
  31. package/dist/App.js.map +0 -1
  32. package/dist/cli/init/utils.d.ts +0 -183
  33. package/dist/cli/init/utils.d.ts.map +0 -1
  34. package/dist/cli/init/utils.js +0 -354
  35. package/dist/cli/init/utils.js.map +0 -1
  36. package/dist/components/Dashboard/Dashboard.d.ts +0 -4
  37. package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
  38. package/dist/components/Dashboard/Dashboard.js +0 -148
  39. package/dist/components/Dashboard/Dashboard.js.map +0 -1
  40. package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
  41. package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
  42. package/dist/components/Dashboard/DashboardHeader.js +0 -138
  43. package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
  44. package/dist/contexts/DashboardContext.d.ts +0 -41
  45. package/dist/contexts/DashboardContext.d.ts.map +0 -1
  46. package/dist/contexts/DashboardContext.js +0 -187
  47. package/dist/contexts/DashboardContext.js.map +0 -1
  48. package/dist/core/transport/QUICTransport.d.ts +0 -320
  49. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  50. package/dist/core/transport/QUICTransport.js +0 -711
  51. package/dist/core/transport/QUICTransport.js.map +0 -1
  52. package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
  53. package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
  54. package/dist/learning/LearningPersistenceAdapter.js +0 -202
  55. package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
  56. package/dist/learning/algorithms/QLearning.d.ts +0 -68
  57. package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
  58. package/dist/learning/algorithms/QLearning.js +0 -116
  59. package/dist/learning/algorithms/QLearning.js.map +0 -1
  60. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
  61. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
  62. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
  63. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
  64. package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
  65. package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
  66. package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
  67. package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
  68. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
  69. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
  70. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
  71. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
  72. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
  73. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
  74. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
  75. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
  76. package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
  77. package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
  78. package/dist/mcp/handlers/optimize-tests.js +0 -533
  79. package/dist/mcp/handlers/optimize-tests.js.map +0 -1
  80. package/dist/mcp/handlers/predict-defects.d.ts +0 -194
  81. package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
  82. package/dist/mcp/handlers/predict-defects.js +0 -722
  83. package/dist/mcp/handlers/predict-defects.js.map +0 -1
  84. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
  85. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
  86. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
  87. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
  88. package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
  89. package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
  90. package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
  91. package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
  92. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
  93. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
  94. package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
  95. package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
  96. package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
  97. package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
  98. package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
  99. package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
  100. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
  101. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
  102. package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
  103. package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
  104. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
  105. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
  106. package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
  107. package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
  108. package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
  109. package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
  110. package/dist/mcp/handlers/quality-analyze.js +0 -720
  111. package/dist/mcp/handlers/quality-analyze.js.map +0 -1
  112. package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
  113. package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
  114. package/dist/mcp/handlers/security/check-authz.js +0 -434
  115. package/dist/mcp/handlers/security/check-authz.js.map +0 -1
  116. package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
  117. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
  118. package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
  119. package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
  120. package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
  121. package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
  122. package/dist/mcp/handlers/security/validate-auth.js +0 -294
  123. package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
  124. package/dist/mcp/handlers/test-generate.d.ts +0 -107
  125. package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
  126. package/dist/mcp/handlers/test-generate.js +0 -454
  127. 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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"}