@ruvector/ruvllm 0.2.4 → 2.4.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/README.md +370 -286
- package/bin/cli.js +619 -2
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts +102 -0
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +1 -0
- package/dist/cjs/benchmarks/embedding-benchmark.js +436 -0
- package/dist/cjs/benchmarks/index.d.ts +34 -0
- package/dist/cjs/benchmarks/index.d.ts.map +1 -0
- package/dist/cjs/benchmarks/index.js +132 -0
- package/dist/cjs/benchmarks/model-comparison.d.ts +71 -0
- package/dist/cjs/benchmarks/model-comparison.d.ts.map +1 -0
- package/dist/cjs/benchmarks/model-comparison.js +476 -0
- package/dist/cjs/benchmarks/routing-benchmark.d.ts +70 -0
- package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +1 -0
- package/dist/cjs/benchmarks/routing-benchmark.js +289 -0
- package/dist/cjs/contrastive.d.ts +229 -0
- package/dist/cjs/contrastive.d.ts.map +1 -0
- package/dist/cjs/contrastive.js +589 -0
- package/dist/cjs/engine.d.ts +3 -0
- package/dist/cjs/engine.d.ts.map +1 -1
- package/dist/cjs/engine.js +26 -6
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +9 -1
- package/dist/cjs/models.d.ts +129 -0
- package/dist/cjs/models.d.ts.map +1 -0
- package/dist/cjs/models.js +323 -0
- package/dist/cjs/native.d.ts +3 -3
- package/dist/cjs/native.d.ts.map +1 -1
- package/dist/cjs/native.js +1 -1
- package/dist/cjs/rlm/controller.d.ts +245 -0
- package/dist/cjs/rlm/controller.d.ts.map +1 -0
- package/dist/cjs/rlm/controller.js +554 -0
- package/dist/cjs/rlm/index.d.ts +62 -0
- package/dist/cjs/rlm/index.d.ts.map +1 -0
- package/dist/cjs/rlm/index.js +97 -0
- package/dist/cjs/rlm/training.d.ts +333 -0
- package/dist/cjs/rlm/training.d.ts.map +1 -0
- package/dist/cjs/rlm/training.js +680 -0
- package/dist/cjs/rlm/types.d.ts +189 -0
- package/dist/cjs/rlm/types.d.ts.map +1 -0
- package/dist/cjs/rlm/types.js +10 -0
- package/dist/esm/benchmarks/embedding-benchmark.d.ts +102 -0
- package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +1 -0
- package/dist/esm/benchmarks/embedding-benchmark.js +427 -0
- package/dist/esm/benchmarks/index.d.ts +34 -0
- package/dist/esm/benchmarks/index.d.ts.map +1 -0
- package/dist/esm/benchmarks/index.js +110 -0
- package/dist/esm/benchmarks/model-comparison.d.ts +71 -0
- package/dist/esm/benchmarks/model-comparison.d.ts.map +1 -0
- package/dist/esm/benchmarks/model-comparison.js +434 -0
- package/dist/esm/benchmarks/routing-benchmark.d.ts +70 -0
- package/dist/esm/benchmarks/routing-benchmark.d.ts.map +1 -0
- package/dist/esm/benchmarks/routing-benchmark.js +283 -0
- package/dist/esm/contrastive.d.ts +229 -0
- package/dist/esm/contrastive.d.ts.map +1 -0
- package/dist/esm/contrastive.js +578 -0
- package/dist/esm/engine.d.ts +3 -0
- package/dist/esm/engine.d.ts.map +1 -1
- package/dist/esm/engine.js +26 -6
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -1
- package/dist/esm/models.d.ts +129 -0
- package/dist/esm/models.d.ts.map +1 -0
- package/dist/esm/models.js +282 -0
- package/dist/esm/native.d.ts +3 -3
- package/dist/esm/native.d.ts.map +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/rlm/controller.d.ts +245 -0
- package/dist/esm/rlm/controller.d.ts.map +1 -0
- package/dist/esm/rlm/controller.js +550 -0
- package/dist/esm/rlm/index.d.ts +62 -0
- package/dist/esm/rlm/index.d.ts.map +1 -0
- package/dist/esm/rlm/index.js +71 -0
- package/dist/esm/rlm/training.d.ts +333 -0
- package/dist/esm/rlm/training.d.ts.map +1 -0
- package/dist/esm/rlm/training.js +672 -0
- package/dist/esm/rlm/types.d.ts +189 -0
- package/dist/esm/rlm/types.d.ts.map +1 -0
- package/dist/esm/rlm/types.js +9 -0
- package/package.json +13 -8
- package/scripts/ensemble-model-compare.js +287 -0
- package/scripts/huggingface/README.md +537 -0
- package/scripts/huggingface/publish.sh +112 -0
- package/scripts/hybrid-model-compare.js +373 -0
- package/scripts/improved-model-compare.js +288 -0
- package/scripts/optimized-model-compare.js +364 -0
- package/scripts/real-model-compare.js +280 -0
- package/scripts/training/agentic-flow-capabilities.json +329 -0
- package/scripts/training/claude-code-synth.js +505 -0
- package/scripts/training/claude-flow-capabilities.json +1322 -0
- package/scripts/training/claude-hard-negatives.js +222 -0
- package/scripts/training/contrastive-finetune.js +517 -0
- package/scripts/training/ecosystem-triplets.jsonl +1467 -0
- package/scripts/training/generate-ecosystem-triplets.js +1324 -0
- package/scripts/training/rlm-dataset.js +671 -0
- package/scripts/training/routing-dataset.js +634 -0
- package/scripts/training/ruvector-capabilities.json +798 -0
- package/scripts/training/validate-ecosystem.js +381 -0
- package/scripts/training/validation-results.json +23 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuvLTRA Model Registry and Downloader
|
|
3
|
+
*
|
|
4
|
+
* Automatically downloads GGUF models from HuggingFace Hub.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { ModelDownloader, RUVLTRA_MODELS } from '@ruvector/ruvllm';
|
|
9
|
+
*
|
|
10
|
+
* // Download the Claude Code optimized model
|
|
11
|
+
* const downloader = new ModelDownloader();
|
|
12
|
+
* const modelPath = await downloader.download('claude-code');
|
|
13
|
+
*
|
|
14
|
+
* // Or download all models
|
|
15
|
+
* await downloader.downloadAll();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import { createWriteStream, existsSync, mkdirSync, statSync, unlinkSync, renameSync } from 'fs';
|
|
19
|
+
import { join } from 'path';
|
|
20
|
+
import { homedir } from 'os';
|
|
21
|
+
/** HuggingFace repository */
|
|
22
|
+
const HF_REPO = 'ruv/ruvltra';
|
|
23
|
+
const HF_BASE_URL = `https://huggingface.co/${HF_REPO}/resolve/main`;
|
|
24
|
+
/** Available RuvLTRA models */
|
|
25
|
+
export const RUVLTRA_MODELS = {
|
|
26
|
+
'claude-code': {
|
|
27
|
+
id: 'claude-code',
|
|
28
|
+
name: 'RuvLTRA Claude Code',
|
|
29
|
+
filename: 'ruvltra-claude-code-0.5b-q4_k_m.gguf',
|
|
30
|
+
sizeBytes: 398000000,
|
|
31
|
+
size: '398 MB',
|
|
32
|
+
parameters: '0.5B',
|
|
33
|
+
useCase: 'Claude Code workflows, agentic coding',
|
|
34
|
+
quantization: 'Q4_K_M',
|
|
35
|
+
contextLength: 4096,
|
|
36
|
+
url: `${HF_BASE_URL}/ruvltra-claude-code-0.5b-q4_k_m.gguf`,
|
|
37
|
+
},
|
|
38
|
+
'small': {
|
|
39
|
+
id: 'small',
|
|
40
|
+
name: 'RuvLTRA Small',
|
|
41
|
+
filename: 'ruvltra-small-0.5b-q4_k_m.gguf',
|
|
42
|
+
sizeBytes: 398000000,
|
|
43
|
+
size: '398 MB',
|
|
44
|
+
parameters: '0.5B',
|
|
45
|
+
useCase: 'Edge devices, IoT, resource-constrained environments',
|
|
46
|
+
quantization: 'Q4_K_M',
|
|
47
|
+
contextLength: 4096,
|
|
48
|
+
url: `${HF_BASE_URL}/ruvltra-small-0.5b-q4_k_m.gguf`,
|
|
49
|
+
},
|
|
50
|
+
'medium': {
|
|
51
|
+
id: 'medium',
|
|
52
|
+
name: 'RuvLTRA Medium',
|
|
53
|
+
filename: 'ruvltra-medium-1.1b-q4_k_m.gguf',
|
|
54
|
+
sizeBytes: 669000000,
|
|
55
|
+
size: '669 MB',
|
|
56
|
+
parameters: '1.1B',
|
|
57
|
+
useCase: 'General purpose, balanced performance',
|
|
58
|
+
quantization: 'Q4_K_M',
|
|
59
|
+
contextLength: 8192,
|
|
60
|
+
url: `${HF_BASE_URL}/ruvltra-medium-1.1b-q4_k_m.gguf`,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
/** Model aliases for convenience */
|
|
64
|
+
export const MODEL_ALIASES = {
|
|
65
|
+
'cc': 'claude-code',
|
|
66
|
+
'claudecode': 'claude-code',
|
|
67
|
+
'claude': 'claude-code',
|
|
68
|
+
's': 'small',
|
|
69
|
+
'sm': 'small',
|
|
70
|
+
'm': 'medium',
|
|
71
|
+
'med': 'medium',
|
|
72
|
+
'default': 'claude-code',
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Get the default models directory
|
|
76
|
+
*/
|
|
77
|
+
export function getDefaultModelsDir() {
|
|
78
|
+
return join(homedir(), '.ruvllm', 'models');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve model ID from alias or direct ID
|
|
82
|
+
*/
|
|
83
|
+
export function resolveModelId(modelIdOrAlias) {
|
|
84
|
+
const normalized = modelIdOrAlias.toLowerCase().trim();
|
|
85
|
+
// Direct match
|
|
86
|
+
if (RUVLTRA_MODELS[normalized]) {
|
|
87
|
+
return normalized;
|
|
88
|
+
}
|
|
89
|
+
// Alias match
|
|
90
|
+
if (MODEL_ALIASES[normalized]) {
|
|
91
|
+
return MODEL_ALIASES[normalized];
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get model info by ID or alias
|
|
97
|
+
*/
|
|
98
|
+
export function getModelInfo(modelIdOrAlias) {
|
|
99
|
+
const id = resolveModelId(modelIdOrAlias);
|
|
100
|
+
return id ? RUVLTRA_MODELS[id] : null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* List all available models
|
|
104
|
+
*/
|
|
105
|
+
export function listModels() {
|
|
106
|
+
return Object.values(RUVLTRA_MODELS);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Model downloader for RuvLTRA GGUF models
|
|
110
|
+
*/
|
|
111
|
+
export class ModelDownloader {
|
|
112
|
+
constructor(modelsDir) {
|
|
113
|
+
this.modelsDir = modelsDir || getDefaultModelsDir();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the path where a model would be saved
|
|
117
|
+
*/
|
|
118
|
+
getModelPath(modelIdOrAlias) {
|
|
119
|
+
const model = getModelInfo(modelIdOrAlias);
|
|
120
|
+
if (!model)
|
|
121
|
+
return null;
|
|
122
|
+
return join(this.modelsDir, model.filename);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if a model is already downloaded
|
|
126
|
+
*/
|
|
127
|
+
isDownloaded(modelIdOrAlias) {
|
|
128
|
+
const path = this.getModelPath(modelIdOrAlias);
|
|
129
|
+
if (!path)
|
|
130
|
+
return false;
|
|
131
|
+
if (!existsSync(path))
|
|
132
|
+
return false;
|
|
133
|
+
// Verify size matches expected
|
|
134
|
+
const model = getModelInfo(modelIdOrAlias);
|
|
135
|
+
if (!model)
|
|
136
|
+
return false;
|
|
137
|
+
const stats = statSync(path);
|
|
138
|
+
// Allow 5% variance for size check
|
|
139
|
+
const minSize = model.sizeBytes * 0.95;
|
|
140
|
+
return stats.size >= minSize;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get download status for all models
|
|
144
|
+
*/
|
|
145
|
+
getStatus() {
|
|
146
|
+
return listModels().map(model => ({
|
|
147
|
+
model,
|
|
148
|
+
downloaded: this.isDownloaded(model.id),
|
|
149
|
+
path: this.getModelPath(model.id),
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Download a model from HuggingFace
|
|
154
|
+
*/
|
|
155
|
+
async download(modelIdOrAlias, options = {}) {
|
|
156
|
+
const model = getModelInfo(modelIdOrAlias);
|
|
157
|
+
if (!model) {
|
|
158
|
+
const available = listModels().map(m => m.id).join(', ');
|
|
159
|
+
throw new Error(`Unknown model: ${modelIdOrAlias}. Available models: ${available}`);
|
|
160
|
+
}
|
|
161
|
+
const destDir = options.modelsDir || this.modelsDir;
|
|
162
|
+
const destPath = join(destDir, model.filename);
|
|
163
|
+
// Check if already downloaded
|
|
164
|
+
if (!options.force && this.isDownloaded(model.id)) {
|
|
165
|
+
return destPath;
|
|
166
|
+
}
|
|
167
|
+
// Ensure directory exists
|
|
168
|
+
if (!existsSync(destDir)) {
|
|
169
|
+
mkdirSync(destDir, { recursive: true });
|
|
170
|
+
}
|
|
171
|
+
// Download with progress tracking
|
|
172
|
+
const tempPath = `${destPath}.tmp`;
|
|
173
|
+
let startTime = Date.now();
|
|
174
|
+
let lastProgressTime = startTime;
|
|
175
|
+
let lastDownloaded = 0;
|
|
176
|
+
try {
|
|
177
|
+
// Use dynamic import for node-fetch if native fetch not available
|
|
178
|
+
const fetchFn = globalThis.fetch || (await import('node:https')).default;
|
|
179
|
+
const response = await fetch(model.url, {
|
|
180
|
+
headers: {
|
|
181
|
+
'User-Agent': 'RuvLLM/2.3.0',
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
186
|
+
}
|
|
187
|
+
const contentLength = parseInt(response.headers.get('content-length') || String(model.sizeBytes));
|
|
188
|
+
// Create write stream
|
|
189
|
+
const fileStream = createWriteStream(tempPath);
|
|
190
|
+
let downloaded = 0;
|
|
191
|
+
// Stream with progress
|
|
192
|
+
const reader = response.body?.getReader();
|
|
193
|
+
if (!reader) {
|
|
194
|
+
throw new Error('Response body is not readable');
|
|
195
|
+
}
|
|
196
|
+
while (true) {
|
|
197
|
+
const { done, value } = await reader.read();
|
|
198
|
+
if (done)
|
|
199
|
+
break;
|
|
200
|
+
downloaded += value.length;
|
|
201
|
+
fileStream.write(value);
|
|
202
|
+
// Report progress
|
|
203
|
+
if (options.onProgress) {
|
|
204
|
+
const now = Date.now();
|
|
205
|
+
const elapsed = (now - lastProgressTime) / 1000;
|
|
206
|
+
const bytesThisInterval = downloaded - lastDownloaded;
|
|
207
|
+
const speedBps = elapsed > 0 ? bytesThisInterval / elapsed : 0;
|
|
208
|
+
const remaining = contentLength - downloaded;
|
|
209
|
+
const etaSeconds = speedBps > 0 ? remaining / speedBps : 0;
|
|
210
|
+
options.onProgress({
|
|
211
|
+
modelId: model.id,
|
|
212
|
+
downloaded,
|
|
213
|
+
total: contentLength,
|
|
214
|
+
percent: Math.round((downloaded / contentLength) * 100),
|
|
215
|
+
speedBps,
|
|
216
|
+
etaSeconds,
|
|
217
|
+
});
|
|
218
|
+
lastProgressTime = now;
|
|
219
|
+
lastDownloaded = downloaded;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
fileStream.end();
|
|
223
|
+
// Wait for file to be fully written
|
|
224
|
+
await new Promise((resolve, reject) => {
|
|
225
|
+
fileStream.on('finish', resolve);
|
|
226
|
+
fileStream.on('error', reject);
|
|
227
|
+
});
|
|
228
|
+
// Move temp file to final destination
|
|
229
|
+
if (existsSync(destPath)) {
|
|
230
|
+
unlinkSync(destPath);
|
|
231
|
+
}
|
|
232
|
+
renameSync(tempPath, destPath);
|
|
233
|
+
return destPath;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
// Clean up temp file on error
|
|
237
|
+
if (existsSync(tempPath)) {
|
|
238
|
+
try {
|
|
239
|
+
unlinkSync(tempPath);
|
|
240
|
+
}
|
|
241
|
+
catch { }
|
|
242
|
+
}
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Download all available models
|
|
248
|
+
*/
|
|
249
|
+
async downloadAll(options = {}) {
|
|
250
|
+
const paths = [];
|
|
251
|
+
for (const model of listModels()) {
|
|
252
|
+
const path = await this.download(model.id, options);
|
|
253
|
+
paths.push(path);
|
|
254
|
+
}
|
|
255
|
+
return paths;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Delete a downloaded model
|
|
259
|
+
*/
|
|
260
|
+
delete(modelIdOrAlias) {
|
|
261
|
+
const path = this.getModelPath(modelIdOrAlias);
|
|
262
|
+
if (!path || !existsSync(path)) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
unlinkSync(path);
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Delete all downloaded models
|
|
270
|
+
*/
|
|
271
|
+
deleteAll() {
|
|
272
|
+
let count = 0;
|
|
273
|
+
for (const model of listModels()) {
|
|
274
|
+
if (this.delete(model.id)) {
|
|
275
|
+
count++;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return count;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
export default ModelDownloader;
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQTJEN0IsNkJBQTZCO0FBQzdCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFdBQVcsR0FBRywwQkFBMEIsT0FBTyxlQUFlLENBQUM7QUFFckUsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBOEI7SUFDdkQsYUFBYSxFQUFFO1FBQ2IsRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsT0FBTyxFQUFFLHVDQUF1QztRQUNoRCxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixHQUFHLEVBQUUsR0FBRyxXQUFXLHVDQUF1QztLQUMzRDtJQUNELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxPQUFPO1FBQ1gsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLGdDQUFnQztRQUMxQyxTQUFTLEVBQUUsU0FBVztRQUN0QixJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE9BQU8sRUFBRSxzREFBc0Q7UUFDL0QsWUFBWSxFQUFFLFFBQVE7UUFDdEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsR0FB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LE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBc0I7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELGVBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdXZMVFJBIE1vZGVsIFJlZ2lzdHJ5IGFuZCBEb3dubG9hZGVyXG4gKlxuICogQXV0b21hdGljYWxseSBkb3dubG9hZHMgR0dVRiBtb2RlbHMgZnJvbSBIdWdnaW5nRmFjZSBIdWIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IE1vZGVsRG93bmxvYWRlciwgUlVWTFRSQV9NT0RFTFMgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcbiAqXG4gKiAvLyBEb3dubG9hZCB0aGUgQ2xhdWRlIENvZGUgb3B0aW1pemVkIG1vZGVsXG4gKiBjb25zdCBkb3dubG9hZGVyID0gbmV3IE1vZGVsRG93bmxvYWRlcigpO1xuICogY29uc3QgbW9kZWxQYXRoID0gYXdhaXQgZG93bmxvYWRlci5kb3dubG9hZCgnY2xhdWRlLWNvZGUnKTtcbiAqXG4gKiAvLyBPciBkb3dubG9hZCBhbGwgbW9kZWxzXG4gKiBhd2FpdCBkb3dubG9hZGVyLmRvd25sb2FkQWxsKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSwgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBzdGF0U3luYywgdW5saW5rU3luYywgcmVuYW1lU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gJ3N0cmVhbS9wcm9taXNlcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuLyoqIE1vZGVsIGluZm9ybWF0aW9uIGZyb20gSHVnZ2luZ0ZhY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxJbmZvIHtcbiAgLyoqIE1vZGVsIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBNb2RlbCBmaWxlbmFtZSBvbiBIdWdnaW5nRmFjZSAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWwgc2l6ZSBpbiBieXRlcyAqL1xuICBzaXplQnl0ZXM6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHNpemUgKGh1bWFuIHJlYWRhYmxlKSAqL1xuICBzaXplOiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXIgY291bnQgKi9cbiAgcGFyYW1ldGVyczogc3RyaW5nO1xuICAvKiogVXNlIGNhc2UgZGVzY3JpcHRpb24gKi9cbiAgdXNlQ2FzZTogc3RyaW5nO1xuICAvKiogUXVhbnRpemF0aW9uIHR5cGUgKi9cbiAgcXVhbnRpemF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IHdpbmRvdyBzaXplICovXG4gIGNvbnRleHRMZW5ndGg6IG51bWJlcjtcbiAgLyoqIEh1Z2dpbmdGYWNlIGRvd25sb2FkIFVSTCAqL1xuICB1cmw6IHN0cmluZztcbn1cblxuLyoqIERvd25sb2FkIHByb2dyZXNzIGNhbGxiYWNrICovXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBEb3dubG9hZFByb2dyZXNzKSA9PiB2b2lkO1xuXG4vKiogRG93bmxvYWQgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRQcm9ncmVzcyB7XG4gIC8qKiBNb2RlbCBiZWluZyBkb3dubG9hZGVkICovXG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgLyoqIEJ5dGVzIGRvd25sb2FkZWQgc28gZmFyICovXG4gIGRvd25sb2FkZWQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGJ5dGVzIHRvIGRvd25sb2FkICovXG4gIHRvdGFsOiBudW1iZXI7XG4gIC8qKiBEb3dubG9hZCBwZXJjZW50YWdlICgwLTEwMCkgKi9cbiAgcGVyY2VudDogbnVtYmVyO1xuICAvKiogRG93bmxvYWQgc3BlZWQgaW4gYnl0ZXMgcGVyIHNlY29uZCAqL1xuICBzcGVlZEJwczogbnVtYmVyO1xuICAvKiogRXN0aW1hdGVkIHRpbWUgcmVtYWluaW5nIGluIHNlY29uZHMgKi9cbiAgZXRhU2Vjb25kczogbnVtYmVyO1xufVxuXG4vKiogRG93bmxvYWQgb3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZE9wdGlvbnMge1xuICAvKiogRGlyZWN0b3J5IHRvIHNhdmUgbW9kZWxzIChkZWZhdWx0OiB+Ly5ydXZsbG0vbW9kZWxzKSAqL1xuICBtb2RlbHNEaXI/OiBzdHJpbmc7XG4gIC8qKiBGb3JjZSByZS1kb3dubG9hZCBldmVuIGlmIGZpbGUgZXhpc3RzICovXG4gIGZvcmNlPzogYm9vbGVhbjtcbiAgLyoqIFByb2dyZXNzIGNhbGxiYWNrICovXG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICAvKiogVmVyaWZ5IGZpbGUgaW50ZWdyaXR5IGFmdGVyIGRvd25sb2FkICovXG4gIHZlcmlmeT86IGJvb2xlYW47XG59XG5cbi8qKiBIdWdnaW5nRmFjZSByZXBvc2l0b3J5ICovXG5jb25zdCBIRl9SRVBPID0gJ3J1di9ydXZsdHJhJztcbmNvbnN0IEhGX0JBU0VfVVJMID0gYGh0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vJHtIRl9SRVBPfS9yZXNvbHZlL21haW5gO1xuXG4vKiogQXZhaWxhYmxlIFJ1dkxUUkEgbW9kZWxzICovXG5leHBvcnQgY29uc3QgUlVWTFRSQV9NT0RFTFM6IFJlY29yZDxzdHJpbmcsIE1vZGVsSW5mbz4gPSB7XG4gICdjbGF1ZGUtY29kZSc6IHtcbiAgICBpZDogJ2NsYXVkZS1jb2RlJyxcbiAgICBuYW1lOiAnUnV2TFRSQSBDbGF1ZGUgQ29kZScsXG4gICAgZmlsZW5hbWU6ICdydXZsdHJhLWNsYXVkZS1jb2RlLTAuNWItcTRfa19tLmdndWYnLFxuICAgIHNpemVCeXRlczogMzk4XzAwMF8wMDAsXG4gICAgc2l6ZTogJzM5OCBNQicsXG4gICAgcGFyYW1ldGVyczogJzAuNUInLFxuICAgIHVzZUNhc2U6ICdDbGF1ZGUgQ29kZSB3b3JrZmxvd3MsIGFnZW50aWMgY29kaW5nJyxcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxuICAgIGNvbnRleHRMZW5ndGg6IDQwOTYsXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmYCxcbiAgfSxcbiAgJ3NtYWxsJzoge1xuICAgIGlkOiAnc21hbGwnLFxuICAgIG5hbWU6ICdSdXZMVFJBIFNtYWxsJyxcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtc21hbGwtMC41Yi1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiAzOThfMDAwXzAwMCxcbiAgICBzaXplOiAnMzk4IE1CJyxcbiAgICBwYXJhbWV0ZXJzOiAnMC41QicsXG4gICAgdXNlQ2FzZTogJ0VkZ2UgZGV2aWNlcywgSW9ULCByZXNvdXJjZS1jb25zdHJhaW5lZCBlbnZpcm9ubWVudHMnLFxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXG4gICAgY29udGV4dExlbmd0aDogNDA5NixcbiAgICB1cmw6IGAke0hGX0JBU0VfVVJMfS9ydXZsdHJhLXNtYWxsLTAuNWItcTRfa19tLmdndWZgLFxuICB9LFxuICAnbWVkaXVtJzoge1xuICAgIGlkOiAnbWVkaXVtJyxcbiAgICBuYW1lOiAnUnV2TFRSQSBNZWRpdW0nLFxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1tZWRpdW0tMS4xYi1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiA2NjlfMDAwXzAwMCxcbiAgICBzaXplOiAnNjY5IE1CJyxcbiAgICBwYXJhbWV0ZXJzOiAnMS4xQicsXG4gICAgdXNlQ2FzZTogJ0dlbmVyYWwgcHVycG9zZSwgYmFsYW5jZWQgcGVyZm9ybWFuY2UnLFxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXG4gICAgY29udGV4dExlbmd0aDogODE5MixcbiAgICB1cmw6IGAke0hGX0JBU0VfVVJMfS9ydXZsdHJhLW1lZGl1bS0xLjFiLXE0X2tfbS5nZ3VmYCxcbiAgfSxcbn07XG5cbi8qKiBNb2RlbCBhbGlhc2VzIGZvciBjb252ZW5pZW5jZSAqL1xuZXhwb3J0IGNvbnN0IE1PREVMX0FMSUFTRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdjYyc6ICdjbGF1ZGUtY29kZScsXG4gICdjbGF1ZGVjb2RlJzogJ2NsYXVkZS1jb2RlJyxcbiAgJ2NsYXVkZSc6ICdjbGF1ZGUtY29kZScsXG4gICdzJzogJ3NtYWxsJyxcbiAgJ3NtJzogJ3NtYWxsJyxcbiAgJ20nOiAnbWVkaXVtJyxcbiAgJ21lZCc6ICdtZWRpdW0nLFxuICAnZGVmYXVsdCc6ICdjbGF1ZGUtY29kZScsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCBtb2RlbHMgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TW9kZWxzRGlyKCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKGhvbWVkaXIoKSwgJy5ydXZsbG0nLCAnbW9kZWxzJyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBtb2RlbCBJRCBmcm9tIGFsaWFzIG9yIGRpcmVjdCBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsSWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBub3JtYWxpemVkID0gbW9kZWxJZE9yQWxpYXMudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgLy8gRGlyZWN0IG1hdGNoXG4gIGlmIChSVVZMVFJBX01PREVMU1tub3JtYWxpemVkXSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLy8gQWxpYXMgbWF0Y2hcbiAgaWYgKE1PREVMX0FMSUFTRVNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gTU9ERUxfQUxJQVNFU1tub3JtYWxpemVkXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldCBtb2RlbCBpbmZvIGJ5IElEIG9yIGFsaWFzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IE1vZGVsSW5mbyB8IG51bGwge1xuICBjb25zdCBpZCA9IHJlc29sdmVNb2RlbElkKG1vZGVsSWRPckFsaWFzKTtcbiAgcmV0dXJuIGlkID8gUlVWTFRSQV9NT0RFTFNbaWRdIDogbnVsbDtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBhdmFpbGFibGUgbW9kZWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0TW9kZWxzKCk6IE1vZGVsSW5mb1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoUlVWTFRSQV9NT0RFTFMpO1xufVxuXG4vKipcbiAqIE1vZGVsIGRvd25sb2FkZXIgZm9yIFJ1dkxUUkEgR0dVRiBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsRG93bmxvYWRlciB7XG4gIHByaXZhdGUgbW9kZWxzRGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobW9kZWxzRGlyPzogc3RyaW5nKSB7XG4gICAgdGhpcy5tb2RlbHNEaXIgPSBtb2RlbHNEaXIgfHwgZ2V0RGVmYXVsdE1vZGVsc0RpcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGF0aCB3aGVyZSBhIG1vZGVsIHdvdWxkIGJlIHNhdmVkXG4gICAqL1xuICBnZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IG1vZGVsID0gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzKTtcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gam9pbih0aGlzLm1vZGVsc0RpciwgbW9kZWwuZmlsZW5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbW9kZWwgaXMgYWxyZWFkeSBkb3dubG9hZGVkXG4gICAqL1xuICBpc0Rvd25sb2FkZWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFwYXRoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoIWV4aXN0c1N5bmMocGF0aCkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFZlcmlmeSBzaXplIG1hdGNoZXMgZXhwZWN0ZWRcbiAgICBjb25zdCBtb2RlbCA9IGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFtb2RlbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdHMgPSBzdGF0U3luYyhwYXRoKTtcbiAgICAvLyBBbGxvdyA1JSB2YXJpYW5jZSBmb3Igc2l6ZSBjaGVja1xuICAgIGNvbnN0IG1pblNpemUgPSBtb2RlbC5zaXplQnl0ZXMgKiAwLjk1O1xuICAgIHJldHVybiBzdGF0cy5zaXplID49IG1pblNpemU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRvd25sb2FkIHN0YXR1cyBmb3IgYWxsIG1vZGVsc1xuICAgKi9cbiAgZ2V0U3RhdHVzKCk6IHsgbW9kZWw6IE1vZGVsSW5mbzsgZG93bmxvYWRlZDogYm9vbGVhbjsgcGF0aDogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIGxpc3RNb2RlbHMoKS5tYXAobW9kZWwgPT4gKHtcbiAgICAgIG1vZGVsLFxuICAgICAgZG93bmxvYWRlZDogdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpLFxuICAgICAgcGF0aDogdGhpcy5nZXRNb2RlbFBhdGgobW9kZWwuaWQpISxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgYSBtb2RlbCBmcm9tIEh1Z2dpbmdGYWNlXG4gICAqL1xuICBhc3luYyBkb3dubG9hZChcbiAgICBtb2RlbElkT3JBbGlhczogc3RyaW5nLFxuICAgIG9wdGlvbnM6IERvd25sb2FkT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbW9kZWwgPSBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXMpO1xuICAgIGlmICghbW9kZWwpIHtcbiAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IGxpc3RNb2RlbHMoKS5tYXAobSA9PiBtLmlkKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBtb2RlbDogJHttb2RlbElkT3JBbGlhc30uIEF2YWlsYWJsZSBtb2RlbHM6ICR7YXZhaWxhYmxlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzdERpciA9IG9wdGlvbnMubW9kZWxzRGlyIHx8IHRoaXMubW9kZWxzRGlyO1xuICAgIGNvbnN0IGRlc3RQYXRoID0gam9pbihkZXN0RGlyLCBtb2RlbC5maWxlbmFtZSk7XG5cbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGRvd25sb2FkZWRcbiAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpKSB7XG4gICAgICByZXR1cm4gZGVzdFBhdGg7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGRpcmVjdG9yeSBleGlzdHNcbiAgICBpZiAoIWV4aXN0c1N5bmMoZGVzdERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhkZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBEb3dubG9hZCB3aXRoIHByb2dyZXNzIHRyYWNraW5nXG4gICAgY29uc3QgdGVtcFBhdGggPSBgJHtkZXN0UGF0aH0udG1wYDtcbiAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgbGFzdFByb2dyZXNzVGltZSA9IHN0YXJ0VGltZTtcbiAgICBsZXQgbGFzdERvd25sb2FkZWQgPSAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBkeW5hbWljIGltcG9ydCBmb3Igbm9kZS1mZXRjaCBpZiBuYXRpdmUgZmV0Y2ggbm90IGF2YWlsYWJsZVxuICAgICAgY29uc3QgZmV0Y2hGbiA9IGdsb2JhbFRoaXMuZmV0Y2ggfHwgKGF3YWl0IGltcG9ydCgnbm9kZTpodHRwcycpKS5kZWZhdWx0O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1vZGVsLnVybCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiAnUnV2TExNLzIuMy4wJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHBhcnNlSW50KFxuICAgICAgICByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC1sZW5ndGgnKSB8fCBTdHJpbmcobW9kZWwuc2l6ZUJ5dGVzKVxuICAgICAgKTtcblxuICAgICAgLy8gQ3JlYXRlIHdyaXRlIHN0cmVhbVxuICAgICAgY29uc3QgZmlsZVN0cmVhbSA9IGNyZWF0ZVdyaXRlU3RyZWFtKHRlbXBQYXRoKTtcbiAgICAgIGxldCBkb3dubG9hZGVkID0gMDtcblxuICAgICAgLy8gU3RyZWFtIHdpdGggcHJvZ3Jlc3NcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xuICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBib2R5IGlzIG5vdCByZWFkYWJsZScpO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICBpZiAoZG9uZSkgYnJlYWs7XG5cbiAgICAgICAgZG93bmxvYWRlZCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgIGZpbGVTdHJlYW0ud3JpdGUodmFsdWUpO1xuXG4gICAgICAgIC8vIFJlcG9ydCBwcm9ncmVzc1xuICAgICAgICBpZiAob3B0aW9ucy5vblByb2dyZXNzKSB7XG4gICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBjb25zdCBlbGFwc2VkID0gKG5vdyAtIGxhc3RQcm9ncmVzc1RpbWUpIC8gMTAwMDtcbiAgICAgICAgICBjb25zdCBieXRlc1RoaXNJbnRlcnZhbCA9IGRvd25sb2FkZWQgLSBsYXN0RG93bmxvYWRlZDtcbiAgICAgICAgICBjb25zdCBzcGVlZEJwcyA9IGVsYXBzZWQgPiAwID8gYnl0ZXNUaGlzSW50ZXJ2YWwgLyBlbGFwc2VkIDogMDtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSBjb250ZW50TGVuZ3RoIC0gZG93bmxvYWRlZDtcbiAgICAgICAgICBjb25zdCBldGFTZWNvbmRzID0gc3BlZWRCcHMgPiAwID8gcmVtYWluaW5nIC8gc3BlZWRCcHMgOiAwO1xuXG4gICAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHtcbiAgICAgICAgICAgIG1vZGVsSWQ6IG1vZGVsLmlkLFxuICAgICAgICAgICAgZG93bmxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsOiBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgICAgcGVyY2VudDogTWF0aC5yb3VuZCgoZG93bmxvYWRlZCAvIGNvbnRlbnRMZW5ndGgpICogMTAwKSxcbiAgICAgICAgICAgIHNwZWVkQnBzLFxuICAgICAgICAgICAgZXRhU2Vjb25kcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxhc3RQcm9ncmVzc1RpbWUgPSBub3c7XG4gICAgICAgICAgbGFzdERvd25sb2FkZWQgPSBkb3dubG9hZGVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbGVTdHJlYW0uZW5kKCk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIGZpbGUgdG8gYmUgZnVsbHkgd3JpdHRlblxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBmaWxlU3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgICAgZmlsZVN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIE1vdmUgdGVtcCBmaWxlIHRvIGZpbmFsIGRlc3RpbmF0aW9uXG4gICAgICBpZiAoZXhpc3RzU3luYyhkZXN0UGF0aCkpIHtcbiAgICAgICAgdW5saW5rU3luYyhkZXN0UGF0aCk7XG4gICAgICB9XG4gICAgICByZW5hbWVTeW5jKHRlbXBQYXRoLCBkZXN0UGF0aCk7XG5cbiAgICAgIHJldHVybiBkZXN0UGF0aDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gQ2xlYW4gdXAgdGVtcCBmaWxlIG9uIGVycm9yXG4gICAgICBpZiAoZXhpc3RzU3luYyh0ZW1wUGF0aCkpIHtcbiAgICAgICAgdHJ5IHsgdW5saW5rU3luYyh0ZW1wUGF0aCk7IH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBhbGwgYXZhaWxhYmxlIG1vZGVsc1xuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRBbGwob3B0aW9uczogRG93bmxvYWRPcHRpb25zID0ge30pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcGF0aHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBsaXN0TW9kZWxzKCkpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLmRvd25sb2FkKG1vZGVsLmlkLCBvcHRpb25zKTtcbiAgICAgIHBhdGhzLnB1c2gocGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBkb3dubG9hZGVkIG1vZGVsXG4gICAqL1xuICBkZWxldGUobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFwYXRoIHx8ICFleGlzdHNTeW5jKHBhdGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHVubGlua1N5bmMocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBkb3dubG9hZGVkIG1vZGVsc1xuICAgKi9cbiAgZGVsZXRlQWxsKCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIGxpc3RNb2RlbHMoKSkge1xuICAgICAgaWYgKHRoaXMuZGVsZXRlKG1vZGVsLmlkKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTW9kZWxEb3dubG9hZGVyO1xuIl19
|
package/dist/esm/native.d.ts
CHANGED
|
@@ -64,10 +64,10 @@ interface NativeMemoryResult {
|
|
|
64
64
|
interface NativeStats {
|
|
65
65
|
total_queries: number;
|
|
66
66
|
memory_nodes: number;
|
|
67
|
-
|
|
67
|
+
patterns_learned: number;
|
|
68
68
|
avg_latency_ms: number;
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
cache_hit_rate: number;
|
|
70
|
+
router_accuracy: number;
|
|
71
71
|
}
|
|
72
72
|
interface NativeSimdOps {
|
|
73
73
|
dotProduct(a: number[], b: number[]): number;
|
package/dist/esm/native.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,YAAY;IAEpB,YAAY,EAAE,KAAK,MAAM,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;IAC1D,cAAc,EAAE,UAAU,aAAa,CAAC;IACxC,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,OAAO,CAAC;CAC/B;AAWD,UAAU,YAAY;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAC3D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAC7D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1E,KAAK,IAAI,WAAW,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC;IACnB,gBAAgB,IAAI,MAAM,EAAE,CAAC;CAC9B;AAED,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/native.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/native.js
CHANGED
|
@@ -69,4 +69,4 @@ export function hasSimdSupport() {
|
|
|
69
69
|
const mod = loadNativeModule();
|
|
70
70
|
return mod?.hasSimdSupport() ?? false;
|
|
71
71
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQThGN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDJDQUEyQztRQUMzQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5hdGl2ZSBiaW5kaW5ncyBsb2FkZXIgZm9yIFJ1dkxMTVxuICpcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG4vLyBUcnkgdG8gbG9hZCB0aGUgbmF0aXZlIG1vZHVsZVxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBOYXRpdmVSdXZMTE0ge1xuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcbiAgUnV2TExNRW5naW5lOiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbi8vIFJhdyBuYXRpdmUgbW9kdWxlIGludGVyZmFjZSAoYWN0dWFsIGV4cG9ydCBuYW1lcylcbmludGVyZmFjZSBSYXdOYXRpdmVNb2R1bGUge1xuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBSdXZMTE1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOYXRpdmVDb25maWcge1xuICBlbWJlZGRpbmdfZGltPzogbnVtYmVyO1xuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcbiAgaG5zd19tPzogbnVtYmVyO1xuICBobnN3X2VmX2NvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XG4gIGxlYXJuaW5nX2VuYWJsZWQ/OiBib29sZWFuO1xuICBxdWFsaXR5X3RocmVzaG9sZD86IG51bWJlcjtcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XG4gIHF1ZXJ5KHRleHQ6IHN0cmluZywgY29uZmlnPzogTmF0aXZlR2VuQ29uZmlnKTogTmF0aXZlUXVlcnlSZXNwb25zZTtcbiAgZ2VuZXJhdGUocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IHN0cmluZztcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xuICBzZWFyY2hNZW1vcnkodGV4dDogc3RyaW5nLCBrPzogbnVtYmVyKTogTmF0aXZlTWVtb3J5UmVzdWx0W107XG4gIGFkZE1lbW9yeShjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogc3RyaW5nKTogbnVtYmVyO1xuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xuICBzdGF0cygpOiBOYXRpdmVTdGF0cztcbiAgZm9yY2VMZWFybigpOiBzdHJpbmc7XG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xuICBzaW1pbGFyaXR5KHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc1NpbWQoKTogYm9vbGVhbjtcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heF90b2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICB0b3BfcD86IG51bWJlcjtcbiAgdG9wX2s/
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQThGN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDJDQUEyQztRQUMzQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5hdGl2ZSBiaW5kaW5ncyBsb2FkZXIgZm9yIFJ1dkxMTVxuICpcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG4vLyBUcnkgdG8gbG9hZCB0aGUgbmF0aXZlIG1vZHVsZVxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBOYXRpdmVSdXZMTE0ge1xuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcbiAgUnV2TExNRW5naW5lOiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbi8vIFJhdyBuYXRpdmUgbW9kdWxlIGludGVyZmFjZSAoYWN0dWFsIGV4cG9ydCBuYW1lcylcbmludGVyZmFjZSBSYXdOYXRpdmVNb2R1bGUge1xuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBSdXZMTE1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOYXRpdmVDb25maWcge1xuICBlbWJlZGRpbmdfZGltPzogbnVtYmVyO1xuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcbiAgaG5zd19tPzogbnVtYmVyO1xuICBobnN3X2VmX2NvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XG4gIGxlYXJuaW5nX2VuYWJsZWQ/OiBib29sZWFuO1xuICBxdWFsaXR5X3RocmVzaG9sZD86IG51bWJlcjtcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XG4gIHF1ZXJ5KHRleHQ6IHN0cmluZywgY29uZmlnPzogTmF0aXZlR2VuQ29uZmlnKTogTmF0aXZlUXVlcnlSZXNwb25zZTtcbiAgZ2VuZXJhdGUocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IHN0cmluZztcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xuICBzZWFyY2hNZW1vcnkodGV4dDogc3RyaW5nLCBrPzogbnVtYmVyKTogTmF0aXZlTWVtb3J5UmVzdWx0W107XG4gIGFkZE1lbW9yeShjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogc3RyaW5nKTogbnVtYmVyO1xuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xuICBzdGF0cygpOiBOYXRpdmVTdGF0cztcbiAgZm9yY2VMZWFybigpOiBzdHJpbmc7XG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xuICBzaW1pbGFyaXR5KHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc1NpbWQoKTogYm9vbGVhbjtcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heF90b2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICB0b3BfcD86IG51bWJlcjtcbiAgdG9wX2s/OiBudW1iZXI7XG4gIHJlcGV0aXRpb25fcGVuYWx0eT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVF1ZXJ5UmVzcG9uc2Uge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIGxhdGVuY3lfbXM6IG51bWJlcjtcbiAgcmVxdWVzdF9pZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlUm91dGluZ0RlY2lzaW9uIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRvcF9wOiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZU1lbW9yeVJlc3VsdCB7XG4gIGlkOiBudW1iZXI7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVN0YXRzIHtcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xuICBtZW1vcnlfbm9kZXM6IG51bWJlcjtcbiAgcGF0dGVybnNfbGVhcm5lZDogbnVtYmVyO1xuICBhdmdfbGF0ZW5jeV9tczogbnVtYmVyO1xuICBjYWNoZV9oaXRfcmF0ZTogbnVtYmVyO1xuICByb3V0ZXJfYWNjdXJhY3k6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVNpbWRPcHMge1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW107XG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW107XG59XG5cbi8vIFBsYXRmb3JtLXNwZWNpZmljIHBhY2thZ2UgbmFtZXNcbmNvbnN0IFBMQVRGT1JNX1BBQ0tBR0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnZGFyd2luLXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWRhcndpbi14NjQnLFxuICAnZGFyd2luLWFybTY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLWFybTY0JyxcbiAgJ2xpbnV4LXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LXg2NC1nbnUnLFxuICAnbGludXgtYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC1hcm02NC1nbnUnLFxuICAnd2luMzIteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0td2luMzIteDY0LW1zdmMnLFxufTtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1LZXkoKTogc3RyaW5nIHtcbiAgY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtO1xuICBjb25zdCBhcmNoID0gcHJvY2Vzcy5hcmNoO1xuICByZXR1cm4gYCR7cGxhdGZvcm19LSR7YXJjaH1gO1xufVxuXG5mdW5jdGlvbiBsb2FkTmF0aXZlTW9kdWxlKCk6IE5hdGl2ZVJ1dkxMTSB8IG51bGwge1xuICBpZiAobmF0aXZlTW9kdWxlKSB7XG4gICAgcmV0dXJuIG5hdGl2ZU1vZHVsZTtcbiAgfVxuXG4gIGNvbnN0IHBsYXRmb3JtS2V5ID0gZ2V0UGxhdGZvcm1LZXkoKTtcbiAgY29uc3QgcGFja2FnZU5hbWUgPSBQTEFURk9STV9QQUNLQUdFU1twbGF0Zm9ybUtleV07XG5cbiAgaWYgKCFwYWNrYWdlTmFtZSkge1xuICAgIC8vIFNpbGVudGx5IGZhaWwgLSBKUyBmYWxsYmFjayB3aWxsIGJlIHVzZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRyeSBsb2FkaW5nIGZyb20gb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gIGNvbnN0IGF0dGVtcHRzID0gW1xuICAgIC8vIFRyeSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZVxuICAgICgpID0+IHJlcXVpcmUocGFja2FnZU5hbWUpLFxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAoQ0pTIGJ1aWxkKVxuICAgICgpID0+IHJlcXVpcmUoam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdydXZsbG0ubm9kZScpKSxcbiAgICAvLyBUcnkgbG9hZGluZyBmcm9tIGxvY2FsIC5ub2RlIGZpbGUgKHJvb3QpXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxuICBdO1xuXG4gIGZvciAoY29uc3QgYXR0ZW1wdCBvZiBhdHRlbXB0cykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhdHRlbXB0KCkgYXMgUmF3TmF0aXZlTW9kdWxlO1xuICAgICAgLy8gTm9ybWFsaXplOiBuYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUsIHdlIGV4cG9zZSBhcyBSdXZMTE1FbmdpbmVcbiAgICAgIG5hdGl2ZU1vZHVsZSA9IHtcbiAgICAgICAgUnV2TExNRW5naW5lOiByYXcuUnV2TExNRW5naW5lID8/IHJhdy5SdXZMbG1FbmdpbmUhLFxuICAgICAgICBTaW1kT3BlcmF0aW9uczogcmF3LlNpbWRPcGVyYXRpb25zLFxuICAgICAgICB2ZXJzaW9uOiByYXcudmVyc2lvbixcbiAgICAgICAgaGFzU2ltZFN1cHBvcnQ6IHJhdy5oYXNTaW1kU3VwcG9ydCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGludWUgdG8gbmV4dCBhdHRlbXB0XG4gICAgfVxuICB9XG5cbiAgLy8gU2lsZW50bHkgZmFsbCBiYWNrIHRvIEpTIGltcGxlbWVudGF0aW9uXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBFeHBvcnQgZnVuY3Rpb25zIHRvIGdldCBuYXRpdmUgYmluZGluZ3NcbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XG4gIHJldHVybiBsb2FkTmF0aXZlTW9kdWxlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gIGNvbnN0IG1vZCA9IGxvYWROYXRpdmVNb2R1bGUoKTtcbiAgcmV0dXJuIG1vZD8udmVyc2lvbigpID8/ICcwLjEuMC1qcyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW1kU3VwcG9ydCgpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy5oYXNTaW1kU3VwcG9ydCgpID8/IGZhbHNlO1xufVxuXG4vLyBFeHBvcnQgdHlwZXMgZm9yIGludGVybmFsIHVzZVxuZXhwb3J0IHR5cGUge1xuICBOYXRpdmVSdXZMTE0sXG4gIE5hdGl2ZUNvbmZpZyxcbiAgTmF0aXZlRW5naW5lLFxuICBOYXRpdmVHZW5Db25maWcsXG4gIE5hdGl2ZVF1ZXJ5UmVzcG9uc2UsXG4gIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbixcbiAgTmF0aXZlTWVtb3J5UmVzdWx0LFxuICBOYXRpdmVTdGF0cyxcbiAgTmF0aXZlU2ltZE9wcyxcbn07XG4iXX0=
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RLM Controller - Recursive Retrieval Language Model
|
|
3
|
+
*
|
|
4
|
+
* Implements a recursive retrieval-augmented generation system that:
|
|
5
|
+
* 1. Breaks down complex queries into sub-queries
|
|
6
|
+
* 2. Retrieves relevant memory spans for each query
|
|
7
|
+
* 3. Synthesizes coherent answers from retrieved context
|
|
8
|
+
* 4. Optionally reflects on and refines answers
|
|
9
|
+
*
|
|
10
|
+
* @example Basic Usage
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { RlmController } from '@ruvector/ruvllm';
|
|
13
|
+
*
|
|
14
|
+
* const rlm = new RlmController({
|
|
15
|
+
* maxDepth: 3,
|
|
16
|
+
* retrievalTopK: 10,
|
|
17
|
+
* enableCache: true,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Add knowledge to memory
|
|
21
|
+
* await rlm.addMemory('Machine learning is a subset of AI that enables systems to learn from data.');
|
|
22
|
+
* await rlm.addMemory('Deep learning uses neural networks with many layers.');
|
|
23
|
+
*
|
|
24
|
+
* // Query with recursive retrieval
|
|
25
|
+
* const answer = await rlm.query('Explain the relationship between ML and deep learning');
|
|
26
|
+
* console.log(answer.text);
|
|
27
|
+
* console.log('Sources:', answer.sources.length);
|
|
28
|
+
* console.log('Confidence:', answer.confidence);
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example Streaming
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const rlm = new RlmController();
|
|
34
|
+
*
|
|
35
|
+
* for await (const event of rlm.queryStream('What is AI?')) {
|
|
36
|
+
* if (event.type === 'token') {
|
|
37
|
+
* process.stdout.write(event.text);
|
|
38
|
+
* } else {
|
|
39
|
+
* console.log('\n\nDone! Quality:', event.answer.qualityScore);
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example With Reflection
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const rlm = new RlmController({
|
|
47
|
+
* enableReflection: true,
|
|
48
|
+
* maxReflectionIterations: 2,
|
|
49
|
+
* minQualityScore: 0.8,
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* const answer = await rlm.query('Complex multi-part question...');
|
|
53
|
+
* // Answer will be iteratively refined until quality >= 0.8
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
import { RlmConfig, RlmAnswer, MemorySpan, StreamToken } from './types';
|
|
57
|
+
import { RuvLLM } from '../engine';
|
|
58
|
+
/**
|
|
59
|
+
* RlmController - Recursive Retrieval Language Model Controller
|
|
60
|
+
*
|
|
61
|
+
* Orchestrates retrieval-augmented generation with recursive sub-query
|
|
62
|
+
* decomposition, memory search, and optional self-reflection.
|
|
63
|
+
*/
|
|
64
|
+
export declare class RlmController {
|
|
65
|
+
private config;
|
|
66
|
+
private cache;
|
|
67
|
+
private engine;
|
|
68
|
+
private memoryIdCounter;
|
|
69
|
+
/**
|
|
70
|
+
* Create a new RLM controller
|
|
71
|
+
*
|
|
72
|
+
* @param config - Configuration options
|
|
73
|
+
* @param engine - Optional RuvLLM engine instance (creates new if not provided)
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // With default config
|
|
78
|
+
* const rlm = new RlmController();
|
|
79
|
+
*
|
|
80
|
+
* // With custom config
|
|
81
|
+
* const rlm = new RlmController({
|
|
82
|
+
* maxDepth: 5,
|
|
83
|
+
* enableReflection: true,
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* // With existing engine
|
|
87
|
+
* const engine = new RuvLLM({ learningEnabled: true });
|
|
88
|
+
* const rlm = new RlmController({}, engine);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
constructor(config?: RlmConfig, engine?: RuvLLM);
|
|
92
|
+
/**
|
|
93
|
+
* Query the RLM with recursive retrieval
|
|
94
|
+
*
|
|
95
|
+
* @param input - The query string
|
|
96
|
+
* @returns Promise resolving to the answer with sources and metadata
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const answer = await rlm.query('What is the capital of France?');
|
|
101
|
+
* console.log(answer.text); // "The capital of France is Paris..."
|
|
102
|
+
* console.log(answer.confidence); // 0.95
|
|
103
|
+
* console.log(answer.sources); // [{ id: '...', text: '...', similarityScore: 0.92 }]
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
query(input: string): Promise<RlmAnswer>;
|
|
107
|
+
/**
|
|
108
|
+
* Query with streaming response
|
|
109
|
+
*
|
|
110
|
+
* @param input - The query string
|
|
111
|
+
* @yields StreamToken events (either partial tokens or final answer)
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* for await (const event of rlm.queryStream('Explain quantum computing')) {
|
|
116
|
+
* if (event.type === 'token') {
|
|
117
|
+
* // Partial token received
|
|
118
|
+
* process.stdout.write(event.text);
|
|
119
|
+
* } else {
|
|
120
|
+
* // Generation complete
|
|
121
|
+
* console.log('\n\nSources:', event.answer.sources.length);
|
|
122
|
+
* }
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
queryStream(input: string): AsyncGenerator<StreamToken>;
|
|
127
|
+
/**
|
|
128
|
+
* Add content to memory for retrieval
|
|
129
|
+
*
|
|
130
|
+
* @param text - The text content to store
|
|
131
|
+
* @param metadata - Optional metadata to associate with the memory
|
|
132
|
+
* @returns Promise resolving to the memory span ID
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const id1 = await rlm.addMemory(
|
|
137
|
+
* 'TypeScript is a typed superset of JavaScript.',
|
|
138
|
+
* { source: 'documentation', category: 'programming' }
|
|
139
|
+
* );
|
|
140
|
+
*
|
|
141
|
+
* const id2 = await rlm.addMemory(
|
|
142
|
+
* 'React is a JavaScript library for building UIs.'
|
|
143
|
+
* );
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
addMemory(text: string, metadata?: Record<string, unknown>): Promise<string>;
|
|
147
|
+
/**
|
|
148
|
+
* Search memory for relevant spans
|
|
149
|
+
*
|
|
150
|
+
* @param query - The search query
|
|
151
|
+
* @param topK - Number of results to return (default: config.retrievalTopK)
|
|
152
|
+
* @returns Promise resolving to array of memory spans
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const spans = await rlm.searchMemory('JavaScript frameworks', 5);
|
|
157
|
+
* for (const span of spans) {
|
|
158
|
+
* console.log(`[${span.similarityScore.toFixed(2)}] ${span.text}`);
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
searchMemory(query: string, topK?: number): Promise<MemorySpan[]>;
|
|
163
|
+
/**
|
|
164
|
+
* Clear the response cache
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* rlm.clearCache();
|
|
169
|
+
* console.log('Cache cleared');
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
clearCache(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Get current cache statistics
|
|
175
|
+
*
|
|
176
|
+
* @returns Object with cache size and hit rate info
|
|
177
|
+
*/
|
|
178
|
+
getCacheStats(): {
|
|
179
|
+
size: number;
|
|
180
|
+
entries: number;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Update configuration at runtime
|
|
184
|
+
*
|
|
185
|
+
* @param config - Partial configuration to merge
|
|
186
|
+
*/
|
|
187
|
+
updateConfig(config: Partial<RlmConfig>): void;
|
|
188
|
+
/**
|
|
189
|
+
* Get current configuration
|
|
190
|
+
*/
|
|
191
|
+
getConfig(): Required<RlmConfig>;
|
|
192
|
+
/**
|
|
193
|
+
* Generate sub-queries for complex questions
|
|
194
|
+
*/
|
|
195
|
+
private generateSubQueries;
|
|
196
|
+
/**
|
|
197
|
+
* Decompose a complex query into simpler parts
|
|
198
|
+
*/
|
|
199
|
+
private decomposeQuery;
|
|
200
|
+
/**
|
|
201
|
+
* Build context string from sources and sub-queries
|
|
202
|
+
*/
|
|
203
|
+
private buildContext;
|
|
204
|
+
/**
|
|
205
|
+
* Build the full prompt with context
|
|
206
|
+
*/
|
|
207
|
+
private buildPrompt;
|
|
208
|
+
/**
|
|
209
|
+
* Get generation config based on RLM settings
|
|
210
|
+
*/
|
|
211
|
+
private getGenerationConfig;
|
|
212
|
+
/**
|
|
213
|
+
* Estimate token usage
|
|
214
|
+
*/
|
|
215
|
+
private estimateTokenUsage;
|
|
216
|
+
/**
|
|
217
|
+
* Calculate quality score based on sources and confidence
|
|
218
|
+
*/
|
|
219
|
+
private calculateQualityScore;
|
|
220
|
+
/**
|
|
221
|
+
* Apply self-reflection to improve answer
|
|
222
|
+
*/
|
|
223
|
+
private applyReflection;
|
|
224
|
+
/**
|
|
225
|
+
* Get cached answer if valid
|
|
226
|
+
*/
|
|
227
|
+
private getCached;
|
|
228
|
+
/**
|
|
229
|
+
* Set cache entry
|
|
230
|
+
*/
|
|
231
|
+
private setCache;
|
|
232
|
+
/**
|
|
233
|
+
* Simple hash function for cache keys
|
|
234
|
+
*/
|
|
235
|
+
private hashQuery;
|
|
236
|
+
/**
|
|
237
|
+
* Prune expired cache entries
|
|
238
|
+
*/
|
|
239
|
+
private pruneCache;
|
|
240
|
+
/**
|
|
241
|
+
* Utility delay function for streaming simulation
|
|
242
|
+
*/
|
|
243
|
+
private delay;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/rlm/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EAGV,WAAW,EAGZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAkBnC;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAS;IAEhC;;;;;;;;;;;;;;;;;;;;;OAqBG;gBACS,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM;IAO/C;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsD9C;;;;;;;;;;;;;;;;;;OAkBG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC;IA2D9D;;;;;;;;;;;;;;;;;;OAkBG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlF;;;;;;;;;;;;;;OAcG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAavE;;;;;;;;OAQG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOlD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAI9C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IAQhC;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;YACW,eAAe;IA0D7B;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAchB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|