agentic-qe 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/.claude/agents/qe-quality-analyzer.md +405 -0
  2. package/CHANGELOG.md +109 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/README.md +669 -162
  5. package/bin/aqe +90 -938
  6. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  7. package/dist/adapters/MemoryStoreAdapter.js +6 -0
  8. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  9. package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
  10. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.js +316 -48
  12. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  13. package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
  14. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  15. package/dist/agents/FlakyTestHunterAgent.js +217 -10
  16. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  17. package/dist/agents/LearningAgent.d.ts +75 -0
  18. package/dist/agents/LearningAgent.d.ts.map +1 -0
  19. package/dist/agents/LearningAgent.js +177 -0
  20. package/dist/agents/LearningAgent.js.map +1 -0
  21. package/dist/agents/TestGeneratorAgent.d.ts +42 -2
  22. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.js +232 -13
  24. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  25. package/dist/cli/commands/improve/index.d.ts +70 -0
  26. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  27. package/dist/cli/commands/improve/index.js +530 -0
  28. package/dist/cli/commands/improve/index.js.map +1 -0
  29. package/dist/cli/commands/init.d.ts +33 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +656 -39
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/learn/index.d.ts +68 -0
  34. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  35. package/dist/cli/commands/learn/index.js +431 -0
  36. package/dist/cli/commands/learn/index.js.map +1 -0
  37. package/dist/cli/commands/patterns/index.d.ts +75 -0
  38. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  39. package/dist/cli/commands/patterns/index.js +502 -0
  40. package/dist/cli/commands/patterns/index.js.map +1 -0
  41. package/dist/cli/index.js +367 -8
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  44. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  45. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  46. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  47. package/dist/index.d.ts +10 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +10 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  52. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  53. package/dist/learning/FlakyFixRecommendations.js +247 -0
  54. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  55. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  56. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  57. package/dist/learning/FlakyPredictionModel.js +289 -0
  58. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  59. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  60. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  61. package/dist/learning/FlakyTestDetector.js +215 -0
  62. package/dist/learning/FlakyTestDetector.js.map +1 -0
  63. package/dist/learning/ImprovementLoop.d.ts +119 -0
  64. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  65. package/dist/learning/ImprovementLoop.js +353 -0
  66. package/dist/learning/ImprovementLoop.js.map +1 -0
  67. package/dist/learning/LearningEngine.d.ts +144 -0
  68. package/dist/learning/LearningEngine.d.ts.map +1 -0
  69. package/dist/learning/LearningEngine.js +531 -0
  70. package/dist/learning/LearningEngine.js.map +1 -0
  71. package/dist/learning/PerformanceTracker.d.ts +118 -0
  72. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  73. package/dist/learning/PerformanceTracker.js +376 -0
  74. package/dist/learning/PerformanceTracker.js.map +1 -0
  75. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  76. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  77. package/dist/learning/StatisticalAnalysis.js +170 -0
  78. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  79. package/dist/learning/SwarmIntegration.d.ts +107 -0
  80. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  81. package/dist/learning/SwarmIntegration.js +191 -0
  82. package/dist/learning/SwarmIntegration.js.map +1 -0
  83. package/dist/learning/index.d.ts +10 -0
  84. package/dist/learning/index.d.ts.map +1 -0
  85. package/dist/learning/index.js +16 -0
  86. package/dist/learning/index.js.map +1 -0
  87. package/dist/learning/types.d.ts +288 -0
  88. package/dist/learning/types.d.ts.map +1 -0
  89. package/dist/learning/types.js +9 -0
  90. package/dist/learning/types.js.map +1 -0
  91. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  92. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  93. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  94. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  95. package/dist/mcp/server.d.ts.map +1 -1
  96. package/dist/mcp/server.js +94 -0
  97. package/dist/mcp/server.js.map +1 -1
  98. package/dist/mcp/tools.d.ts +15 -0
  99. package/dist/mcp/tools.d.ts.map +1 -1
  100. package/dist/mcp/tools.js +17 -1
  101. package/dist/mcp/tools.js.map +1 -1
  102. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  103. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  104. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  105. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  106. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  107. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  108. package/dist/reasoning/PatternClassifier.js +345 -0
  109. package/dist/reasoning/PatternClassifier.js.map +1 -0
  110. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  111. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  112. package/dist/reasoning/PatternExtractor.js +539 -0
  113. package/dist/reasoning/PatternExtractor.js.map +1 -0
  114. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  115. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  116. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  117. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  118. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  119. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  120. package/dist/reasoning/QEReasoningBank.js +235 -0
  121. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  122. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  123. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  124. package/dist/reasoning/TestTemplateCreator.js +535 -0
  125. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  126. package/dist/reasoning/index.d.ts +10 -0
  127. package/dist/reasoning/index.d.ts.map +1 -0
  128. package/dist/reasoning/index.js +31 -0
  129. package/dist/reasoning/index.js.map +1 -0
  130. package/dist/reasoning/types.d.ts +717 -0
  131. package/dist/reasoning/types.d.ts.map +1 -0
  132. package/dist/reasoning/types.js +57 -0
  133. package/dist/reasoning/types.js.map +1 -0
  134. package/dist/types/index.d.ts +4 -0
  135. package/dist/types/index.d.ts.map +1 -1
  136. package/dist/types/index.js.map +1 -1
  137. package/dist/types/pattern.types.d.ts +364 -0
  138. package/dist/types/pattern.types.d.ts.map +1 -0
  139. package/dist/types/pattern.types.js +60 -0
  140. package/dist/types/pattern.types.js.map +1 -0
  141. package/package.json +25 -3
