agentic-qe 1.3.7 → 1.4.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/README.md +33 -1
- package/dist/agents/ApiContractValidatorAgent.d.ts +11 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +59 -0
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.js +1 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts +11 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +61 -0
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +20 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +81 -7
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +20 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +77 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts +20 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +77 -0
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts +20 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +64 -0
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +20 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +64 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts +11 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +60 -0
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts +20 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +63 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +20 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +62 -0
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +20 -0
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +88 -13
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +53 -2
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/cli/commands/agentdb/learn.d.ts +22 -0
- package/dist/cli/commands/agentdb/learn.d.ts.map +1 -0
- package/dist/cli/commands/agentdb/learn.js +343 -0
- package/dist/cli/commands/agentdb/learn.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +33 -11
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/patterns/extract.d.ts +12 -0
- package/dist/cli/commands/patterns/extract.d.ts.map +1 -0
- package/dist/cli/commands/patterns/extract.js +304 -0
- package/dist/cli/commands/patterns/extract.js.map +1 -0
- package/dist/cli/commands/patterns/index-new.d.ts +12 -0
- package/dist/cli/commands/patterns/index-new.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index-new.js +102 -0
- package/dist/cli/commands/patterns/index-new.js.map +1 -0
- package/dist/cli/commands/patterns/list.d.ts +14 -0
- package/dist/cli/commands/patterns/list.d.ts.map +1 -0
- package/dist/cli/commands/patterns/list.js +133 -0
- package/dist/cli/commands/patterns/list.js.map +1 -0
- package/dist/cli/commands/patterns/search.d.ts +13 -0
- package/dist/cli/commands/patterns/search.d.ts.map +1 -0
- package/dist/cli/commands/patterns/search.js +125 -0
- package/dist/cli/commands/patterns/search.js.map +1 -0
- package/dist/cli/commands/patterns/show.d.ts +7 -0
- package/dist/cli/commands/patterns/show.d.ts.map +1 -0
- package/dist/cli/commands/patterns/show.js +164 -0
- package/dist/cli/commands/patterns/show.js.map +1 -0
- package/dist/cli/commands/patterns/stats.d.ts +11 -0
- package/dist/cli/commands/patterns/stats.d.ts.map +1 -0
- package/dist/cli/commands/patterns/stats.js +241 -0
- package/dist/cli/commands/patterns/stats.js.map +1 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/PatternDatabaseAdapter.d.ts +169 -0
- package/dist/core/PatternDatabaseAdapter.d.ts.map +1 -0
- package/dist/core/PatternDatabaseAdapter.js +493 -0
- package/dist/core/PatternDatabaseAdapter.js.map +1 -0
- package/dist/learning/AgentDBLearningIntegration.d.ts +147 -0
- package/dist/learning/AgentDBLearningIntegration.d.ts.map +1 -0
- package/dist/learning/AgentDBLearningIntegration.js +380 -0
- package/dist/learning/AgentDBLearningIntegration.js.map +1 -0
- package/dist/learning/AgentDBPatternOptimizer.d.ts +129 -0
- package/dist/learning/AgentDBPatternOptimizer.d.ts.map +1 -0
- package/dist/learning/AgentDBPatternOptimizer.js +332 -0
- package/dist/learning/AgentDBPatternOptimizer.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +15 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +128 -1
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/RewardCalculator.d.ts +100 -0
- package/dist/learning/RewardCalculator.d.ts.map +1 -0
- package/dist/learning/RewardCalculator.js +176 -0
- package/dist/learning/RewardCalculator.js.map +1 -0
- package/dist/learning/StateExtractor.d.ts +62 -0
- package/dist/learning/StateExtractor.d.ts.map +1 -0
- package/dist/learning/StateExtractor.js +217 -0
- package/dist/learning/StateExtractor.js.map +1 -0
- package/dist/migrations/001_add_learning_tables.d.ts +63 -0
- package/dist/migrations/001_add_learning_tables.d.ts.map +1 -0
- package/dist/migrations/001_add_learning_tables.js +287 -0
- package/dist/migrations/001_add_learning_tables.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +25 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -1
- package/dist/reasoning/PatternExtractor.js +130 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -1
- package/dist/reasoning/QEReasoningBank.d.ts +18 -2
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
- package/dist/reasoning/QEReasoningBank.js +75 -3
- package/dist/reasoning/QEReasoningBank.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/Database.d.ts +107 -0
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +337 -1
- package/dist/utils/Database.js.map +1 -1
- package/dist/utils/__mocks__/Database.d.ts +18 -17
- package/dist/utils/__mocks__/Database.d.ts.map +1 -1
- package/dist/utils/__mocks__/Database.js +22 -55
- package/dist/utils/__mocks__/Database.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PatternDatabaseAdapter - Database persistence layer for QEReasoningBank
|
|
4
|
+
*
|
|
5
|
+
* @module core/PatternDatabaseAdapter
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* Provides efficient database operations for test pattern storage, retrieval,
|
|
10
|
+
* and analytics. Acts as an interface between QEReasoningBank and the SQLite database.
|
|
11
|
+
*
|
|
12
|
+
* **Performance Targets:**
|
|
13
|
+
* - Pattern lookup: < 50ms (p95)
|
|
14
|
+
* - Pattern storage: < 25ms (p95)
|
|
15
|
+
* - Batch operations: 100+ patterns/sec
|
|
16
|
+
*
|
|
17
|
+
* **Features:**
|
|
18
|
+
* - Transaction support for data integrity
|
|
19
|
+
* - Batch operations for performance
|
|
20
|
+
* - Usage tracking and analytics
|
|
21
|
+
* - Comprehensive error handling
|
|
22
|
+
* - Connection pooling ready
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const adapter = new PatternDatabaseAdapter(database);
|
|
27
|
+
* await adapter.initialize();
|
|
28
|
+
*
|
|
29
|
+
* // Store pattern
|
|
30
|
+
* await adapter.storePattern(pattern);
|
|
31
|
+
*
|
|
32
|
+
* // Load patterns
|
|
33
|
+
* const patterns = await adapter.loadPatterns({ framework: 'jest' });
|
|
34
|
+
*
|
|
35
|
+
* // Track usage
|
|
36
|
+
* await adapter.trackUsage(patternId, true, 120);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.PatternDatabaseAdapter = void 0;
|
|
41
|
+
const Logger_1 = require("../utils/Logger");
|
|
42
|
+
/**
|
|
43
|
+
* PatternDatabaseAdapter - Main adapter class
|
|
44
|
+
*/
|
|
45
|
+
class PatternDatabaseAdapter {
|
|
46
|
+
constructor(database) {
|
|
47
|
+
this.isInitialized = false;
|
|
48
|
+
this.database = database;
|
|
49
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize adapter and ensure database is ready
|
|
53
|
+
*/
|
|
54
|
+
async initialize() {
|
|
55
|
+
if (this.isInitialized) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
// Ensure database is initialized
|
|
60
|
+
await this.database.initialize();
|
|
61
|
+
this.isInitialized = true;
|
|
62
|
+
this.logger.info('PatternDatabaseAdapter initialized successfully');
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
this.logger.error('Failed to initialize PatternDatabaseAdapter:', error);
|
|
66
|
+
throw new Error(`PatternDatabaseAdapter initialization failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Store a pattern in the database with transaction support
|
|
71
|
+
* Performance: < 25ms (p95)
|
|
72
|
+
*/
|
|
73
|
+
async storePattern(pattern) {
|
|
74
|
+
await this.ensureInitialized();
|
|
75
|
+
try {
|
|
76
|
+
const sql = `
|
|
77
|
+
INSERT OR REPLACE INTO patterns (
|
|
78
|
+
id, name, description, category, framework,
|
|
79
|
+
language, template, examples, confidence,
|
|
80
|
+
usage_count, success_rate, quality, metadata,
|
|
81
|
+
created_at, updated_at
|
|
82
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
83
|
+
COALESCE((SELECT created_at FROM patterns WHERE id = ?), CURRENT_TIMESTAMP),
|
|
84
|
+
CURRENT_TIMESTAMP
|
|
85
|
+
)
|
|
86
|
+
`;
|
|
87
|
+
await this.database.run(sql, [
|
|
88
|
+
pattern.id,
|
|
89
|
+
pattern.name,
|
|
90
|
+
pattern.description || null,
|
|
91
|
+
pattern.category,
|
|
92
|
+
pattern.framework,
|
|
93
|
+
pattern.language,
|
|
94
|
+
pattern.template,
|
|
95
|
+
JSON.stringify(pattern.examples),
|
|
96
|
+
pattern.confidence,
|
|
97
|
+
pattern.usageCount || 0,
|
|
98
|
+
pattern.successRate || 0,
|
|
99
|
+
pattern.quality || null,
|
|
100
|
+
JSON.stringify(pattern.metadata),
|
|
101
|
+
pattern.id // For COALESCE to preserve original created_at
|
|
102
|
+
]);
|
|
103
|
+
this.logger.debug(`Pattern stored successfully: ${pattern.id}`);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
this.logger.error(`Failed to store pattern ${pattern.id}:`, error);
|
|
107
|
+
throw new Error(`Failed to store pattern: ${error instanceof Error ? error.message : String(error)}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Store multiple patterns in a single transaction
|
|
112
|
+
* Performance: 100+ patterns/sec
|
|
113
|
+
*/
|
|
114
|
+
async storePatternsBatch(patterns) {
|
|
115
|
+
await this.ensureInitialized();
|
|
116
|
+
if (patterns.length === 0) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
// Use transaction for better performance and atomicity
|
|
121
|
+
const statements = patterns.map(pattern => ({
|
|
122
|
+
sql: `
|
|
123
|
+
INSERT OR REPLACE INTO patterns (
|
|
124
|
+
id, name, description, category, framework,
|
|
125
|
+
language, template, examples, confidence,
|
|
126
|
+
usage_count, success_rate, quality, metadata,
|
|
127
|
+
created_at, updated_at
|
|
128
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
129
|
+
COALESCE((SELECT created_at FROM patterns WHERE id = ?), CURRENT_TIMESTAMP),
|
|
130
|
+
CURRENT_TIMESTAMP
|
|
131
|
+
)
|
|
132
|
+
`,
|
|
133
|
+
params: [
|
|
134
|
+
pattern.id,
|
|
135
|
+
pattern.name,
|
|
136
|
+
pattern.description || null,
|
|
137
|
+
pattern.category,
|
|
138
|
+
pattern.framework,
|
|
139
|
+
pattern.language,
|
|
140
|
+
pattern.template,
|
|
141
|
+
JSON.stringify(pattern.examples),
|
|
142
|
+
pattern.confidence,
|
|
143
|
+
pattern.usageCount || 0,
|
|
144
|
+
pattern.successRate || 0,
|
|
145
|
+
pattern.quality || null,
|
|
146
|
+
JSON.stringify(pattern.metadata),
|
|
147
|
+
pattern.id
|
|
148
|
+
]
|
|
149
|
+
}));
|
|
150
|
+
// Execute all statements in transaction
|
|
151
|
+
for (const stmt of statements) {
|
|
152
|
+
await this.database.run(stmt.sql, stmt.params);
|
|
153
|
+
}
|
|
154
|
+
this.logger.info(`Batch stored ${patterns.length} patterns successfully`);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
this.logger.error('Failed to store patterns batch:', error);
|
|
158
|
+
throw new Error(`Failed to store patterns batch: ${error instanceof Error ? error.message : String(error)}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Load patterns from database with filtering
|
|
163
|
+
* Performance: < 50ms (p95)
|
|
164
|
+
*/
|
|
165
|
+
async loadPatterns(filter) {
|
|
166
|
+
await this.ensureInitialized();
|
|
167
|
+
try {
|
|
168
|
+
let sql = 'SELECT * FROM patterns WHERE 1=1';
|
|
169
|
+
const params = [];
|
|
170
|
+
if (filter?.category) {
|
|
171
|
+
sql += ' AND category = ?';
|
|
172
|
+
params.push(filter.category);
|
|
173
|
+
}
|
|
174
|
+
if (filter?.framework) {
|
|
175
|
+
sql += ' AND framework = ?';
|
|
176
|
+
params.push(filter.framework);
|
|
177
|
+
}
|
|
178
|
+
if (filter?.language) {
|
|
179
|
+
sql += ' AND language = ?';
|
|
180
|
+
params.push(filter.language);
|
|
181
|
+
}
|
|
182
|
+
if (filter?.minQuality !== undefined) {
|
|
183
|
+
sql += ' AND quality >= ?';
|
|
184
|
+
params.push(filter.minQuality);
|
|
185
|
+
}
|
|
186
|
+
if (filter?.minConfidence !== undefined) {
|
|
187
|
+
sql += ' AND confidence >= ?';
|
|
188
|
+
params.push(filter.minConfidence);
|
|
189
|
+
}
|
|
190
|
+
// Order by quality and usage for best patterns first
|
|
191
|
+
sql += ' ORDER BY quality DESC, usage_count DESC';
|
|
192
|
+
if (filter?.limit !== undefined) {
|
|
193
|
+
sql += ' LIMIT ?';
|
|
194
|
+
params.push(filter.limit);
|
|
195
|
+
}
|
|
196
|
+
if (filter?.offset !== undefined) {
|
|
197
|
+
sql += ' OFFSET ?';
|
|
198
|
+
params.push(filter.offset);
|
|
199
|
+
}
|
|
200
|
+
const rows = await this.database.all(sql, params);
|
|
201
|
+
const patterns = rows.map(row => this.rowToPattern(row));
|
|
202
|
+
this.logger.debug(`Loaded ${patterns.length} patterns from database`);
|
|
203
|
+
return patterns;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
this.logger.error('Failed to load patterns:', error);
|
|
207
|
+
throw new Error(`Failed to load patterns: ${error instanceof Error ? error.message : String(error)}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Load a single pattern by ID
|
|
212
|
+
*/
|
|
213
|
+
async loadPattern(patternId) {
|
|
214
|
+
await this.ensureInitialized();
|
|
215
|
+
try {
|
|
216
|
+
const row = await this.database.get('SELECT * FROM patterns WHERE id = ?', [patternId]);
|
|
217
|
+
if (!row) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
return this.rowToPattern(row);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
this.logger.error(`Failed to load pattern ${patternId}:`, error);
|
|
224
|
+
throw new Error(`Failed to load pattern: ${error instanceof Error ? error.message : String(error)}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Update pattern metrics (usage count, success rate)
|
|
229
|
+
*/
|
|
230
|
+
async updatePatternMetrics(patternId, usageCount, successRate) {
|
|
231
|
+
await this.ensureInitialized();
|
|
232
|
+
try {
|
|
233
|
+
const sql = `
|
|
234
|
+
UPDATE patterns
|
|
235
|
+
SET usage_count = ?, success_rate = ?, updated_at = CURRENT_TIMESTAMP
|
|
236
|
+
WHERE id = ?
|
|
237
|
+
`;
|
|
238
|
+
await this.database.run(sql, [usageCount, successRate, patternId]);
|
|
239
|
+
this.logger.debug(`Updated metrics for pattern ${patternId}`);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
this.logger.error(`Failed to update pattern metrics ${patternId}:`, error);
|
|
243
|
+
throw new Error(`Failed to update pattern metrics: ${error instanceof Error ? error.message : String(error)}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Delete a pattern
|
|
248
|
+
*/
|
|
249
|
+
async deletePattern(patternId) {
|
|
250
|
+
await this.ensureInitialized();
|
|
251
|
+
try {
|
|
252
|
+
await this.database.run('DELETE FROM patterns WHERE id = ?', [patternId]);
|
|
253
|
+
this.logger.debug(`Deleted pattern ${patternId}`);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
this.logger.error(`Failed to delete pattern ${patternId}:`, error);
|
|
257
|
+
throw new Error(`Failed to delete pattern: ${error instanceof Error ? error.message : String(error)}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Track pattern usage
|
|
262
|
+
*/
|
|
263
|
+
async trackUsage(patternId, success, executionTimeMs, context) {
|
|
264
|
+
await this.ensureInitialized();
|
|
265
|
+
try {
|
|
266
|
+
const sql = `
|
|
267
|
+
INSERT INTO pattern_usage (
|
|
268
|
+
pattern_id, project_id, agent_id, context,
|
|
269
|
+
success, execution_time_ms, error_message
|
|
270
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
271
|
+
`;
|
|
272
|
+
await this.database.run(sql, [
|
|
273
|
+
patternId,
|
|
274
|
+
context?.projectId || null,
|
|
275
|
+
context?.agentId || null,
|
|
276
|
+
context ? JSON.stringify(context) : null,
|
|
277
|
+
success ? 1 : 0,
|
|
278
|
+
executionTimeMs || null,
|
|
279
|
+
context?.errorMessage || null
|
|
280
|
+
]);
|
|
281
|
+
this.logger.debug(`Tracked usage for pattern ${patternId}: ${success ? 'success' : 'failure'}`);
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
this.logger.error(`Failed to track usage for pattern ${patternId}:`, error);
|
|
285
|
+
// Don't throw - tracking failures shouldn't break the main flow
|
|
286
|
+
this.logger.warn('Usage tracking failed but continuing...');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Get usage statistics for a pattern
|
|
291
|
+
*/
|
|
292
|
+
async getUsageStats(patternId) {
|
|
293
|
+
await this.ensureInitialized();
|
|
294
|
+
try {
|
|
295
|
+
const sql = `
|
|
296
|
+
SELECT
|
|
297
|
+
pattern_id,
|
|
298
|
+
COUNT(*) as total_usage,
|
|
299
|
+
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) as success_count,
|
|
300
|
+
SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) as failure_count,
|
|
301
|
+
AVG(execution_time_ms) as avg_execution_time,
|
|
302
|
+
MAX(used_at) as last_used
|
|
303
|
+
FROM pattern_usage
|
|
304
|
+
WHERE pattern_id = ?
|
|
305
|
+
GROUP BY pattern_id
|
|
306
|
+
`;
|
|
307
|
+
const row = await this.database.get(sql, [patternId]);
|
|
308
|
+
if (!row) {
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
const totalUsage = row.total_usage || 0;
|
|
312
|
+
const successCount = row.success_count || 0;
|
|
313
|
+
return {
|
|
314
|
+
patternId: row.pattern_id,
|
|
315
|
+
totalUsage,
|
|
316
|
+
successCount,
|
|
317
|
+
failureCount: row.failure_count || 0,
|
|
318
|
+
avgExecutionTime: row.avg_execution_time || 0,
|
|
319
|
+
successRate: totalUsage > 0 ? successCount / totalUsage : 0,
|
|
320
|
+
lastUsed: row.last_used ? new Date(row.last_used) : new Date()
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
this.logger.error(`Failed to get usage stats for pattern ${patternId}:`, error);
|
|
325
|
+
throw new Error(`Failed to get usage stats: ${error instanceof Error ? error.message : String(error)}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Get comprehensive analytics for all patterns
|
|
330
|
+
*/
|
|
331
|
+
async getPatternAnalytics() {
|
|
332
|
+
await this.ensureInitialized();
|
|
333
|
+
try {
|
|
334
|
+
// Get overall counts
|
|
335
|
+
const patterns = await this.loadPatterns();
|
|
336
|
+
const analytics = {
|
|
337
|
+
totalPatterns: patterns.length,
|
|
338
|
+
byCategory: {},
|
|
339
|
+
byFramework: {},
|
|
340
|
+
byLanguage: {},
|
|
341
|
+
averageQuality: 0,
|
|
342
|
+
averageSuccessRate: 0,
|
|
343
|
+
topPatterns: []
|
|
344
|
+
};
|
|
345
|
+
// Calculate aggregations
|
|
346
|
+
let totalQuality = 0;
|
|
347
|
+
let totalSuccessRate = 0;
|
|
348
|
+
for (const pattern of patterns) {
|
|
349
|
+
// Category breakdown
|
|
350
|
+
analytics.byCategory[pattern.category] = (analytics.byCategory[pattern.category] || 0) + 1;
|
|
351
|
+
// Framework breakdown
|
|
352
|
+
analytics.byFramework[pattern.framework] = (analytics.byFramework[pattern.framework] || 0) + 1;
|
|
353
|
+
// Language breakdown
|
|
354
|
+
analytics.byLanguage[pattern.language] = (analytics.byLanguage[pattern.language] || 0) + 1;
|
|
355
|
+
// Averages
|
|
356
|
+
totalQuality += pattern.quality || 0;
|
|
357
|
+
totalSuccessRate += pattern.successRate || 0;
|
|
358
|
+
}
|
|
359
|
+
if (patterns.length > 0) {
|
|
360
|
+
analytics.averageQuality = totalQuality / patterns.length;
|
|
361
|
+
analytics.averageSuccessRate = totalSuccessRate / patterns.length;
|
|
362
|
+
}
|
|
363
|
+
// Get top patterns by usage
|
|
364
|
+
const topPatternsRows = await this.database.all(`
|
|
365
|
+
SELECT id, usage_count
|
|
366
|
+
FROM patterns
|
|
367
|
+
ORDER BY usage_count DESC
|
|
368
|
+
LIMIT 10
|
|
369
|
+
`);
|
|
370
|
+
analytics.topPatterns = topPatternsRows.map(row => ({
|
|
371
|
+
patternId: row.id,
|
|
372
|
+
usageCount: row.usage_count
|
|
373
|
+
}));
|
|
374
|
+
return analytics;
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
this.logger.error('Failed to get pattern analytics:', error);
|
|
378
|
+
throw new Error(`Failed to get pattern analytics: ${error instanceof Error ? error.message : String(error)}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Store learning history entry
|
|
383
|
+
*/
|
|
384
|
+
async storeLearningHistory(entry) {
|
|
385
|
+
await this.ensureInitialized();
|
|
386
|
+
try {
|
|
387
|
+
const sql = `
|
|
388
|
+
INSERT INTO learning_history (
|
|
389
|
+
agent_id, pattern_id, state_representation, action,
|
|
390
|
+
reward, next_state_representation, q_value, episode
|
|
391
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
392
|
+
`;
|
|
393
|
+
await this.database.run(sql, [
|
|
394
|
+
entry.agentId,
|
|
395
|
+
entry.patternId || null,
|
|
396
|
+
entry.stateRepresentation,
|
|
397
|
+
entry.action,
|
|
398
|
+
entry.reward,
|
|
399
|
+
entry.nextStateRepresentation || null,
|
|
400
|
+
entry.qValue || null,
|
|
401
|
+
entry.episode || null
|
|
402
|
+
]);
|
|
403
|
+
this.logger.debug(`Stored learning history for agent ${entry.agentId}`);
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
this.logger.error('Failed to store learning history:', error);
|
|
407
|
+
// Don't throw - learning history failures shouldn't break the main flow
|
|
408
|
+
this.logger.warn('Learning history storage failed but continuing...');
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Store learning metrics
|
|
413
|
+
*/
|
|
414
|
+
async storeLearningMetric(metric) {
|
|
415
|
+
await this.ensureInitialized();
|
|
416
|
+
try {
|
|
417
|
+
const sql = `
|
|
418
|
+
INSERT INTO learning_metrics (
|
|
419
|
+
agent_id, metric_type, metric_value, baseline_value,
|
|
420
|
+
improvement_percentage, pattern_count, context
|
|
421
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
422
|
+
`;
|
|
423
|
+
await this.database.run(sql, [
|
|
424
|
+
metric.agentId,
|
|
425
|
+
metric.metricType,
|
|
426
|
+
metric.metricValue,
|
|
427
|
+
metric.baselineValue || null,
|
|
428
|
+
metric.improvementPercentage || null,
|
|
429
|
+
metric.patternCount || null,
|
|
430
|
+
metric.context ? JSON.stringify(metric.context) : null
|
|
431
|
+
]);
|
|
432
|
+
this.logger.debug(`Stored learning metric for agent ${metric.agentId}: ${metric.metricType} = ${metric.metricValue}`);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
this.logger.error('Failed to store learning metric:', error);
|
|
436
|
+
// Don't throw - metrics failures shouldn't break the main flow
|
|
437
|
+
this.logger.warn('Learning metric storage failed but continuing...');
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Convert database row to TestPattern
|
|
442
|
+
*/
|
|
443
|
+
rowToPattern(row) {
|
|
444
|
+
return {
|
|
445
|
+
id: row.id,
|
|
446
|
+
name: row.name,
|
|
447
|
+
description: row.description || '',
|
|
448
|
+
category: row.category,
|
|
449
|
+
framework: row.framework,
|
|
450
|
+
language: row.language,
|
|
451
|
+
template: row.template,
|
|
452
|
+
examples: JSON.parse(row.examples),
|
|
453
|
+
confidence: row.confidence,
|
|
454
|
+
usageCount: row.usage_count,
|
|
455
|
+
successRate: row.success_rate,
|
|
456
|
+
quality: row.quality,
|
|
457
|
+
metadata: JSON.parse(row.metadata)
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Ensure adapter is initialized
|
|
462
|
+
*/
|
|
463
|
+
async ensureInitialized() {
|
|
464
|
+
if (!this.isInitialized) {
|
|
465
|
+
throw new Error('PatternDatabaseAdapter not initialized. Call initialize() first.');
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Get database statistics
|
|
470
|
+
*/
|
|
471
|
+
async getStats() {
|
|
472
|
+
await this.ensureInitialized();
|
|
473
|
+
try {
|
|
474
|
+
const patternCount = await this.database.get('SELECT COUNT(*) as count FROM patterns');
|
|
475
|
+
const usageCount = await this.database.get('SELECT COUNT(*) as count FROM pattern_usage');
|
|
476
|
+
const historyCount = await this.database.get('SELECT COUNT(*) as count FROM learning_history');
|
|
477
|
+
const metricsCount = await this.database.get('SELECT COUNT(*) as count FROM learning_metrics');
|
|
478
|
+
return {
|
|
479
|
+
totalPatterns: patternCount?.count || 0,
|
|
480
|
+
totalUsageRecords: usageCount?.count || 0,
|
|
481
|
+
totalLearningHistory: historyCount?.count || 0,
|
|
482
|
+
totalMetrics: metricsCount?.count || 0
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
catch (error) {
|
|
486
|
+
this.logger.error('Failed to get database stats:', error);
|
|
487
|
+
throw new Error(`Failed to get database stats: ${error instanceof Error ? error.message : String(error)}`);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
exports.PatternDatabaseAdapter = PatternDatabaseAdapter;
|
|
492
|
+
exports.default = PatternDatabaseAdapter;
|
|
493
|
+
//# sourceMappingURL=PatternDatabaseAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternDatabaseAdapter.js","sourceRoot":"","sources":["../../src/core/PatternDatabaseAdapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;;;AAGH,4CAAyC;AAiCzC;;GAEG;AACH,MAAa,sBAAsB;IAKjC,YAAY,QAAkB;QAFtB,kBAAa,GAAY,KAAK,CAAC;QAGrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;;;;;;;OAUX,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3B,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI;gBACZ,OAAO,CAAC,WAAW,IAAI,IAAI;gBAC3B,OAAO,CAAC,QAAQ;gBAChB,OAAO,CAAC,SAAS;gBACjB,OAAO,CAAC,QAAQ;gBAChB,OAAO,CAAC,QAAQ;gBAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChC,OAAO,CAAC,UAAU;gBAClB,OAAO,CAAC,UAAU,IAAI,CAAC;gBACvB,OAAO,CAAC,WAAW,IAAI,CAAC;gBACxB,OAAO,CAAC,OAAO,IAAI,IAAI;gBACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChC,OAAO,CAAC,EAAE,CAAC,+CAA+C;aAC3D,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAuB;QAC9C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC1C,GAAG,EAAE;;;;;;;;;;SAUJ;gBACD,MAAM,EAAE;oBACN,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,IAAI;oBACZ,OAAO,CAAC,WAAW,IAAI,IAAI;oBAC3B,OAAO,CAAC,QAAQ;oBAChB,OAAO,CAAC,SAAS;oBACjB,OAAO,CAAC,QAAQ;oBAChB,OAAO,CAAC,QAAQ;oBAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAChC,OAAO,CAAC,UAAU;oBAClB,OAAO,CAAC,UAAU,IAAI,CAAC;oBACvB,OAAO,CAAC,WAAW,IAAI,CAAC;oBACxB,OAAO,CAAC,OAAO,IAAI,IAAI;oBACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAChC,OAAO,CAAC,EAAE;iBACX;aACF,CAAC,CAAC,CAAC;YAEJ,wCAAwC;YACxC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,MAAM,wBAAwB,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAsB;QACvC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,IAAI,GAAG,GAAG,kCAAkC,CAAC;YAC7C,MAAM,MAAM,GAAU,EAAE,CAAC;YAEzB,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACrB,GAAG,IAAI,mBAAmB,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;gBACtB,GAAG,IAAI,oBAAoB,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACrB,GAAG,IAAI,mBAAmB,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,GAAG,IAAI,mBAAmB,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,MAAM,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;gBACxC,GAAG,IAAI,sBAAsB,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACpC,CAAC;YAED,qDAAqD;YACrD,GAAG,IAAI,0CAA0C,CAAC;YAElD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,GAAG,IAAI,UAAU,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,IAAI,WAAW,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;YACtE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qCAAqC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAExF,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,UAAkB,EAClB,WAAmB;QAEnB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;OAIX,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YAEnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,OAAgB,EAChB,eAAwB,EACxB,OAIC;QAED,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;;OAKX,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3B,SAAS;gBACT,OAAO,EAAE,SAAS,IAAI,IAAI;gBAC1B,OAAO,EAAE,OAAO,IAAI,IAAI;gBACxB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACxC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACf,eAAe,IAAI,IAAI;gBACvB,OAAO,EAAE,YAAY,IAAI,IAAI;aAC9B,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5E,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;;;;;;;;OAWX,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;YAE5C,OAAO;gBACL,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,UAAU;gBACV,YAAY;gBACZ,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC;gBACpC,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,IAAI,CAAC;gBAC7C,WAAW,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3D,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;aAC/D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE3C,MAAM,SAAS,GAAqB;gBAClC,aAAa,EAAE,QAAQ,CAAC,MAAM;gBAC9B,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,EAAE;gBACd,cAAc,EAAE,CAAC;gBACjB,kBAAkB,EAAE,CAAC;gBACrB,WAAW,EAAE,EAAE;aAChB,CAAC;YAEF,yBAAyB;YACzB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;YAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,qBAAqB;gBACrB,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAE3F,sBAAsB;gBACtB,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAE/F,qBAAqB;gBACrB,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAE3F,WAAW;gBACX,YAAY,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBACrC,gBAAgB,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC1D,SAAS,CAAC,kBAAkB,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;YACpE,CAAC;YAED,4BAA4B;YAC5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;;;;;OAK/C,CAAC,CAAC;YAEH,SAAS,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,UAAU,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAC,CAAC,CAAC;YAEJ,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAS1B;QACC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;;OAKX,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3B,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,SAAS,IAAI,IAAI;gBACvB,KAAK,CAAC,mBAAmB;gBACzB,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,uBAAuB,IAAI,IAAI;gBACrC,KAAK,CAAC,MAAM,IAAI,IAAI;gBACpB,KAAK,CAAC,OAAO,IAAI,IAAI;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC9D,wEAAwE;YACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAQzB;QACC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG;;;;;OAKX,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3B,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,UAAU;gBACjB,MAAM,CAAC,WAAW;gBAClB,MAAM,CAAC,aAAa,IAAI,IAAI;gBAC5B,MAAM,CAAC,qBAAqB,IAAI,IAAI;gBACpC,MAAM,CAAC,YAAY,IAAI,IAAI;gBAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;aACvD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC7D,+DAA+D;YAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAQ;QAC3B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QAMZ,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACvF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC1F,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAE/F,OAAO;gBACL,aAAa,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;gBACvC,iBAAiB,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;gBACzC,oBAAoB,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;gBAC9C,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;aACvC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;CACF;AA3hBD,wDA2hBC;AAED,kBAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentDB Learning Integration for QE Agents
|
|
3
|
+
*
|
|
4
|
+
* Integrates AgentDB's learning capabilities with QE agent learning system:
|
|
5
|
+
* - 9 Reinforcement Learning algorithms (Q-Learning, SARSA, Actor-Critic, etc.)
|
|
6
|
+
* - Persistent memory patterns with vector embeddings
|
|
7
|
+
* - QUIC synchronization for distributed learning
|
|
8
|
+
* - 150x faster pattern retrieval with HNSW indexing
|
|
9
|
+
* - Memory optimization with quantization (4-32x reduction)
|
|
10
|
+
*
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
import { EnhancedAgentDBService, RLAlgorithm } from '../core/memory/EnhancedAgentDBService';
|
|
14
|
+
import { QEReasoningBank } from '../reasoning/QEReasoningBank';
|
|
15
|
+
import { LearningEngine } from './LearningEngine';
|
|
16
|
+
import { TaskResult } from './RewardCalculator';
|
|
17
|
+
import { TaskState, AgentAction } from './types';
|
|
18
|
+
/**
|
|
19
|
+
* AgentDB Learning Configuration
|
|
20
|
+
*/
|
|
21
|
+
export interface AgentDBLearningConfig {
|
|
22
|
+
/** Enable AgentDB learning features */
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
/** RL algorithm to use */
|
|
25
|
+
algorithm: RLAlgorithm;
|
|
26
|
+
/** Enable QUIC sync for distributed learning */
|
|
27
|
+
enableQuicSync: boolean;
|
|
28
|
+
/** Enable pattern storage in AgentDB */
|
|
29
|
+
storePatterns: boolean;
|
|
30
|
+
/** Batch size for training */
|
|
31
|
+
batchSize: number;
|
|
32
|
+
/** Training frequency (every N experiences) */
|
|
33
|
+
trainingFrequency: number;
|
|
34
|
+
/** Pattern confidence threshold */
|
|
35
|
+
minPatternConfidence: number;
|
|
36
|
+
/** Enable vector-based pattern matching */
|
|
37
|
+
useVectorSearch: boolean;
|
|
38
|
+
/** Enable memory optimization */
|
|
39
|
+
enableOptimization: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* AgentDB Learning Integration
|
|
43
|
+
*
|
|
44
|
+
* Bridges QE agents' LearningEngine with AgentDB's advanced features
|
|
45
|
+
*/
|
|
46
|
+
export declare class AgentDBLearningIntegration {
|
|
47
|
+
private logger;
|
|
48
|
+
private config;
|
|
49
|
+
private agentDB;
|
|
50
|
+
private reasoningBank;
|
|
51
|
+
private learningEngine;
|
|
52
|
+
private experienceCount;
|
|
53
|
+
private lastTrainingTime;
|
|
54
|
+
constructor(learningEngine: LearningEngine, agentDB: EnhancedAgentDBService, reasoningBank: QEReasoningBank, config?: Partial<AgentDBLearningConfig>);
|
|
55
|
+
/**
|
|
56
|
+
* Initialize AgentDB learning integration
|
|
57
|
+
*/
|
|
58
|
+
initialize(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Record experience with AgentDB enhancement
|
|
61
|
+
*
|
|
62
|
+
* This method enhances the standard learning by:
|
|
63
|
+
* 1. Recording in local LearningEngine (Q-table)
|
|
64
|
+
* 2. Training AgentDB RL model
|
|
65
|
+
* 3. Storing patterns in AgentDB vector store
|
|
66
|
+
* 4. Syncing via QUIC if enabled
|
|
67
|
+
*/
|
|
68
|
+
recordExperience(agentId: string, task: any, result: TaskResult, state: TaskState, action: AgentAction, reward: number): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Get learning-enhanced recommendations
|
|
71
|
+
*
|
|
72
|
+
* Combines:
|
|
73
|
+
* 1. LearningEngine Q-table recommendations
|
|
74
|
+
* 2. AgentDB RL model predictions
|
|
75
|
+
* 3. Similar pattern retrieval from vector store
|
|
76
|
+
*/
|
|
77
|
+
getRecommendations(agentId: string, state: TaskState): Promise<{
|
|
78
|
+
action: AgentAction;
|
|
79
|
+
confidence: number;
|
|
80
|
+
reasoning: string;
|
|
81
|
+
alternatives: AgentAction[];
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Perform batch training on accumulated experiences
|
|
85
|
+
*/
|
|
86
|
+
private performBatchTraining;
|
|
87
|
+
/**
|
|
88
|
+
* Store successful pattern in AgentDB for future retrieval
|
|
89
|
+
*/
|
|
90
|
+
private storeSuccessfulPattern;
|
|
91
|
+
/**
|
|
92
|
+
* Find similar patterns using vector search
|
|
93
|
+
*/
|
|
94
|
+
private findSimilarPatterns;
|
|
95
|
+
/**
|
|
96
|
+
* Combine confidence scores from multiple sources
|
|
97
|
+
*/
|
|
98
|
+
private combineConfidence;
|
|
99
|
+
/**
|
|
100
|
+
* Build comprehensive reasoning from multiple sources
|
|
101
|
+
*/
|
|
102
|
+
private buildReasoning;
|
|
103
|
+
/**
|
|
104
|
+
* Serialize state for AgentDB
|
|
105
|
+
*/
|
|
106
|
+
private serializeState;
|
|
107
|
+
/**
|
|
108
|
+
* Serialize action for AgentDB
|
|
109
|
+
*/
|
|
110
|
+
private serializeAction;
|
|
111
|
+
/**
|
|
112
|
+
* Serialize next state
|
|
113
|
+
*/
|
|
114
|
+
private serializeNextState;
|
|
115
|
+
/**
|
|
116
|
+
* Deserialize action from string
|
|
117
|
+
*/
|
|
118
|
+
private deserializeAction;
|
|
119
|
+
/**
|
|
120
|
+
* Infer category from task type
|
|
121
|
+
*/
|
|
122
|
+
private inferCategory;
|
|
123
|
+
/**
|
|
124
|
+
* Extract tags from task and action
|
|
125
|
+
*/
|
|
126
|
+
private extractTags;
|
|
127
|
+
/**
|
|
128
|
+
* Get learning statistics
|
|
129
|
+
*/
|
|
130
|
+
getStatistics(agentId: string): Promise<{
|
|
131
|
+
totalExperiences: number;
|
|
132
|
+
avgReward: number;
|
|
133
|
+
successRate: number;
|
|
134
|
+
modelsActive: number;
|
|
135
|
+
patternsStored: number;
|
|
136
|
+
lastTrainingTime: number;
|
|
137
|
+
}>;
|
|
138
|
+
/**
|
|
139
|
+
* Clear learning data for agent
|
|
140
|
+
*/
|
|
141
|
+
clearLearningData(agentId: string): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Export learning model for sharing
|
|
144
|
+
*/
|
|
145
|
+
exportLearningModel(agentId: string): Promise<any>;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=AgentDBLearningIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentDBLearningIntegration.d.ts","sourceRoot":"","sources":["../../src/learning/AgentDBLearningIntegration.ts"],"names":[],"mappings":"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"}
|