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.
Files changed (197) hide show
  1. package/.claude/agents/qe-quality-analyzer.md +405 -0
  2. package/CHANGELOG.md +109 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/README.md +690 -134
  5. package/bin/aqe +90 -938
  6. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  7. package/dist/adapters/MemoryStoreAdapter.js +6 -0
  8. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  9. package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
  10. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.js +316 -48
  12. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  13. package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
  14. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  15. package/dist/agents/FlakyTestHunterAgent.js +217 -10
  16. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  17. package/dist/agents/LearningAgent.d.ts +75 -0
  18. package/dist/agents/LearningAgent.d.ts.map +1 -0
  19. package/dist/agents/LearningAgent.js +177 -0
  20. package/dist/agents/LearningAgent.js.map +1 -0
  21. package/dist/agents/TestGeneratorAgent.d.ts +42 -2
  22. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.js +232 -13
  24. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  25. package/dist/cli/commands/improve/index.d.ts +70 -0
  26. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  27. package/dist/cli/commands/improve/index.js +530 -0
  28. package/dist/cli/commands/improve/index.js.map +1 -0
  29. package/dist/cli/commands/init.d.ts +34 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +875 -42
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/learn/index.d.ts +68 -0
  34. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  35. package/dist/cli/commands/learn/index.js +431 -0
  36. package/dist/cli/commands/learn/index.js.map +1 -0
  37. package/dist/cli/commands/patterns/index.d.ts +75 -0
  38. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  39. package/dist/cli/commands/patterns/index.js +502 -0
  40. package/dist/cli/commands/patterns/index.js.map +1 -0
  41. package/dist/cli/commands/routing/index.d.ts +95 -0
  42. package/dist/cli/commands/routing/index.d.ts.map +1 -0
  43. package/dist/cli/commands/routing/index.js +399 -0
  44. package/dist/cli/commands/routing/index.js.map +1 -0
  45. package/dist/cli/index.js +455 -8
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  48. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  49. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  50. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  51. package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
  52. package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
  53. package/dist/core/routing/AdaptiveModelRouter.js +264 -0
  54. package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
  55. package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
  56. package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
  57. package/dist/core/routing/ComplexityAnalyzer.js +182 -0
  58. package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
  59. package/dist/core/routing/CostTracker.d.ts +55 -0
  60. package/dist/core/routing/CostTracker.d.ts.map +1 -0
  61. package/dist/core/routing/CostTracker.js +210 -0
  62. package/dist/core/routing/CostTracker.js.map +1 -0
  63. package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
  64. package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
  65. package/dist/core/routing/FleetManagerIntegration.js +170 -0
  66. package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
  67. package/dist/core/routing/ModelRules.d.ts +38 -0
  68. package/dist/core/routing/ModelRules.d.ts.map +1 -0
  69. package/dist/core/routing/ModelRules.js +170 -0
  70. package/dist/core/routing/ModelRules.js.map +1 -0
  71. package/dist/core/routing/QETask.d.ts +12 -0
  72. package/dist/core/routing/QETask.d.ts.map +1 -0
  73. package/dist/core/routing/QETask.js +21 -0
  74. package/dist/core/routing/QETask.js.map +1 -0
  75. package/dist/core/routing/index.d.ts +19 -0
  76. package/dist/core/routing/index.d.ts.map +1 -0
  77. package/dist/core/routing/index.js +50 -0
  78. package/dist/core/routing/index.js.map +1 -0
  79. package/dist/core/routing/types.d.ts +136 -0
  80. package/dist/core/routing/types.d.ts.map +1 -0
  81. package/dist/core/routing/types.js +28 -0
  82. package/dist/core/routing/types.js.map +1 -0
  83. package/dist/index.d.ts +10 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  88. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  89. package/dist/learning/FlakyFixRecommendations.js +247 -0
  90. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  91. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  92. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  93. package/dist/learning/FlakyPredictionModel.js +289 -0
  94. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  95. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  96. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  97. package/dist/learning/FlakyTestDetector.js +215 -0
  98. package/dist/learning/FlakyTestDetector.js.map +1 -0
  99. package/dist/learning/ImprovementLoop.d.ts +119 -0
  100. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  101. package/dist/learning/ImprovementLoop.js +353 -0
  102. package/dist/learning/ImprovementLoop.js.map +1 -0
  103. package/dist/learning/LearningEngine.d.ts +144 -0
  104. package/dist/learning/LearningEngine.d.ts.map +1 -0
  105. package/dist/learning/LearningEngine.js +531 -0
  106. package/dist/learning/LearningEngine.js.map +1 -0
  107. package/dist/learning/PerformanceTracker.d.ts +118 -0
  108. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  109. package/dist/learning/PerformanceTracker.js +376 -0
  110. package/dist/learning/PerformanceTracker.js.map +1 -0
  111. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  112. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  113. package/dist/learning/StatisticalAnalysis.js +170 -0
  114. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  115. package/dist/learning/SwarmIntegration.d.ts +107 -0
  116. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  117. package/dist/learning/SwarmIntegration.js +191 -0
  118. package/dist/learning/SwarmIntegration.js.map +1 -0
  119. package/dist/learning/index.d.ts +10 -0
  120. package/dist/learning/index.d.ts.map +1 -0
  121. package/dist/learning/index.js +16 -0
  122. package/dist/learning/index.js.map +1 -0
  123. package/dist/learning/types.d.ts +288 -0
  124. package/dist/learning/types.d.ts.map +1 -0
  125. package/dist/learning/types.js +9 -0
  126. package/dist/learning/types.js.map +1 -0
  127. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  128. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  129. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  130. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  131. package/dist/mcp/server.d.ts.map +1 -1
  132. package/dist/mcp/server.js +171 -9
  133. package/dist/mcp/server.js.map +1 -1
  134. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
  135. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
  136. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
  137. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
  138. package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
  139. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
  140. package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
  141. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
  142. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
  143. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
  144. package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
  145. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
  146. package/dist/mcp/streaming/index.d.ts +14 -0
  147. package/dist/mcp/streaming/index.d.ts.map +1 -0
  148. package/dist/mcp/streaming/index.js +30 -0
  149. package/dist/mcp/streaming/index.js.map +1 -0
  150. package/dist/mcp/streaming/types.d.ts +117 -0
  151. package/dist/mcp/streaming/types.d.ts.map +1 -0
  152. package/dist/mcp/streaming/types.js +88 -0
  153. package/dist/mcp/streaming/types.js.map +1 -0
  154. package/dist/mcp/tools.d.ts +18 -1
  155. package/dist/mcp/tools.d.ts.map +1 -1
  156. package/dist/mcp/tools.js +123 -1
  157. package/dist/mcp/tools.js.map +1 -1
  158. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  159. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  160. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  161. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  162. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  163. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  164. package/dist/reasoning/PatternClassifier.js +345 -0
  165. package/dist/reasoning/PatternClassifier.js.map +1 -0
  166. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  167. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  168. package/dist/reasoning/PatternExtractor.js +539 -0
  169. package/dist/reasoning/PatternExtractor.js.map +1 -0
  170. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  171. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  172. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  173. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  174. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  175. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  176. package/dist/reasoning/QEReasoningBank.js +235 -0
  177. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  178. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  179. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  180. package/dist/reasoning/TestTemplateCreator.js +535 -0
  181. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  182. package/dist/reasoning/index.d.ts +10 -0
  183. package/dist/reasoning/index.d.ts.map +1 -0
  184. package/dist/reasoning/index.js +31 -0
  185. package/dist/reasoning/index.js.map +1 -0
  186. package/dist/reasoning/types.d.ts +717 -0
  187. package/dist/reasoning/types.d.ts.map +1 -0
  188. package/dist/reasoning/types.js +57 -0
  189. package/dist/reasoning/types.js.map +1 -0
  190. package/dist/types/index.d.ts +20 -1
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/pattern.types.d.ts +364 -0
  194. package/dist/types/pattern.types.d.ts.map +1 -0
  195. package/dist/types/pattern.types.js +60 -0
  196. package/dist/types/pattern.types.js.map +1 -0
  197. package/package.json +25 -3
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ /**
3
+ * StreamingMCPTool - Base class for streaming MCP tools
4
+ *
5
+ * Provides AsyncGenerator-based streaming with progress updates, error handling,
6
+ * and resource cleanup for long-running MCP operations.
7
+ *
8
+ * @version 1.0.5
9
+ * @author Agentic QE Team
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StreamingMCPTool = void 0;
13
+ const types_js_1 = require("./types.js");
14
+ /**
15
+ * Abstract base class for streaming MCP tools
16
+ * Subclasses implement executeWithProgress to provide streaming functionality
17
+ */
18
+ class StreamingMCPTool {
19
+ constructor(memoryStore, eventBus, config = {}) {
20
+ this.session = null;
21
+ this.lastProgressTime = 0;
22
+ this.progressBuffer = [];
23
+ this.cancelled = false;
24
+ this.context = {
25
+ sessionId: this.generateSessionId(),
26
+ memoryStore,
27
+ eventBus,
28
+ config: { ...types_js_1.DEFAULT_STREAMING_CONFIG, ...config }
29
+ };
30
+ }
31
+ /**
32
+ * Execute tool with streaming progress updates
33
+ * Returns an AsyncGenerator that yields progress events and final result
34
+ */
35
+ async *execute(params) {
36
+ const startTime = Date.now();
37
+ try {
38
+ // Initialize session
39
+ this.session = this.createSession();
40
+ await this.initializeSession(this.session);
41
+ // Emit initial progress
42
+ yield (0, types_js_1.createProgress)('Starting operation...', 0, {
43
+ metadata: { sessionId: this.session.id }
44
+ });
45
+ // Create progress reporter
46
+ const reporter = this.createProgressReporter();
47
+ // Execute the actual streaming operation
48
+ try {
49
+ const result = await this.executeWithProgress(params, reporter);
50
+ if (this.cancelled) {
51
+ yield (0, types_js_1.createError)('Operation cancelled', {
52
+ recoverable: true,
53
+ details: { sessionId: this.session.id }
54
+ });
55
+ return;
56
+ }
57
+ // Update session to completed
58
+ if (this.session) {
59
+ this.session.status = 'completed';
60
+ await this.persistSession(this.session);
61
+ }
62
+ // Emit final result
63
+ const executionTime = Date.now() - startTime;
64
+ yield (0, types_js_1.createResult)(result, {
65
+ executionTime,
66
+ metadata: { sessionId: this.session.id }
67
+ });
68
+ // Emit completion event
69
+ this.context.eventBus.emit('streaming:completed', {
70
+ sessionId: this.session.id,
71
+ executionTime,
72
+ result
73
+ });
74
+ }
75
+ catch (error) {
76
+ // Update session to failed
77
+ if (this.session) {
78
+ this.session.status = 'failed';
79
+ await this.persistSession(this.session);
80
+ }
81
+ // Emit error event
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ yield (0, types_js_1.createError)(errorMessage, {
84
+ details: error instanceof Error ? { stack: error.stack } : undefined,
85
+ recoverable: this.isRecoverableError(error)
86
+ });
87
+ // Emit error to event bus
88
+ this.context.eventBus.emit('streaming:error', {
89
+ sessionId: this.session.id,
90
+ error: errorMessage
91
+ });
92
+ throw error;
93
+ }
94
+ }
95
+ catch (error) {
96
+ // Outer catch for initialization errors
97
+ const errorMessage = error instanceof Error ? error.message : String(error);
98
+ yield (0, types_js_1.createError)(`Streaming execution failed: ${errorMessage}`, {
99
+ recoverable: false
100
+ });
101
+ }
102
+ finally {
103
+ // Cleanup resources
104
+ await this.cleanup();
105
+ }
106
+ }
107
+ /**
108
+ * Create a progress reporter for emitting progress updates
109
+ */
110
+ createProgressReporter() {
111
+ const self = this;
112
+ let currentProgress = null;
113
+ return {
114
+ async report(progress) {
115
+ const now = Date.now();
116
+ const timeSinceLastProgress = now - self.lastProgressTime;
117
+ // Apply progress interval throttling
118
+ if (timeSinceLastProgress < self.context.config.progressInterval) {
119
+ // Buffer progress if buffering is enabled
120
+ if (self.context.config.bufferEvents) {
121
+ const progressEvent = (0, types_js_1.createProgress)(progress.message, progress.percent, progress);
122
+ self.progressBuffer.push(progressEvent);
123
+ // Flush buffer if it exceeds max size
124
+ if (self.progressBuffer.length >= self.context.config.maxBufferSize) {
125
+ await self.flushProgressBuffer();
126
+ }
127
+ }
128
+ return;
129
+ }
130
+ // Create and store progress event
131
+ const progressEvent = (0, types_js_1.createProgress)(progress.message, progress.percent, progress);
132
+ currentProgress = progressEvent;
133
+ // Update session state
134
+ if (self.session) {
135
+ self.session.progress = {
136
+ percent: progressEvent.percent,
137
+ message: progressEvent.message,
138
+ itemsProcessed: progressEvent.itemsProcessed || 0,
139
+ itemsTotal: progressEvent.itemsTotal || 0
140
+ };
141
+ await self.persistSession(self.session);
142
+ }
143
+ // Emit progress event to event bus
144
+ self.context.eventBus.emit('streaming:progress', progressEvent);
145
+ // Store progress in memory
146
+ await self.context.memoryStore.set(`streaming/session-${self.context.sessionId}/progress`, progressEvent);
147
+ self.lastProgressTime = now;
148
+ },
149
+ async complete(result) {
150
+ // Flush any remaining buffered progress
151
+ await self.flushProgressBuffer();
152
+ const resultEvent = (0, types_js_1.createResult)(result.data, result);
153
+ // Store result in memory
154
+ await self.context.memoryStore.set(`streaming/session-${self.context.sessionId}/result`, resultEvent);
155
+ },
156
+ async error(error) {
157
+ const errorEvent = (0, types_js_1.createError)(error.error, error);
158
+ // Store error in memory
159
+ await self.context.memoryStore.set(`streaming/session-${self.context.sessionId}/error`, errorEvent);
160
+ // Emit error event
161
+ self.context.eventBus.emit('streaming:error', errorEvent);
162
+ },
163
+ getProgress() {
164
+ return currentProgress;
165
+ },
166
+ async cancel() {
167
+ self.cancelled = true;
168
+ if (self.session) {
169
+ self.session.status = 'cancelled';
170
+ await self.persistSession(self.session);
171
+ }
172
+ // Emit cancellation event
173
+ self.context.eventBus.emit('streaming:cancelled', {
174
+ sessionId: self.context.sessionId
175
+ });
176
+ }
177
+ };
178
+ }
179
+ /**
180
+ * Initialize streaming session
181
+ */
182
+ createSession() {
183
+ return {
184
+ id: this.context.sessionId,
185
+ toolName: this.constructor.name,
186
+ startedAt: new Date().toISOString(),
187
+ status: 'active',
188
+ progress: {
189
+ percent: 0,
190
+ message: 'Initializing...',
191
+ itemsProcessed: 0,
192
+ itemsTotal: 0
193
+ }
194
+ };
195
+ }
196
+ /**
197
+ * Initialize session with memory storage and event emission
198
+ */
199
+ async initializeSession(session) {
200
+ if (this.context.config.persistSession) {
201
+ await this.context.memoryStore.set(`streaming/session-${session.id}`, session);
202
+ }
203
+ // Emit session started event
204
+ this.context.eventBus.emit('streaming:started', { sessionId: session.id });
205
+ }
206
+ /**
207
+ * Persist session state to memory
208
+ */
209
+ async persistSession(session) {
210
+ if (this.context.config.persistSession) {
211
+ await this.context.memoryStore.set(`streaming/session-${session.id}`, session);
212
+ }
213
+ }
214
+ /**
215
+ * Flush buffered progress events
216
+ */
217
+ async flushProgressBuffer() {
218
+ if (this.progressBuffer.length === 0)
219
+ return;
220
+ // Emit all buffered progress events
221
+ for (const progress of this.progressBuffer) {
222
+ this.context.eventBus.emit('streaming:progress', progress);
223
+ }
224
+ // Store latest progress in memory
225
+ const latestProgress = this.progressBuffer[this.progressBuffer.length - 1];
226
+ await this.context.memoryStore.set(`streaming/session-${this.context.sessionId}/progress`, latestProgress);
227
+ // Clear buffer
228
+ this.progressBuffer = [];
229
+ this.lastProgressTime = Date.now();
230
+ }
231
+ /**
232
+ * Cleanup resources after streaming completes
233
+ */
234
+ async cleanup() {
235
+ // Flush any remaining buffered progress
236
+ await this.flushProgressBuffer();
237
+ // Optional: Clean up old session data (can be configured)
238
+ // This is commented out to allow session history retrieval
239
+ // await this.context.memoryStore.delete(`streaming/session-${this.context.sessionId}`);
240
+ }
241
+ /**
242
+ * Check if error is recoverable (e.g., network timeout)
243
+ */
244
+ isRecoverableError(error) {
245
+ if (error instanceof Error) {
246
+ const recoverablePatterns = [
247
+ 'TIMEOUT',
248
+ 'ECONNRESET',
249
+ 'ETIMEDOUT',
250
+ 'CANCELLED'
251
+ ];
252
+ return recoverablePatterns.some(pattern => error.message.includes(pattern));
253
+ }
254
+ return false;
255
+ }
256
+ /**
257
+ * Generate unique session ID
258
+ */
259
+ generateSessionId() {
260
+ return `stream-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
261
+ }
262
+ /**
263
+ * Get current session
264
+ */
265
+ getSession() {
266
+ return this.session;
267
+ }
268
+ /**
269
+ * Check if operation is cancelled
270
+ */
271
+ isCancelled() {
272
+ return this.cancelled;
273
+ }
274
+ }
275
+ exports.StreamingMCPTool = StreamingMCPTool;
276
+ //# sourceMappingURL=StreamingMCPTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingMCPTool.js","sourceRoot":"","sources":["../../../src/mcp/streaming/StreamingMCPTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Test Execution Streaming Handler
3
+ *
4
+ * Provides real-time progress updates for long-running test executions.
5
+ * Emits progress for each test completion with status, duration, and metrics.
6
+ *
7
+ * @version 1.0.5
8
+ * @author Agentic QE Team
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ import { StreamingMCPTool } from './StreamingMCPTool.js';
12
+ import { ProgressReporter } from './types.js';
13
+ import type { TestExecution, SuiteResult } from '../handlers/test-execute.js';
14
+ import { TestExecutionSpec } from '../tools.js';
15
+ export interface TestExecuteStreamParams {
16
+ spec: TestExecutionSpec;
17
+ fleetId?: string;
18
+ enableRealtimeUpdates?: boolean;
19
+ }
20
+ export interface TestStreamProgress {
21
+ currentSuite: string;
22
+ currentTest: string;
23
+ suitesCompleted: number;
24
+ suitesTotal: number;
25
+ testsCompleted: number;
26
+ testsTotal: number;
27
+ passed: number;
28
+ failed: number;
29
+ skipped: number;
30
+ duration: number;
31
+ currentSuiteResult?: Partial<SuiteResult>;
32
+ }
33
+ /**
34
+ * Streaming handler for test execution with real-time progress
35
+ */
36
+ export declare class TestExecuteStreamHandler extends StreamingMCPTool {
37
+ private execution;
38
+ private startTime;
39
+ constructor(memoryStore: Map<string, any>, eventBus: EventEmitter);
40
+ /**
41
+ * Execute tests with streaming progress updates
42
+ */
43
+ protected executeWithProgress(params: TestExecuteStreamParams, reporter: ProgressReporter): Promise<TestExecution>;
44
+ /**
45
+ * Execute tests sequentially with progress updates
46
+ */
47
+ private executeTestsSequentiallyWithProgress;
48
+ /**
49
+ * Execute tests in parallel with progress updates
50
+ */
51
+ private executeTestsInParallelWithProgress;
52
+ /**
53
+ * Execute single suite with per-test progress updates
54
+ */
55
+ private executeSuiteWithProgress;
56
+ /**
57
+ * Validate test execution spec
58
+ */
59
+ private validateSpec;
60
+ /**
61
+ * Create execution object
62
+ */
63
+ private createExecution;
64
+ /**
65
+ * Calculate final results and metrics
66
+ */
67
+ private calculateFinalResults;
68
+ /**
69
+ * Generate test artifacts
70
+ */
71
+ private generateArtifacts;
72
+ }
73
+ //# sourceMappingURL=TestExecuteStreamHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestExecuteStreamHandler.d.ts","sourceRoot":"","sources":["../../../src/mcp/streaming/TestExecuteStreamHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAc,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,SAAS,CAAa;gBAElB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY;IASjE;;OAEG;cACa,mBAAmB,CACjC,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC;IAyEzB;;OAEG;YACW,oCAAoC;IA0FlD;;OAEG;YACW,kCAAkC;IAmGhD;;OAEG;YACW,wBAAwB;IA+EtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}