agentic-qe 2.5.7 → 2.5.9
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/CHANGELOG.md +133 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +231 -4
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +535 -5
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +20 -23
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +95 -145
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts +2 -2
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.d.ts +35 -18
- package/dist/agents/QualityGateAgent.d.ts.map +1 -1
- package/dist/agents/QualityGateAgent.js +72 -97
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +5 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +38 -0
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +17 -4
- package/dist/agents/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +90 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +209 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/learning/FederatedManager.d.ts +232 -0
- package/dist/learning/FederatedManager.d.ts.map +1 -0
- package/dist/learning/FederatedManager.js +489 -0
- package/dist/learning/FederatedManager.js.map +1 -0
- package/dist/learning/HNSWPatternAdapter.d.ts +117 -0
- package/dist/learning/HNSWPatternAdapter.d.ts.map +1 -0
- package/dist/learning/HNSWPatternAdapter.js +262 -0
- package/dist/learning/HNSWPatternAdapter.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +27 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +75 -1
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/PatternCurator.d.ts +217 -0
- package/dist/learning/PatternCurator.d.ts.map +1 -0
- package/dist/learning/PatternCurator.js +393 -0
- package/dist/learning/PatternCurator.js.map +1 -0
- package/dist/learning/index.d.ts +6 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +16 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +4 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/tools.d.ts +6 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +121 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/memory/HNSWPatternStore.d.ts +176 -0
- package/dist/memory/HNSWPatternStore.d.ts.map +1 -0
- package/dist/memory/HNSWPatternStore.js +392 -0
- package/dist/memory/HNSWPatternStore.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +13 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +85 -4
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +332 -10
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/LLMBaselineTracker.d.ts +120 -0
- package/dist/providers/LLMBaselineTracker.d.ts.map +1 -0
- package/dist/providers/LLMBaselineTracker.js +305 -0
- package/dist/providers/LLMBaselineTracker.js.map +1 -0
- package/dist/providers/OpenRouterProvider.d.ts +26 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +75 -6
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/RuVectorClient.d.ts +259 -0
- package/dist/providers/RuVectorClient.d.ts.map +1 -0
- package/dist/providers/RuVectorClient.js +416 -0
- package/dist/providers/RuVectorClient.js.map +1 -0
- package/dist/providers/RuvllmPatternCurator.d.ts +116 -0
- package/dist/providers/RuvllmPatternCurator.d.ts.map +1 -0
- package/dist/providers/RuvllmPatternCurator.js +323 -0
- package/dist/providers/RuvllmPatternCurator.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +233 -1
- package/dist/providers/RuvllmProvider.d.ts.map +1 -1
- package/dist/providers/RuvllmProvider.js +781 -11
- package/dist/providers/RuvllmProvider.js.map +1 -1
- package/dist/providers/index.d.ts +5 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +12 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/utils/ruvllm-loader.d.ts +98 -1
- package/dist/utils/ruvllm-loader.d.ts.map +1 -1
- package/dist/utils/ruvllm-loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HNSW Pattern Store - Direct vector pattern storage using @ruvector/core
|
|
4
|
+
*
|
|
5
|
+
* Phase 0 M0.3: AQE LLM Independence - 150x faster pattern matching
|
|
6
|
+
*
|
|
7
|
+
* Performance targets:
|
|
8
|
+
* - Search latency: <1ms p95
|
|
9
|
+
* - Insert latency: <5ms
|
|
10
|
+
* - Memory: <100MB for 100k patterns
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.PatternStorePresets = exports.HNSWPatternStore = exports.DistanceMetric = void 0;
|
|
47
|
+
exports.createPatternStore = createPatternStore;
|
|
48
|
+
// Import JsDistanceMetric for runtime usage
|
|
49
|
+
const ruvectorCore = require('@ruvector/core');
|
|
50
|
+
const JsDistanceMetric = ruvectorCore.JsDistanceMetric;
|
|
51
|
+
// Runtime uses VectorDb (lowercase) - alias for consistency
|
|
52
|
+
const VectorDbRuntime = ruvectorCore.VectorDb;
|
|
53
|
+
const fs = __importStar(require("fs/promises"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
/**
|
|
56
|
+
* Distance metric for similarity calculation
|
|
57
|
+
* Matches JsDistanceMetric from @ruvector/core
|
|
58
|
+
*/
|
|
59
|
+
var DistanceMetric;
|
|
60
|
+
(function (DistanceMetric) {
|
|
61
|
+
DistanceMetric["Euclidean"] = "Euclidean";
|
|
62
|
+
DistanceMetric["Cosine"] = "Cosine";
|
|
63
|
+
DistanceMetric["DotProduct"] = "DotProduct";
|
|
64
|
+
DistanceMetric["Manhattan"] = "Manhattan";
|
|
65
|
+
})(DistanceMetric || (exports.DistanceMetric = DistanceMetric = {}));
|
|
66
|
+
/**
|
|
67
|
+
* HNSW-based pattern store for O(log n) similarity search
|
|
68
|
+
*
|
|
69
|
+
* Uses @ruvector/core for high-performance vector operations with SIMD optimization
|
|
70
|
+
*/
|
|
71
|
+
class HNSWPatternStore {
|
|
72
|
+
constructor(config = {}) {
|
|
73
|
+
const { dimension = 768, m = 32, efConstruction = 200, efSearch = 100, storagePath, distanceMetric = DistanceMetric.Cosine, } = config;
|
|
74
|
+
this.dimension = dimension;
|
|
75
|
+
this.distanceMetric = distanceMetric;
|
|
76
|
+
this.storagePath = storagePath;
|
|
77
|
+
this.metadataStore = new Map();
|
|
78
|
+
// Initialize VectorDB with HNSW configuration
|
|
79
|
+
// Convert our DistanceMetric to JsDistanceMetric enum
|
|
80
|
+
const jsDistanceMetric = JsDistanceMetric[distanceMetric];
|
|
81
|
+
// storagePath should be a file path, not a directory
|
|
82
|
+
const vectorDbPath = storagePath ? path.join(storagePath, 'vectors.db') : undefined;
|
|
83
|
+
const dbOptions = {
|
|
84
|
+
dimensions: dimension,
|
|
85
|
+
distanceMetric: jsDistanceMetric,
|
|
86
|
+
storagePath: vectorDbPath,
|
|
87
|
+
hnswConfig: {
|
|
88
|
+
m,
|
|
89
|
+
efConstruction,
|
|
90
|
+
efSearch,
|
|
91
|
+
maxElements: 1000000, // Support up to 1M patterns
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
// Use runtime VectorDb (the TypeScript type is VectorDB but runtime export is VectorDb)
|
|
95
|
+
this.vectorDB = new VectorDbRuntime(dbOptions);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Store a pattern in the HNSW index
|
|
99
|
+
* O(log n) insertion complexity
|
|
100
|
+
*/
|
|
101
|
+
async store(pattern) {
|
|
102
|
+
if (pattern.embedding.length !== this.dimension) {
|
|
103
|
+
throw new Error(`Embedding dimension mismatch: expected ${this.dimension}, got ${pattern.embedding.length}`);
|
|
104
|
+
}
|
|
105
|
+
// Validate quality score
|
|
106
|
+
if (pattern.quality < 0 || pattern.quality > 1) {
|
|
107
|
+
throw new Error('Quality must be between 0 and 1');
|
|
108
|
+
}
|
|
109
|
+
// Convert to Float32Array for optimal performance
|
|
110
|
+
const vector = new Float32Array(pattern.embedding);
|
|
111
|
+
// Store vector in HNSW index
|
|
112
|
+
const vectorEntry = {
|
|
113
|
+
id: pattern.id,
|
|
114
|
+
vector,
|
|
115
|
+
};
|
|
116
|
+
await this.vectorDB.insert(vectorEntry);
|
|
117
|
+
// Store metadata separately
|
|
118
|
+
const metadata = {
|
|
119
|
+
content: pattern.content,
|
|
120
|
+
type: pattern.type,
|
|
121
|
+
quality: pattern.quality,
|
|
122
|
+
metadata: pattern.metadata,
|
|
123
|
+
createdAt: pattern.createdAt.toISOString(),
|
|
124
|
+
};
|
|
125
|
+
this.metadataStore.set(pattern.id, metadata);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Search for similar patterns using HNSW
|
|
129
|
+
* O(log n) search complexity with <1ms p95 latency
|
|
130
|
+
*
|
|
131
|
+
* @param embedding Query embedding vector
|
|
132
|
+
* @param k Number of nearest neighbors to return
|
|
133
|
+
* @returns Top-k most similar patterns sorted by similarity
|
|
134
|
+
*/
|
|
135
|
+
async search(embedding, k) {
|
|
136
|
+
if (embedding.length !== this.dimension) {
|
|
137
|
+
throw new Error(`Embedding dimension mismatch: expected ${this.dimension}, got ${embedding.length}`);
|
|
138
|
+
}
|
|
139
|
+
// Convert to Float32Array for optimal performance
|
|
140
|
+
const vector = new Float32Array(embedding);
|
|
141
|
+
// Execute HNSW search
|
|
142
|
+
const query = {
|
|
143
|
+
vector,
|
|
144
|
+
k,
|
|
145
|
+
};
|
|
146
|
+
const results = await this.vectorDB.search(query);
|
|
147
|
+
// Reconstruct QEPattern objects from results
|
|
148
|
+
const patterns = [];
|
|
149
|
+
for (const result of results) {
|
|
150
|
+
const metadata = this.metadataStore.get(result.id);
|
|
151
|
+
if (!metadata) {
|
|
152
|
+
// Skip if metadata is missing (shouldn't happen in normal operation)
|
|
153
|
+
console.warn(`Missing metadata for pattern ${result.id}`);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Get the original vector
|
|
157
|
+
const vectorEntry = await this.vectorDB.get(result.id);
|
|
158
|
+
if (!vectorEntry) {
|
|
159
|
+
console.warn(`Missing vector for pattern ${result.id}`);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const pattern = {
|
|
163
|
+
id: result.id,
|
|
164
|
+
embedding: Array.from(vectorEntry.vector),
|
|
165
|
+
content: metadata.content,
|
|
166
|
+
type: metadata.type,
|
|
167
|
+
quality: metadata.quality,
|
|
168
|
+
metadata: metadata.metadata,
|
|
169
|
+
createdAt: new Date(metadata.createdAt),
|
|
170
|
+
};
|
|
171
|
+
patterns.push(pattern);
|
|
172
|
+
}
|
|
173
|
+
return patterns;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Delete a pattern by ID
|
|
177
|
+
*
|
|
178
|
+
* @param id Pattern ID to delete
|
|
179
|
+
*/
|
|
180
|
+
async delete(id) {
|
|
181
|
+
const deleted = await this.vectorDB.delete(id);
|
|
182
|
+
if (deleted) {
|
|
183
|
+
this.metadataStore.delete(id);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
throw new Error(`Pattern ${id} not found`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get the total number of patterns stored
|
|
191
|
+
*
|
|
192
|
+
* @returns Pattern count
|
|
193
|
+
*/
|
|
194
|
+
async count() {
|
|
195
|
+
return this.vectorDB.len();
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check if the store is empty
|
|
199
|
+
*/
|
|
200
|
+
async isEmpty() {
|
|
201
|
+
return this.vectorDB.isEmpty();
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Clear all patterns from the store
|
|
205
|
+
*/
|
|
206
|
+
async clear() {
|
|
207
|
+
// Unfortunately, @ruvector/core doesn't expose a clear() method
|
|
208
|
+
// We need to delete all patterns individually
|
|
209
|
+
const ids = Array.from(this.metadataStore.keys());
|
|
210
|
+
for (const id of ids) {
|
|
211
|
+
await this.vectorDB.delete(id);
|
|
212
|
+
}
|
|
213
|
+
this.metadataStore.clear();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Save metadata to disk for persistence
|
|
217
|
+
* Vector data is automatically persisted by @ruvector/core if storagePath is set
|
|
218
|
+
*/
|
|
219
|
+
async saveMetadata() {
|
|
220
|
+
if (!this.storagePath) {
|
|
221
|
+
throw new Error('Storage path not configured');
|
|
222
|
+
}
|
|
223
|
+
const metadataPath = this.getMetadataPath();
|
|
224
|
+
const metadataObj = Object.fromEntries(this.metadataStore);
|
|
225
|
+
await fs.mkdir(path.dirname(metadataPath), { recursive: true });
|
|
226
|
+
await fs.writeFile(metadataPath, JSON.stringify(metadataObj, null, 2), 'utf-8');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Load metadata from disk
|
|
230
|
+
*/
|
|
231
|
+
async loadMetadata() {
|
|
232
|
+
if (!this.storagePath) {
|
|
233
|
+
throw new Error('Storage path not configured');
|
|
234
|
+
}
|
|
235
|
+
const metadataPath = this.getMetadataPath();
|
|
236
|
+
try {
|
|
237
|
+
const data = await fs.readFile(metadataPath, 'utf-8');
|
|
238
|
+
const metadataObj = JSON.parse(data);
|
|
239
|
+
this.metadataStore = new Map(Object.entries(metadataObj));
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error.code === 'ENOENT') {
|
|
243
|
+
// File doesn't exist yet, start with empty store
|
|
244
|
+
this.metadataStore = new Map();
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get metadata file path
|
|
253
|
+
*/
|
|
254
|
+
getMetadataPath() {
|
|
255
|
+
if (!this.storagePath) {
|
|
256
|
+
throw new Error('Storage path not configured');
|
|
257
|
+
}
|
|
258
|
+
return path.join(this.storagePath, 'metadata.json');
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Get store statistics
|
|
262
|
+
*/
|
|
263
|
+
async getStats() {
|
|
264
|
+
const totalPatterns = await this.count();
|
|
265
|
+
// Estimate memory: vectors + metadata
|
|
266
|
+
// Each vector: dimension * 4 bytes (float32) + HNSW overhead (~2x)
|
|
267
|
+
// Metadata: rough estimate ~500 bytes per pattern
|
|
268
|
+
const vectorMemoryMB = (totalPatterns * this.dimension * 4 * 3) / (1024 * 1024);
|
|
269
|
+
const metadataMemoryMB = (totalPatterns * 500) / (1024 * 1024);
|
|
270
|
+
const memoryEstimateMB = vectorMemoryMB + metadataMemoryMB;
|
|
271
|
+
return {
|
|
272
|
+
totalPatterns,
|
|
273
|
+
dimension: this.dimension,
|
|
274
|
+
distanceMetric: this.distanceMetric,
|
|
275
|
+
memoryEstimateMB: Math.round(memoryEstimateMB * 100) / 100,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Batch store multiple patterns efficiently
|
|
280
|
+
* Uses insertBatch for better performance
|
|
281
|
+
*/
|
|
282
|
+
async storeBatch(patterns) {
|
|
283
|
+
// Validate all patterns first
|
|
284
|
+
for (const pattern of patterns) {
|
|
285
|
+
if (pattern.embedding.length !== this.dimension) {
|
|
286
|
+
throw new Error(`Embedding dimension mismatch for pattern ${pattern.id}: expected ${this.dimension}, got ${pattern.embedding.length}`);
|
|
287
|
+
}
|
|
288
|
+
if (pattern.quality < 0 || pattern.quality > 1) {
|
|
289
|
+
throw new Error(`Invalid quality for pattern ${pattern.id}: must be between 0 and 1`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Prepare vector entries
|
|
293
|
+
const vectorEntries = patterns.map(pattern => ({
|
|
294
|
+
id: pattern.id,
|
|
295
|
+
vector: new Float32Array(pattern.embedding),
|
|
296
|
+
}));
|
|
297
|
+
// Batch insert vectors
|
|
298
|
+
await this.vectorDB.insertBatch(vectorEntries);
|
|
299
|
+
// Store all metadata
|
|
300
|
+
for (const pattern of patterns) {
|
|
301
|
+
const metadata = {
|
|
302
|
+
content: pattern.content,
|
|
303
|
+
type: pattern.type,
|
|
304
|
+
quality: pattern.quality,
|
|
305
|
+
metadata: pattern.metadata,
|
|
306
|
+
createdAt: pattern.createdAt.toISOString(),
|
|
307
|
+
};
|
|
308
|
+
this.metadataStore.set(pattern.id, metadata);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Search with filtering by pattern type and quality threshold
|
|
313
|
+
*
|
|
314
|
+
* @param embedding Query embedding
|
|
315
|
+
* @param k Number of results
|
|
316
|
+
* @param type Optional pattern type filter
|
|
317
|
+
* @param minQuality Optional minimum quality threshold
|
|
318
|
+
*/
|
|
319
|
+
async searchFiltered(embedding, k, type, minQuality) {
|
|
320
|
+
// Get more results than needed for filtering
|
|
321
|
+
const searchK = type || minQuality ? k * 3 : k;
|
|
322
|
+
const results = await this.search(embedding, searchK);
|
|
323
|
+
// Apply filters
|
|
324
|
+
let filtered = results;
|
|
325
|
+
if (type) {
|
|
326
|
+
filtered = filtered.filter(p => p.type === type);
|
|
327
|
+
}
|
|
328
|
+
if (minQuality !== undefined) {
|
|
329
|
+
filtered = filtered.filter(p => p.quality >= minQuality);
|
|
330
|
+
}
|
|
331
|
+
// Return top k after filtering
|
|
332
|
+
return filtered.slice(0, k);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.HNSWPatternStore = HNSWPatternStore;
|
|
336
|
+
/**
|
|
337
|
+
* Factory function to create a pattern store with common configurations
|
|
338
|
+
*/
|
|
339
|
+
function createPatternStore(config) {
|
|
340
|
+
return new HNSWPatternStore(config);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Create a pattern store optimized for specific use cases
|
|
344
|
+
*/
|
|
345
|
+
exports.PatternStorePresets = {
|
|
346
|
+
/**
|
|
347
|
+
* Fast search, moderate memory (default)
|
|
348
|
+
*/
|
|
349
|
+
default: () => createPatternStore({
|
|
350
|
+
dimension: 768,
|
|
351
|
+
m: 32,
|
|
352
|
+
efConstruction: 200,
|
|
353
|
+
efSearch: 100,
|
|
354
|
+
}),
|
|
355
|
+
/**
|
|
356
|
+
* Ultra-fast search, higher memory usage
|
|
357
|
+
*/
|
|
358
|
+
highPerformance: () => createPatternStore({
|
|
359
|
+
dimension: 768,
|
|
360
|
+
m: 64,
|
|
361
|
+
efConstruction: 400,
|
|
362
|
+
efSearch: 200,
|
|
363
|
+
}),
|
|
364
|
+
/**
|
|
365
|
+
* Memory-efficient, slightly slower search
|
|
366
|
+
*/
|
|
367
|
+
lowMemory: () => createPatternStore({
|
|
368
|
+
dimension: 768,
|
|
369
|
+
m: 16,
|
|
370
|
+
efConstruction: 100,
|
|
371
|
+
efSearch: 50,
|
|
372
|
+
}),
|
|
373
|
+
/**
|
|
374
|
+
* Small embeddings (e.g., 384-dim models)
|
|
375
|
+
*/
|
|
376
|
+
smallEmbeddings: () => createPatternStore({
|
|
377
|
+
dimension: 384,
|
|
378
|
+
m: 32,
|
|
379
|
+
efConstruction: 200,
|
|
380
|
+
efSearch: 100,
|
|
381
|
+
}),
|
|
382
|
+
/**
|
|
383
|
+
* Large embeddings (e.g., 1536-dim models like OpenAI)
|
|
384
|
+
*/
|
|
385
|
+
largeEmbeddings: () => createPatternStore({
|
|
386
|
+
dimension: 1536,
|
|
387
|
+
m: 48,
|
|
388
|
+
efConstruction: 300,
|
|
389
|
+
efSearch: 150,
|
|
390
|
+
}),
|
|
391
|
+
};
|
|
392
|
+
//# sourceMappingURL=HNSWPatternStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HNSWPatternStore.js","sourceRoot":"","sources":["../../src/memory/HNSWPatternStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory subsystem exports
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 M0.3: HNSW Pattern Store for O(log n) similarity search
|
|
5
|
+
*/
|
|
6
|
+
export { HNSWPatternStore, DistanceMetric, } from './HNSWPatternStore';
|
|
7
|
+
export type { QEPattern, PatternType, IPatternStore, HNSWPatternStoreConfig, } from './HNSWPatternStore';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Memory subsystem exports
|
|
4
|
+
*
|
|
5
|
+
* Phase 0 M0.3: HNSW Pattern Store for O(log n) similarity search
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DistanceMetric = exports.HNSWPatternStore = void 0;
|
|
9
|
+
// HNSW Pattern Store - Direct vector pattern storage using @ruvector/core
|
|
10
|
+
var HNSWPatternStore_1 = require("./HNSWPatternStore");
|
|
11
|
+
Object.defineProperty(exports, "HNSWPatternStore", { enumerable: true, get: function () { return HNSWPatternStore_1.HNSWPatternStore; } });
|
|
12
|
+
Object.defineProperty(exports, "DistanceMetric", { enumerable: true, get: function () { return HNSWPatternStore_1.DistanceMetric; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,0EAA0E;AAC1E,uDAG4B;AAF1B,oHAAA,gBAAgB,OAAA;AAChB,kHAAA,cAAc,OAAA"}
|
|
@@ -85,6 +85,27 @@ export interface HybridCompletionOptions extends LLMCompletionOptions {
|
|
|
85
85
|
/** Force use of specific provider */
|
|
86
86
|
forceProvider?: 'local' | 'cloud';
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* RuVector cache configuration for Phase 0.5 self-learning integration
|
|
90
|
+
*/
|
|
91
|
+
export interface RuVectorCacheConfig {
|
|
92
|
+
/** Enable RuVector as intelligent cache layer */
|
|
93
|
+
enabled: boolean;
|
|
94
|
+
/** RuVector service base URL (default: http://localhost:8080) */
|
|
95
|
+
baseUrl?: string;
|
|
96
|
+
/** Confidence threshold for cache hits (default: 0.85) */
|
|
97
|
+
cacheThreshold?: number;
|
|
98
|
+
/** Enable automatic learning from LLM responses (default: true) */
|
|
99
|
+
learningEnabled?: boolean;
|
|
100
|
+
/** LoRA rank for adapter learning (default: 8) */
|
|
101
|
+
loraRank?: number;
|
|
102
|
+
/** Enable EWC to prevent catastrophic forgetting (default: true) */
|
|
103
|
+
ewcEnabled?: boolean;
|
|
104
|
+
/** Embedding dimension (default: 768) */
|
|
105
|
+
embeddingDimension?: number;
|
|
106
|
+
/** Skip cache for complex tasks (default: false) */
|
|
107
|
+
skipCacheForComplexTasks?: boolean;
|
|
108
|
+
}
|
|
88
109
|
/**
|
|
89
110
|
* Hybrid router configuration
|
|
90
111
|
*/
|
|
@@ -93,6 +114,8 @@ export interface HybridRouterConfig extends LLMProviderConfig {
|
|
|
93
114
|
claude?: ClaudeProviderConfig;
|
|
94
115
|
/** Ruvllm provider configuration */
|
|
95
116
|
ruvllm?: RuvllmProviderConfig;
|
|
117
|
+
/** RuVector cache configuration (Phase 0.5 - Self-Learning Integration) */
|
|
118
|
+
ruvector?: RuVectorCacheConfig;
|
|
96
119
|
/** Default routing strategy */
|
|
97
120
|
defaultStrategy?: RoutingStrategy;
|
|
98
121
|
/** Enable circuit breakers */
|
|
@@ -127,6 +150,7 @@ export declare class HybridRouter implements ILLMProvider {
|
|
|
127
150
|
private config;
|
|
128
151
|
private localProvider?;
|
|
129
152
|
private cloudProvider?;
|
|
153
|
+
private ruVectorClient?;
|
|
130
154
|
private circuitBreakers;
|
|
131
155
|
private routingHistory;
|
|
132
156
|
private isInitialized;
|
|
@@ -134,6 +158,8 @@ export declare class HybridRouter implements ILLMProvider {
|
|
|
134
158
|
private requestCount;
|
|
135
159
|
private localRequestCount;
|
|
136
160
|
private cloudRequestCount;
|
|
161
|
+
private cacheHitCount;
|
|
162
|
+
private cacheMissCount;
|
|
137
163
|
constructor(config?: HybridRouterConfig);
|
|
138
164
|
/**
|
|
139
165
|
* Initialize the hybrid router and its providers
|
|
@@ -142,10 +168,35 @@ export declare class HybridRouter implements ILLMProvider {
|
|
|
142
168
|
/**
|
|
143
169
|
* Complete a prompt with intelligent routing and TRM support
|
|
144
170
|
*
|
|
171
|
+
* Phase 0.5 Enhancement: RuVector cache layer for sub-ms pattern matching
|
|
172
|
+
* - Check RuVector cache first (GNN-enhanced semantic search)
|
|
173
|
+
* - If cache hit with high confidence, return cached result
|
|
174
|
+
* - Otherwise, route to LLM and store result for learning
|
|
175
|
+
*
|
|
145
176
|
* When routing to the local provider (ruvLLM), TRM (Test-time Reasoning & Metacognition)
|
|
146
177
|
* can be enabled for iterative quality improvement.
|
|
147
178
|
*/
|
|
148
179
|
complete(options: HybridCompletionOptions): Promise<LLMCompletionResponse>;
|
|
180
|
+
/**
|
|
181
|
+
* Check if cache should be used for this request
|
|
182
|
+
*/
|
|
183
|
+
private shouldUseCache;
|
|
184
|
+
/**
|
|
185
|
+
* Try to get response from RuVector cache
|
|
186
|
+
*/
|
|
187
|
+
private tryRuVectorCache;
|
|
188
|
+
/**
|
|
189
|
+
* Execute with decision and store result in RuVector for learning
|
|
190
|
+
*/
|
|
191
|
+
private executeWithDecisionAndLearn;
|
|
192
|
+
/**
|
|
193
|
+
* Store LLM response in RuVector for future learning
|
|
194
|
+
*/
|
|
195
|
+
private storeResponseForLearning;
|
|
196
|
+
/**
|
|
197
|
+
* Extract query string from completion options
|
|
198
|
+
*/
|
|
199
|
+
private extractQueryFromOptions;
|
|
149
200
|
/**
|
|
150
201
|
* Execute request with routing decision
|
|
151
202
|
*/
|
|
@@ -163,9 +214,13 @@ export declare class HybridRouter implements ILLMProvider {
|
|
|
163
214
|
*/
|
|
164
215
|
countTokens(options: LLMTokenCountOptions): Promise<number>;
|
|
165
216
|
/**
|
|
166
|
-
* Health check all providers
|
|
217
|
+
* Health check all providers including RuVector cache
|
|
167
218
|
*/
|
|
168
219
|
healthCheck(): Promise<LLMHealthStatus>;
|
|
220
|
+
/**
|
|
221
|
+
* Get cache hit rate (0-1)
|
|
222
|
+
*/
|
|
223
|
+
getCacheHitRate(): number;
|
|
169
224
|
/**
|
|
170
225
|
* Get metadata (aggregated from all providers)
|
|
171
226
|
*/
|
|
@@ -179,20 +234,46 @@ export declare class HybridRouter implements ILLMProvider {
|
|
|
179
234
|
*/
|
|
180
235
|
trackCost(usage: LLMCompletionResponse['usage']): number;
|
|
181
236
|
/**
|
|
182
|
-
* Get cost savings report
|
|
237
|
+
* Get cost savings report including RuVector cache savings
|
|
183
238
|
*/
|
|
184
|
-
getCostSavingsReport(): CostSavingsReport
|
|
239
|
+
getCostSavingsReport(): CostSavingsReport & {
|
|
240
|
+
cacheHits: number;
|
|
241
|
+
cacheSavings: number;
|
|
242
|
+
};
|
|
185
243
|
/**
|
|
186
|
-
* Get routing statistics
|
|
244
|
+
* Get routing statistics including cache metrics
|
|
187
245
|
*/
|
|
188
246
|
getRoutingStats(): {
|
|
189
247
|
totalDecisions: number;
|
|
190
248
|
localDecisions: number;
|
|
191
249
|
cloudDecisions: number;
|
|
250
|
+
cacheHits: number;
|
|
251
|
+
cacheMisses: number;
|
|
252
|
+
cacheHitRate: number;
|
|
192
253
|
averageLocalLatency: number;
|
|
193
254
|
averageCloudLatency: number;
|
|
194
255
|
successRate: number;
|
|
195
256
|
};
|
|
257
|
+
/**
|
|
258
|
+
* Get RuVector cache metrics (Phase 0.5)
|
|
259
|
+
*/
|
|
260
|
+
getRuVectorMetrics(): Promise<{
|
|
261
|
+
enabled: boolean;
|
|
262
|
+
healthy: boolean;
|
|
263
|
+
cacheHitRate: number;
|
|
264
|
+
patternCount: number;
|
|
265
|
+
loraUpdates: number;
|
|
266
|
+
memoryUsageMB?: number;
|
|
267
|
+
} | null>;
|
|
268
|
+
/**
|
|
269
|
+
* Force RuVector learning consolidation
|
|
270
|
+
*/
|
|
271
|
+
forceRuVectorLearn(): Promise<{
|
|
272
|
+
success: boolean;
|
|
273
|
+
updatedParameters?: number;
|
|
274
|
+
duration?: number;
|
|
275
|
+
error?: string;
|
|
276
|
+
}>;
|
|
196
277
|
/**
|
|
197
278
|
* Make intelligent routing decision
|
|
198
279
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridRouter.d.ts","sourceRoot":"","sources":["../../src/providers/HybridRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAkB,oBAAoB,EAAE,SAAS,EAA2B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"HybridRouter.d.ts","sourceRoot":"","sources":["../../src/providers/HybridRouter.ts"],"names":[],"mappings":"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"}
|