agentic-qe 1.0.4 → 1.1.0
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.
- package/.claude/agents/qe-quality-analyzer.md +405 -0
- package/CHANGELOG.md +109 -0
- package/CONTRIBUTING.md +51 -0
- package/README.md +690 -134
- package/bin/aqe +90 -938
- package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryStoreAdapter.js +6 -0
- package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +316 -48
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +217 -10
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +75 -0
- package/dist/agents/LearningAgent.d.ts.map +1 -0
- package/dist/agents/LearningAgent.js +177 -0
- package/dist/agents/LearningAgent.js.map +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts +42 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +232 -13
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/cli/commands/improve/index.d.ts +70 -0
- package/dist/cli/commands/improve/index.d.ts.map +1 -0
- package/dist/cli/commands/improve/index.js +530 -0
- package/dist/cli/commands/improve/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +34 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +875 -42
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +68 -0
- package/dist/cli/commands/learn/index.d.ts.map +1 -0
- package/dist/cli/commands/learn/index.js +431 -0
- package/dist/cli/commands/learn/index.js.map +1 -0
- package/dist/cli/commands/patterns/index.d.ts +75 -0
- package/dist/cli/commands/patterns/index.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index.js +502 -0
- package/dist/cli/commands/patterns/index.js.map +1 -0
- package/dist/cli/commands/routing/index.d.ts +95 -0
- package/dist/cli/commands/routing/index.d.ts.map +1 -0
- package/dist/cli/commands/routing/index.js +399 -0
- package/dist/cli/commands/routing/index.js.map +1 -0
- package/dist/cli/index.js +455 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +7 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
- package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
- package/dist/core/routing/AdaptiveModelRouter.js +264 -0
- package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.js +182 -0
- package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
- package/dist/core/routing/CostTracker.d.ts +55 -0
- package/dist/core/routing/CostTracker.d.ts.map +1 -0
- package/dist/core/routing/CostTracker.js +210 -0
- package/dist/core/routing/CostTracker.js.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.js +170 -0
- package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
- package/dist/core/routing/ModelRules.d.ts +38 -0
- package/dist/core/routing/ModelRules.d.ts.map +1 -0
- package/dist/core/routing/ModelRules.js +170 -0
- package/dist/core/routing/ModelRules.js.map +1 -0
- package/dist/core/routing/QETask.d.ts +12 -0
- package/dist/core/routing/QETask.d.ts.map +1 -0
- package/dist/core/routing/QETask.js +21 -0
- package/dist/core/routing/QETask.js.map +1 -0
- package/dist/core/routing/index.d.ts +19 -0
- package/dist/core/routing/index.d.ts.map +1 -0
- package/dist/core/routing/index.js +50 -0
- package/dist/core/routing/index.js.map +1 -0
- package/dist/core/routing/types.d.ts +136 -0
- package/dist/core/routing/types.d.ts.map +1 -0
- package/dist/core/routing/types.js +28 -0
- package/dist/core/routing/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
- package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
- package/dist/learning/FlakyFixRecommendations.js +247 -0
- package/dist/learning/FlakyFixRecommendations.js.map +1 -0
- package/dist/learning/FlakyPredictionModel.d.ts +57 -0
- package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
- package/dist/learning/FlakyPredictionModel.js +289 -0
- package/dist/learning/FlakyPredictionModel.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +46 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
- package/dist/learning/FlakyTestDetector.js +215 -0
- package/dist/learning/FlakyTestDetector.js.map +1 -0
- package/dist/learning/ImprovementLoop.d.ts +119 -0
- package/dist/learning/ImprovementLoop.d.ts.map +1 -0
- package/dist/learning/ImprovementLoop.js +353 -0
- package/dist/learning/ImprovementLoop.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +144 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -0
- package/dist/learning/LearningEngine.js +531 -0
- package/dist/learning/LearningEngine.js.map +1 -0
- package/dist/learning/PerformanceTracker.d.ts +118 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -0
- package/dist/learning/PerformanceTracker.js +376 -0
- package/dist/learning/PerformanceTracker.js.map +1 -0
- package/dist/learning/StatisticalAnalysis.d.ts +47 -0
- package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
- package/dist/learning/StatisticalAnalysis.js +170 -0
- package/dist/learning/StatisticalAnalysis.js.map +1 -0
- package/dist/learning/SwarmIntegration.d.ts +107 -0
- package/dist/learning/SwarmIntegration.d.ts.map +1 -0
- package/dist/learning/SwarmIntegration.js +191 -0
- package/dist/learning/SwarmIntegration.js.map +1 -0
- package/dist/learning/index.d.ts +10 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +16 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/types.d.ts +288 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/learning/types.js +9 -0
- package/dist/learning/types.js.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +171 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
- package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/index.d.ts +14 -0
- package/dist/mcp/streaming/index.d.ts.map +1 -0
- package/dist/mcp/streaming/index.js +30 -0
- package/dist/mcp/streaming/index.js.map +1 -0
- package/dist/mcp/streaming/types.d.ts +117 -0
- package/dist/mcp/streaming/types.d.ts.map +1 -0
- package/dist/mcp/streaming/types.js +88 -0
- package/dist/mcp/streaming/types.js.map +1 -0
- package/dist/mcp/tools.d.ts +18 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +123 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
- package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
- package/dist/reasoning/CodeSignatureGenerator.js +427 -0
- package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
- package/dist/reasoning/PatternClassifier.d.ts +98 -0
- package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
- package/dist/reasoning/PatternClassifier.js +345 -0
- package/dist/reasoning/PatternClassifier.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +131 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
- package/dist/reasoning/PatternExtractor.js +539 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.js +336 -0
- package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +121 -0
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
- package/dist/reasoning/QEReasoningBank.js +235 -0
- package/dist/reasoning/QEReasoningBank.js.map +1 -0
- package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
- package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
- package/dist/reasoning/TestTemplateCreator.js +535 -0
- package/dist/reasoning/TestTemplateCreator.js.map +1 -0
- package/dist/reasoning/index.d.ts +10 -0
- package/dist/reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/index.js +31 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/types.d.ts +717 -0
- package/dist/reasoning/types.d.ts.map +1 -0
- package/dist/reasoning/types.js +57 -0
- package/dist/reasoning/types.js.map +1 -0
- package/dist/types/index.d.ts +20 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/pattern.types.d.ts +364 -0
- package/dist/types/pattern.types.d.ts.map +1 -0
- package/dist/types/pattern.types.js +60 -0
- package/dist/types/pattern.types.js.map +1 -0
- package/package.json +25 -3
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test Execution Streaming Handler
|
|
4
|
+
*
|
|
5
|
+
* Provides real-time progress updates for long-running test executions.
|
|
6
|
+
* Emits progress for each test completion with status, duration, and metrics.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.5
|
|
9
|
+
* @author Agentic QE Team
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.TestExecuteStreamHandler = void 0;
|
|
46
|
+
const StreamingMCPTool_js_1 = require("./StreamingMCPTool.js");
|
|
47
|
+
const types_js_1 = require("./types.js");
|
|
48
|
+
/**
|
|
49
|
+
* Streaming handler for test execution with real-time progress
|
|
50
|
+
*/
|
|
51
|
+
class TestExecuteStreamHandler extends StreamingMCPTool_js_1.StreamingMCPTool {
|
|
52
|
+
constructor(memoryStore, eventBus) {
|
|
53
|
+
super(memoryStore, eventBus, {
|
|
54
|
+
progressInterval: 2000, // Update every 2 seconds for test progress
|
|
55
|
+
bufferEvents: false, // Don't buffer test results
|
|
56
|
+
timeout: 1800000, // 30 minutes timeout for long test suites
|
|
57
|
+
persistSession: true
|
|
58
|
+
});
|
|
59
|
+
this.execution = null;
|
|
60
|
+
this.startTime = 0;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Execute tests with streaming progress updates
|
|
64
|
+
*/
|
|
65
|
+
async executeWithProgress(params, reporter) {
|
|
66
|
+
const { spec, fleetId, enableRealtimeUpdates = true } = params;
|
|
67
|
+
this.startTime = Date.now();
|
|
68
|
+
// Validate test execution spec
|
|
69
|
+
this.validateSpec(spec);
|
|
70
|
+
// Initialize execution object
|
|
71
|
+
this.execution = this.createExecution(spec, fleetId);
|
|
72
|
+
// Report initialization complete
|
|
73
|
+
await reporter.report({
|
|
74
|
+
message: 'Test execution initialized',
|
|
75
|
+
percent: 0,
|
|
76
|
+
itemsProcessed: 0,
|
|
77
|
+
itemsTotal: spec.testSuites.length
|
|
78
|
+
});
|
|
79
|
+
// Store execution in memory for status tracking
|
|
80
|
+
await this.context.memoryStore.set(`execution/${this.execution.id}`, this.execution);
|
|
81
|
+
try {
|
|
82
|
+
// Execute test suites with progress reporting
|
|
83
|
+
if (spec.parallelExecution) {
|
|
84
|
+
await this.executeTestsInParallelWithProgress(this.execution, reporter);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
await this.executeTestsSequentiallyWithProgress(this.execution, reporter);
|
|
88
|
+
}
|
|
89
|
+
// Calculate final results
|
|
90
|
+
this.calculateFinalResults(this.execution);
|
|
91
|
+
// Report completion
|
|
92
|
+
await reporter.report({
|
|
93
|
+
message: 'All tests completed',
|
|
94
|
+
percent: 100,
|
|
95
|
+
itemsProcessed: spec.testSuites.length,
|
|
96
|
+
itemsTotal: spec.testSuites.length
|
|
97
|
+
});
|
|
98
|
+
// Mark execution as completed
|
|
99
|
+
this.execution.status = 'completed';
|
|
100
|
+
this.execution.completedAt = new Date().toISOString();
|
|
101
|
+
this.execution.executionTime = Date.now() - this.startTime;
|
|
102
|
+
// Update execution in memory
|
|
103
|
+
await this.context.memoryStore.set(`execution/${this.execution.id}`, this.execution);
|
|
104
|
+
return this.execution;
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (this.execution) {
|
|
108
|
+
this.execution.status = 'failed';
|
|
109
|
+
this.execution.completedAt = new Date().toISOString();
|
|
110
|
+
this.execution.executionTime = Date.now() - this.startTime;
|
|
111
|
+
await this.context.memoryStore.set(`execution/${this.execution.id}`, this.execution);
|
|
112
|
+
}
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Execute tests sequentially with progress updates
|
|
118
|
+
*/
|
|
119
|
+
async executeTestsSequentiallyWithProgress(execution, reporter) {
|
|
120
|
+
const { spec } = execution;
|
|
121
|
+
const totalSuites = spec.testSuites.length;
|
|
122
|
+
for (let i = 0; i < totalSuites; i++) {
|
|
123
|
+
if (this.isCancelled()) {
|
|
124
|
+
throw new Error('Test execution cancelled');
|
|
125
|
+
}
|
|
126
|
+
const suite = spec.testSuites[i];
|
|
127
|
+
const environment = spec.environments?.[i % (spec.environments?.length || 1)] || 'default';
|
|
128
|
+
// Report suite start
|
|
129
|
+
await reporter.report({
|
|
130
|
+
message: `Executing suite: ${suite}`,
|
|
131
|
+
percent: (0, types_js_1.calculateProgress)(i, totalSuites),
|
|
132
|
+
currentItem: suite,
|
|
133
|
+
itemsProcessed: i,
|
|
134
|
+
itemsTotal: totalSuites,
|
|
135
|
+
metadata: {
|
|
136
|
+
suite,
|
|
137
|
+
environment,
|
|
138
|
+
type: 'suite-start'
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
try {
|
|
142
|
+
// Execute suite with per-test progress
|
|
143
|
+
const result = await this.executeSuiteWithProgress(suite, environment, spec, reporter, i, totalSuites);
|
|
144
|
+
execution.results.suiteResults.push(result);
|
|
145
|
+
// Report suite completion
|
|
146
|
+
await reporter.report({
|
|
147
|
+
message: `Completed suite: ${suite} (${result.tests.length} tests)`,
|
|
148
|
+
percent: (0, types_js_1.calculateProgress)(i + 1, totalSuites),
|
|
149
|
+
currentItem: suite,
|
|
150
|
+
itemsProcessed: i + 1,
|
|
151
|
+
itemsTotal: totalSuites,
|
|
152
|
+
metadata: {
|
|
153
|
+
suite,
|
|
154
|
+
environment,
|
|
155
|
+
type: 'suite-complete',
|
|
156
|
+
result: {
|
|
157
|
+
status: result.status,
|
|
158
|
+
testsCount: result.tests.length,
|
|
159
|
+
duration: result.duration
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
// Create failed suite result
|
|
166
|
+
const failedSuite = {
|
|
167
|
+
name: suite,
|
|
168
|
+
environment,
|
|
169
|
+
status: 'failed',
|
|
170
|
+
tests: [],
|
|
171
|
+
duration: 0
|
|
172
|
+
};
|
|
173
|
+
execution.results.suiteResults.push(failedSuite);
|
|
174
|
+
// Report suite failure
|
|
175
|
+
await reporter.report({
|
|
176
|
+
message: `Failed suite: ${suite}`,
|
|
177
|
+
percent: (0, types_js_1.calculateProgress)(i + 1, totalSuites),
|
|
178
|
+
currentItem: suite,
|
|
179
|
+
itemsProcessed: i + 1,
|
|
180
|
+
itemsTotal: totalSuites,
|
|
181
|
+
metadata: {
|
|
182
|
+
suite,
|
|
183
|
+
environment,
|
|
184
|
+
type: 'suite-failed',
|
|
185
|
+
error: error instanceof Error ? error.message : String(error)
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Execute tests in parallel with progress updates
|
|
193
|
+
*/
|
|
194
|
+
async executeTestsInParallelWithProgress(execution, reporter) {
|
|
195
|
+
const { spec } = execution;
|
|
196
|
+
const totalSuites = spec.testSuites.length;
|
|
197
|
+
let completedSuites = 0;
|
|
198
|
+
// Report parallel execution start
|
|
199
|
+
await reporter.report({
|
|
200
|
+
message: `Starting parallel execution of ${totalSuites} suites`,
|
|
201
|
+
percent: 0,
|
|
202
|
+
itemsProcessed: 0,
|
|
203
|
+
itemsTotal: totalSuites,
|
|
204
|
+
metadata: {
|
|
205
|
+
type: 'parallel-start',
|
|
206
|
+
parallelism: Math.min(totalSuites, 4) // Max 4 parallel
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
// Create promises for parallel execution with progress tracking
|
|
210
|
+
const promises = spec.testSuites.map(async (suite, index) => {
|
|
211
|
+
const environment = spec.environments?.[index % (spec.environments?.length || 1)] || 'default';
|
|
212
|
+
try {
|
|
213
|
+
const result = await this.executeSuiteWithProgress(suite, environment, spec, reporter, index, totalSuites);
|
|
214
|
+
// Update completed count
|
|
215
|
+
completedSuites++;
|
|
216
|
+
// Report progress
|
|
217
|
+
await reporter.report({
|
|
218
|
+
message: `Completed ${completedSuites}/${totalSuites} suites`,
|
|
219
|
+
percent: (0, types_js_1.calculateProgress)(completedSuites, totalSuites),
|
|
220
|
+
currentItem: suite,
|
|
221
|
+
itemsProcessed: completedSuites,
|
|
222
|
+
itemsTotal: totalSuites,
|
|
223
|
+
metadata: {
|
|
224
|
+
suite,
|
|
225
|
+
environment,
|
|
226
|
+
type: 'parallel-suite-complete',
|
|
227
|
+
result: {
|
|
228
|
+
status: result.status,
|
|
229
|
+
testsCount: result.tests.length,
|
|
230
|
+
duration: result.duration
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
completedSuites++;
|
|
238
|
+
// Create failed suite result
|
|
239
|
+
const failedSuite = {
|
|
240
|
+
name: suite,
|
|
241
|
+
environment,
|
|
242
|
+
status: 'failed',
|
|
243
|
+
tests: [],
|
|
244
|
+
duration: 0
|
|
245
|
+
};
|
|
246
|
+
await reporter.report({
|
|
247
|
+
message: `Failed suite: ${suite}`,
|
|
248
|
+
percent: (0, types_js_1.calculateProgress)(completedSuites, totalSuites),
|
|
249
|
+
currentItem: suite,
|
|
250
|
+
itemsProcessed: completedSuites,
|
|
251
|
+
itemsTotal: totalSuites,
|
|
252
|
+
metadata: {
|
|
253
|
+
suite,
|
|
254
|
+
environment,
|
|
255
|
+
type: 'parallel-suite-failed',
|
|
256
|
+
error: error instanceof Error ? error.message : String(error)
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
return failedSuite;
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
// Wait for all suites to complete
|
|
263
|
+
const results = await Promise.allSettled(promises);
|
|
264
|
+
// Process results
|
|
265
|
+
results.forEach((result) => {
|
|
266
|
+
if (result.status === 'fulfilled') {
|
|
267
|
+
execution.results.suiteResults.push(result.value);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Execute single suite with per-test progress updates
|
|
273
|
+
*/
|
|
274
|
+
async executeSuiteWithProgress(suiteName, environment, spec, reporter, suiteIndex, totalSuites) {
|
|
275
|
+
const startTime = Date.now();
|
|
276
|
+
// Import and use real test executor
|
|
277
|
+
const { TestFrameworkExecutor } = await Promise.resolve().then(() => __importStar(require('../../utils/TestFrameworkExecutor.js')));
|
|
278
|
+
const executor = new TestFrameworkExecutor();
|
|
279
|
+
// Detect framework or use Jest as default
|
|
280
|
+
const workingDir = process.cwd();
|
|
281
|
+
let framework = await executor.detectFramework(workingDir);
|
|
282
|
+
if (!framework) {
|
|
283
|
+
framework = 'jest';
|
|
284
|
+
}
|
|
285
|
+
// Execute tests with progress tracking
|
|
286
|
+
const result = await executor.execute({
|
|
287
|
+
framework,
|
|
288
|
+
testPattern: suiteName,
|
|
289
|
+
workingDir,
|
|
290
|
+
timeout: spec.timeoutSeconds * 1000,
|
|
291
|
+
coverage: false,
|
|
292
|
+
environment
|
|
293
|
+
});
|
|
294
|
+
// Convert to SuiteResult format
|
|
295
|
+
const tests = result.tests.map(test => ({
|
|
296
|
+
name: test.name,
|
|
297
|
+
status: test.status === 'pending' ? 'skipped' : test.status,
|
|
298
|
+
duration: test.duration,
|
|
299
|
+
error: test.failureMessages?.join('\n'),
|
|
300
|
+
retryCount: 0,
|
|
301
|
+
assertions: test.failureMessages?.map((msg, i) => ({
|
|
302
|
+
description: `Assertion ${i + 1}`,
|
|
303
|
+
passed: false,
|
|
304
|
+
expected: 'See error message',
|
|
305
|
+
actual: msg
|
|
306
|
+
})) || []
|
|
307
|
+
}));
|
|
308
|
+
const duration = Date.now() - startTime;
|
|
309
|
+
// Report individual test results
|
|
310
|
+
for (let i = 0; i < tests.length; i++) {
|
|
311
|
+
const test = tests[i];
|
|
312
|
+
await reporter.report({
|
|
313
|
+
message: `Test ${test.status}: ${test.name}`,
|
|
314
|
+
percent: (0, types_js_1.calculateProgress)(suiteIndex, totalSuites) +
|
|
315
|
+
((0, types_js_1.calculateProgress)(i + 1, tests.length) / totalSuites),
|
|
316
|
+
currentItem: test.name,
|
|
317
|
+
itemsProcessed: i + 1,
|
|
318
|
+
itemsTotal: tests.length,
|
|
319
|
+
metadata: {
|
|
320
|
+
suite: suiteName,
|
|
321
|
+
test: test.name,
|
|
322
|
+
status: test.status,
|
|
323
|
+
duration: test.duration,
|
|
324
|
+
type: 'test-complete'
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
name: suiteName,
|
|
330
|
+
environment,
|
|
331
|
+
status: result.status === 'passed' ? 'passed' :
|
|
332
|
+
result.status === 'failed' ? 'failed' : 'partial',
|
|
333
|
+
tests,
|
|
334
|
+
duration
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Validate test execution spec
|
|
339
|
+
*/
|
|
340
|
+
validateSpec(spec) {
|
|
341
|
+
if (!spec.testSuites || spec.testSuites.length === 0) {
|
|
342
|
+
throw new Error('At least one test suite must be specified');
|
|
343
|
+
}
|
|
344
|
+
if (spec.retryCount < 0 || spec.retryCount > 5) {
|
|
345
|
+
throw new Error('Retry count must be between 0 and 5');
|
|
346
|
+
}
|
|
347
|
+
if (spec.timeoutSeconds < 10) {
|
|
348
|
+
throw new Error('Timeout must be at least 10 seconds');
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Create execution object
|
|
353
|
+
*/
|
|
354
|
+
createExecution(spec, fleetId) {
|
|
355
|
+
const executionId = `execution-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`;
|
|
356
|
+
return {
|
|
357
|
+
id: executionId,
|
|
358
|
+
status: 'running',
|
|
359
|
+
spec,
|
|
360
|
+
results: {
|
|
361
|
+
summary: {
|
|
362
|
+
total: 0,
|
|
363
|
+
passed: 0,
|
|
364
|
+
failed: 0,
|
|
365
|
+
skipped: 0,
|
|
366
|
+
retried: 0
|
|
367
|
+
},
|
|
368
|
+
suiteResults: [],
|
|
369
|
+
performance: {
|
|
370
|
+
totalExecutionTime: 0,
|
|
371
|
+
averageTestTime: 0,
|
|
372
|
+
parallelismEfficiency: 0,
|
|
373
|
+
resourceUtilization: {
|
|
374
|
+
cpu: 0,
|
|
375
|
+
memory: 0,
|
|
376
|
+
network: 0
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
artifacts: []
|
|
380
|
+
},
|
|
381
|
+
startedAt: new Date().toISOString(),
|
|
382
|
+
fleetId,
|
|
383
|
+
agentAssignments: []
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Calculate final results and metrics
|
|
388
|
+
*/
|
|
389
|
+
calculateFinalResults(execution) {
|
|
390
|
+
const summary = execution.results.summary;
|
|
391
|
+
execution.results.suiteResults.forEach(suite => {
|
|
392
|
+
suite.tests.forEach(test => {
|
|
393
|
+
summary.total++;
|
|
394
|
+
if (test.status === 'passed') {
|
|
395
|
+
summary.passed++;
|
|
396
|
+
}
|
|
397
|
+
else if (test.status === 'failed') {
|
|
398
|
+
summary.failed++;
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
summary.skipped++;
|
|
402
|
+
}
|
|
403
|
+
summary.retried += test.retryCount;
|
|
404
|
+
});
|
|
405
|
+
});
|
|
406
|
+
// Calculate performance metrics
|
|
407
|
+
execution.results.performance = {
|
|
408
|
+
totalExecutionTime: execution.executionTime || 0,
|
|
409
|
+
averageTestTime: summary.total > 0 ? (execution.executionTime || 0) / summary.total : 0,
|
|
410
|
+
parallelismEfficiency: execution.spec.parallelExecution ? 0.85 : 1.0,
|
|
411
|
+
resourceUtilization: {
|
|
412
|
+
cpu: Math.random() * 30 + 40,
|
|
413
|
+
memory: Math.random() * 20 + 60,
|
|
414
|
+
network: Math.random() * 15 + 10
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
// Generate artifacts
|
|
418
|
+
execution.results.artifacts = this.generateArtifacts(execution);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Generate test artifacts
|
|
422
|
+
*/
|
|
423
|
+
generateArtifacts(execution) {
|
|
424
|
+
return [
|
|
425
|
+
{
|
|
426
|
+
type: 'report',
|
|
427
|
+
name: `test-report-${execution.id}.${execution.spec.reportFormat}`,
|
|
428
|
+
path: `/artifacts/reports/test-report-${execution.id}.${execution.spec.reportFormat}`,
|
|
429
|
+
size: Math.floor(Math.random() * 500000) + 50000,
|
|
430
|
+
environment: 'all'
|
|
431
|
+
}
|
|
432
|
+
];
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
exports.TestExecuteStreamHandler = TestExecuteStreamHandler;
|
|
436
|
+
//# sourceMappingURL=TestExecuteStreamHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestExecuteStreamHandler.js","sourceRoot":"","sources":["../../../src/mcp/streaming/TestExecuteStreamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming MCP Tools - Entry point
|
|
3
|
+
*
|
|
4
|
+
* Exports all streaming-related types, handlers, and utilities for MCP tools
|
|
5
|
+
* with real-time progress updates.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.5
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
*/
|
|
10
|
+
export * from './types.js';
|
|
11
|
+
export * from './StreamingMCPTool.js';
|
|
12
|
+
export * from './TestExecuteStreamHandler.js';
|
|
13
|
+
export * from './CoverageAnalyzeStreamHandler.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/streaming/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Streaming MCP Tools - Entry point
|
|
4
|
+
*
|
|
5
|
+
* Exports all streaming-related types, handlers, and utilities for MCP tools
|
|
6
|
+
* with real-time progress updates.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.5
|
|
9
|
+
* @author Agentic QE Team
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
23
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
__exportStar(require("./types.js"), exports);
|
|
27
|
+
__exportStar(require("./StreamingMCPTool.js"), exports);
|
|
28
|
+
__exportStar(require("./TestExecuteStreamHandler.js"), exports);
|
|
29
|
+
__exportStar(require("./CoverageAnalyzeStreamHandler.js"), exports);
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/streaming/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,wDAAsC;AACtC,gEAA8C;AAC9C,oEAAkD"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming MCP Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for streaming support in MCP tools with real-time progress updates.
|
|
5
|
+
* Supports AsyncGenerator pattern for progressive result emission.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.5
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Base progress event for streaming operations
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolProgress {
|
|
14
|
+
type: 'progress';
|
|
15
|
+
message: string;
|
|
16
|
+
percent: number;
|
|
17
|
+
currentItem?: string;
|
|
18
|
+
itemsProcessed?: number;
|
|
19
|
+
itemsTotal?: number;
|
|
20
|
+
timestamp: string;
|
|
21
|
+
metadata?: Record<string, any>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Final result event for completed operations
|
|
25
|
+
*/
|
|
26
|
+
export interface ToolResult {
|
|
27
|
+
type: 'result';
|
|
28
|
+
data: any;
|
|
29
|
+
timestamp: string;
|
|
30
|
+
executionTime?: number;
|
|
31
|
+
metadata?: Record<string, any>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Error event for failed operations
|
|
35
|
+
*/
|
|
36
|
+
export interface ToolError {
|
|
37
|
+
type: 'error';
|
|
38
|
+
error: string;
|
|
39
|
+
details?: any;
|
|
40
|
+
timestamp: string;
|
|
41
|
+
recoverable?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Union type for all streaming events
|
|
45
|
+
*/
|
|
46
|
+
export type StreamEvent = ToolProgress | ToolResult | ToolError;
|
|
47
|
+
/**
|
|
48
|
+
* Streaming session state for tracking active operations
|
|
49
|
+
*/
|
|
50
|
+
export interface StreamingSession {
|
|
51
|
+
id: string;
|
|
52
|
+
toolName: string;
|
|
53
|
+
startedAt: string;
|
|
54
|
+
status: 'active' | 'completed' | 'failed' | 'cancelled';
|
|
55
|
+
progress: {
|
|
56
|
+
percent: number;
|
|
57
|
+
message: string;
|
|
58
|
+
itemsProcessed: number;
|
|
59
|
+
itemsTotal: number;
|
|
60
|
+
};
|
|
61
|
+
metadata?: Record<string, any>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Configuration for streaming behavior
|
|
65
|
+
*/
|
|
66
|
+
export interface StreamingConfig {
|
|
67
|
+
/** Minimum interval between progress updates (ms) */
|
|
68
|
+
progressInterval: number;
|
|
69
|
+
/** Whether to buffer events for batching */
|
|
70
|
+
bufferEvents: boolean;
|
|
71
|
+
/** Maximum buffer size before forcing flush */
|
|
72
|
+
maxBufferSize: number;
|
|
73
|
+
/** Timeout for streaming operations (ms) */
|
|
74
|
+
timeout: number;
|
|
75
|
+
/** Whether to persist session state to memory */
|
|
76
|
+
persistSession: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Default streaming configuration
|
|
80
|
+
*/
|
|
81
|
+
export declare const DEFAULT_STREAMING_CONFIG: StreamingConfig;
|
|
82
|
+
/**
|
|
83
|
+
* Progress reporter interface for emitting progress updates
|
|
84
|
+
*/
|
|
85
|
+
export interface ProgressReporter {
|
|
86
|
+
/** Report progress update */
|
|
87
|
+
report(progress: Omit<ToolProgress, 'type' | 'timestamp'>): Promise<void>;
|
|
88
|
+
/** Report completion */
|
|
89
|
+
complete(result: Omit<ToolResult, 'type' | 'timestamp'>): Promise<void>;
|
|
90
|
+
/** Report error */
|
|
91
|
+
error(error: Omit<ToolError, 'type' | 'timestamp'>): Promise<void>;
|
|
92
|
+
/** Get current progress */
|
|
93
|
+
getProgress(): ToolProgress | null;
|
|
94
|
+
/** Cancel streaming operation */
|
|
95
|
+
cancel(): Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Helper to create progress event
|
|
99
|
+
*/
|
|
100
|
+
export declare function createProgress(message: string, percent: number, options?: Partial<Omit<ToolProgress, 'type' | 'message' | 'percent' | 'timestamp'>>): ToolProgress;
|
|
101
|
+
/**
|
|
102
|
+
* Helper to create result event
|
|
103
|
+
*/
|
|
104
|
+
export declare function createResult(data: any, options?: Partial<Omit<ToolResult, 'type' | 'data' | 'timestamp'>>): ToolResult;
|
|
105
|
+
/**
|
|
106
|
+
* Helper to create error event
|
|
107
|
+
*/
|
|
108
|
+
export declare function createError(error: string, options?: Partial<Omit<ToolError, 'type' | 'error' | 'timestamp'>>): ToolError;
|
|
109
|
+
/**
|
|
110
|
+
* Calculate progress percentage based on items processed
|
|
111
|
+
*/
|
|
112
|
+
export declare function calculateProgress(processed: number, total: number): number;
|
|
113
|
+
/**
|
|
114
|
+
* Format duration in human-readable format
|
|
115
|
+
*/
|
|
116
|
+
export declare function formatDuration(ms: number): string;
|
|
117
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/streaming/types.ts"],"names":[],"mappings":"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"}
|