agentic-qe 1.3.3 → 1.3.5
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-api-contract-validator.md +20 -0
- package/.claude/agents/qe-chaos-engineer.md +20 -0
- package/.claude/agents/qe-coverage-analyzer.md +21 -0
- package/.claude/agents/qe-deployment-readiness.md +20 -0
- package/.claude/agents/qe-flaky-test-hunter.md +20 -0
- package/.claude/agents/qe-fleet-commander.md +20 -0
- package/.claude/agents/qe-performance-tester.md +21 -0
- package/.claude/agents/qe-production-intelligence.md +20 -0
- package/.claude/agents/qe-quality-analyzer.md +20 -0
- package/.claude/agents/qe-quality-gate.md +20 -0
- package/.claude/agents/qe-regression-risk-analyzer.md +20 -0
- package/.claude/agents/qe-requirements-validator.md +20 -0
- package/.claude/agents/qe-security-scanner.md +21 -0
- package/.claude/agents/qe-test-data-architect.md +19 -0
- package/.claude/agents/qe-test-executor.md +20 -0
- package/.claude/agents/qe-test-generator.md +22 -0
- package/.claude/agents/qe-visual-tester.md +22 -0
- package/CHANGELOG.md +252 -0
- package/README.md +325 -1019
- package/README.md.backup-20251026 +1366 -0
- package/bin/aqe-mcp +1 -1
- package/dist/agents/BaseAgent.js +1 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +16 -16
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +1 -1
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +71 -37
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/routing/index.d.ts +1 -1
- package/dist/cli/commands/routing/index.d.ts.map +1 -1
- package/dist/cli/commands/routing/index.js +29 -19
- package/dist/cli/commands/routing/index.js.map +1 -1
- package/dist/core/memory/EnhancedAgentDBService.d.ts +127 -0
- package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -0
- package/dist/core/memory/EnhancedAgentDBService.js +298 -0
- package/dist/core/memory/EnhancedAgentDBService.js.map +1 -0
- package/dist/core/neural/NeuralTrainer.js +2 -2
- package/dist/core/neural/NeuralTrainer.js.map +1 -1
- package/dist/learning/ExperienceReplayBuffer.d.ts +143 -0
- package/dist/learning/ExperienceReplayBuffer.d.ts.map +1 -0
- package/dist/learning/ExperienceReplayBuffer.js +255 -0
- package/dist/learning/ExperienceReplayBuffer.js.map +1 -0
- package/dist/learning/FixRecommendationEngine.d.ts +68 -0
- package/dist/learning/FixRecommendationEngine.d.ts.map +1 -0
- package/dist/learning/FixRecommendationEngine.js +500 -0
- package/dist/learning/FixRecommendationEngine.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +19 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
- package/dist/learning/FlakyTestDetector.js +121 -2
- package/dist/learning/FlakyTestDetector.js.map +1 -1
- package/dist/learning/LearningEngine.d.ts +50 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +140 -0
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/QLearning.d.ts +154 -0
- package/dist/learning/QLearning.d.ts.map +1 -0
- package/dist/learning/QLearning.js +337 -0
- package/dist/learning/QLearning.js.map +1 -0
- package/dist/learning/index.d.ts +4 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +7 -0
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +11 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +11 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +12 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +10 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.js +11 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
- package/dist/reasoning/PatternQualityScorer.d.ts +134 -0
- package/dist/reasoning/PatternQualityScorer.d.ts.map +1 -0
- package/dist/reasoning/PatternQualityScorer.js +340 -0
- package/dist/reasoning/PatternQualityScorer.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +138 -4
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
- package/dist/reasoning/QEReasoningBank.js +560 -12
- package/dist/reasoning/QEReasoningBank.js.map +1 -1
- package/dist/reasoning/VectorSimilarity.d.ts +131 -0
- package/dist/reasoning/VectorSimilarity.d.ts.map +1 -0
- package/dist/reasoning/VectorSimilarity.js +250 -0
- package/dist/reasoning/VectorSimilarity.js.map +1 -0
- package/dist/reasoning/index.d.ts +8 -1
- package/dist/reasoning/index.d.ts.map +1 -1
- package/dist/reasoning/index.js +13 -2
- package/dist/reasoning/index.js.map +1 -1
- package/dist/streaming/BaseStreamHandler.d.ts +89 -0
- package/dist/streaming/BaseStreamHandler.d.ts.map +1 -0
- package/dist/streaming/BaseStreamHandler.js +168 -0
- package/dist/streaming/BaseStreamHandler.js.map +1 -0
- package/dist/streaming/TestGenerateStreamHandler.d.ts +103 -0
- package/dist/streaming/TestGenerateStreamHandler.d.ts.map +1 -0
- package/dist/streaming/TestGenerateStreamHandler.js +321 -0
- package/dist/streaming/TestGenerateStreamHandler.js.map +1 -0
- package/dist/streaming/index.d.ts +16 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +39 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/utils/__mocks__/Logger.d.ts +26 -0
- package/dist/utils/__mocks__/Logger.d.ts.map +1 -0
- package/dist/utils/__mocks__/Logger.js +42 -0
- package/dist/utils/__mocks__/Logger.js.map +1 -0
- package/package.json +15 -3
- package/dist/agents/mixins/NeuralCapableMixin.d.ts +0 -130
- package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +0 -1
- package/dist/agents/mixins/NeuralCapableMixin.js +0 -358
- package/dist/agents/mixins/NeuralCapableMixin.js.map +0 -1
- package/dist/agents/mixins/QUICCapableMixin.d.ts +0 -34
- package/dist/agents/mixins/QUICCapableMixin.d.ts.map +0 -1
- package/dist/agents/mixins/QUICCapableMixin.js +0 -346
- package/dist/agents/mixins/QUICCapableMixin.js.map +0 -1
- package/dist/core/security/CertificateValidator.d.ts +0 -130
- package/dist/core/security/CertificateValidator.d.ts.map +0 -1
- package/dist/core/security/CertificateValidator.js +0 -376
- package/dist/core/security/CertificateValidator.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -62
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -381
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/core/transport/SecureQUICTransport.d.ts +0 -71
- package/dist/core/transport/SecureQUICTransport.d.ts.map +0 -1
- package/dist/core/transport/SecureQUICTransport.js +0 -253
- package/dist/core/transport/SecureQUICTransport.js.map +0 -1
- package/dist/learning/AdvancedFeatureExtractor.d.ts +0 -123
- package/dist/learning/AdvancedFeatureExtractor.d.ts.map +0 -1
- package/dist/learning/AdvancedFeatureExtractor.js +0 -423
- package/dist/learning/AdvancedFeatureExtractor.js.map +0 -1
- package/dist/learning/NeuralPatternMatcher.d.ts +0 -184
- package/dist/learning/NeuralPatternMatcher.d.ts.map +0 -1
- package/dist/learning/NeuralPatternMatcher.js +0 -702
- package/dist/learning/NeuralPatternMatcher.js.map +0 -1
- package/dist/learning/NeuralTrainer.d.ts +0 -209
- package/dist/learning/NeuralTrainer.d.ts.map +0 -1
- package/dist/learning/NeuralTrainer.js +0 -478
- package/dist/learning/NeuralTrainer.js.map +0 -1
- package/dist/transport/QUICTransport.d.ts +0 -340
- package/dist/transport/QUICTransport.d.ts.map +0 -1
- package/dist/transport/QUICTransport.js +0 -814
- package/dist/transport/QUICTransport.js.map +0 -1
- package/dist/transport/UDPTransport.d.ts +0 -348
- package/dist/transport/UDPTransport.d.ts.map +0 -1
- package/dist/transport/UDPTransport.js +0 -820
- package/dist/transport/UDPTransport.js.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base Streaming Handler
|
|
4
|
+
*
|
|
5
|
+
* Provides AsyncGenerator-based streaming for real-time progress updates.
|
|
6
|
+
* Supports for-await-of compatibility and incremental result emission.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @author Agentic QE Team
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseStreamHandler = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Base class for all streaming handlers
|
|
15
|
+
* Provides AsyncGenerator pattern for progressive result emission
|
|
16
|
+
*/
|
|
17
|
+
class BaseStreamHandler {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.startTime = 0;
|
|
20
|
+
this.cancelled = false;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Execute task with real-time streaming updates
|
|
24
|
+
* Returns AsyncGenerator for for-await-of compatibility
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const handler = new TestExecuteStreamHandler();
|
|
29
|
+
* for await (const event of handler.execute(params)) {
|
|
30
|
+
* if (event.type === 'progress') {
|
|
31
|
+
* console.log(`${event.percent}% - ${event.message}`);
|
|
32
|
+
* } else if (event.type === 'result') {
|
|
33
|
+
* console.log('Result:', event.data);
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
async *execute(params) {
|
|
39
|
+
this.startTime = Date.now();
|
|
40
|
+
this.cancelled = false;
|
|
41
|
+
try {
|
|
42
|
+
// Emit start event
|
|
43
|
+
yield this.startEvent();
|
|
44
|
+
// Process task (implemented by subclass)
|
|
45
|
+
yield* this.processTask(params);
|
|
46
|
+
// Emit completion event
|
|
47
|
+
yield this.completeEvent();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// Emit error event
|
|
51
|
+
yield this.errorEvent(error);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Cancel streaming operation
|
|
57
|
+
*/
|
|
58
|
+
cancel() {
|
|
59
|
+
this.cancelled = true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check if operation was cancelled
|
|
63
|
+
*/
|
|
64
|
+
isCancelled() {
|
|
65
|
+
return this.cancelled;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create start event
|
|
69
|
+
*/
|
|
70
|
+
startEvent(message = 'Starting task...') {
|
|
71
|
+
return {
|
|
72
|
+
type: 'progress',
|
|
73
|
+
timestamp: Date.now(),
|
|
74
|
+
percent: 0,
|
|
75
|
+
message
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create progress event
|
|
80
|
+
*/
|
|
81
|
+
progressEvent(percent, message, metadata) {
|
|
82
|
+
return {
|
|
83
|
+
type: 'progress',
|
|
84
|
+
timestamp: Date.now(),
|
|
85
|
+
percent: Math.min(100, Math.max(0, percent)),
|
|
86
|
+
message,
|
|
87
|
+
metadata
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create result event
|
|
92
|
+
*/
|
|
93
|
+
resultEvent(data, metadata) {
|
|
94
|
+
return {
|
|
95
|
+
type: 'result',
|
|
96
|
+
timestamp: Date.now(),
|
|
97
|
+
data,
|
|
98
|
+
metadata
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Create completion event
|
|
103
|
+
*/
|
|
104
|
+
completeEvent(message = 'Task completed') {
|
|
105
|
+
const duration = Date.now() - this.startTime;
|
|
106
|
+
return {
|
|
107
|
+
type: 'complete',
|
|
108
|
+
timestamp: Date.now(),
|
|
109
|
+
percent: 100,
|
|
110
|
+
message,
|
|
111
|
+
metadata: {
|
|
112
|
+
executionTime: duration,
|
|
113
|
+
executionTimeFormatted: this.formatDuration(duration)
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create error event
|
|
119
|
+
*/
|
|
120
|
+
errorEvent(error, message) {
|
|
121
|
+
return {
|
|
122
|
+
type: 'error',
|
|
123
|
+
timestamp: Date.now(),
|
|
124
|
+
error,
|
|
125
|
+
message: message || error.message,
|
|
126
|
+
metadata: {
|
|
127
|
+
errorType: error.constructor.name,
|
|
128
|
+
stack: error.stack
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Calculate progress percentage
|
|
134
|
+
*/
|
|
135
|
+
calculateProgress(current, total) {
|
|
136
|
+
if (total === 0)
|
|
137
|
+
return 0;
|
|
138
|
+
return Math.round((current / total) * 100);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Format duration in human-readable format
|
|
142
|
+
*/
|
|
143
|
+
formatDuration(ms) {
|
|
144
|
+
const seconds = Math.floor(ms / 1000);
|
|
145
|
+
const minutes = Math.floor(seconds / 60);
|
|
146
|
+
const hours = Math.floor(minutes / 60);
|
|
147
|
+
if (hours > 0) {
|
|
148
|
+
return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
|
|
149
|
+
}
|
|
150
|
+
else if (minutes > 0) {
|
|
151
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
152
|
+
}
|
|
153
|
+
else if (seconds > 0) {
|
|
154
|
+
return `${seconds}s`;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return `${ms}ms`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Sleep utility for testing/throttling
|
|
162
|
+
*/
|
|
163
|
+
async sleep(ms) {
|
|
164
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.BaseStreamHandler = BaseStreamHandler;
|
|
168
|
+
//# sourceMappingURL=BaseStreamHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseStreamHandler.js","sourceRoot":"","sources":["../../src/streaming/BaseStreamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Generation Streaming Handler
|
|
3
|
+
*
|
|
4
|
+
* Provides real-time progress updates for AI-powered test generation.
|
|
5
|
+
* Emits progress for each function/module as tests are generated.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
*/
|
|
10
|
+
import { BaseStreamHandler, StreamEvent } from './BaseStreamHandler';
|
|
11
|
+
export interface TestGenerateParams {
|
|
12
|
+
sourceFile: string;
|
|
13
|
+
framework: 'jest' | 'mocha' | 'vitest';
|
|
14
|
+
testType?: 'unit' | 'integration' | 'e2e';
|
|
15
|
+
coverage?: number;
|
|
16
|
+
includeEdgeCases?: boolean;
|
|
17
|
+
generateMocks?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface FunctionAnalysis {
|
|
20
|
+
name: string;
|
|
21
|
+
params: string[];
|
|
22
|
+
returnType?: string;
|
|
23
|
+
complexity: number;
|
|
24
|
+
isAsync: boolean;
|
|
25
|
+
isExported: boolean;
|
|
26
|
+
lineStart: number;
|
|
27
|
+
lineEnd: number;
|
|
28
|
+
}
|
|
29
|
+
export interface GeneratedTest {
|
|
30
|
+
functionName: string;
|
|
31
|
+
testCode: string;
|
|
32
|
+
testCount: number;
|
|
33
|
+
coverageEstimate: number;
|
|
34
|
+
includesEdgeCases: boolean;
|
|
35
|
+
includesMocks: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface TestGenerateResult {
|
|
38
|
+
sourceFile: string;
|
|
39
|
+
framework: string;
|
|
40
|
+
tests: GeneratedTest[];
|
|
41
|
+
totalTests: number;
|
|
42
|
+
estimatedCoverage: number;
|
|
43
|
+
generationTime: number;
|
|
44
|
+
outputFile: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Streaming handler for test generation with real-time progress
|
|
48
|
+
*/
|
|
49
|
+
export declare class TestGenerateStreamHandler extends BaseStreamHandler {
|
|
50
|
+
/**
|
|
51
|
+
* Process test generation task with incremental progress updates
|
|
52
|
+
*/
|
|
53
|
+
protected processTask(params: TestGenerateParams): AsyncGenerator<StreamEvent>;
|
|
54
|
+
/**
|
|
55
|
+
* Validate source file exists and is readable
|
|
56
|
+
*/
|
|
57
|
+
private validateSourceFile;
|
|
58
|
+
/**
|
|
59
|
+
* Analyze source file to extract functions
|
|
60
|
+
*/
|
|
61
|
+
private analyzeSourceFile;
|
|
62
|
+
/**
|
|
63
|
+
* Extract function information from AST node
|
|
64
|
+
*/
|
|
65
|
+
private extractFunctionInfo;
|
|
66
|
+
/**
|
|
67
|
+
* Estimate cyclomatic complexity
|
|
68
|
+
*/
|
|
69
|
+
private estimateComplexity;
|
|
70
|
+
/**
|
|
71
|
+
* Check if function is exported
|
|
72
|
+
*/
|
|
73
|
+
private isExported;
|
|
74
|
+
/**
|
|
75
|
+
* Generate test for a single function
|
|
76
|
+
*/
|
|
77
|
+
private generateTestForFunction;
|
|
78
|
+
/**
|
|
79
|
+
* Generate happy path test
|
|
80
|
+
*/
|
|
81
|
+
private generateHappyPathTest;
|
|
82
|
+
/**
|
|
83
|
+
* Generate edge case tests
|
|
84
|
+
*/
|
|
85
|
+
private generateEdgeCaseTests;
|
|
86
|
+
/**
|
|
87
|
+
* Generate error handling test
|
|
88
|
+
*/
|
|
89
|
+
private generateErrorTest;
|
|
90
|
+
/**
|
|
91
|
+
* Generate test file with all tests
|
|
92
|
+
*/
|
|
93
|
+
private generateTestFile;
|
|
94
|
+
/**
|
|
95
|
+
* Generate import statements
|
|
96
|
+
*/
|
|
97
|
+
private generateImports;
|
|
98
|
+
/**
|
|
99
|
+
* Calculate estimated coverage
|
|
100
|
+
*/
|
|
101
|
+
private calculateCoverageEstimate;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=TestGenerateStreamHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGenerateStreamHandler.d.ts","sourceRoot":"","sources":["../../src/streaming/TestGenerateStreamHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMrE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D;;OAEG;cACc,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAAC,WAAW,CAAC;IAsFrF;;OAEG;YACW,kBAAkB;IAQhC;;OAEG;YACW,iBAAiB;IA2C/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;YACW,uBAAuB;IAuCrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;YACW,gBAAgB;IAmB9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAIlC"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test Generation Streaming Handler
|
|
4
|
+
*
|
|
5
|
+
* Provides real-time progress updates for AI-powered test generation.
|
|
6
|
+
* Emits progress for each function/module as tests are generated.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.0
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.TestGenerateStreamHandler = void 0;
|
|
49
|
+
const BaseStreamHandler_1 = require("./BaseStreamHandler");
|
|
50
|
+
const fs = __importStar(require("fs/promises"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const parser_1 = require("@babel/parser");
|
|
53
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
54
|
+
/**
|
|
55
|
+
* Streaming handler for test generation with real-time progress
|
|
56
|
+
*/
|
|
57
|
+
class TestGenerateStreamHandler extends BaseStreamHandler_1.BaseStreamHandler {
|
|
58
|
+
/**
|
|
59
|
+
* Process test generation task with incremental progress updates
|
|
60
|
+
*/
|
|
61
|
+
async *processTask(params) {
|
|
62
|
+
const { sourceFile, framework, testType = 'unit', coverage = 80, includeEdgeCases = true, generateMocks = true } = params;
|
|
63
|
+
// Validate source file exists
|
|
64
|
+
yield this.progressEvent(5, `Validating source file: ${sourceFile}`);
|
|
65
|
+
await this.validateSourceFile(sourceFile);
|
|
66
|
+
// Analyze source file
|
|
67
|
+
yield this.progressEvent(10, 'Analyzing source file...');
|
|
68
|
+
const analysis = await this.analyzeSourceFile(sourceFile);
|
|
69
|
+
yield this.progressEvent(20, `Found ${analysis.functions.length} functions to test`, {
|
|
70
|
+
functionsFound: analysis.functions.length,
|
|
71
|
+
totalLines: analysis.totalLines
|
|
72
|
+
});
|
|
73
|
+
// Generate tests for each function
|
|
74
|
+
const tests = [];
|
|
75
|
+
const totalFunctions = analysis.functions.length;
|
|
76
|
+
for (let i = 0; i < totalFunctions; i++) {
|
|
77
|
+
if (this.isCancelled()) {
|
|
78
|
+
throw new Error('Test generation cancelled');
|
|
79
|
+
}
|
|
80
|
+
const func = analysis.functions[i];
|
|
81
|
+
const progress = 20 + ((i / totalFunctions) * 60);
|
|
82
|
+
yield this.progressEvent(progress, `Generating tests for ${func.name}...`, {
|
|
83
|
+
currentFunction: func.name,
|
|
84
|
+
functionsCompleted: i,
|
|
85
|
+
functionsTotal: totalFunctions
|
|
86
|
+
});
|
|
87
|
+
const generatedTest = await this.generateTestForFunction(func, framework, { includeEdgeCases, generateMocks, coverage });
|
|
88
|
+
tests.push(generatedTest);
|
|
89
|
+
// Emit intermediate result
|
|
90
|
+
yield this.resultEvent(generatedTest, {
|
|
91
|
+
type: 'intermediate',
|
|
92
|
+
progress: i + 1,
|
|
93
|
+
total: totalFunctions
|
|
94
|
+
});
|
|
95
|
+
// Small delay to simulate AI generation (in real impl, this would be LLM call)
|
|
96
|
+
await this.sleep(100);
|
|
97
|
+
}
|
|
98
|
+
// Generate output file
|
|
99
|
+
yield this.progressEvent(85, 'Generating test file...');
|
|
100
|
+
const outputFile = await this.generateTestFile(sourceFile, tests, framework);
|
|
101
|
+
yield this.progressEvent(95, 'Calculating coverage estimate...');
|
|
102
|
+
const estimatedCoverage = this.calculateCoverageEstimate(tests, analysis.totalLines);
|
|
103
|
+
// Final result
|
|
104
|
+
const result = {
|
|
105
|
+
sourceFile,
|
|
106
|
+
framework,
|
|
107
|
+
tests,
|
|
108
|
+
totalTests: tests.reduce((sum, t) => sum + t.testCount, 0),
|
|
109
|
+
estimatedCoverage,
|
|
110
|
+
generationTime: Date.now() - this.startTime,
|
|
111
|
+
outputFile
|
|
112
|
+
};
|
|
113
|
+
yield this.progressEvent(100, `Generated ${result.totalTests} tests in ${outputFile}`);
|
|
114
|
+
yield this.resultEvent(result, { type: 'final' });
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate source file exists and is readable
|
|
118
|
+
*/
|
|
119
|
+
async validateSourceFile(sourceFile) {
|
|
120
|
+
try {
|
|
121
|
+
await fs.access(sourceFile, fs.constants.R_OK);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw new Error(`Source file not found or not readable: ${sourceFile}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Analyze source file to extract functions
|
|
129
|
+
*/
|
|
130
|
+
async analyzeSourceFile(sourceFile) {
|
|
131
|
+
const code = await fs.readFile(sourceFile, 'utf-8');
|
|
132
|
+
const functions = [];
|
|
133
|
+
try {
|
|
134
|
+
const ast = (0, parser_1.parse)(code, {
|
|
135
|
+
sourceType: 'module',
|
|
136
|
+
plugins: ['typescript', 'jsx']
|
|
137
|
+
});
|
|
138
|
+
// Use @babel/traverse default export
|
|
139
|
+
const traverseFunc = typeof traverse_1.default === 'function' ? traverse_1.default : traverse_1.default.default;
|
|
140
|
+
traverseFunc(ast, {
|
|
141
|
+
FunctionDeclaration(path) {
|
|
142
|
+
functions.push(this.extractFunctionInfo(path));
|
|
143
|
+
},
|
|
144
|
+
ArrowFunctionExpression(path) {
|
|
145
|
+
if (path.parent.type === 'VariableDeclarator') {
|
|
146
|
+
functions.push(this.extractFunctionInfo(path));
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
ClassMethod(path) {
|
|
150
|
+
functions.push(this.extractFunctionInfo(path));
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
functions,
|
|
155
|
+
totalLines: code.split('\n').length
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
// If parsing fails, return empty analysis
|
|
160
|
+
return {
|
|
161
|
+
functions: [],
|
|
162
|
+
totalLines: code.split('\n').length
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Extract function information from AST node
|
|
168
|
+
*/
|
|
169
|
+
extractFunctionInfo(path) {
|
|
170
|
+
const node = path.node;
|
|
171
|
+
const name = node.id?.name || node.key?.name || 'anonymous';
|
|
172
|
+
return {
|
|
173
|
+
name,
|
|
174
|
+
params: node.params?.map((p) => p.name || 'param') || [],
|
|
175
|
+
complexity: this.estimateComplexity(node),
|
|
176
|
+
isAsync: node.async || false,
|
|
177
|
+
isExported: this.isExported(path),
|
|
178
|
+
lineStart: node.loc?.start.line || 0,
|
|
179
|
+
lineEnd: node.loc?.end.line || 0
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Estimate cyclomatic complexity
|
|
184
|
+
*/
|
|
185
|
+
estimateComplexity(node) {
|
|
186
|
+
// Simplified complexity estimation
|
|
187
|
+
let complexity = 1;
|
|
188
|
+
if (node.body) {
|
|
189
|
+
const bodyStr = JSON.stringify(node.body);
|
|
190
|
+
complexity += (bodyStr.match(/if|while|for|case|\&\&|\|\|/g) || []).length;
|
|
191
|
+
}
|
|
192
|
+
return complexity;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if function is exported
|
|
196
|
+
*/
|
|
197
|
+
isExported(path) {
|
|
198
|
+
let parent = path.parentPath;
|
|
199
|
+
while (parent) {
|
|
200
|
+
if (parent.node.type === 'ExportNamedDeclaration' ||
|
|
201
|
+
parent.node.type === 'ExportDefaultDeclaration') {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
parent = parent.parentPath;
|
|
205
|
+
}
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Generate test for a single function
|
|
210
|
+
*/
|
|
211
|
+
async generateTestForFunction(func, framework, options) {
|
|
212
|
+
// In real implementation, this would use LLM to generate tests
|
|
213
|
+
// For now, generate template-based tests
|
|
214
|
+
const tests = [];
|
|
215
|
+
// Basic happy path test
|
|
216
|
+
tests.push(this.generateHappyPathTest(func, framework));
|
|
217
|
+
// Edge cases based on complexity
|
|
218
|
+
if (options.includeEdgeCases) {
|
|
219
|
+
tests.push(...this.generateEdgeCaseTests(func, framework));
|
|
220
|
+
}
|
|
221
|
+
// Error handling tests
|
|
222
|
+
if (func.complexity > 2) {
|
|
223
|
+
tests.push(this.generateErrorTest(func, framework));
|
|
224
|
+
}
|
|
225
|
+
const testCode = tests.join('\n\n');
|
|
226
|
+
return {
|
|
227
|
+
functionName: func.name,
|
|
228
|
+
testCode,
|
|
229
|
+
testCount: tests.length,
|
|
230
|
+
coverageEstimate: Math.min(95, 50 + (tests.length * 15)),
|
|
231
|
+
includesEdgeCases: options.includeEdgeCases,
|
|
232
|
+
includesMocks: options.generateMocks
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Generate happy path test
|
|
237
|
+
*/
|
|
238
|
+
generateHappyPathTest(func, framework) {
|
|
239
|
+
const testFn = framework === 'jest' ? 'test' : 'it';
|
|
240
|
+
const expectFn = framework === 'mocha' ? 'expect' : 'expect';
|
|
241
|
+
return `${testFn}('${func.name} should work with valid input', ${func.isAsync ? 'async ' : ''}() => {
|
|
242
|
+
// Arrange
|
|
243
|
+
const input = {}; // TODO: Provide valid input
|
|
244
|
+
|
|
245
|
+
// Act
|
|
246
|
+
const result = ${func.isAsync ? 'await ' : ''}${func.name}(input);
|
|
247
|
+
|
|
248
|
+
// Assert
|
|
249
|
+
${expectFn}(result).toBeDefined();
|
|
250
|
+
});`;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Generate edge case tests
|
|
254
|
+
*/
|
|
255
|
+
generateEdgeCaseTests(func, framework) {
|
|
256
|
+
const testFn = framework === 'jest' ? 'test' : 'it';
|
|
257
|
+
const tests = [];
|
|
258
|
+
// Null/undefined test
|
|
259
|
+
tests.push(`${testFn}('${func.name} should handle null/undefined', () => {
|
|
260
|
+
expect(() => ${func.name}(null)).not.toThrow();
|
|
261
|
+
});`);
|
|
262
|
+
// Empty input test
|
|
263
|
+
if (func.params.length > 0) {
|
|
264
|
+
tests.push(`${testFn}('${func.name} should handle empty input', () => {
|
|
265
|
+
const result = ${func.name}({});
|
|
266
|
+
expect(result).toBeDefined();
|
|
267
|
+
});`);
|
|
268
|
+
}
|
|
269
|
+
return tests;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Generate error handling test
|
|
273
|
+
*/
|
|
274
|
+
generateErrorTest(func, framework) {
|
|
275
|
+
const testFn = framework === 'jest' ? 'test' : 'it';
|
|
276
|
+
return `${testFn}('${func.name} should handle errors gracefully', ${func.isAsync ? 'async ' : ''}() => {
|
|
277
|
+
const invalidInput = undefined;
|
|
278
|
+
|
|
279
|
+
${func.isAsync ?
|
|
280
|
+
'await expect(' + func.name + '(invalidInput)).rejects.toThrow();' :
|
|
281
|
+
'expect(() => ' + func.name + '(invalidInput)).toThrow();'}
|
|
282
|
+
});`;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Generate test file with all tests
|
|
286
|
+
*/
|
|
287
|
+
async generateTestFile(sourceFile, tests, framework) {
|
|
288
|
+
const dir = path.dirname(sourceFile);
|
|
289
|
+
const basename = path.basename(sourceFile, path.extname(sourceFile));
|
|
290
|
+
const outputFile = path.join(dir, `${basename}.test.ts`);
|
|
291
|
+
const imports = this.generateImports(sourceFile, tests, framework);
|
|
292
|
+
const testSuites = tests.map(t => t.testCode).join('\n\n');
|
|
293
|
+
const fileContent = `${imports}\n\ndescribe('${basename}', () => {\n${testSuites}\n});\n`;
|
|
294
|
+
await fs.writeFile(outputFile, fileContent, 'utf-8');
|
|
295
|
+
return outputFile;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Generate import statements
|
|
299
|
+
*/
|
|
300
|
+
generateImports(sourceFile, tests, framework) {
|
|
301
|
+
const functionNames = tests.map(t => t.functionName).join(', ');
|
|
302
|
+
const relativePath = './' + path.basename(sourceFile, path.extname(sourceFile));
|
|
303
|
+
let imports = `import { ${functionNames} } from '${relativePath}';\n`;
|
|
304
|
+
if (framework === 'jest') {
|
|
305
|
+
imports += `import { describe, test, expect } from '@jest/globals';\n`;
|
|
306
|
+
}
|
|
307
|
+
else if (framework === 'mocha') {
|
|
308
|
+
imports += `import { describe, it } from 'mocha';\nimport { expect } from 'chai';\n`;
|
|
309
|
+
}
|
|
310
|
+
return imports;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Calculate estimated coverage
|
|
314
|
+
*/
|
|
315
|
+
calculateCoverageEstimate(tests, totalLines) {
|
|
316
|
+
const avgCoverage = tests.reduce((sum, t) => sum + t.coverageEstimate, 0) / tests.length;
|
|
317
|
+
return Math.min(95, avgCoverage);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
exports.TestGenerateStreamHandler = TestGenerateStreamHandler;
|
|
321
|
+
//# sourceMappingURL=TestGenerateStreamHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGenerateStreamHandler.js","sourceRoot":"","sources":["../../src/streaming/TestGenerateStreamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming API Module
|
|
3
|
+
*
|
|
4
|
+
* Provides AsyncGenerator-based streaming handlers for real-time progress updates.
|
|
5
|
+
* All handlers support for-await-of pattern for incremental result processing.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
*/
|
|
10
|
+
export { BaseStreamHandler, StreamEvent } from './BaseStreamHandler';
|
|
11
|
+
export { TestGenerateStreamHandler, TestGenerateParams, TestGenerateResult } from './TestGenerateStreamHandler';
|
|
12
|
+
export { TestExecuteStreamHandler } from '../mcp/streaming/TestExecuteStreamHandler';
|
|
13
|
+
export { CoverageAnalyzeStreamHandler } from '../mcp/streaming/CoverageAnalyzeStreamHandler';
|
|
14
|
+
export { StreamingMCPTool } from '../mcp/streaming/StreamingMCPTool';
|
|
15
|
+
export * from '../mcp/streaming/types';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGhH,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Streaming API Module
|
|
4
|
+
*
|
|
5
|
+
* Provides AsyncGenerator-based streaming handlers for real-time progress updates.
|
|
6
|
+
* All handlers support for-await-of pattern for incremental result processing.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.0
|
|
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
|
+
exports.StreamingMCPTool = exports.CoverageAnalyzeStreamHandler = exports.TestExecuteStreamHandler = exports.TestGenerateStreamHandler = exports.BaseStreamHandler = void 0;
|
|
27
|
+
var BaseStreamHandler_1 = require("./BaseStreamHandler");
|
|
28
|
+
Object.defineProperty(exports, "BaseStreamHandler", { enumerable: true, get: function () { return BaseStreamHandler_1.BaseStreamHandler; } });
|
|
29
|
+
var TestGenerateStreamHandler_1 = require("./TestGenerateStreamHandler");
|
|
30
|
+
Object.defineProperty(exports, "TestGenerateStreamHandler", { enumerable: true, get: function () { return TestGenerateStreamHandler_1.TestGenerateStreamHandler; } });
|
|
31
|
+
// Re-export MCP streaming handlers
|
|
32
|
+
var TestExecuteStreamHandler_1 = require("../mcp/streaming/TestExecuteStreamHandler");
|
|
33
|
+
Object.defineProperty(exports, "TestExecuteStreamHandler", { enumerable: true, get: function () { return TestExecuteStreamHandler_1.TestExecuteStreamHandler; } });
|
|
34
|
+
var CoverageAnalyzeStreamHandler_1 = require("../mcp/streaming/CoverageAnalyzeStreamHandler");
|
|
35
|
+
Object.defineProperty(exports, "CoverageAnalyzeStreamHandler", { enumerable: true, get: function () { return CoverageAnalyzeStreamHandler_1.CoverageAnalyzeStreamHandler; } });
|
|
36
|
+
var StreamingMCPTool_1 = require("../mcp/streaming/StreamingMCPTool");
|
|
37
|
+
Object.defineProperty(exports, "StreamingMCPTool", { enumerable: true, get: function () { return StreamingMCPTool_1.StreamingMCPTool; } });
|
|
38
|
+
__exportStar(require("../mcp/streaming/types"), exports);
|
|
39
|
+
//# sourceMappingURL=index.js.map
|