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.
- package/.claude/agents/qe-quality-analyzer.md +405 -0
- package/CHANGELOG.md +109 -0
- package/CONTRIBUTING.md +51 -0
- package/README.md +690 -134
- package/bin/aqe +90 -938
- package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryStoreAdapter.js +6 -0
- package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +316 -48
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +217 -10
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +75 -0
- package/dist/agents/LearningAgent.d.ts.map +1 -0
- package/dist/agents/LearningAgent.js +177 -0
- package/dist/agents/LearningAgent.js.map +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts +42 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +232 -13
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/cli/commands/improve/index.d.ts +70 -0
- package/dist/cli/commands/improve/index.d.ts.map +1 -0
- package/dist/cli/commands/improve/index.js +530 -0
- package/dist/cli/commands/improve/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +34 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +875 -42
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +68 -0
- package/dist/cli/commands/learn/index.d.ts.map +1 -0
- package/dist/cli/commands/learn/index.js +431 -0
- package/dist/cli/commands/learn/index.js.map +1 -0
- package/dist/cli/commands/patterns/index.d.ts +75 -0
- package/dist/cli/commands/patterns/index.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index.js +502 -0
- package/dist/cli/commands/patterns/index.js.map +1 -0
- package/dist/cli/commands/routing/index.d.ts +95 -0
- package/dist/cli/commands/routing/index.d.ts.map +1 -0
- package/dist/cli/commands/routing/index.js +399 -0
- package/dist/cli/commands/routing/index.js.map +1 -0
- package/dist/cli/index.js +455 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +7 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
- package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
- package/dist/core/routing/AdaptiveModelRouter.js +264 -0
- package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.js +182 -0
- package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
- package/dist/core/routing/CostTracker.d.ts +55 -0
- package/dist/core/routing/CostTracker.d.ts.map +1 -0
- package/dist/core/routing/CostTracker.js +210 -0
- package/dist/core/routing/CostTracker.js.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.js +170 -0
- package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
- package/dist/core/routing/ModelRules.d.ts +38 -0
- package/dist/core/routing/ModelRules.d.ts.map +1 -0
- package/dist/core/routing/ModelRules.js +170 -0
- package/dist/core/routing/ModelRules.js.map +1 -0
- package/dist/core/routing/QETask.d.ts +12 -0
- package/dist/core/routing/QETask.d.ts.map +1 -0
- package/dist/core/routing/QETask.js +21 -0
- package/dist/core/routing/QETask.js.map +1 -0
- package/dist/core/routing/index.d.ts +19 -0
- package/dist/core/routing/index.d.ts.map +1 -0
- package/dist/core/routing/index.js +50 -0
- package/dist/core/routing/index.js.map +1 -0
- package/dist/core/routing/types.d.ts +136 -0
- package/dist/core/routing/types.d.ts.map +1 -0
- package/dist/core/routing/types.js +28 -0
- package/dist/core/routing/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
- package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
- package/dist/learning/FlakyFixRecommendations.js +247 -0
- package/dist/learning/FlakyFixRecommendations.js.map +1 -0
- package/dist/learning/FlakyPredictionModel.d.ts +57 -0
- package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
- package/dist/learning/FlakyPredictionModel.js +289 -0
- package/dist/learning/FlakyPredictionModel.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +46 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
- package/dist/learning/FlakyTestDetector.js +215 -0
- package/dist/learning/FlakyTestDetector.js.map +1 -0
- package/dist/learning/ImprovementLoop.d.ts +119 -0
- package/dist/learning/ImprovementLoop.d.ts.map +1 -0
- package/dist/learning/ImprovementLoop.js +353 -0
- package/dist/learning/ImprovementLoop.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +144 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -0
- package/dist/learning/LearningEngine.js +531 -0
- package/dist/learning/LearningEngine.js.map +1 -0
- package/dist/learning/PerformanceTracker.d.ts +118 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -0
- package/dist/learning/PerformanceTracker.js +376 -0
- package/dist/learning/PerformanceTracker.js.map +1 -0
- package/dist/learning/StatisticalAnalysis.d.ts +47 -0
- package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
- package/dist/learning/StatisticalAnalysis.js +170 -0
- package/dist/learning/StatisticalAnalysis.js.map +1 -0
- package/dist/learning/SwarmIntegration.d.ts +107 -0
- package/dist/learning/SwarmIntegration.d.ts.map +1 -0
- package/dist/learning/SwarmIntegration.js +191 -0
- package/dist/learning/SwarmIntegration.js.map +1 -0
- package/dist/learning/index.d.ts +10 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +16 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/types.d.ts +288 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/learning/types.js +9 -0
- package/dist/learning/types.js.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +171 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
- package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/index.d.ts +14 -0
- package/dist/mcp/streaming/index.d.ts.map +1 -0
- package/dist/mcp/streaming/index.js +30 -0
- package/dist/mcp/streaming/index.js.map +1 -0
- package/dist/mcp/streaming/types.d.ts +117 -0
- package/dist/mcp/streaming/types.d.ts.map +1 -0
- package/dist/mcp/streaming/types.js +88 -0
- package/dist/mcp/streaming/types.js.map +1 -0
- package/dist/mcp/tools.d.ts +18 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +123 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
- package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
- package/dist/reasoning/CodeSignatureGenerator.js +427 -0
- package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
- package/dist/reasoning/PatternClassifier.d.ts +98 -0
- package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
- package/dist/reasoning/PatternClassifier.js +345 -0
- package/dist/reasoning/PatternClassifier.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +131 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
- package/dist/reasoning/PatternExtractor.js +539 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.js +336 -0
- package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +121 -0
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
- package/dist/reasoning/QEReasoningBank.js +235 -0
- package/dist/reasoning/QEReasoningBank.js.map +1 -0
- package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
- package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
- package/dist/reasoning/TestTemplateCreator.js +535 -0
- package/dist/reasoning/TestTemplateCreator.js.map +1 -0
- package/dist/reasoning/index.d.ts +10 -0
- package/dist/reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/index.js +31 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/types.d.ts +717 -0
- package/dist/reasoning/types.d.ts.map +1 -0
- package/dist/reasoning/types.js +57 -0
- package/dist/reasoning/types.js.map +1 -0
- package/dist/types/index.d.ts +20 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/pattern.types.d.ts +364 -0
- package/dist/types/pattern.types.d.ts.map +1 -0
- package/dist/types/pattern.types.js +60 -0
- package/dist/types/pattern.types.js.map +1 -0
- package/package.json +25 -3
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PatternMemoryIntegration - Integration with ReasoningBank and shared memory
|
|
4
|
+
* Phase 2 (v1.1.0) - Pattern Extraction Specialist
|
|
5
|
+
*
|
|
6
|
+
* Provides storage and retrieval of extracted patterns in shared memory
|
|
7
|
+
* for coordination across agents in the AQE fleet.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PatternMemoryIntegration = void 0;
|
|
11
|
+
const Logger_1 = require("../utils/Logger");
|
|
12
|
+
/**
|
|
13
|
+
* Pattern memory integration for ReasoningBank
|
|
14
|
+
*/
|
|
15
|
+
class PatternMemoryIntegration {
|
|
16
|
+
constructor(memoryStore, config) {
|
|
17
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
18
|
+
this.memoryStore = memoryStore;
|
|
19
|
+
this.config = {
|
|
20
|
+
namespace: 'phase2',
|
|
21
|
+
ttl: 86400, // 24 hours
|
|
22
|
+
partition: 'reasoning',
|
|
23
|
+
...config
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Store extracted patterns
|
|
28
|
+
*/
|
|
29
|
+
async storePatterns(result, key = 'extracted-patterns') {
|
|
30
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
31
|
+
try {
|
|
32
|
+
await this.memoryStore.set(memoryKey, {
|
|
33
|
+
patterns: result.patterns,
|
|
34
|
+
signatures: result.signatures,
|
|
35
|
+
statistics: result.statistics,
|
|
36
|
+
errors: result.errors,
|
|
37
|
+
timestamp: result.timestamp,
|
|
38
|
+
metadata: {
|
|
39
|
+
count: result.patterns.length,
|
|
40
|
+
processingTime: result.statistics.processingTime,
|
|
41
|
+
version: '1.1.0'
|
|
42
|
+
}
|
|
43
|
+
}, this.config.partition);
|
|
44
|
+
this.logger.info(`Stored ${result.patterns.length} patterns in memory at ${memoryKey}`);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.logger.error('Failed to store patterns:', error);
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retrieve extracted patterns
|
|
53
|
+
*/
|
|
54
|
+
async retrievePatterns(key = 'extracted-patterns') {
|
|
55
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
56
|
+
try {
|
|
57
|
+
const data = await this.memoryStore.get(memoryKey, this.config.partition);
|
|
58
|
+
if (!data) {
|
|
59
|
+
this.logger.warn(`No patterns found at ${memoryKey}`);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
patterns: data.patterns || [],
|
|
64
|
+
signatures: data.signatures || [],
|
|
65
|
+
statistics: data.statistics || {},
|
|
66
|
+
errors: data.errors || [],
|
|
67
|
+
timestamp: new Date(data.timestamp)
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
this.logger.error('Failed to retrieve patterns:', error);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Store code signatures
|
|
77
|
+
*/
|
|
78
|
+
async storeSignatures(signatures, key = 'code-signatures') {
|
|
79
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
80
|
+
try {
|
|
81
|
+
await this.memoryStore.set(memoryKey, {
|
|
82
|
+
signatures,
|
|
83
|
+
count: signatures.length,
|
|
84
|
+
timestamp: new Date()
|
|
85
|
+
}, this.config.partition);
|
|
86
|
+
this.logger.info(`Stored ${signatures.length} code signatures`);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this.logger.error('Failed to store signatures:', error);
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Retrieve code signatures
|
|
95
|
+
*/
|
|
96
|
+
async retrieveSignatures(key = 'code-signatures') {
|
|
97
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
98
|
+
try {
|
|
99
|
+
const data = await this.memoryStore.get(memoryKey, this.config.partition);
|
|
100
|
+
return data?.signatures || [];
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
this.logger.error('Failed to retrieve signatures:', error);
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Store test templates
|
|
109
|
+
*/
|
|
110
|
+
async storeTemplates(templates, key = 'test-templates') {
|
|
111
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
112
|
+
try {
|
|
113
|
+
await this.memoryStore.set(memoryKey, {
|
|
114
|
+
templates,
|
|
115
|
+
count: templates.length,
|
|
116
|
+
timestamp: new Date()
|
|
117
|
+
}, this.config.partition);
|
|
118
|
+
this.logger.info(`Stored ${templates.length} test templates`);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.logger.error('Failed to store templates:', error);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Retrieve test templates
|
|
127
|
+
*/
|
|
128
|
+
async retrieveTemplates(key = 'test-templates') {
|
|
129
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
130
|
+
try {
|
|
131
|
+
const data = await this.memoryStore.get(memoryKey, this.config.partition);
|
|
132
|
+
return data?.templates || [];
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
this.logger.error('Failed to retrieve templates:', error);
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Store pattern similarities
|
|
141
|
+
*/
|
|
142
|
+
async storeSimilarities(similarities, key = 'pattern-similarities') {
|
|
143
|
+
const memoryKey = `${this.config.namespace}/${key}`;
|
|
144
|
+
try {
|
|
145
|
+
await this.memoryStore.set(memoryKey, {
|
|
146
|
+
similarities,
|
|
147
|
+
count: similarities.length,
|
|
148
|
+
timestamp: new Date()
|
|
149
|
+
}, this.config.partition);
|
|
150
|
+
this.logger.info(`Stored ${similarities.length} pattern similarities`);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
this.logger.error('Failed to store similarities:', error);
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Store pattern recommendations
|
|
159
|
+
*/
|
|
160
|
+
async storeRecommendations(recommendations, sourceCodeHash) {
|
|
161
|
+
const memoryKey = `${this.config.namespace}/recommendations/${sourceCodeHash}`;
|
|
162
|
+
try {
|
|
163
|
+
await this.memoryStore.set(memoryKey, {
|
|
164
|
+
recommendations,
|
|
165
|
+
count: recommendations.length,
|
|
166
|
+
timestamp: new Date()
|
|
167
|
+
}, this.config.partition);
|
|
168
|
+
this.logger.info(`Stored ${recommendations.length} recommendations for ${sourceCodeHash}`);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
this.logger.error('Failed to store recommendations:', error);
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Retrieve pattern recommendations
|
|
177
|
+
*/
|
|
178
|
+
async retrieveRecommendations(sourceCodeHash) {
|
|
179
|
+
const memoryKey = `${this.config.namespace}/recommendations/${sourceCodeHash}`;
|
|
180
|
+
try {
|
|
181
|
+
const data = await this.memoryStore.get(memoryKey, this.config.partition);
|
|
182
|
+
return data?.recommendations || [];
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
this.logger.error('Failed to retrieve recommendations:', error);
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Store pattern by ID for quick access
|
|
191
|
+
*/
|
|
192
|
+
async storePatternById(pattern) {
|
|
193
|
+
const memoryKey = `${this.config.namespace}/patterns/${pattern.id}`;
|
|
194
|
+
try {
|
|
195
|
+
await this.memoryStore.set(memoryKey, pattern, this.config.partition);
|
|
196
|
+
this.logger.debug(`Stored pattern ${pattern.id}`);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
this.logger.error(`Failed to store pattern ${pattern.id}:`, error);
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Retrieve pattern by ID
|
|
205
|
+
*/
|
|
206
|
+
async retrievePatternById(patternId) {
|
|
207
|
+
const memoryKey = `${this.config.namespace}/patterns/${patternId}`;
|
|
208
|
+
try {
|
|
209
|
+
const pattern = await this.memoryStore.get(memoryKey, this.config.partition);
|
|
210
|
+
return pattern || null;
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
this.logger.error(`Failed to retrieve pattern ${patternId}:`, error);
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Update extraction statistics
|
|
219
|
+
*/
|
|
220
|
+
async updateStatistics(stats) {
|
|
221
|
+
const memoryKey = `${this.config.namespace}/statistics`;
|
|
222
|
+
try {
|
|
223
|
+
const existing = await this.memoryStore.get(memoryKey, this.config.partition) || {
|
|
224
|
+
totalPatternsExtracted: 0,
|
|
225
|
+
totalFilesProcessed: 0,
|
|
226
|
+
totalProcessingTime: 0
|
|
227
|
+
};
|
|
228
|
+
const updated = {
|
|
229
|
+
totalPatternsExtracted: existing.totalPatternsExtracted + stats.totalPatternsExtracted,
|
|
230
|
+
totalFilesProcessed: existing.totalFilesProcessed + stats.totalFilesProcessed,
|
|
231
|
+
totalProcessingTime: existing.totalProcessingTime + stats.totalProcessingTime,
|
|
232
|
+
lastExtraction: stats.lastExtraction,
|
|
233
|
+
avgProcessingTime: (existing.totalProcessingTime + stats.totalProcessingTime) /
|
|
234
|
+
(existing.totalFilesProcessed + stats.totalFilesProcessed)
|
|
235
|
+
};
|
|
236
|
+
await this.memoryStore.set(memoryKey, updated, this.config.partition);
|
|
237
|
+
this.logger.info('Updated extraction statistics');
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
this.logger.error('Failed to update statistics:', error);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get extraction statistics
|
|
245
|
+
*/
|
|
246
|
+
async getStatistics() {
|
|
247
|
+
const memoryKey = `${this.config.namespace}/statistics`;
|
|
248
|
+
try {
|
|
249
|
+
return await this.memoryStore.get(memoryKey, this.config.partition) || {
|
|
250
|
+
totalPatternsExtracted: 0,
|
|
251
|
+
totalFilesProcessed: 0,
|
|
252
|
+
totalProcessingTime: 0,
|
|
253
|
+
lastExtraction: null,
|
|
254
|
+
avgProcessingTime: 0
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
this.logger.error('Failed to get statistics:', error);
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Clear all patterns from memory
|
|
264
|
+
*/
|
|
265
|
+
async clearPatterns() {
|
|
266
|
+
try {
|
|
267
|
+
await this.memoryStore.clear(this.config.partition);
|
|
268
|
+
this.logger.info('Cleared all patterns from memory');
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
this.logger.error('Failed to clear patterns:', error);
|
|
272
|
+
throw error;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Export patterns for backup/migration
|
|
277
|
+
*/
|
|
278
|
+
async exportPatterns() {
|
|
279
|
+
try {
|
|
280
|
+
const result = await this.retrievePatterns();
|
|
281
|
+
const templates = await this.retrieveTemplates();
|
|
282
|
+
const signatures = await this.retrieveSignatures();
|
|
283
|
+
const statistics = await this.getStatistics();
|
|
284
|
+
return {
|
|
285
|
+
patterns: result?.patterns || [],
|
|
286
|
+
templates,
|
|
287
|
+
signatures,
|
|
288
|
+
statistics
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
this.logger.error('Failed to export patterns:', error);
|
|
293
|
+
throw error;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Import patterns from backup
|
|
298
|
+
*/
|
|
299
|
+
async importPatterns(data) {
|
|
300
|
+
try {
|
|
301
|
+
// Import patterns
|
|
302
|
+
if (data.patterns && data.patterns.length > 0) {
|
|
303
|
+
const result = {
|
|
304
|
+
patterns: data.patterns,
|
|
305
|
+
signatures: data.signatures || [],
|
|
306
|
+
statistics: {
|
|
307
|
+
filesProcessed: 0,
|
|
308
|
+
testsAnalyzed: 0,
|
|
309
|
+
patternsExtracted: data.patterns.length,
|
|
310
|
+
processingTime: 0,
|
|
311
|
+
avgPatternsPerFile: 0,
|
|
312
|
+
patternTypeDistribution: {}
|
|
313
|
+
},
|
|
314
|
+
errors: [],
|
|
315
|
+
timestamp: new Date()
|
|
316
|
+
};
|
|
317
|
+
await this.storePatterns(result);
|
|
318
|
+
}
|
|
319
|
+
// Import templates
|
|
320
|
+
if (data.templates && data.templates.length > 0) {
|
|
321
|
+
await this.storeTemplates(data.templates);
|
|
322
|
+
}
|
|
323
|
+
// Import signatures
|
|
324
|
+
if (data.signatures && data.signatures.length > 0) {
|
|
325
|
+
await this.storeSignatures(data.signatures);
|
|
326
|
+
}
|
|
327
|
+
this.logger.info('Successfully imported patterns');
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
this.logger.error('Failed to import patterns:', error);
|
|
331
|
+
throw error;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.PatternMemoryIntegration = PatternMemoryIntegration;
|
|
336
|
+
//# sourceMappingURL=PatternMemoryIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternMemoryIntegration.js","sourceRoot":"","sources":["../../src/reasoning/PatternMemoryIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QEReasoningBank - Intelligent Test Pattern Storage and Retrieval System
|
|
3
|
+
*
|
|
4
|
+
* @module reasoning/QEReasoningBank
|
|
5
|
+
* @version 1.1.0
|
|
6
|
+
*
|
|
7
|
+
* @description
|
|
8
|
+
* The QEReasoningBank provides a centralized system for storing, retrieving,
|
|
9
|
+
* and sharing test patterns across projects and frameworks. It uses in-memory
|
|
10
|
+
* storage with indexing for high-performance pattern matching.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { QEReasoningBank } from './reasoning/QEReasoningBank';
|
|
15
|
+
* import { TestPattern, PatternQuery } from './reasoning/types';
|
|
16
|
+
*
|
|
17
|
+
* // Initialize ReasoningBank
|
|
18
|
+
* const reasoningBank = new QEReasoningBank();
|
|
19
|
+
*
|
|
20
|
+
* // Store a pattern
|
|
21
|
+
* await reasoningBank.storePattern(pattern);
|
|
22
|
+
*
|
|
23
|
+
* // Find similar patterns
|
|
24
|
+
* const matches = await reasoningBank.findMatchingPatterns({
|
|
25
|
+
* codeType: 'test',
|
|
26
|
+
* framework: 'jest',
|
|
27
|
+
* keywords: ['api', 'controller']
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface TestPattern {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
category: 'unit' | 'integration' | 'e2e' | 'performance' | 'security';
|
|
36
|
+
framework: 'jest' | 'mocha' | 'vitest' | 'playwright';
|
|
37
|
+
language: 'typescript' | 'javascript' | 'python';
|
|
38
|
+
template: string;
|
|
39
|
+
examples: string[];
|
|
40
|
+
confidence: number;
|
|
41
|
+
usageCount: number;
|
|
42
|
+
successRate: number;
|
|
43
|
+
metadata: {
|
|
44
|
+
createdAt: Date;
|
|
45
|
+
updatedAt: Date;
|
|
46
|
+
version: string;
|
|
47
|
+
tags: string[];
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export interface PatternMatch {
|
|
51
|
+
pattern: TestPattern;
|
|
52
|
+
confidence: number;
|
|
53
|
+
reasoning: string;
|
|
54
|
+
applicability: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* QEReasoningBank - Main class for pattern storage and retrieval
|
|
58
|
+
*
|
|
59
|
+
* **Key Features:**
|
|
60
|
+
* - In-memory pattern storage with indexing
|
|
61
|
+
* - Fast pattern matching (< 50ms p95)
|
|
62
|
+
* - Pattern versioning and history tracking
|
|
63
|
+
* - Usage tracking and analytics
|
|
64
|
+
* - Pattern quality scoring
|
|
65
|
+
*
|
|
66
|
+
* **Performance Characteristics:**
|
|
67
|
+
* - Pattern lookup: < 50ms (p95)
|
|
68
|
+
* - Pattern storage: < 25ms (p95)
|
|
69
|
+
* - Supports 100+ patterns per project
|
|
70
|
+
*
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
export declare class QEReasoningBank {
|
|
74
|
+
private patterns;
|
|
75
|
+
private patternIndex;
|
|
76
|
+
private versionHistory;
|
|
77
|
+
/**
|
|
78
|
+
* Store a new test pattern
|
|
79
|
+
*/
|
|
80
|
+
storePattern(pattern: TestPattern): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Retrieve pattern by ID
|
|
83
|
+
*/
|
|
84
|
+
getPattern(id: string): Promise<TestPattern | null>;
|
|
85
|
+
/**
|
|
86
|
+
* Find matching patterns for a code context
|
|
87
|
+
*/
|
|
88
|
+
findMatchingPatterns(context: {
|
|
89
|
+
codeType: string;
|
|
90
|
+
framework?: string;
|
|
91
|
+
language?: string;
|
|
92
|
+
keywords?: string[];
|
|
93
|
+
}, limit?: number): Promise<PatternMatch[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Update pattern success metrics
|
|
96
|
+
*/
|
|
97
|
+
updatePatternMetrics(patternId: string, success: boolean): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Get pattern statistics
|
|
100
|
+
*/
|
|
101
|
+
getStatistics(): Promise<{
|
|
102
|
+
totalPatterns: number;
|
|
103
|
+
averageConfidence: number;
|
|
104
|
+
averageSuccessRate: number;
|
|
105
|
+
byCategory: Record<string, number>;
|
|
106
|
+
byFramework: Record<string, number>;
|
|
107
|
+
}>;
|
|
108
|
+
/**
|
|
109
|
+
* Get version history for a pattern
|
|
110
|
+
*/
|
|
111
|
+
getVersionHistory(patternId: string): Promise<TestPattern[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Search patterns by tags
|
|
114
|
+
*/
|
|
115
|
+
searchByTags(tags: string[]): Promise<TestPattern[]>;
|
|
116
|
+
private updateIndex;
|
|
117
|
+
private calculateMatchConfidence;
|
|
118
|
+
private generateReasoning;
|
|
119
|
+
}
|
|
120
|
+
export default QEReasoningBank;
|
|
121
|
+
//# sourceMappingURL=QEReasoningBank.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QEReasoningBank.d.ts","sourceRoot":"","sources":["../../src/reasoning/QEReasoningBank.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;IACtE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IACtD,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,SAAS,EAAE,IAAI,CAAC;QAChB,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAyC;IAE/D;;OAEG;IACU,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9D;;OAEG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIhE;;OAEG;IACU,oBAAoB,CAC/B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,EACD,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC;IAsB1B;;OAEG;IACU,oBAAoB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IAqBF;;OAEG;IACU,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzE;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8BjE,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,iBAAiB;CA6B1B;AAED,eAAe,eAAe,CAAC"}
|