agentic-qe 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/.claude/agents/qe-quality-analyzer.md +405 -0
  2. package/CHANGELOG.md +109 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/README.md +690 -134
  5. package/bin/aqe +90 -938
  6. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  7. package/dist/adapters/MemoryStoreAdapter.js +6 -0
  8. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  9. package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
  10. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.js +316 -48
  12. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  13. package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
  14. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  15. package/dist/agents/FlakyTestHunterAgent.js +217 -10
  16. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  17. package/dist/agents/LearningAgent.d.ts +75 -0
  18. package/dist/agents/LearningAgent.d.ts.map +1 -0
  19. package/dist/agents/LearningAgent.js +177 -0
  20. package/dist/agents/LearningAgent.js.map +1 -0
  21. package/dist/agents/TestGeneratorAgent.d.ts +42 -2
  22. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.js +232 -13
  24. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  25. package/dist/cli/commands/improve/index.d.ts +70 -0
  26. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  27. package/dist/cli/commands/improve/index.js +530 -0
  28. package/dist/cli/commands/improve/index.js.map +1 -0
  29. package/dist/cli/commands/init.d.ts +34 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +875 -42
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/learn/index.d.ts +68 -0
  34. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  35. package/dist/cli/commands/learn/index.js +431 -0
  36. package/dist/cli/commands/learn/index.js.map +1 -0
  37. package/dist/cli/commands/patterns/index.d.ts +75 -0
  38. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  39. package/dist/cli/commands/patterns/index.js +502 -0
  40. package/dist/cli/commands/patterns/index.js.map +1 -0
  41. package/dist/cli/commands/routing/index.d.ts +95 -0
  42. package/dist/cli/commands/routing/index.d.ts.map +1 -0
  43. package/dist/cli/commands/routing/index.js +399 -0
  44. package/dist/cli/commands/routing/index.js.map +1 -0
  45. package/dist/cli/index.js +455 -8
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  48. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  49. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  50. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  51. package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
  52. package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
  53. package/dist/core/routing/AdaptiveModelRouter.js +264 -0
  54. package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
  55. package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
  56. package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
  57. package/dist/core/routing/ComplexityAnalyzer.js +182 -0
  58. package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
  59. package/dist/core/routing/CostTracker.d.ts +55 -0
  60. package/dist/core/routing/CostTracker.d.ts.map +1 -0
  61. package/dist/core/routing/CostTracker.js +210 -0
  62. package/dist/core/routing/CostTracker.js.map +1 -0
  63. package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
  64. package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
  65. package/dist/core/routing/FleetManagerIntegration.js +170 -0
  66. package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
  67. package/dist/core/routing/ModelRules.d.ts +38 -0
  68. package/dist/core/routing/ModelRules.d.ts.map +1 -0
  69. package/dist/core/routing/ModelRules.js +170 -0
  70. package/dist/core/routing/ModelRules.js.map +1 -0
  71. package/dist/core/routing/QETask.d.ts +12 -0
  72. package/dist/core/routing/QETask.d.ts.map +1 -0
  73. package/dist/core/routing/QETask.js +21 -0
  74. package/dist/core/routing/QETask.js.map +1 -0
  75. package/dist/core/routing/index.d.ts +19 -0
  76. package/dist/core/routing/index.d.ts.map +1 -0
  77. package/dist/core/routing/index.js +50 -0
  78. package/dist/core/routing/index.js.map +1 -0
  79. package/dist/core/routing/types.d.ts +136 -0
  80. package/dist/core/routing/types.d.ts.map +1 -0
  81. package/dist/core/routing/types.js +28 -0
  82. package/dist/core/routing/types.js.map +1 -0
  83. package/dist/index.d.ts +10 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  88. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  89. package/dist/learning/FlakyFixRecommendations.js +247 -0
  90. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  91. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  92. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  93. package/dist/learning/FlakyPredictionModel.js +289 -0
  94. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  95. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  96. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  97. package/dist/learning/FlakyTestDetector.js +215 -0
  98. package/dist/learning/FlakyTestDetector.js.map +1 -0
  99. package/dist/learning/ImprovementLoop.d.ts +119 -0
  100. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  101. package/dist/learning/ImprovementLoop.js +353 -0
  102. package/dist/learning/ImprovementLoop.js.map +1 -0
  103. package/dist/learning/LearningEngine.d.ts +144 -0
  104. package/dist/learning/LearningEngine.d.ts.map +1 -0
  105. package/dist/learning/LearningEngine.js +531 -0
  106. package/dist/learning/LearningEngine.js.map +1 -0
  107. package/dist/learning/PerformanceTracker.d.ts +118 -0
  108. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  109. package/dist/learning/PerformanceTracker.js +376 -0
  110. package/dist/learning/PerformanceTracker.js.map +1 -0
  111. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  112. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  113. package/dist/learning/StatisticalAnalysis.js +170 -0
  114. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  115. package/dist/learning/SwarmIntegration.d.ts +107 -0
  116. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  117. package/dist/learning/SwarmIntegration.js +191 -0
  118. package/dist/learning/SwarmIntegration.js.map +1 -0
  119. package/dist/learning/index.d.ts +10 -0
  120. package/dist/learning/index.d.ts.map +1 -0
  121. package/dist/learning/index.js +16 -0
  122. package/dist/learning/index.js.map +1 -0
  123. package/dist/learning/types.d.ts +288 -0
  124. package/dist/learning/types.d.ts.map +1 -0
  125. package/dist/learning/types.js +9 -0
  126. package/dist/learning/types.js.map +1 -0
  127. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  128. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  129. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  130. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  131. package/dist/mcp/server.d.ts.map +1 -1
  132. package/dist/mcp/server.js +171 -9
  133. package/dist/mcp/server.js.map +1 -1
  134. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
  135. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
  136. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
  137. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
  138. package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
  139. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
  140. package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
  141. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
  142. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
  143. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
  144. package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
  145. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
  146. package/dist/mcp/streaming/index.d.ts +14 -0
  147. package/dist/mcp/streaming/index.d.ts.map +1 -0
  148. package/dist/mcp/streaming/index.js +30 -0
  149. package/dist/mcp/streaming/index.js.map +1 -0
  150. package/dist/mcp/streaming/types.d.ts +117 -0
  151. package/dist/mcp/streaming/types.d.ts.map +1 -0
  152. package/dist/mcp/streaming/types.js +88 -0
  153. package/dist/mcp/streaming/types.js.map +1 -0
  154. package/dist/mcp/tools.d.ts +18 -1
  155. package/dist/mcp/tools.d.ts.map +1 -1
  156. package/dist/mcp/tools.js +123 -1
  157. package/dist/mcp/tools.js.map +1 -1
  158. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  159. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  160. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  161. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  162. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  163. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  164. package/dist/reasoning/PatternClassifier.js +345 -0
  165. package/dist/reasoning/PatternClassifier.js.map +1 -0
  166. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  167. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  168. package/dist/reasoning/PatternExtractor.js +539 -0
  169. package/dist/reasoning/PatternExtractor.js.map +1 -0
  170. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  171. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  172. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  173. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  174. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  175. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  176. package/dist/reasoning/QEReasoningBank.js +235 -0
  177. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  178. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  179. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  180. package/dist/reasoning/TestTemplateCreator.js +535 -0
  181. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  182. package/dist/reasoning/index.d.ts +10 -0
  183. package/dist/reasoning/index.d.ts.map +1 -0
  184. package/dist/reasoning/index.js +31 -0
  185. package/dist/reasoning/index.js.map +1 -0
  186. package/dist/reasoning/types.d.ts +717 -0
  187. package/dist/reasoning/types.d.ts.map +1 -0
  188. package/dist/reasoning/types.js +57 -0
  189. package/dist/reasoning/types.js.map +1 -0
  190. package/dist/types/index.d.ts +20 -1
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/pattern.types.d.ts +364 -0
  194. package/dist/types/pattern.types.d.ts.map +1 -0
  195. package/dist/types/pattern.types.js +60 -0
  196. package/dist/types/pattern.types.js.map +1 -0
  197. package/package.json +25 -3
