@monoes/memory 1.0.14 → 1.0.16
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/LICENSE +191 -0
- package/README.md +49 -83
- package/dist/cache-manager.d.ts +0 -36
- package/dist/cache-manager.d.ts.map +1 -1
- package/dist/cache-manager.js +0 -78
- package/dist/cache-manager.js.map +1 -1
- package/dist/checkpointer.d.ts.map +1 -1
- package/dist/hnsw-index.d.ts.map +1 -1
- package/dist/hnsw-index.js.map +1 -1
- package/dist/index.d.ts +8 -189
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -326
- package/dist/index.js.map +1 -1
- package/dist/knowledge/document-chunker.js.map +1 -1
- package/dist/knowledge/knowledge-retriever.d.ts.map +1 -1
- package/dist/knowledge/knowledge-retriever.js.map +1 -1
- package/dist/knowledge/knowledge-store.d.ts.map +1 -1
- package/dist/knowledge/knowledge-store.js +4 -6
- package/dist/knowledge/knowledge-store.js.map +1 -1
- package/dist/migration.d.ts.map +1 -1
- package/dist/migration.js +11 -3
- package/dist/migration.js.map +1 -1
- package/dist/prompt-version-store.d.ts.map +1 -1
- package/dist/prompt-version-store.js +9 -20
- package/dist/prompt-version-store.js.map +1 -1
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js.map +1 -1
- package/dist/sql-backend.d.ts +25 -0
- package/dist/sql-backend.d.ts.map +1 -1
- package/dist/sql-backend.js +105 -30
- package/dist/sql-backend.js.map +1 -1
- package/dist/sql-driver.d.ts +2 -2
- package/dist/sql-driver.d.ts.map +1 -1
- package/dist/sql-driver.js.map +1 -1
- package/dist/sql-schema.d.ts +23 -2
- package/dist/sql-schema.d.ts.map +1 -1
- package/dist/sql-schema.js +87 -2
- package/dist/sql-schema.js.map +1 -1
- package/dist/sqlite-backend.d.ts +6 -0
- package/dist/sqlite-backend.d.ts.map +1 -1
- package/dist/sqlite-backend.js +5 -3
- package/dist/sqlite-backend.js.map +1 -1
- package/dist/sqljs-backend.d.ts +4 -0
- package/dist/sqljs-backend.d.ts.map +1 -1
- package/dist/sqljs-backend.js +1 -0
- package/dist/sqljs-backend.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/jsonl-store.d.ts +17 -0
- package/dist/utils/jsonl-store.d.ts.map +1 -0
- package/dist/utils/jsonl-store.js +57 -0
- package/dist/utils/jsonl-store.js.map +1 -0
- package/package.json +10 -12
- package/dist/controller-registry.d.ts +0 -206
- package/dist/controller-registry.d.ts.map +0 -1
- package/dist/controller-registry.js +0 -483
- package/dist/controller-registry.js.map +0 -1
- package/dist/database-provider.d.ts +0 -86
- package/dist/database-provider.d.ts.map +0 -1
- package/dist/database-provider.js +0 -397
- package/dist/database-provider.js.map +0 -1
|
@@ -1,483 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ControllerRegistry - Central controller lifecycle management for memory backend
|
|
3
|
-
*
|
|
4
|
-
* Wraps the configured memory backend (SQLite via better-sqlite3/sql.js as of
|
|
5
|
-
* 2026-07; LanceDB support was fully removed) and adds CLI-specific controllers from
|
|
6
|
-
* @monomind/memory. Manages initialization (level-based ordering), health
|
|
7
|
-
* checks, and graceful shutdown.
|
|
8
|
-
*
|
|
9
|
-
* Per ADR-053: Replaces memory-initializer.js's raw sql.js usage with a unified
|
|
10
|
-
* controller ecosystem routing all memory operations through a single backend.
|
|
11
|
-
*
|
|
12
|
-
* @module @monomind/memory/controller-registry
|
|
13
|
-
*/
|
|
14
|
-
import { EventEmitter } from 'node:events';
|
|
15
|
-
import { TieredCacheManager } from './cache-manager.js';
|
|
16
|
-
// ===== Initialization Levels =====
|
|
17
|
-
/**
|
|
18
|
-
* Level-based initialization order per ADR-053.
|
|
19
|
-
* Controllers at each level can be initialized in parallel.
|
|
20
|
-
* Each level must complete before the next begins.
|
|
21
|
-
*/
|
|
22
|
-
export const INIT_LEVELS = [
|
|
23
|
-
// Level 0: Foundation - already exists
|
|
24
|
-
{ level: 0, controllers: [] },
|
|
25
|
-
// Level 1: Core intelligence
|
|
26
|
-
{ level: 1, controllers: ['reasoningBank', 'hierarchicalMemory', 'learningBridge', 'hybridSearch', 'tieredCache'] },
|
|
27
|
-
// Level 2: Graph & security
|
|
28
|
-
{ level: 2, controllers: ['vectorBackend', 'mutationGuard', 'gnnService'] },
|
|
29
|
-
// Level 3: Specialization
|
|
30
|
-
{ level: 3, controllers: ['skills', 'explainableRecall', 'reflexion', 'attestationLog', 'batchOperations', 'memoryConsolidation'] },
|
|
31
|
-
// Level 4: Causal & routing
|
|
32
|
-
{ level: 4, controllers: ['causalGraph', 'nightlyLearner', 'learningSystem', 'semanticRouter'] },
|
|
33
|
-
// Level 5: Advanced services
|
|
34
|
-
{ level: 5, controllers: ['graphTransformer', 'sonaTrajectory', 'contextSynthesizer', 'sonaOptimizer', 'mmrDiversityRanker', 'guardedVectorBackend'] },
|
|
35
|
-
// Level 6: Session management
|
|
36
|
-
{ level: 6, controllers: ['federatedSession', 'graphAdapter'] },
|
|
37
|
-
];
|
|
38
|
-
/** Pre-computed reverse of INIT_LEVELS for shutdown ordering. */
|
|
39
|
-
const SHUTDOWN_LEVELS = [...INIT_LEVELS].reverse();
|
|
40
|
-
// ===== ControllerRegistry =====
|
|
41
|
-
/**
|
|
42
|
-
* Central registry for memory backend controller lifecycle management.
|
|
43
|
-
*
|
|
44
|
-
* Handles:
|
|
45
|
-
* - Level-based initialization ordering (levels 0-6)
|
|
46
|
-
* - Graceful degradation (each controller fails independently)
|
|
47
|
-
* - Config-driven activation (controllers only instantiate when enabled)
|
|
48
|
-
* - Health check aggregation across all controllers
|
|
49
|
-
* - Ordered shutdown (reverse initialization order)
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```typescript
|
|
53
|
-
* const registry = new ControllerRegistry();
|
|
54
|
-
* await registry.initialize({
|
|
55
|
-
* dbPath: './data/memory.db',
|
|
56
|
-
* dimension: 384,
|
|
57
|
-
* memory: {
|
|
58
|
-
* enableHNSW: true,
|
|
59
|
-
* learningBridge: { sonaMode: 'balanced' },
|
|
60
|
-
* * },
|
|
61
|
-
* });
|
|
62
|
-
*
|
|
63
|
-
* const reasoning = registry.get<ReasoningBank>('reasoningBank');
|
|
64
|
-
*
|
|
65
|
-
* await registry.shutdown();
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
export class ControllerRegistry extends EventEmitter {
|
|
69
|
-
controllers = new Map();
|
|
70
|
-
backend = null;
|
|
71
|
-
config = {};
|
|
72
|
-
initialized = false;
|
|
73
|
-
initTimeMs = 0;
|
|
74
|
-
/**
|
|
75
|
-
* Initialize all controllers in level-based order.
|
|
76
|
-
*
|
|
77
|
-
* Each level's controllers are initialized in parallel within the level.
|
|
78
|
-
* Failures are isolated: a controller that fails to init is marked as
|
|
79
|
-
* unavailable but does not block other controllers.
|
|
80
|
-
*/
|
|
81
|
-
async initialize(config = {}) {
|
|
82
|
-
if (this.initialized)
|
|
83
|
-
return;
|
|
84
|
-
this.initialized = true; // Set early to prevent concurrent re-entry
|
|
85
|
-
this.config = config;
|
|
86
|
-
const startTime = performance.now();
|
|
87
|
-
// Step 1: Set up the backend
|
|
88
|
-
this.backend = config.backend || null;
|
|
89
|
-
// Step 3: Initialize controllers level by level
|
|
90
|
-
for (const level of INIT_LEVELS) {
|
|
91
|
-
const controllersToInit = level.controllers.filter((name) => this.isControllerEnabled(name));
|
|
92
|
-
if (controllersToInit.length === 0)
|
|
93
|
-
continue;
|
|
94
|
-
// Initialize all controllers in this level in parallel
|
|
95
|
-
const results = await Promise.allSettled(controllersToInit.map((name) => this.initController(name, level.level)));
|
|
96
|
-
// Process results
|
|
97
|
-
for (let i = 0; i < results.length; i++) {
|
|
98
|
-
const result = results[i];
|
|
99
|
-
const name = controllersToInit[i];
|
|
100
|
-
if (result.status === 'rejected') {
|
|
101
|
-
const errorMsg = result.reason instanceof Error
|
|
102
|
-
? result.reason.message
|
|
103
|
-
: String(result.reason);
|
|
104
|
-
this.controllers.set(name, {
|
|
105
|
-
name,
|
|
106
|
-
instance: null,
|
|
107
|
-
level: level.level,
|
|
108
|
-
initTimeMs: 0,
|
|
109
|
-
enabled: false,
|
|
110
|
-
error: errorMsg,
|
|
111
|
-
});
|
|
112
|
-
this.emit('controller:failed', { name, error: errorMsg, level: level.level });
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
this.initTimeMs = performance.now() - startTime;
|
|
117
|
-
this.emit('initialized', {
|
|
118
|
-
initTimeMs: this.initTimeMs,
|
|
119
|
-
activeControllers: this.getActiveCount(),
|
|
120
|
-
totalControllers: this.controllers.size,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Shutdown all controllers in reverse initialization order.
|
|
125
|
-
*/
|
|
126
|
-
async shutdown() {
|
|
127
|
-
if (!this.initialized)
|
|
128
|
-
return;
|
|
129
|
-
// Shutdown in reverse level order (SHUTDOWN_LEVELS is pre-computed at module load)
|
|
130
|
-
for (const level of SHUTDOWN_LEVELS) {
|
|
131
|
-
const controllersToShutdown = level.controllers
|
|
132
|
-
.filter((name) => {
|
|
133
|
-
const entry = this.controllers.get(name);
|
|
134
|
-
return entry?.enabled && entry?.instance;
|
|
135
|
-
});
|
|
136
|
-
await Promise.allSettled(controllersToShutdown.map((name) => this.shutdownController(name)));
|
|
137
|
-
}
|
|
138
|
-
this.controllers.clear();
|
|
139
|
-
this.initialized = false;
|
|
140
|
-
this.emit('shutdown');
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Get a controller instance by name.
|
|
144
|
-
* Returns null if the controller is not initialized or unavailable.
|
|
145
|
-
*/
|
|
146
|
-
get(name) {
|
|
147
|
-
const entry = this.controllers.get(name);
|
|
148
|
-
if (entry?.enabled && entry?.instance) {
|
|
149
|
-
return entry.instance;
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Check if a controller is enabled and initialized.
|
|
155
|
-
*/
|
|
156
|
-
isEnabled(name) {
|
|
157
|
-
return this.controllers.get(name)?.enabled ?? false;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Aggregate health check across all controllers.
|
|
161
|
-
*/
|
|
162
|
-
async healthCheck() {
|
|
163
|
-
const controllerHealth = [];
|
|
164
|
-
for (const [name, entry] of this.controllers) {
|
|
165
|
-
controllerHealth.push({
|
|
166
|
-
name,
|
|
167
|
-
status: entry.enabled
|
|
168
|
-
? 'healthy'
|
|
169
|
-
: entry.error
|
|
170
|
-
? 'unavailable'
|
|
171
|
-
: 'degraded',
|
|
172
|
-
initTimeMs: entry.initTimeMs,
|
|
173
|
-
error: entry.error,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
const storageBackendAvailable = this.backend !== null;
|
|
177
|
-
const active = controllerHealth.filter((c) => c.status === 'healthy').length;
|
|
178
|
-
const unavailable = controllerHealth.filter((c) => c.status === 'unavailable').length;
|
|
179
|
-
let status = 'healthy';
|
|
180
|
-
if (unavailable > 0 && active === 0) {
|
|
181
|
-
status = 'unhealthy';
|
|
182
|
-
}
|
|
183
|
-
else if (unavailable > 0) {
|
|
184
|
-
status = 'degraded';
|
|
185
|
-
}
|
|
186
|
-
return {
|
|
187
|
-
status,
|
|
188
|
-
controllers: controllerHealth,
|
|
189
|
-
storageBackendAvailable,
|
|
190
|
-
initTimeMs: this.initTimeMs,
|
|
191
|
-
timestamp: Date.now(),
|
|
192
|
-
activeControllers: active,
|
|
193
|
-
totalControllers: controllerHealth.length,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Get the underlying memory backend instance.
|
|
198
|
-
*/
|
|
199
|
-
/**
|
|
200
|
-
* Get the memory backend.
|
|
201
|
-
*/
|
|
202
|
-
getBackend() {
|
|
203
|
-
return this.backend;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Check if the registry is initialized.
|
|
207
|
-
*/
|
|
208
|
-
isInitialized() {
|
|
209
|
-
return this.initialized;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Get the number of active (successfully initialized) controllers.
|
|
213
|
-
*/
|
|
214
|
-
getActiveCount() {
|
|
215
|
-
let count = 0;
|
|
216
|
-
for (const entry of this.controllers.values()) {
|
|
217
|
-
if (entry.enabled)
|
|
218
|
-
count++;
|
|
219
|
-
}
|
|
220
|
-
return count;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* List all registered controller names and their status.
|
|
224
|
-
*/
|
|
225
|
-
listControllers() {
|
|
226
|
-
return Array.from(this.controllers.entries()).map(([name, entry]) => ({
|
|
227
|
-
name,
|
|
228
|
-
enabled: entry.enabled,
|
|
229
|
-
level: entry.level,
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
|
-
// ===== Private Methods =====
|
|
233
|
-
/**
|
|
234
|
-
* Check whether a controller should be initialized based on config.
|
|
235
|
-
*/
|
|
236
|
-
isControllerEnabled(name) {
|
|
237
|
-
// Explicit enable/disable from config
|
|
238
|
-
if (this.config.controllers) {
|
|
239
|
-
const explicit = this.config.controllers[name];
|
|
240
|
-
if (explicit !== undefined)
|
|
241
|
-
return explicit;
|
|
242
|
-
}
|
|
243
|
-
// Default behavior: enable based on category
|
|
244
|
-
switch (name) {
|
|
245
|
-
// Core intelligence — enabled by default
|
|
246
|
-
case 'reasoningBank':
|
|
247
|
-
case 'learningBridge':
|
|
248
|
-
case 'tieredCache':
|
|
249
|
-
case 'hierarchicalMemory':
|
|
250
|
-
return true;
|
|
251
|
-
// Security — enabled if the memory backend is available
|
|
252
|
-
case 'mutationGuard':
|
|
253
|
-
case 'attestationLog':
|
|
254
|
-
case 'vectorBackend':
|
|
255
|
-
case 'guardedVectorBackend':
|
|
256
|
-
return this.backend !== null;
|
|
257
|
-
// Memory-internal controllers — only if backend available
|
|
258
|
-
case 'skills':
|
|
259
|
-
case 'reflexion':
|
|
260
|
-
case 'causalGraph':
|
|
261
|
-
case 'causalRecall':
|
|
262
|
-
case 'learningSystem':
|
|
263
|
-
case 'explainableRecall':
|
|
264
|
-
case 'nightlyLearner':
|
|
265
|
-
case 'graphTransformer':
|
|
266
|
-
case 'graphAdapter':
|
|
267
|
-
case 'gnnService':
|
|
268
|
-
case 'memoryConsolidation':
|
|
269
|
-
case 'batchOperations':
|
|
270
|
-
case 'contextSynthesizer':
|
|
271
|
-
case 'sonaOptimizer':
|
|
272
|
-
case 'mmrDiversityRanker':
|
|
273
|
-
return this.backend !== null;
|
|
274
|
-
// SemanticRouter — auto-enable if backend available (exported since alpha.10)
|
|
275
|
-
case 'semanticRouter':
|
|
276
|
-
return this.backend !== null;
|
|
277
|
-
// Optional controllers
|
|
278
|
-
case 'hybridSearch':
|
|
279
|
-
case 'sonaTrajectory':
|
|
280
|
-
case 'federatedSession':
|
|
281
|
-
return false; // Require explicit enabling
|
|
282
|
-
default:
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Initialize a single controller with error isolation.
|
|
288
|
-
*/
|
|
289
|
-
async initController(name, level) {
|
|
290
|
-
const startTime = performance.now();
|
|
291
|
-
try {
|
|
292
|
-
const instance = await this.createController(name);
|
|
293
|
-
const initTimeMs = performance.now() - startTime;
|
|
294
|
-
this.controllers.set(name, {
|
|
295
|
-
name,
|
|
296
|
-
instance,
|
|
297
|
-
level,
|
|
298
|
-
initTimeMs,
|
|
299
|
-
enabled: instance !== null,
|
|
300
|
-
error: instance === null ? 'Controller returned null' : undefined,
|
|
301
|
-
});
|
|
302
|
-
if (instance !== null) {
|
|
303
|
-
this.emit('controller:initialized', { name, level, initTimeMs });
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
308
|
-
const initTimeMs = performance.now() - startTime;
|
|
309
|
-
this.controllers.set(name, {
|
|
310
|
-
name,
|
|
311
|
-
instance: null,
|
|
312
|
-
level,
|
|
313
|
-
initTimeMs,
|
|
314
|
-
enabled: false,
|
|
315
|
-
error: errorMsg,
|
|
316
|
-
});
|
|
317
|
-
throw error;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Factory method to create a controller instance.
|
|
322
|
-
* Handles CLI-layer controllers; internal controllers are
|
|
323
|
-
* accessed via backend.getController().
|
|
324
|
-
*/
|
|
325
|
-
async createController(name) {
|
|
326
|
-
switch (name) {
|
|
327
|
-
// ----- CLI-layer controllers -----
|
|
328
|
-
case 'learningBridge':
|
|
329
|
-
return null;
|
|
330
|
-
case 'tieredCache': {
|
|
331
|
-
const config = this.config.memory?.tieredCache || {};
|
|
332
|
-
const cache = new TieredCacheManager({
|
|
333
|
-
maxSize: config.maxSize || 10000,
|
|
334
|
-
ttl: config.ttl || 300000,
|
|
335
|
-
lruEnabled: true,
|
|
336
|
-
writeThrough: false,
|
|
337
|
-
...config,
|
|
338
|
-
});
|
|
339
|
-
return cache;
|
|
340
|
-
}
|
|
341
|
-
case 'hybridSearch':
|
|
342
|
-
// BM25 hybrid search — placeholder for future implementation
|
|
343
|
-
return null;
|
|
344
|
-
case 'semanticRouter':
|
|
345
|
-
return null;
|
|
346
|
-
case 'sonaTrajectory':
|
|
347
|
-
return null;
|
|
348
|
-
case 'hierarchicalMemory':
|
|
349
|
-
return this.createTieredMemoryStub();
|
|
350
|
-
case 'memoryConsolidation':
|
|
351
|
-
return this.createConsolidationStub();
|
|
352
|
-
case 'federatedSession':
|
|
353
|
-
// Federated session — placeholder for Phase 4
|
|
354
|
-
return null;
|
|
355
|
-
// ----- internal controllers (via getController) -----
|
|
356
|
-
// legacy backend.getController() only supports: reflexion/memory, skills, causalGraph/causal
|
|
357
|
-
case 'reasoningBank':
|
|
358
|
-
case 'skills':
|
|
359
|
-
case 'reflexion':
|
|
360
|
-
case 'causalGraph':
|
|
361
|
-
case 'causalRecall':
|
|
362
|
-
case 'learningSystem':
|
|
363
|
-
case 'explainableRecall':
|
|
364
|
-
case 'nightlyLearner':
|
|
365
|
-
case 'graphTransformer':
|
|
366
|
-
case 'batchOperations':
|
|
367
|
-
case 'contextSynthesizer':
|
|
368
|
-
case 'mmrDiversityRanker':
|
|
369
|
-
case 'mutationGuard':
|
|
370
|
-
case 'attestationLog':
|
|
371
|
-
case 'gnnService':
|
|
372
|
-
case 'sonaOptimizer':
|
|
373
|
-
case 'guardedVectorBackend':
|
|
374
|
-
case 'vectorBackend':
|
|
375
|
-
case 'graphAdapter':
|
|
376
|
-
return null;
|
|
377
|
-
default:
|
|
378
|
-
return null;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Shutdown a single controller gracefully.
|
|
383
|
-
*/
|
|
384
|
-
async shutdownController(name) {
|
|
385
|
-
const entry = this.controllers.get(name);
|
|
386
|
-
if (!entry?.instance)
|
|
387
|
-
return;
|
|
388
|
-
try {
|
|
389
|
-
const instance = entry.instance;
|
|
390
|
-
// Try known shutdown methods (always await for safety)
|
|
391
|
-
if (typeof instance.destroy === 'function') {
|
|
392
|
-
await instance.destroy();
|
|
393
|
-
}
|
|
394
|
-
else if (typeof instance.shutdown === 'function') {
|
|
395
|
-
await instance.shutdown();
|
|
396
|
-
}
|
|
397
|
-
else if (typeof instance.close === 'function') {
|
|
398
|
-
await instance.close();
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
catch {
|
|
402
|
-
// Best-effort cleanup
|
|
403
|
-
}
|
|
404
|
-
entry.enabled = false;
|
|
405
|
-
entry.instance = null;
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* Create an EmbeddingService for controllers that need it.
|
|
409
|
-
* Uses the config's embedding generator or creates a minimal local service.
|
|
410
|
-
*/
|
|
411
|
-
createEmbeddingService() {
|
|
412
|
-
// If user provided an embedding generator, wrap it
|
|
413
|
-
if (this.config.embeddingGenerator) {
|
|
414
|
-
return {
|
|
415
|
-
embed: async (text) => this.config.embeddingGenerator(text),
|
|
416
|
-
embedBatch: async (texts) => Promise.all(texts.map(t => this.config.embeddingGenerator(t))),
|
|
417
|
-
initialize: async () => { },
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
// Return a minimal stub — HierarchicalMemory falls back to manualSearch without embeddings
|
|
421
|
-
return {
|
|
422
|
-
embed: async () => new Float32Array(this.config.dimension || 384),
|
|
423
|
-
embedBatch: async (texts) => texts.map(() => new Float32Array(this.config.dimension || 384)),
|
|
424
|
-
initialize: async () => { },
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Lightweight in-memory tiered store (fallback when HierarchicalMemory
|
|
429
|
-
* cannot be initialized from legacy module).
|
|
430
|
-
* Enforces per-tier size limits to prevent unbounded memory growth.
|
|
431
|
-
*/
|
|
432
|
-
createTieredMemoryStub() {
|
|
433
|
-
const MAX_PER_TIER = 5000;
|
|
434
|
-
const tiers = {
|
|
435
|
-
working: new Map(),
|
|
436
|
-
episodic: new Map(),
|
|
437
|
-
semantic: new Map(),
|
|
438
|
-
};
|
|
439
|
-
return {
|
|
440
|
-
store(key, value, tier = 'working') {
|
|
441
|
-
const t = tiers[tier] || tiers.working;
|
|
442
|
-
// Evict oldest if at capacity
|
|
443
|
-
if (t.size >= MAX_PER_TIER) {
|
|
444
|
-
const oldest = t.keys().next().value;
|
|
445
|
-
if (oldest !== undefined)
|
|
446
|
-
t.delete(oldest);
|
|
447
|
-
}
|
|
448
|
-
t.set(key, { value: value.substring(0, 100_000), ts: Date.now() });
|
|
449
|
-
},
|
|
450
|
-
recall(query, topK = 5) {
|
|
451
|
-
const safeTopK = Math.min(Math.max(1, topK), 100);
|
|
452
|
-
const q = query.toLowerCase().substring(0, 10_000);
|
|
453
|
-
const results = [];
|
|
454
|
-
for (const [tierName, map] of Object.entries(tiers)) {
|
|
455
|
-
for (const [key, entry] of map) {
|
|
456
|
-
if (key.toLowerCase().includes(q) || entry.value.toLowerCase().includes(q)) {
|
|
457
|
-
results.push({ key, value: entry.value, tier: tierName, ts: entry.ts });
|
|
458
|
-
if (results.length >= safeTopK * 3)
|
|
459
|
-
break; // Early exit for large stores
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
return results.sort((a, b) => b.ts - a.ts).slice(0, safeTopK);
|
|
464
|
-
},
|
|
465
|
-
getTierStats() {
|
|
466
|
-
return Object.fromEntries(Object.entries(tiers).map(([name, map]) => [name, map.size]));
|
|
467
|
-
},
|
|
468
|
-
};
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* No-op consolidation stub (fallback when MemoryConsolidation
|
|
472
|
-
* cannot be initialized from legacy module).
|
|
473
|
-
*/
|
|
474
|
-
createConsolidationStub() {
|
|
475
|
-
return {
|
|
476
|
-
consolidate() {
|
|
477
|
-
return { promoted: 0, pruned: 0, timestamp: Date.now() };
|
|
478
|
-
},
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
export default ControllerRegistry;
|
|
483
|
-
//# sourceMappingURL=controller-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller-registry.js","sourceRoot":"","sources":["../src/controller-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA2HxD,oCAAoC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,uCAAuC;IACvC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAC7B,6BAA6B;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE;IACnH,4BAA4B;IAC5B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE;IAC3E,0BAA0B;IAC1B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,EAAE;IACnI,4BAA4B;IAC5B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE;IAChG,6BAA6B;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,EAAE;IACtJ,8BAA8B;IAC9B,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE;CAChE,CAAC;AAEF,iEAAiE;AACjE,MAAM,eAAe,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAEnD,iCAAiC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAC1C,WAAW,GAAyC,IAAI,GAAG,EAAE,CAAC;IAC9D,OAAO,GAA0B,IAAI,CAAC;IACtC,MAAM,GAAkB,EAAE,CAAC;IAC3B,WAAW,GAAG,KAAK,CAAC;IACpB,UAAU,GAAG,CAAC,CAAC;IAEvB;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,SAAwB,EAAE;QACzC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,2CAA2C;QAEpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,6BAA6B;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QAEtC,gDAAgD;QAChD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CACzC,CAAC;YAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE7C,uDAAuD;YACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CACxE,CAAC;YAEF,kBAAkB;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAElC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,YAAY,KAAK;wBAC7C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;wBACvB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAE1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;wBACzB,IAAI;wBACJ,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,UAAU,EAAE,CAAC;wBACb,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,cAAc,EAAE;YACxC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,mFAAmF;QAEnF,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW;iBAC5C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzC,OAAO,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEL,MAAM,OAAO,CAAC,UAAU,CACtB,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,GAAG,CAAI,IAAoB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC,QAAa,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAoB;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,gBAAgB,GAAuB,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,gBAAgB,CAAC,IAAI,CAAC;gBACpB,IAAI;gBACJ,MAAM,EAAE,KAAK,CAAC,OAAO;oBACnB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,KAAK,CAAC,KAAK;wBACX,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,UAAU;gBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QAEtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAC7E,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QAEtF,IAAI,MAAM,GAAyC,SAAS,CAAC;QAC7D,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;aAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,UAAU,CAAC;QACtB,CAAC;QAED,OAAO;YACL,MAAM;YACN,WAAW,EAAE,gBAAgB;YAC7B,uBAAuB;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,iBAAiB,EAAE,MAAM;YACzB,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IAEH;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,OAAO;gBAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8BAA8B;IAE9B;;OAEG;IACK,mBAAmB,CAAC,IAAoB;QAC9C,sCAAsC;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;QAC9C,CAAC;QAED,6CAA6C;QAC7C,QAAQ,IAAI,EAAE,CAAC;YACb,yCAAyC;YACzC,KAAK,eAAe,CAAC;YACrB,KAAK,gBAAgB,CAAC;YACtB,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC;YAEd,wDAAwD;YACxD,KAAK,eAAe,CAAC;YACrB,KAAK,gBAAgB,CAAC;YACtB,KAAK,eAAe,CAAC;YACrB,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;YAE/B,0DAA0D;YAC1D,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa,CAAC;YACnB,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,mBAAmB,CAAC;YACzB,KAAK,gBAAgB,CAAC;YACtB,KAAK,kBAAkB,CAAC;YACxB,KAAK,cAAc,CAAC;YACpB,KAAK,YAAY,CAAC;YAClB,KAAK,qBAAqB,CAAC;YAC3B,KAAK,iBAAiB,CAAC;YACvB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,eAAe,CAAC;YACrB,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;YAE/B,8EAA8E;YAC9E,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;YAE/B,uBAAuB;YACvB,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,kBAAkB;gBACrB,OAAO,KAAK,CAAC,CAAC,4BAA4B;YAE5C;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAoB,EAAE,KAAa;QAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;gBACzB,IAAI;gBACJ,QAAQ;gBACR,KAAK;gBACL,UAAU;gBACV,OAAO,EAAE,QAAQ,KAAK,IAAI;gBAC1B,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS;aAClE,CAAC,CAAC;YAEH,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;gBACzB,IAAI;gBACJ,QAAQ,EAAE,IAAI;gBACd,KAAK;gBACL,UAAU;gBACV,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAAC,IAAoB;QACjD,QAAQ,IAAI,EAAE,CAAC;YACb,oCAAoC;YAEpC,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC;YAEd,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC;oBACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;oBAChC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM;oBACzB,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,KAAK;oBACnB,GAAG,MAAM;iBACV,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;YAED,KAAK,cAAc;gBACjB,6DAA6D;gBAC7D,OAAO,IAAI,CAAC;YAEd,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC;YAEd,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC;YAEd,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAEvC,KAAK,qBAAqB;gBACxB,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAExC,KAAK,kBAAkB;gBACrB,8CAA8C;gBAC9C,OAAO,IAAI,CAAC;YAEd,uDAAuD;YACvD,6FAA6F;YAC7F,KAAK,eAAe,CAAC;YACrB,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa,CAAC;YACnB,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,mBAAmB,CAAC;YACzB,KAAK,gBAAgB,CAAC;YACtB,KAAK,kBAAkB,CAAC;YACxB,KAAK,iBAAiB,CAAC;YACvB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,eAAe,CAAC;YACrB,KAAK,gBAAgB,CAAC;YACtB,KAAK,YAAY,CAAC;YAClB,KAAK,eAAe,CAAC;YACrB,KAAK,sBAAsB,CAAC;YAC5B,KAAK,eAAe,CAAC;YACrB,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAoB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,QAAQ;YAAE,OAAO;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAe,CAAC;YAEvC,uDAAuD;YACvD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3C,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnD,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC;iBAAM,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC5B,mDAAmD;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,OAAO;gBACL,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAmB,CAAC,IAAI,CAAC;gBACpE,UAAU,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;aAC3B,CAAC;QACJ,CAAC;QACD,2FAA2F;QAC3F,OAAO;YACL,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;YACjE,UAAU,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;YACtG,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,sBAAsB;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,KAAK,GAA+D;YACxE,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,QAAQ,EAAE,IAAI,GAAG,EAAE;SACpB,CAAC;QACF,OAAO;YACL,KAAK,CAAC,GAAW,EAAE,KAAa,EAAE,IAAI,GAAG,SAAS;gBAChD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;gBACvC,8BAA8B;gBAC9B,IAAI,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;oBACrC,IAAI,MAAM,KAAK,SAAS;wBAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBACD,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,KAAa,EAAE,IAAI,GAAG,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAoE,EAAE,CAAC;gBACpF,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;wBAC/B,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;4BACxE,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC;gCAAE,MAAM,CAAC,8BAA8B;wBAC3E,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;YACD,YAAY;gBACV,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,uBAAuB;QAC7B,OAAO;YACL,WAAW;gBACT,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DatabaseProvider - Platform-aware database selection
|
|
3
|
-
*
|
|
4
|
-
* Automatically selects best backend:
|
|
5
|
-
* - Linux/macOS: better-sqlite3 (native, fast)
|
|
6
|
-
* - Windows: sql.js (WASM, universal) when native fails
|
|
7
|
-
* - Fallback: JSON file storage
|
|
8
|
-
*
|
|
9
|
-
* @module v1/memory/database-provider
|
|
10
|
-
*/
|
|
11
|
-
import { IMemoryBackend } from './types.js';
|
|
12
|
-
/**
|
|
13
|
-
* Available database provider types
|
|
14
|
-
*/
|
|
15
|
-
export type DatabaseProvider = 'better-sqlite3' | 'sql.js' | 'json' | 'auto';
|
|
16
|
-
/**
|
|
17
|
-
* Database creation options
|
|
18
|
-
*/
|
|
19
|
-
export interface DatabaseOptions {
|
|
20
|
-
/** Preferred provider (auto = platform-aware selection) */
|
|
21
|
-
provider?: DatabaseProvider;
|
|
22
|
-
/** Enable verbose logging */
|
|
23
|
-
verbose?: boolean;
|
|
24
|
-
/** Enable WAL mode (better-sqlite3 only) */
|
|
25
|
-
walMode?: boolean;
|
|
26
|
-
/** Enable query optimization */
|
|
27
|
-
optimize?: boolean;
|
|
28
|
-
/** Default namespace */
|
|
29
|
-
defaultNamespace?: string;
|
|
30
|
-
/** Maximum entries before auto-cleanup */
|
|
31
|
-
maxEntries?: number;
|
|
32
|
-
/** Auto-persist interval for sql.js (milliseconds) */
|
|
33
|
-
autoPersistInterval?: number;
|
|
34
|
-
/** Path to sql.js WASM file */
|
|
35
|
-
wasmPath?: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Platform detection result
|
|
39
|
-
*/
|
|
40
|
-
interface PlatformInfo {
|
|
41
|
-
os: string;
|
|
42
|
-
isWindows: boolean;
|
|
43
|
-
isMacOS: boolean;
|
|
44
|
-
isLinux: boolean;
|
|
45
|
-
recommendedProvider: DatabaseProvider;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Create a database instance with platform-aware provider selection
|
|
49
|
-
*
|
|
50
|
-
* @param path - Database file path (:memory: for in-memory)
|
|
51
|
-
* @param options - Database configuration options
|
|
52
|
-
* @returns Initialized database backend
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* // Auto-select best provider for platform
|
|
57
|
-
* const db = await createDatabase('./data/memory.db');
|
|
58
|
-
*
|
|
59
|
-
* // Force specific provider
|
|
60
|
-
* const db = await createDatabase('./data/memory.db', {
|
|
61
|
-
* provider: 'sql.js'
|
|
62
|
-
* });
|
|
63
|
-
*
|
|
64
|
-
* // With custom options
|
|
65
|
-
* const db = await createDatabase('./data/memory.db', {
|
|
66
|
-
* verbose: true,
|
|
67
|
-
* optimize: true,
|
|
68
|
-
* autoPersistInterval: 10000
|
|
69
|
-
* });
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export declare function createDatabase(path: string, options?: DatabaseOptions): Promise<IMemoryBackend>;
|
|
73
|
-
/**
|
|
74
|
-
* Get platform information
|
|
75
|
-
*/
|
|
76
|
-
export declare function getPlatformInfo(): PlatformInfo;
|
|
77
|
-
/**
|
|
78
|
-
* Check which providers are available
|
|
79
|
-
*/
|
|
80
|
-
export declare function getAvailableProviders(): Promise<{
|
|
81
|
-
betterSqlite3: boolean;
|
|
82
|
-
sqlJs: boolean;
|
|
83
|
-
json: boolean;
|
|
84
|
-
}>;
|
|
85
|
-
export {};
|
|
86
|
-
//# sourceMappingURL=database-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database-provider.d.ts","sourceRoot":"","sources":["../src/database-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,cAAc,EASf,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,gBAAgB,CAAC;CACvC;AAmGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAsEzB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAMD"}
|