@@ -0,0 +1,539 @@
1
+ "use strict";
2
+ /**
3
+ * PatternExtractor - AST-based pattern extraction from test suites
4
+ * Phase 2 (v1.1.0) - Pattern Extraction Specialist
5
+ *
6
+ * Extracts reusable patterns from existing test suites including:
7
+ * - Edge cases and boundary conditions
8
+ * - Error handling patterns
9
+ * - Mock and assertion patterns
10
+ * - Integration patterns
11
+ *
12
+ * Performance: Process 100+ test files in < 5 seconds
13
+ * Accuracy: > 85% pattern extraction accuracy
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.PatternExtractor = void 0;
50
+ const parser_1 = require("@babel/parser");
51
+ const fs = __importStar(require("fs-extra"));
52
+ const crypto = __importStar(require("crypto"));
53
+ const pattern_types_1 = require("../types/pattern.types");
54
+ const Logger_1 = require("../utils/Logger");
55
+ /**
56
+ * Main pattern extractor class
57
+ */
58
+ class PatternExtractor {
59
+ constructor(config) {
60
+ this.logger = Logger_1.Logger.getInstance();
61
+ this.extractedPatterns = new Map();
62
+ this.patternFrequency = new Map();
63
+ this.config = {
64
+ frameworks: [pattern_types_1.TestFramework.JEST, pattern_types_1.TestFramework.MOCHA, pattern_types_1.TestFramework.CYPRESS],
65
+ minConfidence: 0.7,
66
+ minFrequency: 2,
67
+ maxPatternsPerFile: 10,
68
+ parallel: true,
69
+ astOptions: {
70
+ typescript: true,
71
+ jsx: true,
72
+ includeComments: true,
73
+ maxDepth: 50
74
+ },
75
+ ...config
76
+ };
77
+ }
78
+ /**
79
+ * Extract patterns from multiple test files
80
+ */
81
+ async extractFromFiles(filePaths) {
82
+ const startTime = Date.now();
83
+ const errors = [];
84
+ let totalTests = 0;
85
+ const patterns = [];
86
+ this.logger.info(`Extracting patterns from ${filePaths.length} files`);
87
+ for (const filePath of filePaths) {
88
+ try {
89
+ const filePatterns = await this.extractFromFile(filePath);
90
+ patterns.push(...filePatterns);
91
+ totalTests += this.countTestsInFile(filePath);
92
+ }
93
+ catch (error) {
94
+ errors.push({
95
+ file: filePath,
96
+ message: error.message,
97
+ type: 'analysis-error',
98
+ stack: error.stack
99
+ });
100
+ this.logger.error(`Failed to extract patterns from ${filePath}:`, error);
101
+ }
102
+ }
103
+ const processingTime = Date.now() - startTime;
104
+ const statistics = this.calculateStatistics(filePaths.length, totalTests, patterns, processingTime);
105
+ return {
106
+ patterns: this.deduplicatePatterns(patterns),
107
+ signatures: [],
108
+ statistics,
109
+ errors,
110
+ timestamp: new Date()
111
+ };
112
+ }
113
+ /**
114
+ * Extract patterns from a single test file
115
+ */
116
+ async extractFromFile(filePath) {
117
+ const content = await fs.readFile(filePath, 'utf-8');
118
+ const framework = this.detectFramework(content);
119
+ const ast = this.parseCode(content, filePath);
120
+ const patterns = [];
121
+ // Extract different pattern types
122
+ patterns.push(...this.extractEdgeCasePatterns(ast, framework, filePath));
123
+ patterns.push(...this.extractBoundaryConditionPatterns(ast, framework, filePath));
124
+ patterns.push(...this.extractErrorHandlingPatterns(ast, framework, filePath));
125
+ patterns.push(...this.extractMockPatterns(ast, framework, filePath));
126
+ patterns.push(...this.extractAssertionPatterns(ast, framework, filePath));
127
+ patterns.push(...this.extractAsyncPatterns(ast, framework, filePath));
128
+ // Filter by confidence and frequency
129
+ return patterns
130
+ .filter(p => p.confidence >= this.config.minConfidence)
131
+ .slice(0, this.config.maxPatternsPerFile);
132
+ }
133
+ /**
134
+ * Parse source code to AST
135
+ */
136
+ parseCode(code, filePath) {
137
+ try {
138
+ return (0, parser_1.parse)(code, {
139
+ sourceType: 'module',
140
+ plugins: [
141
+ 'typescript',
142
+ 'jsx',
143
+ 'decorators-legacy',
144
+ 'classProperties',
145
+ 'asyncGenerators',
146
+ 'dynamicImport',
147
+ 'optionalChaining',
148
+ 'nullishCoalescingOperator'
149
+ ],
150
+ sourceFilename: filePath
151
+ });
152
+ }
153
+ catch (error) {
154
+ throw new Error(`Failed to parse ${filePath}: ${error.message}`);
155
+ }
156
+ }
157
+ /**
158
+ * Detect test framework from source code
159
+ * Checks framework-specific indicators in priority order
160
+ */
161
+ detectFramework(code) {
162
+ // Check framework-specific indicators first (highest priority)
163
+ if (code.includes('cy.') || code.includes('Cypress')) {
164
+ return pattern_types_1.TestFramework.CYPRESS;
165
+ }
166
+ if (code.includes('vitest') || code.includes('vi.') || code.includes('import { test, expect } from \'vitest\'')) {
167
+ return pattern_types_1.TestFramework.VITEST;
168
+ }
169
+ if (code.includes('t.is(') || code.includes('test.serial') || code.includes('import test from \'ava\'')) {
170
+ return pattern_types_1.TestFramework.AVA;
171
+ }
172
+ if (code.includes('jasmine') || code.includes('spyOn(') || code.includes('jasmine.')) {
173
+ return pattern_types_1.TestFramework.JASMINE;
174
+ }
175
+ if (code.includes('mocha') || code.includes('chai') || code.includes('assert.') || code.includes('should.')) {
176
+ return pattern_types_1.TestFramework.MOCHA;
177
+ }
178
+ if (code.includes('@jest') || code.includes('jest.') || code.includes('test.skip') || code.includes('test.only')) {
179
+ return pattern_types_1.TestFramework.JEST;
180
+ }
181
+ // Fallback to generic detection (describe/it/test are used by multiple frameworks)
182
+ if (code.includes('describe(') || code.includes('it(') || code.includes('test(')) {
183
+ return pattern_types_1.TestFramework.JEST; // Default only after all specific checks
184
+ }
185
+ return pattern_types_1.TestFramework.JEST;
186
+ }
187
+ /**
188
+ * Extract edge case patterns
189
+ */
190
+ extractEdgeCasePatterns(ast, framework, filePath) {
191
+ const patterns = [];
192
+ const edgeCaseIndicators = [
193
+ 'null', 'undefined', 'empty', 'zero', 'negative', 'max', 'min',
194
+ 'edge', 'boundary', 'limit', 'extreme'
195
+ ];
196
+ this.traverseAST(ast, (node) => {
197
+ if (this.isTestBlock(node)) {
198
+ const testName = this.getTestName(node);
199
+ const hasEdgeCaseIndicator = edgeCaseIndicators.some(indicator => testName.toLowerCase().includes(indicator));
200
+ if (hasEdgeCaseIndicator) {
201
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.EDGE_CASE, framework, filePath, testName, 0.85);
202
+ patterns.push(pattern);
203
+ }
204
+ }
205
+ });
206
+ return patterns;
207
+ }
208
+ /**
209
+ * Extract boundary condition patterns
210
+ */
211
+ extractBoundaryConditionPatterns(ast, framework, filePath) {
212
+ const patterns = [];
213
+ const boundaryIndicators = [
214
+ 'boundary', 'range', 'between', 'threshold', 'limit',
215
+ '>=', '<=', '>', '<', 'minimum', 'maximum'
216
+ ];
217
+ this.traverseAST(ast, (node) => {
218
+ if (this.isTestBlock(node)) {
219
+ const code = this.getNodeCode(node);
220
+ const hasBoundaryCheck = boundaryIndicators.some(indicator => code.includes(indicator));
221
+ if (hasBoundaryCheck) {
222
+ const testName = this.getTestName(node);
223
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.BOUNDARY_CONDITION, framework, filePath, testName, 0.8);
224
+ patterns.push(pattern);
225
+ }
226
+ }
227
+ });
228
+ return patterns;
229
+ }
230
+ /**
231
+ * Extract error handling patterns
232
+ */
233
+ extractErrorHandlingPatterns(ast, framework, filePath) {
234
+ const patterns = [];
235
+ this.traverseAST(ast, (node) => {
236
+ if (this.isTestBlock(node)) {
237
+ const code = this.getNodeCode(node);
238
+ const hasErrorHandling = (code.includes('try') && code.includes('catch')) ||
239
+ code.includes('toThrow') ||
240
+ code.includes('rejects') ||
241
+ code.includes('.catch(') ||
242
+ (code.includes('expect') && code.includes('Error'));
243
+ if (hasErrorHandling) {
244
+ const testName = this.getTestName(node);
245
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.ERROR_HANDLING, framework, filePath, testName, 0.9);
246
+ patterns.push(pattern);
247
+ }
248
+ }
249
+ });
250
+ return patterns;
251
+ }
252
+ /**
253
+ * Extract mock patterns
254
+ */
255
+ extractMockPatterns(ast, framework, filePath) {
256
+ const patterns = [];
257
+ const mockIndicators = ['mock', 'stub', 'spy', 'jest.fn', 'sinon', 'jest.spyOn'];
258
+ this.traverseAST(ast, (node) => {
259
+ if (this.isTestBlock(node)) {
260
+ const code = this.getNodeCode(node);
261
+ const hasMocking = mockIndicators.some(indicator => code.includes(indicator));
262
+ if (hasMocking) {
263
+ const testName = this.getTestName(node);
264
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.MOCK_PATTERN, framework, filePath, testName, 0.85);
265
+ patterns.push(pattern);
266
+ }
267
+ }
268
+ });
269
+ return patterns;
270
+ }
271
+ /**
272
+ * Extract assertion patterns
273
+ */
274
+ extractAssertionPatterns(ast, framework, filePath) {
275
+ const patterns = [];
276
+ this.traverseAST(ast, (node) => {
277
+ if (this.isTestBlock(node)) {
278
+ const assertionCount = this.countAssertions(node);
279
+ if (assertionCount >= 3) {
280
+ const testName = this.getTestName(node);
281
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.ASSERTION_PATTERN, framework, filePath, testName, 0.75);
282
+ patterns.push(pattern);
283
+ }
284
+ }
285
+ });
286
+ return patterns;
287
+ }
288
+ /**
289
+ * Extract async patterns
290
+ */
291
+ extractAsyncPatterns(ast, framework, filePath) {
292
+ const patterns = [];
293
+ this.traverseAST(ast, (node) => {
294
+ if (this.isTestBlock(node)) {
295
+ const code = this.getNodeCode(node);
296
+ const isAsync = code.includes('async') ||
297
+ code.includes('await') ||
298
+ code.includes('Promise') ||
299
+ code.includes('.then(');
300
+ if (isAsync) {
301
+ const testName = this.getTestName(node);
302
+ const pattern = this.createPattern(node, pattern_types_1.PatternType.ASYNC_PATTERN, framework, filePath, testName, 0.8);
303
+ patterns.push(pattern);
304
+ }
305
+ }
306
+ });
307
+ return patterns;
308
+ }
309
+ /**
310
+ * Create a test pattern from AST node
311
+ */
312
+ createPattern(node, type, framework, filePath, name, confidence) {
313
+ const id = this.generatePatternId(name, type);
314
+ const code = this.getNodeCode(node);
315
+ return {
316
+ id,
317
+ name,
318
+ type,
319
+ category: this.inferCategory(type),
320
+ framework,
321
+ template: this.createEmptyTemplate(id, name),
322
+ examples: [code],
323
+ frequency: 1,
324
+ confidence,
325
+ applicabilityConditions: this.inferApplicabilityConditions(type),
326
+ sourceFile: filePath,
327
+ createdAt: new Date(),
328
+ metadata: {
329
+ nodeType: node.type,
330
+ location: this.getLocation(node)
331
+ }
332
+ };
333
+ }
334
+ /**
335
+ * Traverse AST and apply visitor function
336
+ */
337
+ traverseAST(ast, visitor) {
338
+ const traverse = (node, depth = 0) => {
339
+ if (!node || depth > (this.config.astOptions.maxDepth || 50))
340
+ return;
341
+ visitor(node);
342
+ for (const key in node) {
343
+ if (node[key] && typeof node[key] === 'object') {
344
+ if (Array.isArray(node[key])) {
345
+ node[key].forEach((child) => traverse(child, depth + 1));
346
+ }
347
+ else {
348
+ traverse(node[key], depth + 1);
349
+ }
350
+ }
351
+ }
352
+ };
353
+ traverse(ast);
354
+ }
355
+ /**
356
+ * Check if node is a test block
357
+ */
358
+ isTestBlock(node) {
359
+ if (node.type !== 'CallExpression')
360
+ return false;
361
+ const callee = node.callee;
362
+ if (!callee)
363
+ return false;
364
+ const testFunctions = ['it', 'test', 'describe', 'context', 'specify'];
365
+ return testFunctions.includes(callee.name || callee.property?.name);
366
+ }
367
+ /**
368
+ * Get test name from node
369
+ */
370
+ getTestName(node) {
371
+ if (node.arguments && node.arguments.length > 0) {
372
+ const firstArg = node.arguments[0];
373
+ if (firstArg.type === 'StringLiteral') {
374
+ return firstArg.value;
375
+ }
376
+ }
377
+ return 'unnamed-test';
378
+ }
379
+ /**
380
+ * Get code from node
381
+ */
382
+ getNodeCode(node) {
383
+ // Simplified - in real implementation, use recast or similar
384
+ return JSON.stringify(node, null, 2);
385
+ }
386
+ /**
387
+ * Count assertions in test block
388
+ */
389
+ countAssertions(node) {
390
+ let count = 0;
391
+ this.traverseAST(node, (n) => {
392
+ if (n.type === 'CallExpression') {
393
+ const callee = n.callee;
394
+ if (callee?.name === 'expect' || callee?.property?.name === 'expect') {
395
+ count++;
396
+ }
397
+ }
398
+ });
399
+ return count;
400
+ }
401
+ /**
402
+ * Get node location
403
+ */
404
+ getLocation(node) {
405
+ return {
406
+ startLine: node.loc?.start?.line || 0,
407
+ endLine: node.loc?.end?.line || 0,
408
+ startColumn: node.loc?.start?.column || 0,
409
+ endColumn: node.loc?.end?.column || 0
410
+ };
411
+ }
412
+ /**
413
+ * Generate pattern ID
414
+ */
415
+ generatePatternId(name, type) {
416
+ const hash = crypto
417
+ .createHash('md5')
418
+ .update(`${name}-${type}-${Date.now()}`)
419
+ .digest('hex')
420
+ .substring(0, 8);
421
+ return `pattern-${type}-${hash}`;
422
+ }
423
+ /**
424
+ * Infer pattern category from type
425
+ */
426
+ inferCategory(type) {
427
+ const categoryMap = {
428
+ [pattern_types_1.PatternType.EDGE_CASE]: pattern_types_1.PatternCategory.UNIT_TEST,
429
+ [pattern_types_1.PatternType.BOUNDARY_CONDITION]: pattern_types_1.PatternCategory.UNIT_TEST,
430
+ [pattern_types_1.PatternType.ERROR_HANDLING]: pattern_types_1.PatternCategory.UNIT_TEST,
431
+ [pattern_types_1.PatternType.INTEGRATION]: pattern_types_1.PatternCategory.INTEGRATION_TEST,
432
+ [pattern_types_1.PatternType.ASYNC_PATTERN]: pattern_types_1.PatternCategory.INTEGRATION_TEST,
433
+ [pattern_types_1.PatternType.MOCK_PATTERN]: pattern_types_1.PatternCategory.UNIT_TEST,
434
+ [pattern_types_1.PatternType.ASSERTION_PATTERN]: pattern_types_1.PatternCategory.UNIT_TEST,
435
+ [pattern_types_1.PatternType.SETUP_TEARDOWN]: pattern_types_1.PatternCategory.UNIT_TEST,
436
+ [pattern_types_1.PatternType.DATA_DRIVEN]: pattern_types_1.PatternCategory.UNIT_TEST,
437
+ [pattern_types_1.PatternType.PARAMETERIZED]: pattern_types_1.PatternCategory.UNIT_TEST
438
+ };
439
+ return categoryMap[type] || pattern_types_1.PatternCategory.UNIT_TEST;
440
+ }
441
+ /**
442
+ * Infer applicability conditions
443
+ */
444
+ inferApplicabilityConditions(type) {
445
+ const conditionsMap = {
446
+ [pattern_types_1.PatternType.EDGE_CASE]: ['function with input validation', 'nullable parameters'],
447
+ [pattern_types_1.PatternType.BOUNDARY_CONDITION]: ['range-based logic', 'numeric comparisons'],
448
+ [pattern_types_1.PatternType.ERROR_HANDLING]: ['functions that throw errors', 'async operations'],
449
+ [pattern_types_1.PatternType.INTEGRATION]: ['multiple module interactions', 'external dependencies'],
450
+ [pattern_types_1.PatternType.ASYNC_PATTERN]: ['asynchronous operations', 'promises'],
451
+ [pattern_types_1.PatternType.MOCK_PATTERN]: ['external dependencies', 'database calls', 'API calls'],
452
+ [pattern_types_1.PatternType.ASSERTION_PATTERN]: ['complex return values', 'multiple properties'],
453
+ [pattern_types_1.PatternType.SETUP_TEARDOWN]: ['stateful tests', 'resource initialization'],
454
+ [pattern_types_1.PatternType.DATA_DRIVEN]: ['multiple test cases with similar structure'],
455
+ [pattern_types_1.PatternType.PARAMETERIZED]: ['similar tests with different inputs']
456
+ };
457
+ return conditionsMap[type] || [];
458
+ }
459
+ /**
460
+ * Create empty template (to be filled by TestTemplateCreator)
461
+ */
462
+ createEmptyTemplate(id, name) {
463
+ return {
464
+ id: `template-${id}`,
465
+ name: `Template: ${name}`,
466
+ description: 'Auto-generated template',
467
+ structure: { type: 'root', id: 'root', children: [], properties: {}, parameterRefs: [] },
468
+ parameters: [],
469
+ validationRules: [],
470
+ codeGenerators: {}
471
+ };
472
+ }
473
+ /**
474
+ * Count tests in file
475
+ */
476
+ countTestsInFile(filePath) {
477
+ // Simplified - count test blocks
478
+ return 1;
479
+ }
480
+ /**
481
+ * Calculate extraction statistics
482
+ */
483
+ calculateStatistics(filesProcessed, testsAnalyzed, patterns, processingTime) {
484
+ const patternTypeDistribution = {};
485
+ patterns.forEach(p => {
486
+ patternTypeDistribution[p.type] = (patternTypeDistribution[p.type] || 0) + 1;
487
+ });
488
+ return {
489
+ filesProcessed,
490
+ testsAnalyzed,
491
+ patternsExtracted: patterns.length,
492
+ processingTime,
493
+ avgPatternsPerFile: patterns.length / Math.max(filesProcessed, 1),
494
+ patternTypeDistribution
495
+ };
496
+ }
497
+ /**
498
+ * Deduplicate patterns by normalizing names and merging similar patterns
499
+ */
500
+ deduplicatePatterns(patterns) {
501
+ const seen = new Map();
502
+ patterns.forEach(p => {
503
+ // Normalize pattern name to detect similarity
504
+ const normalizedName = this.normalizePatternName(p.name);
505
+ const key = `${p.type}-${normalizedName}`;
506
+ if (!seen.has(key)) {
507
+ seen.set(key, p);
508
+ }
509
+ else {
510
+ // Merge examples and update frequency
511
+ const existing = seen.get(key);
512
+ existing.examples.push(...p.examples);
513
+ existing.frequency++;
514
+ // Increase confidence slightly based on frequency
515
+ existing.confidence = Math.min(existing.confidence + 0.02, 1.0);
516
+ }
517
+ });
518
+ return Array.from(seen.values());
519
+ }
520
+ /**
521
+ * Normalize pattern name for deduplication
522
+ * Removes trailing numbers, extra whitespace, and normalizes case
523
+ */
524
+ normalizePatternName(name) {
525
+ return name
526
+ .toLowerCase()
527
+ .replace(/\s+\d+$/g, '') // Remove trailing numbers like " 1", " 2"
528
+ .replace(/\s+/g, ' ') // Normalize whitespace
529
+ .trim();
530
+ }
531
+ /**
532
+ * Get extracted patterns
533
+ */
534
+ getPatterns() {
535
+ return Array.from(this.extractedPatterns.values());
536
+ }
537
+ }
538
+ exports.PatternExtractor = PatternExtractor;
539
+ //# sourceMappingURL=PatternExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternExtractor.js","sourceRoot":"","sources":["../../src/reasoning/PatternExtractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * PatternMemoryIntegration - Integration with ReasoningBank and shared memory
3
+ * Phase 2 (v1.1.0) - Pattern Extraction Specialist
4
+ *
5
+ * Provides storage and retrieval of extracted patterns in shared memory
6
+ * for coordination across agents in the AQE fleet.
7
+ */
8
+ import { MemoryStore } from '../types';
9
+ import { TestPattern, PatternExtractionResult, CodeSignature, TestTemplate, PatternSimilarity, PatternRecommendation } from '../types/pattern.types';
10
+ export interface PatternMemoryConfig {
11
+ namespace: string;
12
+ ttl: number;
13
+ partition: string;
14
+ }
15
+ /**
16
+ * Pattern memory integration for ReasoningBank
17
+ */
18
+ export declare class PatternMemoryIntegration {
19
+ private logger;
20
+ private memoryStore;
21
+ private config;
22
+ constructor(memoryStore: MemoryStore, config?: Partial<PatternMemoryConfig>);
23
+ /**
24
+ * Store extracted patterns
25
+ */
26
+ storePatterns(result: PatternExtractionResult, key?: string): Promise<void>;
27
+ /**
28
+ * Retrieve extracted patterns
29
+ */
30
+ retrievePatterns(key?: string): Promise<PatternExtractionResult | null>;
31
+ /**
32
+ * Store code signatures
33
+ */
34
+ storeSignatures(signatures: CodeSignature[], key?: string): Promise<void>;
35
+ /**
36
+ * Retrieve code signatures
37
+ */
38
+ retrieveSignatures(key?: string): Promise<CodeSignature[]>;
39
+ /**
40
+ * Store test templates
41
+ */
42
+ storeTemplates(templates: TestTemplate[], key?: string): Promise<void>;
43
+ /**
44
+ * Retrieve test templates
45
+ */
46
+ retrieveTemplates(key?: string): Promise<TestTemplate[]>;
47
+ /**
48
+ * Store pattern similarities
49
+ */
50
+ storeSimilarities(similarities: PatternSimilarity[], key?: string): Promise<void>;
51
+ /**
52
+ * Store pattern recommendations
53
+ */
54
+ storeRecommendations(recommendations: PatternRecommendation[], sourceCodeHash: string): Promise<void>;
55
+ /**
56
+ * Retrieve pattern recommendations
57
+ */
58
+ retrieveRecommendations(sourceCodeHash: string): Promise<PatternRecommendation[]>;
59
+ /**
60
+ * Store pattern by ID for quick access
61
+ */
62
+ storePatternById(pattern: TestPattern): Promise<void>;
63
+ /**
64
+ * Retrieve pattern by ID
65
+ */
66
+ retrievePatternById(patternId: string): Promise<TestPattern | null>;
67
+ /**
68
+ * Update extraction statistics
69
+ */
70
+ updateStatistics(stats: {
71
+ totalPatternsExtracted: number;
72
+ totalFilesProcessed: number;
73
+ totalProcessingTime: number;
74
+ lastExtraction: Date;
75
+ }): Promise<void>;
76
+ /**
77
+ * Get extraction statistics
78
+ */
79
+ getStatistics(): Promise<any>;
80
+ /**
81
+ * Clear all patterns from memory
82
+ */
83
+ clearPatterns(): Promise<void>;
84
+ /**
85
+ * Export patterns for backup/migration
86
+ */
87
+ exportPatterns(): Promise<{
88
+ patterns: TestPattern[];
89
+ templates: TestTemplate[];
90
+ signatures: CodeSignature[];
91
+ statistics: any;
92
+ }>;
93
+ /**
94
+ * Import patterns from backup
95
+ */
96
+ importPatterns(data: {
97
+ patterns: TestPattern[];
98
+ templates?: TestTemplate[];
99
+ signatures?: CodeSignature[];
100
+ }): Promise<void>;
101
+ }
102
+ //# sourceMappingURL=PatternMemoryIntegration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternMemoryIntegration.d.ts","sourceRoot":"","sources":["../../src/reasoning/PatternMemoryIntegration.ts"],"names":[],"mappings":"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"}