agentic-qe 2.2.0 → 2.2.1
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/skills/agentic-quality-engineering/SKILL.md +4 -4
- package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +14 -11
- package/.claude/skills/skills-manifest.json +2 -2
- package/CHANGELOG.md +15 -0
- package/README.md +92 -214
- package/dist/agents/BaseAgent.d.ts +5 -1
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +32 -17
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/index.js +3 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/cli/commands/improve/index.d.ts +8 -1
- package/dist/cli/commands/improve/index.d.ts.map +1 -1
- package/dist/cli/commands/improve/index.js +18 -16
- package/dist/cli/commands/improve/index.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +10 -2
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +99 -63
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/patterns/index.d.ts +8 -1
- package/dist/cli/commands/patterns/index.d.ts.map +1 -1
- package/dist/cli/commands/patterns/index.js +79 -45
- package/dist/cli/commands/patterns/index.js.map +1 -1
- package/dist/cli/commands/routing/index.d.ts +5 -0
- package/dist/cli/commands/routing/index.d.ts.map +1 -1
- package/dist/cli/commands/routing/index.js +11 -10
- package/dist/cli/commands/routing/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +1 -1
- package/dist/cli/init/agents.js +2 -2
- package/dist/cli/init/database-init.d.ts +7 -0
- package/dist/cli/init/database-init.d.ts.map +1 -1
- package/dist/cli/init/database-init.js +29 -48
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.d.ts +261 -0
- package/dist/core/memory/HNSWVectorMemory.d.ts.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +647 -0
- package/dist/core/memory/HNSWVectorMemory.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +7 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +9 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +2 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +11 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/learning/ExplainableLearning.d.ts +191 -0
- package/dist/learning/ExplainableLearning.d.ts.map +1 -0
- package/dist/learning/ExplainableLearning.js +441 -0
- package/dist/learning/ExplainableLearning.js.map +1 -0
- package/dist/learning/GossipPatternSharingProtocol.d.ts +228 -0
- package/dist/learning/GossipPatternSharingProtocol.d.ts.map +1 -0
- package/dist/learning/GossipPatternSharingProtocol.js +590 -0
- package/dist/learning/GossipPatternSharingProtocol.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +4 -4
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +20 -13
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/PerformanceOptimizer.d.ts +268 -0
- package/dist/learning/PerformanceOptimizer.d.ts.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +552 -0
- package/dist/learning/PerformanceOptimizer.js.map +1 -0
- package/dist/learning/PrivacyManager.d.ts +197 -0
- package/dist/learning/PrivacyManager.d.ts.map +1 -0
- package/dist/learning/PrivacyManager.js +551 -0
- package/dist/learning/PrivacyManager.js.map +1 -0
- package/dist/learning/TransferLearningManager.d.ts +212 -0
- package/dist/learning/TransferLearningManager.d.ts.map +1 -0
- package/dist/learning/TransferLearningManager.js +497 -0
- package/dist/learning/TransferLearningManager.js.map +1 -0
- package/dist/learning/algorithms/MAMLMetaLearner.d.ts +218 -0
- package/dist/learning/algorithms/MAMLMetaLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/MAMLMetaLearner.js +532 -0
- package/dist/learning/algorithms/MAMLMetaLearner.js.map +1 -0
- package/dist/learning/algorithms/index.d.ts +4 -1
- package/dist/learning/algorithms/index.d.ts.map +1 -1
- package/dist/learning/algorithms/index.js +7 -1
- package/dist/learning/algorithms/index.js.map +1 -1
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +17 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/providers/HybridRouter.d.ts +217 -0
- package/dist/providers/HybridRouter.d.ts.map +1 -0
- package/dist/providers/HybridRouter.js +679 -0
- package/dist/providers/HybridRouter.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +7 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/telemetry/LearningTelemetry.d.ts +190 -0
- package/dist/telemetry/LearningTelemetry.d.ts.map +1 -0
- package/dist/telemetry/LearningTelemetry.js +403 -0
- package/dist/telemetry/LearningTelemetry.js.map +1 -0
- package/dist/telemetry/index.d.ts +1 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +20 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/instrumentation/agent.d.ts +1 -1
- package/dist/telemetry/instrumentation/agent.js +1 -1
- package/dist/telemetry/instrumentation/index.d.ts +1 -1
- package/dist/telemetry/instrumentation/index.js +1 -1
- package/dist/utils/math.d.ts +11 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +16 -0
- package/dist/utils/math.js.map +1 -0
- package/docs/reference/agents.md +1 -1
- package/docs/reference/skills.md +3 -3
- package/docs/reference/usage.md +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,647 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HNSW Vector Memory - Hierarchical Navigable Small World Index
|
|
4
|
+
*
|
|
5
|
+
* High-performance vector similarity search for learning system pattern matching.
|
|
6
|
+
* Integrates with AgentDB's vector capabilities and RuVector's HNSW implementation.
|
|
7
|
+
*
|
|
8
|
+
* Performance Characteristics:
|
|
9
|
+
* - Search: O(log n) time complexity with HNSW
|
|
10
|
+
* - Insert: O(log n) amortized
|
|
11
|
+
* - Memory: ~100 bytes per vector + HNSW overhead
|
|
12
|
+
*
|
|
13
|
+
* HNSW Parameters:
|
|
14
|
+
* - M: Number of connections per node (16-64, default: 32)
|
|
15
|
+
* Higher M = better recall, more memory
|
|
16
|
+
* - efConstruction: Search depth during construction (100-200, default: 200)
|
|
17
|
+
* Higher = better quality index, slower build
|
|
18
|
+
* - efSearch: Search depth during query (50-100, default: 100)
|
|
19
|
+
* Higher = better recall, slower search
|
|
20
|
+
*
|
|
21
|
+
* Distance Metrics:
|
|
22
|
+
* - Cosine: Best for semantic similarity (default)
|
|
23
|
+
* - Euclidean: Best for spatial distance
|
|
24
|
+
* - Dot Product: Best for normalized vectors
|
|
25
|
+
*
|
|
26
|
+
* @module core/memory/HNSWVectorMemory
|
|
27
|
+
* @version 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
32
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
33
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
34
|
+
}
|
|
35
|
+
Object.defineProperty(o, k2, desc);
|
|
36
|
+
}) : (function(o, m, k, k2) {
|
|
37
|
+
if (k2 === undefined) k2 = k;
|
|
38
|
+
o[k2] = m[k];
|
|
39
|
+
}));
|
|
40
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
41
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
42
|
+
}) : function(o, v) {
|
|
43
|
+
o["default"] = v;
|
|
44
|
+
});
|
|
45
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
46
|
+
var ownKeys = function(o) {
|
|
47
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
48
|
+
var ar = [];
|
|
49
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
return ownKeys(o);
|
|
53
|
+
};
|
|
54
|
+
return function (mod) {
|
|
55
|
+
if (mod && mod.__esModule) return mod;
|
|
56
|
+
var result = {};
|
|
57
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
58
|
+
__setModuleDefault(result, mod);
|
|
59
|
+
return result;
|
|
60
|
+
};
|
|
61
|
+
})();
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.HNSWVectorMemory = void 0;
|
|
64
|
+
exports.createHNSWVectorMemory = createHNSWVectorMemory;
|
|
65
|
+
exports.createHighPrecisionHNSW = createHighPrecisionHNSW;
|
|
66
|
+
exports.createHighThroughputHNSW = createHighThroughputHNSW;
|
|
67
|
+
exports.createBalancedHNSW = createBalancedHNSW;
|
|
68
|
+
/**
|
|
69
|
+
* HNSW Vector Memory Implementation
|
|
70
|
+
*
|
|
71
|
+
* Provides efficient vector similarity search with configurable HNSW parameters.
|
|
72
|
+
* Integrates with both AgentDB and RuVector backends for flexibility.
|
|
73
|
+
*
|
|
74
|
+
* @implements {IPatternStore}
|
|
75
|
+
*/
|
|
76
|
+
class HNSWVectorMemory {
|
|
77
|
+
constructor(config = {}) {
|
|
78
|
+
this.initialized = false;
|
|
79
|
+
this.backend = null;
|
|
80
|
+
// Performance tracking
|
|
81
|
+
this.searchLatencies = [];
|
|
82
|
+
this.insertLatencies = [];
|
|
83
|
+
this.totalSearches = 0;
|
|
84
|
+
this.totalInserts = 0;
|
|
85
|
+
// Maintenance tracking
|
|
86
|
+
this.maintenanceStats = {
|
|
87
|
+
lastMaintenance: Date.now(),
|
|
88
|
+
rebalanceCount: 0,
|
|
89
|
+
cleanupCount: 0,
|
|
90
|
+
deletedCount: 0,
|
|
91
|
+
fragmentation: 0,
|
|
92
|
+
};
|
|
93
|
+
// Default HNSW parameters optimized for learning system
|
|
94
|
+
this.hnswConfig = {
|
|
95
|
+
M: config.M ?? 32,
|
|
96
|
+
efConstruction: config.efConstruction ?? 200,
|
|
97
|
+
efSearch: config.efSearch ?? 100,
|
|
98
|
+
metric: config.metric ?? 'cosine',
|
|
99
|
+
dimension: config.dimension ?? 384,
|
|
100
|
+
};
|
|
101
|
+
this.config = {
|
|
102
|
+
...this.hnswConfig,
|
|
103
|
+
storagePath: config.storagePath ?? '.agentic-qe/hnsw-patterns.db',
|
|
104
|
+
autoPersist: config.autoPersist ?? true,
|
|
105
|
+
enableMetrics: config.enableMetrics ?? true,
|
|
106
|
+
batchSize: config.batchSize ?? 100,
|
|
107
|
+
enableMaintenance: config.enableMaintenance ?? true,
|
|
108
|
+
maintenanceInterval: config.maintenanceInterval ?? 3600000, // 1 hour
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Initialize HNSW vector memory with backend selection
|
|
113
|
+
*/
|
|
114
|
+
async initialize() {
|
|
115
|
+
if (this.initialized)
|
|
116
|
+
return;
|
|
117
|
+
try {
|
|
118
|
+
// Try to use RuVector as primary backend (best performance)
|
|
119
|
+
const { RuVectorPatternStore, isRuVectorAvailable } = await Promise.resolve().then(() => __importStar(require('./RuVectorPatternStore')));
|
|
120
|
+
if (isRuVectorAvailable()) {
|
|
121
|
+
this.backend = new RuVectorPatternStore({
|
|
122
|
+
dimension: this.hnswConfig.dimension,
|
|
123
|
+
metric: this.hnswConfig.metric,
|
|
124
|
+
storagePath: this.config.storagePath,
|
|
125
|
+
autoPersist: this.config.autoPersist,
|
|
126
|
+
enableMetrics: this.config.enableMetrics,
|
|
127
|
+
hnsw: {
|
|
128
|
+
m: this.hnswConfig.M,
|
|
129
|
+
efConstruction: this.hnswConfig.efConstruction,
|
|
130
|
+
efSearch: this.hnswConfig.efSearch,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
await this.backend.initialize();
|
|
134
|
+
console.log('[HNSW] Using RuVector backend with HNSW indexing');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Fallback to AgentDB
|
|
138
|
+
await this.initializeAgentDBBackend();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
// If RuVector import fails, use AgentDB
|
|
143
|
+
console.warn('[HNSW] RuVector unavailable, using AgentDB backend:', error);
|
|
144
|
+
await this.initializeAgentDBBackend();
|
|
145
|
+
}
|
|
146
|
+
// Start maintenance if enabled
|
|
147
|
+
if (this.config.enableMaintenance) {
|
|
148
|
+
this.startMaintenance();
|
|
149
|
+
}
|
|
150
|
+
this.initialized = true;
|
|
151
|
+
this.logConfiguration();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Initialize AgentDB as fallback backend
|
|
155
|
+
*/
|
|
156
|
+
async initializeAgentDBBackend() {
|
|
157
|
+
// Import AgentDB service with HNSW support
|
|
158
|
+
const { AgentDBService } = await Promise.resolve().then(() => __importStar(require('./AgentDBService')));
|
|
159
|
+
// Create a wrapper that implements IPatternStore interface
|
|
160
|
+
const agentDbService = new AgentDBService({
|
|
161
|
+
dbPath: this.config.storagePath,
|
|
162
|
+
embeddingDim: this.hnswConfig.dimension,
|
|
163
|
+
enableHNSW: true,
|
|
164
|
+
enableCache: true,
|
|
165
|
+
hnswConfig: {
|
|
166
|
+
M: this.hnswConfig.M,
|
|
167
|
+
efConstruction: this.hnswConfig.efConstruction,
|
|
168
|
+
efSearch: this.hnswConfig.efSearch,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
await agentDbService.initialize();
|
|
172
|
+
// Create adapter to IPatternStore interface
|
|
173
|
+
this.backend = this.createAgentDBAdapter(agentDbService);
|
|
174
|
+
console.log('[HNSW] Using AgentDB backend with HNSW indexing');
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Create IPatternStore adapter for AgentDB
|
|
178
|
+
*/
|
|
179
|
+
createAgentDBAdapter(service) {
|
|
180
|
+
return {
|
|
181
|
+
initialize: async () => {
|
|
182
|
+
// Already initialized
|
|
183
|
+
},
|
|
184
|
+
storePattern: async (pattern) => {
|
|
185
|
+
await service.storePattern({
|
|
186
|
+
id: pattern.id,
|
|
187
|
+
type: pattern.type,
|
|
188
|
+
domain: pattern.domain,
|
|
189
|
+
pattern_data: JSON.stringify({
|
|
190
|
+
embedding: pattern.embedding,
|
|
191
|
+
content: pattern.content,
|
|
192
|
+
framework: pattern.framework,
|
|
193
|
+
coverage: pattern.coverage,
|
|
194
|
+
flakinessScore: pattern.flakinessScore,
|
|
195
|
+
verdict: pattern.verdict,
|
|
196
|
+
metadata: pattern.metadata,
|
|
197
|
+
}),
|
|
198
|
+
confidence: 0.8,
|
|
199
|
+
usage_count: pattern.usageCount ?? 0,
|
|
200
|
+
success_count: 0,
|
|
201
|
+
created_at: pattern.createdAt ?? Date.now(),
|
|
202
|
+
last_used: pattern.lastUsed ?? Date.now(),
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
searchSimilar: async (queryEmbedding, options = {}) => {
|
|
206
|
+
const results = await service.searchSimilar(queryEmbedding, {
|
|
207
|
+
k: options.k ?? 10,
|
|
208
|
+
threshold: options.threshold ?? 0,
|
|
209
|
+
domain: options.domain,
|
|
210
|
+
});
|
|
211
|
+
return results.map((r) => {
|
|
212
|
+
const data = JSON.parse(r.pattern_data);
|
|
213
|
+
return {
|
|
214
|
+
pattern: {
|
|
215
|
+
id: r.id,
|
|
216
|
+
embedding: data.embedding,
|
|
217
|
+
type: r.type,
|
|
218
|
+
domain: r.domain,
|
|
219
|
+
content: data.content,
|
|
220
|
+
framework: data.framework,
|
|
221
|
+
coverage: data.coverage,
|
|
222
|
+
flakinessScore: data.flakinessScore,
|
|
223
|
+
verdict: data.verdict,
|
|
224
|
+
createdAt: r.created_at,
|
|
225
|
+
lastUsed: r.last_used,
|
|
226
|
+
usageCount: r.usage_count,
|
|
227
|
+
metadata: data.metadata,
|
|
228
|
+
},
|
|
229
|
+
score: r.similarity ?? r.score ?? 0,
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
},
|
|
233
|
+
getPattern: async (id) => {
|
|
234
|
+
const pattern = await service.getPattern(id);
|
|
235
|
+
if (!pattern)
|
|
236
|
+
return null;
|
|
237
|
+
const data = JSON.parse(pattern.pattern_data);
|
|
238
|
+
return {
|
|
239
|
+
id: pattern.id,
|
|
240
|
+
embedding: data.embedding,
|
|
241
|
+
type: pattern.type,
|
|
242
|
+
domain: pattern.domain,
|
|
243
|
+
content: data.content,
|
|
244
|
+
framework: data.framework,
|
|
245
|
+
coverage: data.coverage,
|
|
246
|
+
flakinessScore: data.flakinessScore,
|
|
247
|
+
verdict: data.verdict,
|
|
248
|
+
createdAt: pattern.created_at,
|
|
249
|
+
lastUsed: pattern.last_used,
|
|
250
|
+
usageCount: pattern.usage_count,
|
|
251
|
+
metadata: data.metadata,
|
|
252
|
+
};
|
|
253
|
+
},
|
|
254
|
+
deletePattern: async (id) => {
|
|
255
|
+
await service.deletePattern(id);
|
|
256
|
+
return true;
|
|
257
|
+
},
|
|
258
|
+
getStats: async () => {
|
|
259
|
+
const stats = await service.getStats();
|
|
260
|
+
return {
|
|
261
|
+
count: stats.totalPatterns ?? 0,
|
|
262
|
+
dimension: this.hnswConfig.dimension,
|
|
263
|
+
metric: this.hnswConfig.metric,
|
|
264
|
+
implementation: 'agentdb',
|
|
265
|
+
indexType: 'HNSW',
|
|
266
|
+
};
|
|
267
|
+
},
|
|
268
|
+
clear: async () => {
|
|
269
|
+
// Not implemented for AgentDB adapter
|
|
270
|
+
},
|
|
271
|
+
shutdown: async () => {
|
|
272
|
+
await service.shutdown();
|
|
273
|
+
},
|
|
274
|
+
storeBatch: async (patterns) => {
|
|
275
|
+
for (const pattern of patterns) {
|
|
276
|
+
await this.backend?.storePattern(pattern);
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
recordUsage: async (id) => {
|
|
280
|
+
// Track usage in AgentDB
|
|
281
|
+
await service.recordPatternUsage?.(id);
|
|
282
|
+
},
|
|
283
|
+
buildIndex: async () => {
|
|
284
|
+
// HNSW index is built automatically in AgentDB
|
|
285
|
+
},
|
|
286
|
+
optimize: async () => {
|
|
287
|
+
await service.optimize?.();
|
|
288
|
+
},
|
|
289
|
+
getImplementationInfo: () => ({
|
|
290
|
+
type: 'agentdb',
|
|
291
|
+
version: '1.6.1',
|
|
292
|
+
features: ['hnsw', 'vector-search', 'persistence'],
|
|
293
|
+
}),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Store a pattern with performance tracking
|
|
298
|
+
*/
|
|
299
|
+
async storePattern(pattern) {
|
|
300
|
+
this.ensureInitialized();
|
|
301
|
+
const startTime = performance.now();
|
|
302
|
+
await this.backend.storePattern(pattern);
|
|
303
|
+
const duration = performance.now() - startTime;
|
|
304
|
+
if (this.config.enableMetrics) {
|
|
305
|
+
this.recordInsertLatency(duration);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Store multiple patterns in batch (optimized)
|
|
310
|
+
* Returns void to match IPatternStore interface
|
|
311
|
+
*/
|
|
312
|
+
async storeBatch(patterns) {
|
|
313
|
+
this.ensureInitialized();
|
|
314
|
+
const startTime = performance.now();
|
|
315
|
+
const errors = [];
|
|
316
|
+
let successful = 0;
|
|
317
|
+
let failed = 0;
|
|
318
|
+
// Process in batches to avoid memory issues
|
|
319
|
+
for (let i = 0; i < patterns.length; i += this.config.batchSize) {
|
|
320
|
+
const batch = patterns.slice(i, i + this.config.batchSize);
|
|
321
|
+
for (const pattern of batch) {
|
|
322
|
+
try {
|
|
323
|
+
await this.storePattern(pattern);
|
|
324
|
+
successful++;
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
failed++;
|
|
328
|
+
errors.push(error);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const duration = performance.now() - startTime;
|
|
333
|
+
// Log batch results for debugging (interface requires void return)
|
|
334
|
+
if (failed > 0) {
|
|
335
|
+
console.warn(`[HNSW] storeBatch completed with ${failed} failures out of ${patterns.length} patterns (${duration.toFixed(2)}ms)`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Search for similar patterns with performance tracking
|
|
340
|
+
*/
|
|
341
|
+
async searchSimilar(queryEmbedding, options = {}) {
|
|
342
|
+
this.ensureInitialized();
|
|
343
|
+
const startTime = performance.now();
|
|
344
|
+
const results = await this.backend.searchSimilar(queryEmbedding, options);
|
|
345
|
+
const duration = performance.now() - startTime;
|
|
346
|
+
if (this.config.enableMetrics) {
|
|
347
|
+
this.recordSearchLatency(duration);
|
|
348
|
+
}
|
|
349
|
+
return results;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Batch query multiple vectors (optimized)
|
|
353
|
+
*/
|
|
354
|
+
async searchBatch(queries) {
|
|
355
|
+
this.ensureInitialized();
|
|
356
|
+
const results = [];
|
|
357
|
+
for (const query of queries) {
|
|
358
|
+
const queryResults = await this.searchSimilar(query.embedding, query.options ?? {});
|
|
359
|
+
results.push(queryResults);
|
|
360
|
+
}
|
|
361
|
+
return results;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Get a pattern by ID
|
|
365
|
+
*/
|
|
366
|
+
async getPattern(id) {
|
|
367
|
+
this.ensureInitialized();
|
|
368
|
+
return this.backend.getPattern(id);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Delete a pattern
|
|
372
|
+
*/
|
|
373
|
+
async deletePattern(id) {
|
|
374
|
+
this.ensureInitialized();
|
|
375
|
+
const deleted = await this.backend.deletePattern(id);
|
|
376
|
+
if (deleted) {
|
|
377
|
+
this.maintenanceStats.deletedCount++;
|
|
378
|
+
}
|
|
379
|
+
return deleted;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Build or rebuild HNSW index
|
|
383
|
+
*/
|
|
384
|
+
async buildIndex() {
|
|
385
|
+
this.ensureInitialized();
|
|
386
|
+
if (typeof this.backend.buildIndex === 'function') {
|
|
387
|
+
await this.backend.buildIndex();
|
|
388
|
+
console.log('[HNSW] Index built successfully');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Optimize the index (rebalancing, cleanup)
|
|
393
|
+
*/
|
|
394
|
+
async optimize() {
|
|
395
|
+
this.ensureInitialized();
|
|
396
|
+
if (typeof this.backend.optimize === 'function') {
|
|
397
|
+
await this.backend.optimize();
|
|
398
|
+
this.maintenanceStats.rebalanceCount++;
|
|
399
|
+
this.maintenanceStats.lastMaintenance = Date.now();
|
|
400
|
+
console.log('[HNSW] Index optimized');
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Get comprehensive statistics
|
|
405
|
+
*/
|
|
406
|
+
async getStats() {
|
|
407
|
+
this.ensureInitialized();
|
|
408
|
+
const baseStats = await this.backend.getStats();
|
|
409
|
+
const metrics = this.getSearchMetrics();
|
|
410
|
+
return {
|
|
411
|
+
...baseStats,
|
|
412
|
+
p50Latency: metrics.p50Latency,
|
|
413
|
+
p99Latency: metrics.p99Latency,
|
|
414
|
+
qps: metrics.qps,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Get search performance metrics
|
|
419
|
+
*/
|
|
420
|
+
getSearchMetrics() {
|
|
421
|
+
if (this.searchLatencies.length === 0) {
|
|
422
|
+
return {
|
|
423
|
+
totalSearches: this.totalSearches,
|
|
424
|
+
avgLatency: 0,
|
|
425
|
+
p50Latency: 0,
|
|
426
|
+
p99Latency: 0,
|
|
427
|
+
qps: 0,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
const sorted = [...this.searchLatencies].sort((a, b) => a - b);
|
|
431
|
+
const p50Index = Math.floor(sorted.length * 0.5);
|
|
432
|
+
const p99Index = Math.floor(sorted.length * 0.99);
|
|
433
|
+
const avgLatency = this.searchLatencies.reduce((a, b) => a + b, 0) / this.searchLatencies.length;
|
|
434
|
+
return {
|
|
435
|
+
totalSearches: this.totalSearches,
|
|
436
|
+
avgLatency,
|
|
437
|
+
p50Latency: sorted[p50Index] || 0,
|
|
438
|
+
p99Latency: sorted[p99Index] || 0,
|
|
439
|
+
qps: avgLatency > 0 ? 1000 / avgLatency : 0,
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Get maintenance statistics
|
|
444
|
+
*/
|
|
445
|
+
getMaintenanceStats() {
|
|
446
|
+
return { ...this.maintenanceStats };
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Get HNSW configuration
|
|
450
|
+
*/
|
|
451
|
+
getConfig() {
|
|
452
|
+
return { ...this.hnswConfig };
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Update HNSW parameters (requires index rebuild)
|
|
456
|
+
*/
|
|
457
|
+
async updateConfig(config) {
|
|
458
|
+
this.ensureInitialized();
|
|
459
|
+
this.hnswConfig = {
|
|
460
|
+
...this.hnswConfig,
|
|
461
|
+
...config,
|
|
462
|
+
};
|
|
463
|
+
// Rebuild index with new parameters
|
|
464
|
+
await this.buildIndex();
|
|
465
|
+
console.log('[HNSW] Configuration updated, index rebuilt');
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Clear all patterns
|
|
469
|
+
*/
|
|
470
|
+
async clear() {
|
|
471
|
+
this.ensureInitialized();
|
|
472
|
+
if (typeof this.backend.clear === 'function') {
|
|
473
|
+
await this.backend.clear();
|
|
474
|
+
}
|
|
475
|
+
// Reset metrics
|
|
476
|
+
this.resetMetrics();
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Shutdown and cleanup
|
|
480
|
+
*/
|
|
481
|
+
async shutdown() {
|
|
482
|
+
if (!this.initialized)
|
|
483
|
+
return;
|
|
484
|
+
// Stop maintenance
|
|
485
|
+
if (this.maintenanceTimer) {
|
|
486
|
+
clearInterval(this.maintenanceTimer);
|
|
487
|
+
this.maintenanceTimer = undefined;
|
|
488
|
+
}
|
|
489
|
+
// Shutdown backend
|
|
490
|
+
if (this.backend) {
|
|
491
|
+
await this.backend.shutdown();
|
|
492
|
+
}
|
|
493
|
+
this.initialized = false;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Record pattern usage (updates lastUsed and usageCount)
|
|
497
|
+
*/
|
|
498
|
+
async recordUsage(id) {
|
|
499
|
+
this.ensureInitialized();
|
|
500
|
+
if (typeof this.backend.recordUsage === 'function') {
|
|
501
|
+
await this.backend.recordUsage(id);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Get implementation info
|
|
506
|
+
*/
|
|
507
|
+
getImplementationInfo() {
|
|
508
|
+
return {
|
|
509
|
+
type: 'agentdb',
|
|
510
|
+
version: '2.2.1',
|
|
511
|
+
features: ['hnsw', 'vector-search', 'persistence', 'batch-operations'],
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Start automatic index maintenance
|
|
516
|
+
*/
|
|
517
|
+
startMaintenance() {
|
|
518
|
+
this.maintenanceTimer = setInterval(async () => {
|
|
519
|
+
try {
|
|
520
|
+
await this.performMaintenance();
|
|
521
|
+
}
|
|
522
|
+
catch (error) {
|
|
523
|
+
console.error('[HNSW] Maintenance error:', error);
|
|
524
|
+
}
|
|
525
|
+
}, this.config.maintenanceInterval);
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Perform index maintenance
|
|
529
|
+
*/
|
|
530
|
+
async performMaintenance() {
|
|
531
|
+
console.log('[HNSW] Starting scheduled maintenance...');
|
|
532
|
+
// Optimize index
|
|
533
|
+
await this.optimize();
|
|
534
|
+
// Calculate fragmentation
|
|
535
|
+
const stats = await this.getStats();
|
|
536
|
+
const expectedSize = stats.count * this.hnswConfig.M;
|
|
537
|
+
const actualSize = stats.count; // Simplified estimation
|
|
538
|
+
this.maintenanceStats.fragmentation = Math.max(0, ((expectedSize - actualSize) / expectedSize) * 100);
|
|
539
|
+
this.maintenanceStats.cleanupCount++;
|
|
540
|
+
console.log(`[HNSW] Maintenance complete. Fragmentation: ${this.maintenanceStats.fragmentation.toFixed(2)}%`);
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Record search latency
|
|
544
|
+
*/
|
|
545
|
+
recordSearchLatency(latency) {
|
|
546
|
+
this.searchLatencies.push(latency);
|
|
547
|
+
this.totalSearches++;
|
|
548
|
+
// Keep only last 1000 measurements
|
|
549
|
+
if (this.searchLatencies.length > 1000) {
|
|
550
|
+
this.searchLatencies.shift();
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Record insert latency
|
|
555
|
+
*/
|
|
556
|
+
recordInsertLatency(latency) {
|
|
557
|
+
this.insertLatencies.push(latency);
|
|
558
|
+
this.totalInserts++;
|
|
559
|
+
// Keep only last 1000 measurements
|
|
560
|
+
if (this.insertLatencies.length > 1000) {
|
|
561
|
+
this.insertLatencies.shift();
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Reset performance metrics
|
|
566
|
+
*/
|
|
567
|
+
resetMetrics() {
|
|
568
|
+
this.searchLatencies = [];
|
|
569
|
+
this.insertLatencies = [];
|
|
570
|
+
this.totalSearches = 0;
|
|
571
|
+
this.totalInserts = 0;
|
|
572
|
+
this.maintenanceStats = {
|
|
573
|
+
lastMaintenance: Date.now(),
|
|
574
|
+
rebalanceCount: 0,
|
|
575
|
+
cleanupCount: 0,
|
|
576
|
+
deletedCount: 0,
|
|
577
|
+
fragmentation: 0,
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Ensure initialized
|
|
582
|
+
*/
|
|
583
|
+
ensureInitialized() {
|
|
584
|
+
if (!this.initialized || !this.backend) {
|
|
585
|
+
throw new Error('HNSWVectorMemory not initialized. Call initialize() first.');
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Log configuration on startup
|
|
590
|
+
*/
|
|
591
|
+
logConfiguration() {
|
|
592
|
+
console.log('[HNSW] Configuration:');
|
|
593
|
+
console.log(` M: ${this.hnswConfig.M} (connections per node)`);
|
|
594
|
+
console.log(` efConstruction: ${this.hnswConfig.efConstruction} (build quality)`);
|
|
595
|
+
console.log(` efSearch: ${this.hnswConfig.efSearch} (search quality)`);
|
|
596
|
+
console.log(` Metric: ${this.hnswConfig.metric}`);
|
|
597
|
+
console.log(` Dimension: ${this.hnswConfig.dimension}`);
|
|
598
|
+
console.log(` Maintenance: ${this.config.enableMaintenance ? 'enabled' : 'disabled'}`);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
exports.HNSWVectorMemory = HNSWVectorMemory;
|
|
602
|
+
/**
|
|
603
|
+
* Create HNSW Vector Memory with default configuration
|
|
604
|
+
*/
|
|
605
|
+
function createHNSWVectorMemory(config) {
|
|
606
|
+
return new HNSWVectorMemory(config);
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Create HNSW Vector Memory optimized for high precision
|
|
610
|
+
*/
|
|
611
|
+
function createHighPrecisionHNSW(storagePath) {
|
|
612
|
+
return new HNSWVectorMemory({
|
|
613
|
+
M: 64,
|
|
614
|
+
efConstruction: 300,
|
|
615
|
+
efSearch: 150,
|
|
616
|
+
storagePath,
|
|
617
|
+
enableMetrics: true,
|
|
618
|
+
enableMaintenance: true,
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Create HNSW Vector Memory optimized for high throughput
|
|
623
|
+
*/
|
|
624
|
+
function createHighThroughputHNSW(storagePath) {
|
|
625
|
+
return new HNSWVectorMemory({
|
|
626
|
+
M: 16,
|
|
627
|
+
efConstruction: 100,
|
|
628
|
+
efSearch: 50,
|
|
629
|
+
storagePath,
|
|
630
|
+
enableMetrics: true,
|
|
631
|
+
enableMaintenance: false, // Disable for max speed
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* Create HNSW Vector Memory with balanced configuration
|
|
636
|
+
*/
|
|
637
|
+
function createBalancedHNSW(storagePath) {
|
|
638
|
+
return new HNSWVectorMemory({
|
|
639
|
+
M: 32,
|
|
640
|
+
efConstruction: 200,
|
|
641
|
+
efSearch: 100,
|
|
642
|
+
storagePath,
|
|
643
|
+
enableMetrics: true,
|
|
644
|
+
enableMaintenance: true,
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
//# sourceMappingURL=HNSWVectorMemory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HNSWVectorMemory.js","sourceRoot":"","sources":["../../../src/core/memory/HNSWVectorMemory.ts"],"names":[],"mappings":"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"}
|
|
@@ -188,6 +188,13 @@ export declare class SwarmMemoryManager {
|
|
|
188
188
|
private run;
|
|
189
189
|
private queryOne;
|
|
190
190
|
private queryAll;
|
|
191
|
+
/**
|
|
192
|
+
* Execute a raw SQL query (public method for CLI/admin usage)
|
|
193
|
+
* @param sql SQL query string
|
|
194
|
+
* @param params Query parameters
|
|
195
|
+
* @returns Array of results
|
|
196
|
+
*/
|
|
197
|
+
queryRaw<T = any>(sql: string, params?: any[]): T[];
|
|
191
198
|
initialize(): Promise<void>;
|
|
192
199
|
/**
|
|
193
200
|
* Store a key-value pair in memory with OpenTelemetry instrumentation
|