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,533 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test Optimization Handler
4
- *
5
- * Handles test suite optimization using sublinear algorithms.
6
- * Integrates with sublinear-core for mathematical optimization.
7
- *
8
- * @version 1.0.0
9
- * @author Agentic QE Team
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.OptimizeTestsHandler = void 0;
13
- const base_handler_js_1 = require("./base-handler.js");
14
- const SecureRandom_js_1 = require("../../utils/SecureRandom.js");
15
- class OptimizeTestsHandler extends base_handler_js_1.BaseHandler {
16
- constructor(registry, hookExecutor) {
17
- super();
18
- this.optimizationHistory = new Map();
19
- this.algorithms = new Map();
20
- this.registry = registry;
21
- this.hookExecutor = hookExecutor;
22
- this.initializeAlgorithms();
23
- }
24
- async handle(args) {
25
- const requestId = this.generateRequestId();
26
- this.log('info', 'Starting test optimization', { requestId, optimization: args.optimization });
27
- try {
28
- // Execute pre-task hook
29
- await this.hookExecutor.executePreTask({
30
- description: `Optimize tests using ${args.optimization.algorithm} algorithm targeting ${args.optimization.targetMetric}`,
31
- agentType: 'test-optimizer'
32
- });
33
- // Validate required parameters
34
- this.validateRequired(args, ['optimization']);
35
- this.validateOptimizationSpec(args.optimization);
36
- // Spawn test optimization agent via registry
37
- const { id: agentId } = await this.registry.spawnAgent('test-optimizer', {} // Agent config - using defaults
38
- );
39
- const { result: optimization, executionTime } = await this.measureExecutionTime(() => this.optimizeTestSuite(args));
40
- // Execute post-task hook with results
41
- await this.hookExecutor.executePostTask({
42
- taskId: agentId,
43
- results: {
44
- optimizationId: optimization.id,
45
- algorithm: optimization.algorithm,
46
- improvement: optimization.optimization.improvements[optimization.targetMetric],
47
- selectedTests: optimization.optimization.selectedTests.length,
48
- performance: optimization.performance
49
- }
50
- });
51
- this.log('info', `Test optimization completed in ${executionTime.toFixed(2)}ms`, {
52
- optimizationId: optimization.id,
53
- algorithm: optimization.algorithm,
54
- improvement: optimization.optimization.improvements[optimization.targetMetric]
55
- });
56
- return this.createSuccessResponse(optimization, requestId);
57
- }
58
- catch (error) {
59
- this.log('error', 'Test optimization failed', {
60
- error: error instanceof Error ? error.message : String(error)
61
- });
62
- return this.createErrorResponse(error instanceof Error ? error.message : 'Test optimization failed', requestId);
63
- }
64
- }
65
- initializeAlgorithms() {
66
- // Sublinear algorithm implementation
67
- this.algorithms.set('sublinear', {
68
- name: 'Sublinear Test Selection',
69
- complexity: 'O(log n)',
70
- description: 'Uses Johnson-Lindenstrauss dimension reduction for optimal test selection',
71
- parameters: {
72
- dimensionReduction: true,
73
- spectralSparsification: true,
74
- convergenceThreshold: 0.001
75
- },
76
- strengths: ['Low complexity', 'Scalable', 'Mathematically proven'],
77
- limitations: ['Requires large test suites', 'Approximation algorithm']
78
- });
79
- // Johnson-Lindenstrauss dimension reduction
80
- this.algorithms.set('johnson-lindenstrauss', {
81
- name: 'Johnson-Lindenstrauss Embedding',
82
- complexity: 'O(log²n)',
83
- description: 'Reduces high-dimensional test space while preserving distances',
84
- parameters: {
85
- targetDimension: 'auto',
86
- distortionFactor: 0.1,
87
- randomProjection: true
88
- },
89
- strengths: ['Preserves test relationships', 'Reduces complexity', 'Parallelizable'],
90
- limitations: ['Probabilistic guarantees', 'Memory overhead']
91
- });
92
- // Temporal advantage algorithm
93
- this.algorithms.set('temporal-advantage', {
94
- name: 'Temporal Computational Lead',
95
- complexity: 'O(n log n)',
96
- description: 'Optimizes for temporal advantage in distributed testing',
97
- parameters: {
98
- lightSpeedCalculation: true,
99
- networkLatency: true,
100
- distributedExecution: true
101
- },
102
- strengths: ['Future-proof', 'Distributed optimization', 'Real-time benefits'],
103
- limitations: ['Network dependent', 'Complex setup']
104
- });
105
- }
106
- validateOptimizationSpec(optimization) {
107
- const validAlgorithms = ['sublinear', 'johnson-lindenstrauss', 'temporal-advantage'];
108
- if (!validAlgorithms.includes(optimization.algorithm)) {
109
- throw new Error(`Invalid algorithm: ${optimization.algorithm}. Must be one of: ${validAlgorithms.join(', ')}`);
110
- }
111
- const validTargetMetrics = ['execution-time', 'coverage', 'cost', 'reliability'];
112
- if (!validTargetMetrics.includes(optimization.targetMetric)) {
113
- throw new Error(`Invalid target metric: ${optimization.targetMetric}. Must be one of: ${validTargetMetrics.join(', ')}`);
114
- }
115
- }
116
- async optimizeTestSuite(args) {
117
- const optimizationId = `optimization-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(3)}`;
118
- this.log('info', 'Performing test suite optimization', {
119
- optimizationId,
120
- algorithm: args.optimization.algorithm
121
- });
122
- // Analyze original test suite
123
- const originalSuite = await this.analyzeTestSuite(args.testSuite);
124
- // Apply optimization algorithm
125
- const optimizationResults = await this.applyOptimizationAlgorithm(args.optimization, originalSuite);
126
- // Generate optimized suite metrics
127
- const optimizedSuite = this.calculateOptimizedMetrics(originalSuite, optimizationResults);
128
- // Generate recommendations
129
- const recommendations = await this.generateOptimizationRecommendations(originalSuite, optimizedSuite, optimizationResults);
130
- // Create implementation plan
131
- const implementation = this.createImplementationPlan(optimizationResults, recommendations);
132
- // Calculate performance metrics
133
- const performance = this.calculateOptimizationPerformance(args.optimization, originalSuite, optimizedSuite);
134
- const testOptimization = {
135
- id: optimizationId,
136
- algorithm: args.optimization.algorithm,
137
- targetMetric: args.optimization.targetMetric,
138
- optimizedAt: new Date().toISOString(),
139
- originalSuite,
140
- optimizedSuite,
141
- optimization: optimizationResults,
142
- recommendations,
143
- implementation,
144
- performance
145
- };
146
- // Store optimization
147
- this.optimizationHistory.set(optimizationId, testOptimization);
148
- return testOptimization;
149
- }
150
- async analyzeTestSuite(testSuite) {
151
- // Simulate test suite analysis
152
- await new Promise(resolve => setTimeout(resolve, 100));
153
- const size = testSuite?.size || Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 1000 + 100); // 100-1100 tests
154
- return {
155
- totalTests: size,
156
- executionTime: size * (SecureRandom_js_1.SecureRandom.randomFloat() * 5 + 2), // 2-7 seconds per test
157
- coverage: SecureRandom_js_1.SecureRandom.randomFloat() * 20 + 75, // 75-95%
158
- cost: size * (SecureRandom_js_1.SecureRandom.randomFloat() * 0.5 + 0.1), // $0.10-$0.60 per test
159
- reliability: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 90, // 90-100%
160
- characteristics: this.analyzeTestCharacteristics(size)
161
- };
162
- }
163
- analyzeTestCharacteristics(size) {
164
- return {
165
- complexityDistribution: {
166
- 'low': SecureRandom_js_1.SecureRandom.randomFloat() * 0.4 + 0.3, // 30-70%
167
- 'medium': SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.2, // 20-50%
168
- 'high': SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.05 // 5-25%
169
- },
170
- typeDistribution: {
171
- 'unit': SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.5, // 50-80%
172
- 'integration': SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.15, // 15-35%
173
- 'e2e': SecureRandom_js_1.SecureRandom.randomFloat() * 0.1 + 0.05 // 5-15%
174
- },
175
- dependencyGraph: this.generateDependencyGraph(size),
176
- parallelizationPotential: SecureRandom_js_1.SecureRandom.randomFloat() * 0.4 + 0.6 // 60-100%
177
- };
178
- }
179
- generateDependencyGraph(size) {
180
- const nodes = [];
181
- const nodeCount = Math.min(size, 50); // Limit for simulation
182
- for (let i = 0; i < nodeCount; i++) {
183
- const dependencies = [];
184
- const depCount = Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 3); // 0-2 dependencies
185
- for (let j = 0; j < depCount && j < i; j++) {
186
- dependencies.push(`test-${j}`);
187
- }
188
- nodes.push({
189
- testId: `test-${i}`,
190
- dependencies,
191
- weight: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 1 // 1-11
192
- });
193
- }
194
- return nodes;
195
- }
196
- async applyOptimizationAlgorithm(optimization, originalSuite) {
197
- const algorithm = this.algorithms.get(optimization.algorithm);
198
- this.log('info', 'Applying optimization algorithm', {
199
- algorithm: algorithm.name,
200
- complexity: algorithm.complexity
201
- });
202
- // Simulate algorithm execution
203
- const executionTime = this.simulateAlgorithmExecution(algorithm, originalSuite);
204
- await new Promise(resolve => setTimeout(resolve, Math.min(executionTime, 1000))); // Cap simulation time
205
- // Calculate improvements
206
- const improvements = this.calculateImprovements(optimization, originalSuite);
207
- // Select optimal tests
208
- const selectedTests = this.selectOptimalTests(originalSuite, optimization, improvements);
209
- // Create execution plan
210
- const executionPlan = this.createExecutionPlan(selectedTests, originalSuite);
211
- // Calculate algorithm metrics
212
- const algorithmMetrics = this.calculateAlgorithmMetrics(algorithm, originalSuite, executionTime);
213
- // Identify tradeoffs
214
- const tradeoffs = this.identifyTradeoffs(optimization, improvements);
215
- return {
216
- improvements,
217
- selectedTests,
218
- executionPlan,
219
- algorithmMetrics,
220
- tradeoffs
221
- };
222
- }
223
- simulateAlgorithmExecution(algorithm, suite) {
224
- // Simulate execution time based on complexity
225
- const baseTime = 100; // Base 100ms
226
- const complexityMultiplier = algorithm.complexity.includes('log') ? 1.5 : 2.0;
227
- const sizeMultiplier = Math.log(suite.totalTests + 1);
228
- return baseTime * complexityMultiplier * sizeMultiplier;
229
- }
230
- calculateImprovements(optimization, originalSuite) {
231
- const targetMetric = optimization.targetMetric;
232
- const constraints = optimization.constraints || {};
233
- const improvements = {};
234
- // Calculate improvement for target metric
235
- switch (targetMetric) {
236
- case 'execution-time':
237
- improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 40 + 20; // 20-60% improvement
238
- improvements['coverage'] = -(SecureRandom_js_1.SecureRandom.randomFloat() * 5); // Slight coverage loss
239
- break;
240
- case 'coverage':
241
- improvements['coverage'] = SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 5; // 5-15% improvement
242
- improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 5; // Some time increase
243
- break;
244
- case 'cost':
245
- improvements['cost'] = SecureRandom_js_1.SecureRandom.randomFloat() * 30 + 15; // 15-45% cost reduction
246
- improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 20 + 10; // Time improvement
247
- break;
248
- case 'reliability':
249
- improvements['reliability'] = SecureRandom_js_1.SecureRandom.randomFloat() * 5 + 2; // 2-7% improvement
250
- improvements['execution-time'] = SecureRandom_js_1.SecureRandom.randomFloat() * 15 + 5; // Time improvement
251
- break;
252
- }
253
- return improvements;
254
- }
255
- selectOptimalTests(suite, optimization, improvements) {
256
- const selectedTests = [];
257
- const selectionRatio = SecureRandom_js_1.SecureRandom.randomFloat() * 0.3 + 0.6; // Select 60-90% of tests
258
- const selectedCount = Math.floor(suite.totalTests * selectionRatio);
259
- for (let i = 0; i < selectedCount; i++) {
260
- selectedTests.push({
261
- testId: `test-${i}`,
262
- priority: SecureRandom_js_1.SecureRandom.randomFloat() * 100,
263
- executionOrder: i,
264
- reason: this.getSelectionReason(optimization.targetMetric),
265
- estimatedImpact: SecureRandom_js_1.SecureRandom.randomFloat() * 10 + 1
266
- });
267
- }
268
- // Sort by priority
269
- selectedTests.sort((a, b) => b.priority - a.priority);
270
- // Update execution order
271
- selectedTests.forEach((test, index) => {
272
- test.executionOrder = index;
273
- });
274
- return selectedTests;
275
- }
276
- getSelectionReason(targetMetric) {
277
- const reasons = {
278
- 'execution-time': ['Fast execution', 'Low complexity', 'Independent'],
279
- 'coverage': ['High coverage contribution', 'Critical path', 'Edge case testing'],
280
- 'cost': ['Cost-effective', 'High ROI', 'Efficient resource usage'],
281
- 'reliability': ['Stable test', 'Low flakiness', 'Consistent results']
282
- };
283
- const metricReasons = reasons[targetMetric] || ['Optimal selection'];
284
- return metricReasons[Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * metricReasons.length)];
285
- }
286
- createExecutionPlan(selectedTests, suite) {
287
- const phaseCount = Math.ceil(selectedTests.length / 50); // Max 50 tests per phase
288
- const phases = [];
289
- for (let i = 0; i < phaseCount; i++) {
290
- const startIndex = i * 50;
291
- const endIndex = Math.min(startIndex + 50, selectedTests.length);
292
- const phaseTests = selectedTests.slice(startIndex, endIndex);
293
- phases.push({
294
- phaseId: `phase-${i + 1}`,
295
- tests: phaseTests.map(t => t.testId),
296
- estimatedDuration: phaseTests.length * 3, // 3 seconds per test average
297
- dependencies: i > 0 ? [`phase-${i}`] : [],
298
- parallelizable: SecureRandom_js_1.SecureRandom.randomFloat() > 0.3 // 70% chance of being parallelizable
299
- });
300
- }
301
- return {
302
- phases,
303
- parallelization: {
304
- maxParallelTests: Math.min(10, Math.ceil(selectedTests.length / 10)),
305
- batchSize: Math.min(5, Math.ceil(selectedTests.length / 20)),
306
- loadBalancing: 'adaptive',
307
- resourceSharing: true
308
- },
309
- estimatedDuration: Math.max(...phases.map(p => p.estimatedDuration)),
310
- resourceRequirements: this.calculateResourceRequirements(selectedTests)
311
- };
312
- }
313
- calculateResourceRequirements(selectedTests) {
314
- return [
315
- {
316
- type: 'cpu',
317
- amount: Math.min(80, selectedTests.length * 0.5), // Max 80% CPU
318
- duration: selectedTests.length * 2, // 2 seconds per test
319
- critical: true
320
- },
321
- {
322
- type: 'memory',
323
- amount: Math.min(1024, selectedTests.length * 10), // Max 1GB
324
- duration: selectedTests.length * 2,
325
- critical: true
326
- },
327
- {
328
- type: 'network',
329
- amount: selectedTests.length * 0.1, // Network usage
330
- duration: selectedTests.length * 2,
331
- critical: false
332
- }
333
- ];
334
- }
335
- calculateAlgorithmMetrics(algorithm, suite, executionTime) {
336
- return {
337
- complexity: algorithm.complexity,
338
- convergenceTime: executionTime,
339
- memoryUsage: suite.totalTests * 0.1, // MB
340
- accuracy: SecureRandom_js_1.SecureRandom.randomFloat() * 0.1 + 0.9, // 90-100%
341
- stability: SecureRandom_js_1.SecureRandom.randomFloat() * 0.05 + 0.95 // 95-100%
342
- };
343
- }
344
- identifyTradeoffs(optimization, improvements) {
345
- const tradeoffs = [];
346
- for (const [metric, improvement] of Object.entries(improvements)) {
347
- if (metric !== optimization.targetMetric) {
348
- tradeoffs.push({
349
- metric,
350
- originalValue: 100, // Normalized base value
351
- optimizedValue: 100 + improvement,
352
- tradeoffRatio: improvement / 100,
353
- impact: improvement > 0 ? 'positive' : improvement < 0 ? 'negative' : 'neutral'
354
- });
355
- }
356
- }
357
- return tradeoffs;
358
- }
359
- calculateOptimizedMetrics(originalSuite, optimization) {
360
- const improvements = optimization.improvements;
361
- return {
362
- totalTests: optimization.selectedTests.length,
363
- executionTime: originalSuite.executionTime * (1 - (improvements['execution-time'] || 0) / 100),
364
- coverage: originalSuite.coverage * (1 + (improvements['coverage'] || 0) / 100),
365
- cost: originalSuite.cost * (1 - (improvements['cost'] || 0) / 100),
366
- reliability: originalSuite.reliability * (1 + (improvements['reliability'] || 0) / 100),
367
- characteristics: originalSuite.characteristics // Simplified: keep original characteristics
368
- };
369
- }
370
- async generateOptimizationRecommendations(originalSuite, optimizedSuite, optimization) {
371
- const recommendations = [];
372
- // Test removal recommendations
373
- const removedTests = originalSuite.totalTests - optimizedSuite.totalTests;
374
- if (removedTests > 0) {
375
- recommendations.push({
376
- id: `rec-remove-${Date.now()}`,
377
- category: 'test-removal',
378
- title: 'Remove Low-Value Tests',
379
- description: `Remove ${removedTests} tests that provide minimal value`,
380
- impact: optimization.improvements['execution-time'] || 0,
381
- effort: 'low',
382
- priority: 'medium',
383
- actions: [{
384
- type: 'test-removal',
385
- description: 'Remove identified low-value tests',
386
- automated: true
387
- }]
388
- });
389
- }
390
- // Parallelization recommendations
391
- if (optimization.executionPlan.parallelization.maxParallelTests > 1) {
392
- recommendations.push({
393
- id: `rec-parallel-${Date.now()}`,
394
- category: 'parallelization',
395
- title: 'Enable Parallel Test Execution',
396
- description: 'Configure test runner for parallel execution',
397
- impact: 40, // Estimated 40% time reduction
398
- effort: 'medium',
399
- priority: 'high',
400
- actions: [{
401
- type: 'infrastructure-change',
402
- description: 'Configure CI/CD for parallel test execution',
403
- automated: false
404
- }]
405
- });
406
- }
407
- // Resource optimization recommendations
408
- recommendations.push({
409
- id: `rec-resource-${Date.now()}`,
410
- category: 'resource-optimization',
411
- title: 'Optimize Resource Usage',
412
- description: 'Implement resource-aware test scheduling',
413
- impact: 20,
414
- effort: 'high',
415
- priority: 'medium',
416
- actions: [{
417
- type: 'infrastructure-change',
418
- description: 'Implement resource monitoring and scheduling',
419
- automated: true
420
- }]
421
- });
422
- return recommendations;
423
- }
424
- createImplementationPlan(optimization, recommendations) {
425
- const phases = [
426
- {
427
- phaseId: 'phase-1',
428
- name: 'Test Selection Implementation',
429
- description: 'Implement optimized test selection',
430
- tasks: [
431
- {
432
- taskId: 'task-1-1',
433
- description: 'Update test configuration',
434
- type: 'configuration',
435
- effort: 2,
436
- automated: true
437
- },
438
- {
439
- taskId: 'task-1-2',
440
- description: 'Remove low-value tests',
441
- type: 'code-change',
442
- effort: 4,
443
- automated: false
444
- }
445
- ],
446
- estimatedDuration: 6,
447
- dependencies: []
448
- },
449
- {
450
- phaseId: 'phase-2',
451
- name: 'Infrastructure Optimization',
452
- description: 'Implement infrastructure changes',
453
- tasks: [
454
- {
455
- taskId: 'task-2-1',
456
- description: 'Configure parallel execution',
457
- type: 'infrastructure',
458
- effort: 8,
459
- automated: false
460
- }
461
- ],
462
- estimatedDuration: 8,
463
- dependencies: ['phase-1']
464
- }
465
- ];
466
- return {
467
- phases,
468
- rollbackPlan: [
469
- {
470
- stepId: 'rollback-1',
471
- description: 'Restore original test configuration',
472
- automated: true,
473
- estimatedTime: 30
474
- }
475
- ],
476
- validation: [
477
- {
478
- stepId: 'validate-1',
479
- description: 'Verify test coverage maintained',
480
- criteria: ['Coverage >= 80%', 'No critical tests removed'],
481
- automated: true
482
- }
483
- ],
484
- estimatedEffort: phases.reduce((sum, phase) => sum + phase.tasks.reduce((taskSum, task) => taskSum + task.effort, 0), 0)
485
- };
486
- }
487
- calculateOptimizationPerformance(optimization, originalSuite, optimizedSuite) {
488
- const optimizationRatio = (originalSuite.executionTime - optimizedSuite.executionTime) / originalSuite.executionTime;
489
- const performance = {
490
- algorithmExecutionTime: SecureRandom_js_1.SecureRandom.randomFloat() * 1000 + 100, // 100-1100ms
491
- memoryUsed: originalSuite.totalTests * 0.05, // MB
492
- optimizationRatio,
493
- confidenceScore: SecureRandom_js_1.SecureRandom.randomFloat() * 0.2 + 0.8 // 80-100%
494
- };
495
- // Add temporal advantage for temporal-advantage algorithm
496
- if (optimization.algorithm === 'temporal-advantage') {
497
- performance.temporalAdvantage = {
498
- enabled: true,
499
- lightTravelTime: 36.3, // Tokyo to NYC example
500
- computationTime: optimizedSuite.executionTime / 1000, // Convert to seconds
501
- advantage: Math.max(0, 36.3 - optimizedSuite.executionTime / 1000),
502
- scenario: 'Tokyo to New York distributed testing'
503
- };
504
- }
505
- return performance;
506
- }
507
- /**
508
- * Get optimization by ID
509
- */
510
- getOptimization(optimizationId) {
511
- return this.optimizationHistory.get(optimizationId);
512
- }
513
- /**
514
- * List all optimizations
515
- */
516
- listOptimizations() {
517
- return Array.from(this.optimizationHistory.values());
518
- }
519
- /**
520
- * Get algorithm information
521
- */
522
- getAlgorithmInfo(algorithmName) {
523
- return this.algorithms.get(algorithmName);
524
- }
525
- /**
526
- * List available algorithms
527
- */
528
- listAlgorithms() {
529
- return Array.from(this.algorithms.values());
530
- }
531
- }
532
- exports.OptimizeTestsHandler = OptimizeTestsHandler;
533
- //# sourceMappingURL=optimize-tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimize-tests.js","sourceRoot":"","sources":["../../../src/mcp/handlers/optimize-tests.ts"],"names":[],"mappings":"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"}