@@ -0,0 +1,427 @@
1
+ "use strict";
2
+ /**
3
+ * CodeSignatureGenerator - Generate code fingerprints for pattern matching
4
+ * Phase 2 (v1.1.0) - Pattern Extraction Specialist
5
+ *
6
+ * Generates unique signatures for code blocks based on:
7
+ * - Function signatures and parameter types
8
+ * - Return types
9
+ * - Cyclomatic complexity
10
+ * - AST node patterns
11
+ * - Dependencies
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.CodeSignatureGenerator = void 0;
48
+ const parser_1 = require("@babel/parser");
49
+ const crypto = __importStar(require("crypto"));
50
+ const pattern_types_1 = require("../types/pattern.types");
51
+ const Logger_1 = require("../utils/Logger");
52
+ class CodeSignatureGenerator {
53
+ constructor() {
54
+ this.logger = Logger_1.Logger.getInstance();
55
+ }
56
+ /**
57
+ * Generate code signature from source code
58
+ */
59
+ async generate(sourceCode, options) {
60
+ try {
61
+ const ast = this.parseAST(sourceCode, options);
62
+ const functionSignature = this.extractFunctionSignature(ast);
63
+ const parameterTypes = this.extractParameterTypes(ast);
64
+ const returnType = this.extractReturnType(ast);
65
+ const complexity = this.calculateComplexity(ast);
66
+ const patterns = this.identifyPatterns(ast);
67
+ const sourceHash = this.generateSourceHash(sourceCode);
68
+ const nodeTypes = this.extractNodeTypes(ast);
69
+ const dependencies = this.extractDependencies(ast);
70
+ return {
71
+ id: this.generateSignatureId(sourceCode),
72
+ functionSignature,
73
+ parameterTypes,
74
+ returnType,
75
+ complexity,
76
+ patterns,
77
+ sourceHash,
78
+ nodeTypes,
79
+ dependencies,
80
+ createdAt: new Date()
81
+ };
82
+ }
83
+ catch (error) {
84
+ this.logger.error('Failed to generate code signature:', error);
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * Parse source code to AST
90
+ */
91
+ parseAST(code, options) {
92
+ const defaultOptions = {
93
+ typescript: true,
94
+ jsx: true,
95
+ includeComments: false,
96
+ maxDepth: 50
97
+ };
98
+ const opts = { ...defaultOptions, ...options };
99
+ return (0, parser_1.parse)(code, {
100
+ sourceType: 'module',
101
+ plugins: opts.typescript ? ['typescript'] : []
102
+ });
103
+ }
104
+ /**
105
+ * Extract function signature
106
+ */
107
+ extractFunctionSignature(ast) {
108
+ let signature = 'unknown';
109
+ this.traverseAST(ast, (node) => {
110
+ if (node.type === 'FunctionDeclaration' ||
111
+ node.type === 'FunctionExpression' ||
112
+ node.type === 'ArrowFunctionExpression') {
113
+ const name = node.id?.name || 'anonymous';
114
+ const params = node.params.map((p) => this.getParamName(p)).join(', ');
115
+ signature = `${name}(${params})`;
116
+ }
117
+ if (node.type === 'ClassMethod') {
118
+ const name = node.key.name || 'method';
119
+ const params = node.params.map((p) => this.getParamName(p)).join(', ');
120
+ signature = `${name}(${params})`;
121
+ }
122
+ });
123
+ return signature;
124
+ }
125
+ /**
126
+ * Extract parameter types
127
+ */
128
+ extractParameterTypes(ast) {
129
+ const parameters = [];
130
+ this.traverseAST(ast, (node) => {
131
+ if (node.type === 'FunctionDeclaration' ||
132
+ node.type === 'FunctionExpression' ||
133
+ node.type === 'ArrowFunctionExpression' ||
134
+ node.type === 'ClassMethod') {
135
+ node.params.forEach((param) => {
136
+ parameters.push({
137
+ name: this.getParamName(param),
138
+ type: this.getParamType(param),
139
+ optional: param.optional || false
140
+ });
141
+ });
142
+ }
143
+ });
144
+ return parameters;
145
+ }
146
+ /**
147
+ * Extract return type
148
+ */
149
+ extractReturnType(ast) {
150
+ let returnType = 'void';
151
+ this.traverseAST(ast, (node) => {
152
+ if (node.type === 'FunctionDeclaration' ||
153
+ node.type === 'FunctionExpression' ||
154
+ node.type === 'ArrowFunctionExpression' ||
155
+ node.type === 'ClassMethod') {
156
+ if (node.returnType) {
157
+ returnType = this.getTypeAnnotation(node.returnType);
158
+ }
159
+ else {
160
+ // Infer from return statements
161
+ returnType = this.inferReturnType(node);
162
+ }
163
+ }
164
+ });
165
+ return returnType;
166
+ }
167
+ /**
168
+ * Calculate cyclomatic complexity
169
+ * Uses standard complexity metrics with proper else-if counting
170
+ */
171
+ calculateComplexity(ast) {
172
+ let complexity = 1; // Base complexity
173
+ this.traverseAST(ast, (node) => {
174
+ // Increase complexity for decision points
175
+ if (node.type === 'IfStatement') {
176
+ complexity++;
177
+ // Count else-if as additional complexity
178
+ if (node.alternate && node.alternate.type === 'IfStatement') {
179
+ complexity++;
180
+ }
181
+ }
182
+ if (node.type === 'SwitchCase' && node.test !== null)
183
+ complexity++;
184
+ if (node.type === 'ForStatement')
185
+ complexity++;
186
+ if (node.type === 'ForInStatement')
187
+ complexity++;
188
+ if (node.type === 'ForOfStatement')
189
+ complexity++;
190
+ if (node.type === 'WhileStatement')
191
+ complexity++;
192
+ if (node.type === 'DoWhileStatement')
193
+ complexity++;
194
+ if (node.type === 'ConditionalExpression')
195
+ complexity++;
196
+ if (node.type === 'LogicalExpression' && node.operator === '&&')
197
+ complexity++;
198
+ if (node.type === 'LogicalExpression' && node.operator === '||')
199
+ complexity++;
200
+ if (node.type === 'CatchClause')
201
+ complexity++;
202
+ });
203
+ return complexity;
204
+ }
205
+ /**
206
+ * Identify patterns in AST
207
+ */
208
+ identifyPatterns(ast) {
209
+ const patterns = [];
210
+ // Identify async patterns
211
+ if (this.hasAsyncPattern(ast)) {
212
+ patterns.push({
213
+ type: pattern_types_1.PatternType.ASYNC_PATTERN,
214
+ confidence: 0.95,
215
+ description: 'Asynchronous execution pattern detected',
216
+ location: { startLine: 0, endLine: 0, startColumn: 0, endColumn: 0 },
217
+ data: { hasAsync: true }
218
+ });
219
+ }
220
+ // Identify error handling patterns
221
+ if (this.hasErrorHandling(ast)) {
222
+ patterns.push({
223
+ type: pattern_types_1.PatternType.ERROR_HANDLING,
224
+ confidence: 0.9,
225
+ description: 'Error handling pattern detected',
226
+ location: { startLine: 0, endLine: 0, startColumn: 0, endColumn: 0 },
227
+ data: { hasTryCatch: true }
228
+ });
229
+ }
230
+ // Identify boundary conditions
231
+ if (this.hasBoundaryChecks(ast)) {
232
+ patterns.push({
233
+ type: pattern_types_1.PatternType.BOUNDARY_CONDITION,
234
+ confidence: 0.85,
235
+ description: 'Boundary condition checks detected',
236
+ location: { startLine: 0, endLine: 0, startColumn: 0, endColumn: 0 },
237
+ data: { hasBoundaryChecks: true }
238
+ });
239
+ }
240
+ return patterns;
241
+ }
242
+ /**
243
+ * Generate source hash for change detection
244
+ */
245
+ generateSourceHash(code) {
246
+ return crypto.createHash('sha256').update(code).digest('hex');
247
+ }
248
+ /**
249
+ * Extract all node types in AST
250
+ */
251
+ extractNodeTypes(ast) {
252
+ const types = new Set();
253
+ this.traverseAST(ast, (node) => {
254
+ if (node.type)
255
+ types.add(node.type);
256
+ });
257
+ return Array.from(types);
258
+ }
259
+ /**
260
+ * Extract dependencies and imports
261
+ */
262
+ extractDependencies(ast) {
263
+ const dependencies = [];
264
+ this.traverseAST(ast, (node) => {
265
+ if (node.type === 'ImportDeclaration') {
266
+ dependencies.push(node.source.value);
267
+ }
268
+ if (node.type === 'CallExpression' && node.callee.name === 'require') {
269
+ if (node.arguments[0] && node.arguments[0].type === 'StringLiteral') {
270
+ dependencies.push(node.arguments[0].value);
271
+ }
272
+ }
273
+ });
274
+ return Array.from(new Set(dependencies));
275
+ }
276
+ /**
277
+ * Generate unique signature ID
278
+ */
279
+ generateSignatureId(code) {
280
+ const hash = crypto.createHash('md5').update(code).digest('hex').substring(0, 12);
281
+ return `sig-${hash}`;
282
+ }
283
+ /**
284
+ * Get parameter name
285
+ */
286
+ getParamName(param) {
287
+ if (param.type === 'Identifier')
288
+ return param.name;
289
+ if (param.type === 'AssignmentPattern')
290
+ return this.getParamName(param.left);
291
+ if (param.type === 'RestElement')
292
+ return `...${this.getParamName(param.argument)}`;
293
+ if (param.type === 'ObjectPattern')
294
+ return '{...}';
295
+ if (param.type === 'ArrayPattern')
296
+ return '[...]';
297
+ return 'unknown';
298
+ }
299
+ /**
300
+ * Get parameter type
301
+ */
302
+ getParamType(param) {
303
+ if (param.typeAnnotation) {
304
+ return this.getTypeAnnotation(param.typeAnnotation);
305
+ }
306
+ return 'any';
307
+ }
308
+ /**
309
+ * Get type annotation
310
+ */
311
+ getTypeAnnotation(typeNode) {
312
+ if (!typeNode)
313
+ return 'any';
314
+ if (typeNode.typeAnnotation)
315
+ return this.getTypeAnnotation(typeNode.typeAnnotation);
316
+ if (typeNode.type === 'TSStringKeyword')
317
+ return 'string';
318
+ if (typeNode.type === 'TSNumberKeyword')
319
+ return 'number';
320
+ if (typeNode.type === 'TSBooleanKeyword')
321
+ return 'boolean';
322
+ if (typeNode.type === 'TSVoidKeyword')
323
+ return 'void';
324
+ if (typeNode.type === 'TSAnyKeyword')
325
+ return 'any';
326
+ if (typeNode.type === 'TSArrayType')
327
+ return `${this.getTypeAnnotation(typeNode.elementType)}[]`;
328
+ if (typeNode.type === 'TSPromiseType')
329
+ return `Promise<${this.getTypeAnnotation(typeNode.typeParameter)}>`;
330
+ return 'unknown';
331
+ }
332
+ /**
333
+ * Infer return type from return statements
334
+ */
335
+ inferReturnType(node) {
336
+ let hasReturn = false;
337
+ let returnType = 'void';
338
+ this.traverseAST(node, (n) => {
339
+ if (n.type === 'ReturnStatement' && n.argument) {
340
+ hasReturn = true;
341
+ returnType = this.inferTypeFromExpression(n.argument);
342
+ }
343
+ });
344
+ return hasReturn ? returnType : 'void';
345
+ }
346
+ /**
347
+ * Infer type from expression
348
+ */
349
+ inferTypeFromExpression(expr) {
350
+ if (!expr)
351
+ return 'void';
352
+ if (expr.type === 'StringLiteral')
353
+ return 'string';
354
+ if (expr.type === 'NumericLiteral')
355
+ return 'number';
356
+ if (expr.type === 'BooleanLiteral')
357
+ return 'boolean';
358
+ if (expr.type === 'ArrayExpression')
359
+ return 'array';
360
+ if (expr.type === 'ObjectExpression')
361
+ return 'object';
362
+ if (expr.type === 'AwaitExpression')
363
+ return 'Promise<any>';
364
+ return 'any';
365
+ }
366
+ /**
367
+ * Check for async patterns
368
+ */
369
+ hasAsyncPattern(ast) {
370
+ let hasAsync = false;
371
+ this.traverseAST(ast, (node) => {
372
+ if (node.async || node.type === 'AwaitExpression') {
373
+ hasAsync = true;
374
+ }
375
+ });
376
+ return hasAsync;
377
+ }
378
+ /**
379
+ * Check for error handling
380
+ */
381
+ hasErrorHandling(ast) {
382
+ let hasErrorHandling = false;
383
+ this.traverseAST(ast, (node) => {
384
+ if (node.type === 'TryStatement' || node.type === 'CatchClause') {
385
+ hasErrorHandling = true;
386
+ }
387
+ });
388
+ return hasErrorHandling;
389
+ }
390
+ /**
391
+ * Check for boundary checks
392
+ */
393
+ hasBoundaryChecks(ast) {
394
+ let hasBoundary = false;
395
+ this.traverseAST(ast, (node) => {
396
+ if (node.type === 'BinaryExpression') {
397
+ if (['>', '<', '>=', '<=', '===', '!=='].includes(node.operator)) {
398
+ hasBoundary = true;
399
+ }
400
+ }
401
+ });
402
+ return hasBoundary;
403
+ }
404
+ /**
405
+ * Traverse AST
406
+ */
407
+ traverseAST(ast, visitor) {
408
+ const traverse = (node, depth = 0) => {
409
+ if (!node || depth > 100)
410
+ return;
411
+ visitor(node);
412
+ for (const key in node) {
413
+ if (node[key] && typeof node[key] === 'object') {
414
+ if (Array.isArray(node[key])) {
415
+ node[key].forEach((child) => traverse(child, depth + 1));
416
+ }
417
+ else {
418
+ traverse(node[key], depth + 1);
419
+ }
420
+ }
421
+ }
422
+ };
423
+ traverse(ast);
424
+ }
425
+ }
426
+ exports.CodeSignatureGenerator = CodeSignatureGenerator;
427
+ //# sourceMappingURL=CodeSignatureGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeSignatureGenerator.js","sourceRoot":"","sources":["../../src/reasoning/CodeSignatureGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * PatternClassifier - Classify and recommend patterns for code
3
+ * Phase 2 (v1.1.0) - Pattern Extraction Specialist
4
+ *
5
+ * Classifies patterns by type and calculates similarity scores to:
6
+ * - Categorize extracted patterns
7
+ * - Calculate pattern similarity
8
+ * - Recommend patterns for new code
9
+ * - Support pattern-based test generation
10
+ */
11
+ import { TestPattern, PatternClassificationResult, PatternSimilarity, PatternRecommendation } from '../types/pattern.types';
12
+ export declare class PatternClassifier {
13
+ private logger;
14
+ private signatureGenerator;
15
+ private patterns;
16
+ constructor();
17
+ /**
18
+ * Load patterns for classification
19
+ */
20
+ loadPatterns(patterns: TestPattern[]): void;
21
+ /**
22
+ * Classify a pattern
23
+ */
24
+ classify(pattern: TestPattern): Promise<PatternClassificationResult>;
25
+ /**
26
+ * Calculate similarity between two patterns
27
+ */
28
+ calculateSimilarity(pattern1Id: string, pattern2Id: string): Promise<PatternSimilarity>;
29
+ /**
30
+ * Recommend patterns for given code
31
+ */
32
+ recommendPatterns(sourceCode: string, limit?: number): Promise<PatternRecommendation[]>;
33
+ /**
34
+ * Find similar patterns
35
+ */
36
+ findSimilarPatterns(patternId: string, threshold?: number, limit?: number): Promise<PatternSimilarity[]>;
37
+ /**
38
+ * Infer pattern type from pattern characteristics
39
+ */
40
+ private inferPatternType;
41
+ /**
42
+ * Calculate classification confidence
43
+ */
44
+ private calculateClassificationConfidence;
45
+ /**
46
+ * Get keywords for pattern type
47
+ */
48
+ private getTypeKeywords;
49
+ /**
50
+ * Generate reasoning for classification
51
+ */
52
+ private generateReasoning;
53
+ /**
54
+ * Get alternative classifications
55
+ */
56
+ private getAlternativeClassifications;
57
+ /**
58
+ * Calculate detailed similarity metrics
59
+ */
60
+ private calculateSimilarityDetails;
61
+ /**
62
+ * Calculate structural similarity
63
+ */
64
+ private calculateStructuralSimilarity;
65
+ /**
66
+ * Calculate semantic similarity
67
+ */
68
+ private calculateSemanticSimilarity;
69
+ /**
70
+ * Calculate type compatibility
71
+ */
72
+ private calculateTypeCompatibility;
73
+ /**
74
+ * Find common patterns
75
+ */
76
+ private findCommonPatterns;
77
+ /**
78
+ * Aggregate similarity score
79
+ */
80
+ private aggregateSimilarityScore;
81
+ /**
82
+ * Calculate applicability of pattern to code
83
+ */
84
+ private calculateApplicability;
85
+ /**
86
+ * Generate recommendation reason
87
+ */
88
+ private generateRecommendationReason;
89
+ /**
90
+ * Get all loaded patterns
91
+ */
92
+ getPatterns(): TestPattern[];
93
+ /**
94
+ * Get pattern by ID
95
+ */
96
+ getPattern(id: string): TestPattern | undefined;
97
+ }
98
+ //# sourceMappingURL=PatternClassifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternClassifier.d.ts","sourceRoot":"","sources":["../../src/reasoning/PatternClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,EAEX,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EAGtB,MAAM,wBAAwB,CAAC;AAIhC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAA2B;;IAQ3C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAO3C;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAe1E;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmB7F;;OAEG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA2BnC;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAY,EACvB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAsB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAoBzC;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAiBrC;;OAEG;YACW,0BAA0B;IAiBxC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAYrC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAWnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAqBlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA0BpC;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAGhD"}