agentic-qe 1.3.3 → 1.3.4
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/README.md +320 -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/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/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/index.d.ts +2 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +5 -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/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 +51 -4
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
- package/dist/reasoning/QEReasoningBank.js +173 -11
- 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,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* VectorSimilarity - Vector-based pattern matching for test patterns
|
|
4
|
+
*
|
|
5
|
+
* Implements TF-IDF and cosine similarity for pattern matching
|
|
6
|
+
* Target: 85%+ matching accuracy
|
|
7
|
+
*
|
|
8
|
+
* @module reasoning/VectorSimilarity
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.VectorSimilarity = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* VectorSimilarity engine for pattern matching
|
|
15
|
+
*
|
|
16
|
+
* Uses TF-IDF for vector generation and cosine similarity for matching
|
|
17
|
+
* Optimized for 85%+ accuracy in test pattern matching
|
|
18
|
+
*/
|
|
19
|
+
class VectorSimilarity {
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
this.documentFrequency = new Map();
|
|
22
|
+
this.totalDocuments = 0;
|
|
23
|
+
this.config = {
|
|
24
|
+
minTermFrequency: config.minTermFrequency ?? 1,
|
|
25
|
+
maxTermFrequency: config.maxTermFrequency ?? 1000,
|
|
26
|
+
useIDF: config.useIDF ?? true
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate vector embedding for text using TF-IDF
|
|
31
|
+
*
|
|
32
|
+
* @param text - Text to vectorize
|
|
33
|
+
* @returns Vector representation (number array)
|
|
34
|
+
*/
|
|
35
|
+
generateEmbedding(text) {
|
|
36
|
+
const terms = this.tokenize(text);
|
|
37
|
+
const termFrequency = this.calculateTermFrequency(terms);
|
|
38
|
+
// Get vocabulary from term frequency
|
|
39
|
+
const vocabulary = Array.from(termFrequency.keys()).sort();
|
|
40
|
+
// Generate TF-IDF vector
|
|
41
|
+
const vector = [];
|
|
42
|
+
for (const term of vocabulary) {
|
|
43
|
+
const tf = termFrequency.get(term) || 0;
|
|
44
|
+
const idf = this.config.useIDF ? this.calculateIDF(term) : 1;
|
|
45
|
+
vector.push(tf * idf);
|
|
46
|
+
}
|
|
47
|
+
// Normalize vector
|
|
48
|
+
return this.normalizeVector(vector);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate cosine similarity between two vectors
|
|
52
|
+
* Target: 85%+ accuracy for pattern matching
|
|
53
|
+
*
|
|
54
|
+
* @param vectorA - First vector
|
|
55
|
+
* @param vectorB - Second vector
|
|
56
|
+
* @returns Similarity score (0-1)
|
|
57
|
+
*/
|
|
58
|
+
cosineSimilarity(vectorA, vectorB) {
|
|
59
|
+
if (vectorA.length === 0 || vectorB.length === 0) {
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
// Pad shorter vector with zeros
|
|
63
|
+
const maxLen = Math.max(vectorA.length, vectorB.length);
|
|
64
|
+
const a = this.padVector(vectorA, maxLen);
|
|
65
|
+
const b = this.padVector(vectorB, maxLen);
|
|
66
|
+
// Calculate dot product
|
|
67
|
+
let dotProduct = 0;
|
|
68
|
+
let magnitudeA = 0;
|
|
69
|
+
let magnitudeB = 0;
|
|
70
|
+
for (let i = 0; i < maxLen; i++) {
|
|
71
|
+
dotProduct += a[i] * b[i];
|
|
72
|
+
magnitudeA += a[i] * a[i];
|
|
73
|
+
magnitudeB += b[i] * b[i];
|
|
74
|
+
}
|
|
75
|
+
magnitudeA = Math.sqrt(magnitudeA);
|
|
76
|
+
magnitudeB = Math.sqrt(magnitudeB);
|
|
77
|
+
if (magnitudeA === 0 || magnitudeB === 0) {
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
return dotProduct / (magnitudeA * magnitudeB);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Find top-K most similar vectors
|
|
84
|
+
*
|
|
85
|
+
* @param query - Query vector
|
|
86
|
+
* @param vectors - Map of ID to vector
|
|
87
|
+
* @param k - Number of results to return
|
|
88
|
+
* @returns Top K similar vectors with IDs and scores
|
|
89
|
+
*/
|
|
90
|
+
findTopK(query, vectors, k) {
|
|
91
|
+
const results = [];
|
|
92
|
+
for (const [id, vector] of vectors.entries()) {
|
|
93
|
+
const similarity = this.cosineSimilarity(query, vector);
|
|
94
|
+
results.push({ id, similarity });
|
|
95
|
+
}
|
|
96
|
+
// Sort by similarity (descending) and return top K
|
|
97
|
+
return results
|
|
98
|
+
.sort((a, b) => b.similarity - a.similarity)
|
|
99
|
+
.slice(0, k);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Calculate Jaccard similarity (set-based similarity)
|
|
103
|
+
* Alternative to cosine similarity for categorical data
|
|
104
|
+
*
|
|
105
|
+
* @param setA - First set
|
|
106
|
+
* @param setB - Second set
|
|
107
|
+
* @returns Jaccard similarity (0-1)
|
|
108
|
+
*/
|
|
109
|
+
jaccardSimilarity(setA, setB) {
|
|
110
|
+
const intersection = new Set([...setA].filter(x => setB.has(x)));
|
|
111
|
+
const union = new Set([...setA, ...setB]);
|
|
112
|
+
if (union.size === 0) {
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
return intersection.size / union.size;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Calculate hybrid similarity combining cosine and Jaccard
|
|
119
|
+
* Optimized for test pattern matching
|
|
120
|
+
*
|
|
121
|
+
* @param textA - First text
|
|
122
|
+
* @param textB - Second text
|
|
123
|
+
* @returns Hybrid similarity score (0-1)
|
|
124
|
+
*/
|
|
125
|
+
hybridSimilarity(textA, textB) {
|
|
126
|
+
// Cosine similarity (60% weight)
|
|
127
|
+
const vectorA = this.generateEmbedding(textA);
|
|
128
|
+
const vectorB = this.generateEmbedding(textB);
|
|
129
|
+
const cosineSim = this.cosineSimilarity(vectorA, vectorB);
|
|
130
|
+
// Jaccard similarity (40% weight)
|
|
131
|
+
const termsA = new Set(this.tokenize(textA));
|
|
132
|
+
const termsB = new Set(this.tokenize(textB));
|
|
133
|
+
const jaccardSim = this.jaccardSimilarity(termsA, termsB);
|
|
134
|
+
return cosineSim * 0.6 + jaccardSim * 0.4;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Update document frequency statistics
|
|
138
|
+
* Call this when adding new documents to the corpus
|
|
139
|
+
*
|
|
140
|
+
* @param text - Text to index
|
|
141
|
+
*/
|
|
142
|
+
indexDocument(text) {
|
|
143
|
+
const terms = new Set(this.tokenize(text));
|
|
144
|
+
for (const term of terms) {
|
|
145
|
+
this.documentFrequency.set(term, (this.documentFrequency.get(term) || 0) + 1);
|
|
146
|
+
}
|
|
147
|
+
this.totalDocuments++;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Batch index multiple documents
|
|
151
|
+
*
|
|
152
|
+
* @param documents - Array of texts to index
|
|
153
|
+
*/
|
|
154
|
+
indexDocuments(documents) {
|
|
155
|
+
for (const doc of documents) {
|
|
156
|
+
this.indexDocument(doc);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Private helper methods
|
|
160
|
+
/**
|
|
161
|
+
* Tokenize text into terms
|
|
162
|
+
* Removes punctuation, converts to lowercase, splits on whitespace
|
|
163
|
+
*/
|
|
164
|
+
tokenize(text) {
|
|
165
|
+
return text
|
|
166
|
+
.toLowerCase()
|
|
167
|
+
.replace(/[^\w\s]/g, ' ') // Remove punctuation
|
|
168
|
+
.split(/\s+/) // Split on whitespace
|
|
169
|
+
.filter(term => term.length > 2) // Remove short terms
|
|
170
|
+
.filter(term => !this.isStopWord(term)); // Remove stop words
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if term is a stop word
|
|
174
|
+
*/
|
|
175
|
+
isStopWord(term) {
|
|
176
|
+
const stopWords = new Set([
|
|
177
|
+
'the', 'is', 'at', 'which', 'on', 'a', 'an', 'and', 'or', 'but',
|
|
178
|
+
'in', 'with', 'to', 'for', 'of', 'as', 'by', 'that', 'this',
|
|
179
|
+
'it', 'from', 'be', 'are', 'was', 'were', 'been', 'have', 'has', 'had'
|
|
180
|
+
]);
|
|
181
|
+
return stopWords.has(term);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Calculate term frequency
|
|
185
|
+
*/
|
|
186
|
+
calculateTermFrequency(terms) {
|
|
187
|
+
const frequency = new Map();
|
|
188
|
+
for (const term of terms) {
|
|
189
|
+
frequency.set(term, (frequency.get(term) || 0) + 1);
|
|
190
|
+
}
|
|
191
|
+
// Normalize by document length
|
|
192
|
+
const maxFreq = Math.max(...Array.from(frequency.values()));
|
|
193
|
+
for (const [term, freq] of frequency.entries()) {
|
|
194
|
+
frequency.set(term, freq / maxFreq);
|
|
195
|
+
}
|
|
196
|
+
return frequency;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Calculate inverse document frequency
|
|
200
|
+
*/
|
|
201
|
+
calculateIDF(term) {
|
|
202
|
+
const docFreq = this.documentFrequency.get(term) || 0;
|
|
203
|
+
if (docFreq === 0 || this.totalDocuments === 0) {
|
|
204
|
+
return 1;
|
|
205
|
+
}
|
|
206
|
+
return Math.log((this.totalDocuments + 1) / (docFreq + 1)) + 1;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Normalize vector to unit length
|
|
210
|
+
*/
|
|
211
|
+
normalizeVector(vector) {
|
|
212
|
+
const magnitude = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
|
|
213
|
+
if (magnitude === 0) {
|
|
214
|
+
return vector;
|
|
215
|
+
}
|
|
216
|
+
return vector.map(val => val / magnitude);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Pad vector with zeros to specified length
|
|
220
|
+
*/
|
|
221
|
+
padVector(vector, length) {
|
|
222
|
+
const padded = [...vector];
|
|
223
|
+
while (padded.length < length) {
|
|
224
|
+
padded.push(0);
|
|
225
|
+
}
|
|
226
|
+
return padded;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get vocabulary size
|
|
230
|
+
*/
|
|
231
|
+
getVocabularySize() {
|
|
232
|
+
return this.documentFrequency.size;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get total documents indexed
|
|
236
|
+
*/
|
|
237
|
+
getTotalDocuments() {
|
|
238
|
+
return this.totalDocuments;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Clear document frequency statistics
|
|
242
|
+
*/
|
|
243
|
+
reset() {
|
|
244
|
+
this.documentFrequency.clear();
|
|
245
|
+
this.totalDocuments = 0;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.VectorSimilarity = VectorSimilarity;
|
|
249
|
+
exports.default = VectorSimilarity;
|
|
250
|
+
//# sourceMappingURL=VectorSimilarity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorSimilarity.js","sourceRoot":"","sources":["../../src/reasoning/VectorSimilarity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reasoning module - Pattern extraction and
|
|
2
|
+
* Reasoning module - Pattern extraction, analysis, and similarity matching
|
|
3
3
|
* Phase 2 (v1.1.0) - Pattern Extraction Specialist
|
|
4
|
+
* Enhanced (v1.3.3+) - Vector Similarity and Quality Scoring
|
|
4
5
|
*/
|
|
5
6
|
export { PatternExtractor } from './PatternExtractor';
|
|
6
7
|
export { CodeSignatureGenerator } from './CodeSignatureGenerator';
|
|
7
8
|
export { TestTemplateCreator } from './TestTemplateCreator';
|
|
8
9
|
export { PatternClassifier } from './PatternClassifier';
|
|
10
|
+
export { QEReasoningBank } from './QEReasoningBank';
|
|
11
|
+
export type { TestPattern, PatternMatch } from './QEReasoningBank';
|
|
12
|
+
export { VectorSimilarity } from './VectorSimilarity';
|
|
13
|
+
export type { SimilarityResult, TFIDFConfig } from './VectorSimilarity';
|
|
14
|
+
export { PatternQualityScorer } from './PatternQualityScorer';
|
|
15
|
+
export type { QualityComponents, ScoredPattern } from './PatternQualityScorer';
|
|
9
16
|
export * from '../types/pattern.types';
|
|
10
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reasoning/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reasoning/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/E,cAAc,wBAAwB,CAAC"}
|
package/dist/reasoning/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Reasoning module - Pattern extraction and
|
|
3
|
+
* Reasoning module - Pattern extraction, analysis, and similarity matching
|
|
4
4
|
* Phase 2 (v1.1.0) - Pattern Extraction Specialist
|
|
5
|
+
* Enhanced (v1.3.3+) - Vector Similarity and Quality Scoring
|
|
5
6
|
*/
|
|
6
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -18,7 +19,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
20
|
};
|
|
20
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.PatternClassifier = exports.TestTemplateCreator = exports.CodeSignatureGenerator = exports.PatternExtractor = void 0;
|
|
22
|
+
exports.PatternQualityScorer = exports.VectorSimilarity = exports.QEReasoningBank = exports.PatternClassifier = exports.TestTemplateCreator = exports.CodeSignatureGenerator = exports.PatternExtractor = void 0;
|
|
23
|
+
// Pattern extraction and classification
|
|
22
24
|
var PatternExtractor_1 = require("./PatternExtractor");
|
|
23
25
|
Object.defineProperty(exports, "PatternExtractor", { enumerable: true, get: function () { return PatternExtractor_1.PatternExtractor; } });
|
|
24
26
|
var CodeSignatureGenerator_1 = require("./CodeSignatureGenerator");
|
|
@@ -27,5 +29,14 @@ var TestTemplateCreator_1 = require("./TestTemplateCreator");
|
|
|
27
29
|
Object.defineProperty(exports, "TestTemplateCreator", { enumerable: true, get: function () { return TestTemplateCreator_1.TestTemplateCreator; } });
|
|
28
30
|
var PatternClassifier_1 = require("./PatternClassifier");
|
|
29
31
|
Object.defineProperty(exports, "PatternClassifier", { enumerable: true, get: function () { return PatternClassifier_1.PatternClassifier; } });
|
|
32
|
+
// Pattern storage and retrieval (Enhanced in v1.3.3+)
|
|
33
|
+
var QEReasoningBank_1 = require("./QEReasoningBank");
|
|
34
|
+
Object.defineProperty(exports, "QEReasoningBank", { enumerable: true, get: function () { return QEReasoningBank_1.QEReasoningBank; } });
|
|
35
|
+
// Vector similarity (NEW in v1.3.3+)
|
|
36
|
+
var VectorSimilarity_1 = require("./VectorSimilarity");
|
|
37
|
+
Object.defineProperty(exports, "VectorSimilarity", { enumerable: true, get: function () { return VectorSimilarity_1.VectorSimilarity; } });
|
|
38
|
+
// Pattern quality scoring (NEW in v1.3.3+)
|
|
39
|
+
var PatternQualityScorer_1 = require("./PatternQualityScorer");
|
|
40
|
+
Object.defineProperty(exports, "PatternQualityScorer", { enumerable: true, get: function () { return PatternQualityScorer_1.PatternQualityScorer; } });
|
|
30
41
|
__exportStar(require("../types/pattern.types"), exports);
|
|
31
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reasoning/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reasoning/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,wCAAwC;AACxC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,sDAAsD;AACtD,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAGxB,qCAAqC;AACrC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAGzB,2CAA2C;AAC3C,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAG7B,yDAAuC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Streaming Handler
|
|
3
|
+
*
|
|
4
|
+
* Provides AsyncGenerator-based streaming for real-time progress updates.
|
|
5
|
+
* Supports for-await-of compatibility and incremental result emission.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
*/
|
|
10
|
+
export interface StreamEvent {
|
|
11
|
+
type: 'progress' | 'result' | 'error' | 'complete';
|
|
12
|
+
timestamp: number;
|
|
13
|
+
data?: any;
|
|
14
|
+
percent?: number;
|
|
15
|
+
message?: string;
|
|
16
|
+
error?: Error;
|
|
17
|
+
metadata?: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Base class for all streaming handlers
|
|
21
|
+
* Provides AsyncGenerator pattern for progressive result emission
|
|
22
|
+
*/
|
|
23
|
+
export declare abstract class BaseStreamHandler {
|
|
24
|
+
protected startTime: number;
|
|
25
|
+
protected cancelled: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Execute task with real-time streaming updates
|
|
28
|
+
* Returns AsyncGenerator for for-await-of compatibility
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const handler = new TestExecuteStreamHandler();
|
|
33
|
+
* for await (const event of handler.execute(params)) {
|
|
34
|
+
* if (event.type === 'progress') {
|
|
35
|
+
* console.log(`${event.percent}% - ${event.message}`);
|
|
36
|
+
* } else if (event.type === 'result') {
|
|
37
|
+
* console.log('Result:', event.data);
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
execute(params: any): AsyncGenerator<StreamEvent, void, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Process task with incremental progress updates
|
|
45
|
+
* Must be implemented by subclass
|
|
46
|
+
*/
|
|
47
|
+
protected abstract processTask(params: any): AsyncGenerator<StreamEvent, void, unknown>;
|
|
48
|
+
/**
|
|
49
|
+
* Cancel streaming operation
|
|
50
|
+
*/
|
|
51
|
+
cancel(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Check if operation was cancelled
|
|
54
|
+
*/
|
|
55
|
+
protected isCancelled(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Create start event
|
|
58
|
+
*/
|
|
59
|
+
protected startEvent(message?: string): StreamEvent;
|
|
60
|
+
/**
|
|
61
|
+
* Create progress event
|
|
62
|
+
*/
|
|
63
|
+
protected progressEvent(percent: number, message: string, metadata?: Record<string, any>): StreamEvent;
|
|
64
|
+
/**
|
|
65
|
+
* Create result event
|
|
66
|
+
*/
|
|
67
|
+
protected resultEvent(data: any, metadata?: Record<string, any>): StreamEvent;
|
|
68
|
+
/**
|
|
69
|
+
* Create completion event
|
|
70
|
+
*/
|
|
71
|
+
protected completeEvent(message?: string): StreamEvent;
|
|
72
|
+
/**
|
|
73
|
+
* Create error event
|
|
74
|
+
*/
|
|
75
|
+
protected errorEvent(error: Error, message?: string): StreamEvent;
|
|
76
|
+
/**
|
|
77
|
+
* Calculate progress percentage
|
|
78
|
+
*/
|
|
79
|
+
protected calculateProgress(current: number, total: number): number;
|
|
80
|
+
/**
|
|
81
|
+
* Format duration in human-readable format
|
|
82
|
+
*/
|
|
83
|
+
protected formatDuration(ms: number): string;
|
|
84
|
+
/**
|
|
85
|
+
* Sleep utility for testing/throttling
|
|
86
|
+
*/
|
|
87
|
+
protected sleep(ms: number): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=BaseStreamHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseStreamHandler.d.ts","sourceRoot":"","sources":["../../src/streaming/BaseStreamHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,8BAAsB,iBAAiB;IACrC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC;;;;;;;;;;;;;;;OAeG;IACI,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAoBvE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAEvF;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,OAAO;IAIhC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,GAAE,MAA2B,GAAG,WAAW;IASvE;;OAEG;IACH,SAAS,CAAC,aAAa,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,WAAW;IAUd;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,WAAW;IAS7E;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,GAAE,MAAyB,GAAG,WAAW;IAcxE;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAajE;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAKnE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgB5C;;OAEG;cACa,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD"}
|
|
@@ -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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"}
|