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.
Files changed (122) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +20 -0
  2. package/.claude/agents/qe-chaos-engineer.md +20 -0
  3. package/.claude/agents/qe-coverage-analyzer.md +21 -0
  4. package/.claude/agents/qe-deployment-readiness.md +20 -0
  5. package/.claude/agents/qe-flaky-test-hunter.md +20 -0
  6. package/.claude/agents/qe-fleet-commander.md +20 -0
  7. package/.claude/agents/qe-performance-tester.md +21 -0
  8. package/.claude/agents/qe-production-intelligence.md +20 -0
  9. package/.claude/agents/qe-quality-analyzer.md +20 -0
  10. package/.claude/agents/qe-quality-gate.md +20 -0
  11. package/.claude/agents/qe-regression-risk-analyzer.md +20 -0
  12. package/.claude/agents/qe-requirements-validator.md +20 -0
  13. package/.claude/agents/qe-security-scanner.md +21 -0
  14. package/.claude/agents/qe-test-data-architect.md +19 -0
  15. package/.claude/agents/qe-test-executor.md +20 -0
  16. package/.claude/agents/qe-test-generator.md +22 -0
  17. package/.claude/agents/qe-visual-tester.md +22 -0
  18. package/README.md +320 -1019
  19. package/README.md.backup-20251026 +1366 -0
  20. package/bin/aqe-mcp +1 -1
  21. package/dist/agents/BaseAgent.js +1 -1
  22. package/dist/agents/BaseAgent.js.map +1 -1
  23. package/dist/agents/CoverageAnalyzerAgent.js +16 -16
  24. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  25. package/dist/agents/FlakyTestHunterAgent.js +1 -1
  26. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  27. package/dist/cli/commands/init.d.ts.map +1 -1
  28. package/dist/cli/commands/init.js +71 -37
  29. package/dist/cli/commands/init.js.map +1 -1
  30. package/dist/core/memory/EnhancedAgentDBService.d.ts +127 -0
  31. package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -0
  32. package/dist/core/memory/EnhancedAgentDBService.js +298 -0
  33. package/dist/core/memory/EnhancedAgentDBService.js.map +1 -0
  34. package/dist/core/neural/NeuralTrainer.js +2 -2
  35. package/dist/core/neural/NeuralTrainer.js.map +1 -1
  36. package/dist/learning/FixRecommendationEngine.d.ts +68 -0
  37. package/dist/learning/FixRecommendationEngine.d.ts.map +1 -0
  38. package/dist/learning/FixRecommendationEngine.js +500 -0
  39. package/dist/learning/FixRecommendationEngine.js.map +1 -0
  40. package/dist/learning/FlakyTestDetector.d.ts +19 -0
  41. package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
  42. package/dist/learning/FlakyTestDetector.js +121 -2
  43. package/dist/learning/FlakyTestDetector.js.map +1 -1
  44. package/dist/learning/index.d.ts +2 -0
  45. package/dist/learning/index.d.ts.map +1 -1
  46. package/dist/learning/index.js +5 -0
  47. package/dist/learning/index.js.map +1 -1
  48. package/dist/learning/types.d.ts +11 -0
  49. package/dist/learning/types.d.ts.map +1 -1
  50. package/dist/reasoning/PatternQualityScorer.d.ts +134 -0
  51. package/dist/reasoning/PatternQualityScorer.d.ts.map +1 -0
  52. package/dist/reasoning/PatternQualityScorer.js +340 -0
  53. package/dist/reasoning/PatternQualityScorer.js.map +1 -0
  54. package/dist/reasoning/QEReasoningBank.d.ts +51 -4
  55. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
  56. package/dist/reasoning/QEReasoningBank.js +173 -11
  57. package/dist/reasoning/QEReasoningBank.js.map +1 -1
  58. package/dist/reasoning/VectorSimilarity.d.ts +131 -0
  59. package/dist/reasoning/VectorSimilarity.d.ts.map +1 -0
  60. package/dist/reasoning/VectorSimilarity.js +250 -0
  61. package/dist/reasoning/VectorSimilarity.js.map +1 -0
  62. package/dist/reasoning/index.d.ts +8 -1
  63. package/dist/reasoning/index.d.ts.map +1 -1
  64. package/dist/reasoning/index.js +13 -2
  65. package/dist/reasoning/index.js.map +1 -1
  66. package/dist/streaming/BaseStreamHandler.d.ts +89 -0
  67. package/dist/streaming/BaseStreamHandler.d.ts.map +1 -0
  68. package/dist/streaming/BaseStreamHandler.js +168 -0
  69. package/dist/streaming/BaseStreamHandler.js.map +1 -0
  70. package/dist/streaming/TestGenerateStreamHandler.d.ts +103 -0
  71. package/dist/streaming/TestGenerateStreamHandler.d.ts.map +1 -0
  72. package/dist/streaming/TestGenerateStreamHandler.js +321 -0
  73. package/dist/streaming/TestGenerateStreamHandler.js.map +1 -0
  74. package/dist/streaming/index.d.ts +16 -0
  75. package/dist/streaming/index.d.ts.map +1 -0
  76. package/dist/streaming/index.js +39 -0
  77. package/dist/streaming/index.js.map +1 -0
  78. package/dist/utils/__mocks__/Logger.d.ts +26 -0
  79. package/dist/utils/__mocks__/Logger.d.ts.map +1 -0
  80. package/dist/utils/__mocks__/Logger.js +42 -0
  81. package/dist/utils/__mocks__/Logger.js.map +1 -0
  82. package/package.json +15 -3
  83. package/dist/agents/mixins/NeuralCapableMixin.d.ts +0 -130
  84. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +0 -1
  85. package/dist/agents/mixins/NeuralCapableMixin.js +0 -358
  86. package/dist/agents/mixins/NeuralCapableMixin.js.map +0 -1
  87. package/dist/agents/mixins/QUICCapableMixin.d.ts +0 -34
  88. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +0 -1
  89. package/dist/agents/mixins/QUICCapableMixin.js +0 -346
  90. package/dist/agents/mixins/QUICCapableMixin.js.map +0 -1
  91. package/dist/core/security/CertificateValidator.d.ts +0 -130
  92. package/dist/core/security/CertificateValidator.d.ts.map +0 -1
  93. package/dist/core/security/CertificateValidator.js +0 -376
  94. package/dist/core/security/CertificateValidator.js.map +0 -1
  95. package/dist/core/transport/QUICTransport.d.ts +0 -62
  96. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  97. package/dist/core/transport/QUICTransport.js +0 -381
  98. package/dist/core/transport/QUICTransport.js.map +0 -1
  99. package/dist/core/transport/SecureQUICTransport.d.ts +0 -71
  100. package/dist/core/transport/SecureQUICTransport.d.ts.map +0 -1
  101. package/dist/core/transport/SecureQUICTransport.js +0 -253
  102. package/dist/core/transport/SecureQUICTransport.js.map +0 -1
  103. package/dist/learning/AdvancedFeatureExtractor.d.ts +0 -123
  104. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +0 -1
  105. package/dist/learning/AdvancedFeatureExtractor.js +0 -423
  106. package/dist/learning/AdvancedFeatureExtractor.js.map +0 -1
  107. package/dist/learning/NeuralPatternMatcher.d.ts +0 -184
  108. package/dist/learning/NeuralPatternMatcher.d.ts.map +0 -1
  109. package/dist/learning/NeuralPatternMatcher.js +0 -702
  110. package/dist/learning/NeuralPatternMatcher.js.map +0 -1
  111. package/dist/learning/NeuralTrainer.d.ts +0 -209
  112. package/dist/learning/NeuralTrainer.d.ts.map +0 -1
  113. package/dist/learning/NeuralTrainer.js +0 -478
  114. package/dist/learning/NeuralTrainer.js.map +0 -1
  115. package/dist/transport/QUICTransport.d.ts +0 -340
  116. package/dist/transport/QUICTransport.d.ts.map +0 -1
  117. package/dist/transport/QUICTransport.js +0 -814
  118. package/dist/transport/QUICTransport.js.map +0 -1
  119. package/dist/transport/UDPTransport.d.ts +0 -348
  120. package/dist/transport/UDPTransport.d.ts.map +0 -1
  121. package/dist/transport/UDPTransport.js +0 -820
  122. 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 analysis
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;;;GAGG;AAEH,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;AAExD,cAAc,wBAAwB,CAAC"}
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"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  /**
3
- * Reasoning module - Pattern extraction and analysis
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;;;GAGG;;;;;;;;;;;;;;;;;AAEH,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,yDAAuC"}
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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"}