@monoes/memory 1.0.0 → 1.0.2

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.
Files changed (98) hide show
  1. package/README.md +20 -24
  2. package/dist/agent-memory-scope.d.ts +1 -1
  3. package/dist/agent-memory-scope.js +2 -2
  4. package/dist/agent-memory-scope.js.map +1 -1
  5. package/dist/auto-memory-bridge.d.ts +12 -12
  6. package/dist/auto-memory-bridge.d.ts.map +1 -1
  7. package/dist/auto-memory-bridge.js +24 -18
  8. package/dist/auto-memory-bridge.js.map +1 -1
  9. package/dist/cache-manager.d.ts.map +1 -1
  10. package/dist/cache-manager.js +7 -3
  11. package/dist/cache-manager.js.map +1 -1
  12. package/dist/checkpointer.d.ts.map +1 -1
  13. package/dist/checkpointer.js +14 -4
  14. package/dist/checkpointer.js.map +1 -1
  15. package/dist/controller-registry.d.ts +14 -20
  16. package/dist/controller-registry.d.ts.map +1 -1
  17. package/dist/controller-registry.js +52 -423
  18. package/dist/controller-registry.js.map +1 -1
  19. package/dist/database-provider.d.ts.map +1 -1
  20. package/dist/database-provider.js +3 -15
  21. package/dist/database-provider.js.map +1 -1
  22. package/dist/diskann-backend.d.ts.map +1 -1
  23. package/dist/diskann-backend.js +16 -4
  24. package/dist/diskann-backend.js.map +1 -1
  25. package/dist/episodic-store.js +5 -5
  26. package/dist/episodic-store.js.map +1 -1
  27. package/dist/hnsw-index.d.ts +0 -1
  28. package/dist/hnsw-index.d.ts.map +1 -1
  29. package/dist/hnsw-index.js +2 -48
  30. package/dist/hnsw-index.js.map +1 -1
  31. package/dist/hnsw-lite.d.ts.map +1 -1
  32. package/dist/hnsw-lite.js +5 -1
  33. package/dist/hnsw-lite.js.map +1 -1
  34. package/dist/hybrid-backend.d.ts +29 -31
  35. package/dist/hybrid-backend.d.ts.map +1 -1
  36. package/dist/hybrid-backend.js +153 -152
  37. package/dist/hybrid-backend.js.map +1 -1
  38. package/dist/index.d.ts +19 -31
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +24 -61
  41. package/dist/index.js.map +1 -1
  42. package/dist/lancedb-backend.d.ts +68 -0
  43. package/dist/lancedb-backend.d.ts.map +1 -0
  44. package/dist/lancedb-backend.js +468 -0
  45. package/dist/lancedb-backend.js.map +1 -0
  46. package/dist/learning-bridge.d.ts +19 -1
  47. package/dist/learning-bridge.d.ts.map +1 -1
  48. package/dist/learning-bridge.js +96 -52
  49. package/dist/learning-bridge.js.map +1 -1
  50. package/dist/math-utils.d.ts +6 -0
  51. package/dist/math-utils.d.ts.map +1 -0
  52. package/dist/math-utils.js +34 -0
  53. package/dist/math-utils.js.map +1 -0
  54. package/dist/memory-graph.d.ts +2 -0
  55. package/dist/memory-graph.d.ts.map +1 -1
  56. package/dist/memory-graph.js +22 -5
  57. package/dist/memory-graph.js.map +1 -1
  58. package/dist/migration.d.ts +5 -5
  59. package/dist/migration.d.ts.map +1 -1
  60. package/dist/migration.js +1 -1
  61. package/dist/persistent-sona.d.ts +1 -1
  62. package/dist/persistent-sona.d.ts.map +1 -1
  63. package/dist/persistent-sona.js +3 -25
  64. package/dist/persistent-sona.js.map +1 -1
  65. package/dist/rvf-backend.d.ts +2 -0
  66. package/dist/rvf-backend.d.ts.map +1 -1
  67. package/dist/rvf-backend.js +70 -62
  68. package/dist/rvf-backend.js.map +1 -1
  69. package/dist/sqlite-backend.d.ts +10 -2
  70. package/dist/sqlite-backend.d.ts.map +1 -1
  71. package/dist/sqlite-backend.js +124 -56
  72. package/dist/sqlite-backend.js.map +1 -1
  73. package/dist/sqljs-backend.d.ts +0 -1
  74. package/dist/sqljs-backend.d.ts.map +1 -1
  75. package/dist/sqljs-backend.js +3 -14
  76. package/dist/sqljs-backend.js.map +1 -1
  77. package/dist/tier-manager.d.ts.map +1 -1
  78. package/dist/tier-manager.js +10 -6
  79. package/dist/tier-manager.js.map +1 -1
  80. package/dist/tiers/contextual.d.ts +2 -0
  81. package/dist/tiers/contextual.d.ts.map +1 -1
  82. package/dist/tiers/contextual.js +8 -1
  83. package/dist/tiers/contextual.js.map +1 -1
  84. package/dist/tiers/short-term.js +4 -3
  85. package/dist/tiers/short-term.js.map +1 -1
  86. package/dist/types.d.ts +3 -1
  87. package/dist/types.d.ts.map +1 -1
  88. package/dist/types.js +1 -1
  89. package/dist/types.js.map +1 -1
  90. package/package.json +7 -4
  91. package/dist/agentdb-adapter.d.ts +0 -165
  92. package/dist/agentdb-adapter.d.ts.map +0 -1
  93. package/dist/agentdb-adapter.js +0 -836
  94. package/dist/agentdb-adapter.js.map +0 -1
  95. package/dist/agentdb-backend.d.ts +0 -218
  96. package/dist/agentdb-backend.d.ts.map +0 -1
  97. package/dist/agentdb-backend.js +0 -879
  98. package/dist/agentdb-backend.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
- * ControllerRegistry - Central controller lifecycle management for AgentDB v1
2
+ * ControllerRegistry - Central controller lifecycle management for memory backend
3
3
  *
4
- * Wraps the AgentDB class and adds CLI-specific controllers from @monomind/memory.
4
+ * Wraps the LanceDB backend and adds CLI-specific controllers from @monomind/memory.
5
5
  * Manages initialization (level-based ordering), health checks, and graceful shutdown.
6
6
  *
7
7
  * Per ADR-053: Replaces memory-initializer.js's raw sql.js usage with a unified
8
- * controller ecosystem routing all memory operations through AgentDB v1.
8
+ * controller ecosystem routing all memory operations through LanceDB.
9
9
  *
10
10
  * @module @monomind/memory/controller-registry
11
11
  */
@@ -35,9 +35,11 @@ export const INIT_LEVELS = [
35
35
  // Level 6: Session management
36
36
  { level: 6, controllers: ['federatedSession', 'graphAdapter'] },
37
37
  ];
38
+ /** Pre-computed reverse of INIT_LEVELS for shutdown ordering. */
39
+ const SHUTDOWN_LEVELS = [...INIT_LEVELS].reverse();
38
40
  // ===== ControllerRegistry =====
39
41
  /**
40
- * Central registry for AgentDB v1 controller lifecycle management.
42
+ * Central registry for memory backend controller lifecycle management.
41
43
  *
42
44
  * Handles:
43
45
  * - Level-based initialization ordering (levels 0-6)
@@ -67,7 +69,6 @@ export const INIT_LEVELS = [
67
69
  */
68
70
  export class ControllerRegistry extends EventEmitter {
69
71
  controllers = new Map();
70
- agentdb = null;
71
72
  backend = null;
72
73
  config = {};
73
74
  initialized = false;
@@ -85,9 +86,7 @@ export class ControllerRegistry extends EventEmitter {
85
86
  this.initialized = true; // Set early to prevent concurrent re-entry
86
87
  this.config = config;
87
88
  const startTime = performance.now();
88
- // Step 1: Initialize AgentDB (the core)
89
- await this.initAgentDB(config);
90
- // Step 2: Set up the backend
89
+ // Step 1: Set up the backend
91
90
  this.backend = config.backend || null;
92
91
  // Step 3: Initialize controllers level by level
93
92
  for (const level of INIT_LEVELS) {
@@ -129,9 +128,8 @@ export class ControllerRegistry extends EventEmitter {
129
128
  async shutdown() {
130
129
  if (!this.initialized)
131
130
  return;
132
- // Shutdown in reverse level order
133
- const reverseLevels = [...INIT_LEVELS].reverse();
134
- for (const level of reverseLevels) {
131
+ // Shutdown in reverse level order (SHUTDOWN_LEVELS is pre-computed at module load)
132
+ for (const level of SHUTDOWN_LEVELS) {
135
133
  const controllersToShutdown = level.controllers
136
134
  .filter((name) => {
137
135
  const entry = this.controllers.get(name);
@@ -139,18 +137,6 @@ export class ControllerRegistry extends EventEmitter {
139
137
  });
140
138
  await Promise.allSettled(controllersToShutdown.map((name) => this.shutdownController(name)));
141
139
  }
142
- // Shutdown AgentDB
143
- if (this.agentdb) {
144
- try {
145
- if (typeof this.agentdb.close === 'function') {
146
- await this.agentdb.close();
147
- }
148
- }
149
- catch {
150
- // Best-effort cleanup
151
- }
152
- this.agentdb = null;
153
- }
154
140
  this.controllers.clear();
155
141
  this.initialized = false;
156
142
  this.emit('shutdown');
@@ -160,41 +146,17 @@ export class ControllerRegistry extends EventEmitter {
160
146
  * Returns null if the controller is not initialized or unavailable.
161
147
  */
162
148
  get(name) {
163
- // First check CLI-layer controllers
164
149
  const entry = this.controllers.get(name);
165
150
  if (entry?.enabled && entry?.instance) {
166
151
  return entry.instance;
167
152
  }
168
- // Fall back to AgentDB internal controllers
169
- if (this.agentdb && typeof this.agentdb.getController === 'function') {
170
- try {
171
- const controller = this.agentdb.getController(name);
172
- if (controller)
173
- return controller;
174
- }
175
- catch {
176
- // Controller not available in AgentDB
177
- }
178
- }
179
153
  return null;
180
154
  }
181
155
  /**
182
156
  * Check if a controller is enabled and initialized.
183
157
  */
184
158
  isEnabled(name) {
185
- const entry = this.controllers.get(name);
186
- if (entry?.enabled)
187
- return true;
188
- // Check AgentDB internal controllers
189
- if (this.agentdb && typeof this.agentdb.getController === 'function') {
190
- try {
191
- return this.agentdb.getController(name) !== null;
192
- }
193
- catch {
194
- return false;
195
- }
196
- }
197
- return false;
159
+ return this.controllers.get(name)?.enabled ?? false;
198
160
  }
199
161
  /**
200
162
  * Aggregate health check across all controllers.
@@ -213,16 +175,7 @@ export class ControllerRegistry extends EventEmitter {
213
175
  error: entry.error,
214
176
  });
215
177
  }
216
- // Check AgentDB health
217
- let agentdbAvailable = false;
218
- if (this.agentdb) {
219
- try {
220
- agentdbAvailable = typeof this.agentdb.getController === 'function';
221
- }
222
- catch {
223
- agentdbAvailable = false;
224
- }
225
- }
178
+ const lancedbAvailable = this.backend !== null;
226
179
  const active = controllerHealth.filter((c) => c.status === 'healthy').length;
227
180
  const unavailable = controllerHealth.filter((c) => c.status === 'unavailable').length;
228
181
  let status = 'healthy';
@@ -235,7 +188,7 @@ export class ControllerRegistry extends EventEmitter {
235
188
  return {
236
189
  status,
237
190
  controllers: controllerHealth,
238
- agentdbAvailable,
191
+ lancedbAvailable,
239
192
  initTimeMs: this.initTimeMs,
240
193
  timestamp: Date.now(),
241
194
  activeControllers: active,
@@ -243,11 +196,8 @@ export class ControllerRegistry extends EventEmitter {
243
196
  };
244
197
  }
245
198
  /**
246
- * Get the underlying AgentDB instance.
199
+ * Get the underlying memory backend instance.
247
200
  */
248
- getAgentDB() {
249
- return this.agentdb;
250
- }
251
201
  /**
252
202
  * Get the memory backend.
253
203
  */
@@ -282,57 +232,6 @@ export class ControllerRegistry extends EventEmitter {
282
232
  }));
283
233
  }
284
234
  // ===== Private Methods =====
285
- /**
286
- * Initialize AgentDB instance with dynamic import and fallback chain.
287
- */
288
- async initAgentDB(config) {
289
- try {
290
- // Validate dbPath to prevent path traversal
291
- const dbPath = config.dbPath || ':memory:';
292
- if (dbPath !== ':memory:') {
293
- // Use dynamic import instead of require() — require() is not defined in ESM
294
- // context and silently kills initAgentDB(), disabling all 15+ controllers (#1492).
295
- const { resolve: resolvePath } = await import('node:path');
296
- const resolved = resolvePath(dbPath);
297
- if (resolved.includes('..')) {
298
- this.emit('agentdb:unavailable', { reason: 'Invalid dbPath' });
299
- return;
300
- }
301
- }
302
- const agentdbModule = await import('agentdb');
303
- const AgentDBClass = agentdbModule.AgentDB || agentdbModule.default;
304
- if (!AgentDBClass) {
305
- this.emit('agentdb:unavailable', { reason: 'No AgentDB class found' });
306
- return;
307
- }
308
- this.agentdb = new AgentDBClass({ dbPath });
309
- // Suppress agentdb's noisy info-level output during init
310
- // using stderr redirect instead of monkey-patching console.log
311
- const origLog = console.log;
312
- const suppressFilter = (args) => {
313
- const msg = String(args[0] ?? '');
314
- return msg.includes('Transformers.js') ||
315
- msg.includes('better-sqlite3') ||
316
- msg.includes('[AgentDB]');
317
- };
318
- console.log = (...args) => {
319
- if (!suppressFilter(args))
320
- origLog.apply(console, args);
321
- };
322
- try {
323
- await this.agentdb.initialize();
324
- }
325
- finally {
326
- console.log = origLog;
327
- }
328
- this.emit('agentdb:initialized');
329
- }
330
- catch (error) {
331
- const msg = error instanceof Error ? error.message : String(error);
332
- this.emit('agentdb:unavailable', { reason: msg.substring(0, 200) });
333
- this.agentdb = null;
334
- }
335
- }
336
235
  /**
337
236
  * Check whether a controller should be initialized based on config.
338
237
  */
@@ -354,13 +253,13 @@ export class ControllerRegistry extends EventEmitter {
354
253
  // Graph — enabled if backend available
355
254
  case 'memoryGraph':
356
255
  return !!(this.config.memory?.memoryGraph || this.backend);
357
- // Security — enabled if AgentDB available
256
+ // Security — enabled if LanceDB available
358
257
  case 'mutationGuard':
359
258
  case 'attestationLog':
360
259
  case 'vectorBackend':
361
260
  case 'guardedVectorBackend':
362
- return this.agentdb !== null;
363
- // AgentDB-internal controllers — only if AgentDB available
261
+ return this.backend !== null;
262
+ // Memory-internal controllers — only if backend available
364
263
  case 'skills':
365
264
  case 'reflexion':
366
265
  case 'causalGraph':
@@ -376,10 +275,10 @@ export class ControllerRegistry extends EventEmitter {
376
275
  case 'contextSynthesizer':
377
276
  case 'rvfOptimizer':
378
277
  case 'mmrDiversityRanker':
379
- return this.agentdb !== null;
380
- // SemanticRouter — auto-enable if agentdb available (exported since alpha.10)
278
+ return this.backend !== null;
279
+ // SemanticRouter — auto-enable if backend available (exported since alpha.10)
381
280
  case 'semanticRouter':
382
- return this.agentdb !== null;
281
+ return this.backend !== null;
383
282
  // Optional controllers
384
283
  case 'hybridSearch':
385
284
  case 'agentMemoryScope':
@@ -426,8 +325,8 @@ export class ControllerRegistry extends EventEmitter {
426
325
  }
427
326
  /**
428
327
  * Factory method to create a controller instance.
429
- * Handles CLI-layer controllers; AgentDB-internal controllers are
430
- * accessed via agentdb.getController().
328
+ * Handles CLI-layer controllers; internal controllers are
329
+ * accessed via backend.getController().
431
330
  */
432
331
  async createController(name) {
433
332
  switch (name) {
@@ -436,11 +335,16 @@ export class ControllerRegistry extends EventEmitter {
436
335
  if (!this.backend)
437
336
  return null;
438
337
  const config = this.config.memory?.learningBridge || {};
338
+ let embedder = config.embedder;
439
339
  const bridge = new LearningBridge(this.backend, {
440
340
  sonaMode: config.sonaMode || this.config.neural?.sonaMode || 'balanced',
441
341
  confidenceDecayRate: config.confidenceDecayRate,
442
342
  accessBoostAmount: config.accessBoostAmount,
443
343
  consolidationThreshold: config.consolidationThreshold,
344
+ embedder,
345
+ // Thread the real vector dimension so SONA and the embedder agree
346
+ // (backend MiniLM produces 384-dim vectors, not SONA's 768 hidden width).
347
+ embeddingDim: this.config.dimension ?? config.embeddingDim,
444
348
  enabled: true,
445
349
  });
446
350
  return bridge;
@@ -480,314 +384,39 @@ export class ControllerRegistry extends EventEmitter {
480
384
  case 'agentMemoryScope':
481
385
  // Agent memory scope — placeholder, activated when explicitly enabled
482
386
  return null;
483
- case 'semanticRouter': {
484
- // SemanticRouter exported from agentdb 3.0.0-alpha.10 (ADR-062)
485
- // Constructor: () — requires initialize() after construction
486
- try {
487
- const agentdbModule = await import('agentdb');
488
- const SR = agentdbModule.SemanticRouter;
489
- if (!SR)
490
- return null;
491
- const router = new SR();
492
- await router.initialize();
493
- return router;
494
- }
495
- catch {
496
- return null;
497
- }
498
- }
387
+ case 'semanticRouter':
388
+ return null;
499
389
  case 'sonaTrajectory':
500
- // Delegate to AgentDB's SonaTrajectoryService if available
501
- if (this.agentdb && typeof this.agentdb.getController === 'function') {
502
- try {
503
- return this.agentdb.getController('sonaTrajectory');
504
- }
505
- catch {
506
- return null;
507
- }
508
- }
509
390
  return null;
510
- case 'hierarchicalMemory': {
511
- // HierarchicalMemory exported from agentdb 3.0.0-alpha.10 (ADR-066 Phase P2-3)
512
- // Constructor: (db, embedder, vectorBackend?, graphBackend?, config?)
513
- if (!this.agentdb)
514
- return this.createTieredMemoryStub();
515
- try {
516
- const agentdbModule = await import('agentdb');
517
- const HM = agentdbModule.HierarchicalMemory;
518
- if (!HM)
519
- return this.createTieredMemoryStub();
520
- const embedder = this.createEmbeddingService();
521
- const hm = new HM(this.agentdb.database, embedder);
522
- await hm.initializeDatabase();
523
- return hm;
524
- }
525
- catch {
526
- return this.createTieredMemoryStub();
527
- }
528
- }
529
- case 'memoryConsolidation': {
530
- // MemoryConsolidation exported from agentdb 3.0.0-alpha.10 (ADR-066 Phase P2-3)
531
- // Constructor: (db, hierarchicalMemory, embedder, vectorBackend?, graphBackend?, config?)
532
- if (!this.agentdb)
533
- return this.createConsolidationStub();
534
- try {
535
- const agentdbModule = await import('agentdb');
536
- const MC = agentdbModule.MemoryConsolidation;
537
- if (!MC)
538
- return this.createConsolidationStub();
539
- // Get the HierarchicalMemory instance (must be initialized at level 1 before us at level 3)
540
- const hm = this.get('hierarchicalMemory');
541
- if (!hm || typeof hm.recall !== 'function' || typeof hm.store !== 'function') {
542
- return this.createConsolidationStub();
543
- }
544
- const embedder = this.createEmbeddingService();
545
- const mc = new MC(this.agentdb.database, hm, embedder);
546
- await mc.initializeDatabase();
547
- return mc;
548
- }
549
- catch {
550
- return this.createConsolidationStub();
551
- }
552
- }
391
+ case 'hierarchicalMemory':
392
+ return this.createTieredMemoryStub();
393
+ case 'memoryConsolidation':
394
+ return this.createConsolidationStub();
553
395
  case 'federatedSession':
554
396
  // Federated session — placeholder for Phase 4
555
397
  return null;
556
- // ----- AgentDB-internal controllers (via getController) -----
557
- // AgentDB.getController() only supports: reflexion/memory, skills, causalGraph/causal
558
- case 'reasoningBank': {
559
- // ReasoningBank is exported directly, not via getController
560
- if (!this.agentdb)
561
- return null;
562
- try {
563
- const agentdbModule = await import('agentdb');
564
- const RB = agentdbModule.ReasoningBank;
565
- if (!RB)
566
- return null;
567
- const embedder = this.createEmbeddingService();
568
- return new RB(this.agentdb.database, embedder);
569
- }
570
- catch {
571
- return null;
572
- }
573
- }
398
+ // ----- internal controllers (via getController) -----
399
+ // legacy backend.getController() only supports: reflexion/memory, skills, causalGraph/causal
400
+ case 'reasoningBank':
574
401
  case 'skills':
575
402
  case 'reflexion':
576
- case 'causalGraph': {
577
- if (!this.agentdb || typeof this.agentdb.getController !== 'function')
578
- return null;
579
- try {
580
- return this.agentdb.getController(name) ?? null;
581
- }
582
- catch {
583
- return null;
584
- }
585
- }
586
- case 'causalRecall': {
587
- if (!this.agentdb)
588
- return null;
589
- try {
590
- const agentdbModule = await import('agentdb');
591
- const CR = agentdbModule.CausalRecall;
592
- if (!CR)
593
- return null;
594
- return new CR(this.agentdb.database);
595
- }
596
- catch {
597
- return null;
598
- }
599
- }
600
- case 'learningSystem': {
601
- if (!this.agentdb)
602
- return null;
603
- try {
604
- const agentdbModule = await import('agentdb');
605
- const LS = agentdbModule.LearningSystem;
606
- if (!LS)
607
- return null;
608
- return new LS(this.agentdb.database);
609
- }
610
- catch {
611
- return null;
612
- }
613
- }
614
- case 'explainableRecall': {
615
- if (!this.agentdb)
616
- return null;
617
- try {
618
- const agentdbModule = await import('agentdb');
619
- const ER = agentdbModule.ExplainableRecall;
620
- if (!ER)
621
- return null;
622
- return new ER(this.agentdb.database);
623
- }
624
- catch {
625
- return null;
626
- }
627
- }
628
- case 'nightlyLearner': {
629
- if (!this.agentdb)
630
- return null;
631
- try {
632
- const agentdbModule = await import('agentdb');
633
- const NL = agentdbModule.NightlyLearner;
634
- if (!NL)
635
- return null;
636
- return new NL(this.agentdb.database);
637
- }
638
- catch {
639
- return null;
640
- }
641
- }
642
- case 'graphTransformer': {
643
- if (!this.agentdb)
644
- return null;
645
- try {
646
- const agentdbModule = await import('agentdb');
647
- const GT = agentdbModule.CausalMemoryGraph;
648
- if (!GT)
649
- return null;
650
- return new GT(this.agentdb.database);
651
- }
652
- catch {
653
- return null;
654
- }
655
- }
656
- // ----- Direct-instantiation controllers -----
657
- case 'batchOperations': {
658
- if (!this.agentdb)
659
- return null;
660
- try {
661
- const agentdbModule = await import('agentdb');
662
- const BO = agentdbModule.BatchOperations;
663
- if (!BO)
664
- return null;
665
- const embedder = this.config.embeddingGenerator || null;
666
- return new BO(this.agentdb.database, embedder);
667
- }
668
- catch {
669
- return null;
670
- }
671
- }
672
- case 'contextSynthesizer': {
673
- // ContextSynthesizer.synthesize is static — return the class itself
674
- try {
675
- const agentdbModule = await import('agentdb');
676
- return agentdbModule.ContextSynthesizer ?? null;
677
- }
678
- catch {
679
- return null;
680
- }
681
- }
682
- case 'mmrDiversityRanker': {
683
- try {
684
- const agentdbModule = await import('agentdb');
685
- const MMR = agentdbModule.MMRDiversityRanker;
686
- if (!MMR)
687
- return null;
688
- return new MMR();
689
- }
690
- catch {
691
- return null;
692
- }
693
- }
694
- case 'mutationGuard': {
695
- // MutationGuard exported from agentdb 3.0.0-alpha.10 (ADR-060)
696
- // Constructor: (config?) where config.dimension, config.maxElements, config.enableWasmProofs
697
- if (!this.agentdb)
698
- return null;
699
- try {
700
- const agentdbModule = await import('agentdb');
701
- const MG = agentdbModule.MutationGuard;
702
- if (!MG)
703
- return null;
704
- return new MG({ dimension: this.config.dimension || 384 });
705
- }
706
- catch {
707
- return null;
708
- }
709
- }
710
- case 'attestationLog': {
711
- // AttestationLog exported from agentdb 3.0.0-alpha.10 (ADR-060)
712
- // Constructor: (db) — uses database for append-only audit log
713
- if (!this.agentdb)
714
- return null;
715
- try {
716
- const agentdbModule = await import('agentdb');
717
- const AL = agentdbModule.AttestationLog;
718
- if (!AL)
719
- return null;
720
- return new AL(this.agentdb.database);
721
- }
722
- catch {
723
- return null;
724
- }
725
- }
726
- case 'gnnService': {
727
- // GNNService exported from agentdb 3.0.0-alpha.10 (ADR-062)
728
- // Constructor: (config?) — requires initialize() after construction
729
- try {
730
- const agentdbModule = await import('agentdb');
731
- const GNN = agentdbModule.GNNService;
732
- if (!GNN)
733
- return null;
734
- const gnn = new GNN({ inputDim: this.config.dimension || 384 });
735
- await gnn.initialize();
736
- return gnn;
737
- }
738
- catch {
739
- return null;
740
- }
741
- }
742
- case 'rvfOptimizer': {
743
- // RVFOptimizer exported from agentdb 3.0.0-alpha.10 (ADR-062/065)
744
- // Constructor: (config?) — no-arg for defaults
745
- try {
746
- const agentdbModule = await import('agentdb');
747
- const RVF = agentdbModule.RVFOptimizer;
748
- if (!RVF)
749
- return null;
750
- return new RVF();
751
- }
752
- catch {
753
- return null;
754
- }
755
- }
756
- case 'guardedVectorBackend': {
757
- // GuardedVectorBackend exported from agentdb 3.0.0-alpha.10 (ADR-060)
758
- // Constructor: (innerBackend, mutationGuard, attestationLog?)
759
- // Requires vectorBackend and mutationGuard to be initialized first (level 2)
760
- if (!this.agentdb)
761
- return null;
762
- try {
763
- const vb = this.get('vectorBackend');
764
- const guard = this.get('mutationGuard');
765
- if (!vb || !guard)
766
- return null;
767
- const agentdbModule = await import('agentdb');
768
- const GVB = agentdbModule.GuardedVectorBackend;
769
- if (!GVB)
770
- return null;
771
- const log = this.get('attestationLog');
772
- return new GVB(vb, guard, log || undefined);
773
- }
774
- catch {
775
- return null;
776
- }
777
- }
403
+ case 'causalGraph':
404
+ case 'causalRecall':
405
+ case 'learningSystem':
406
+ case 'explainableRecall':
407
+ case 'nightlyLearner':
408
+ case 'graphTransformer':
409
+ case 'batchOperations':
410
+ case 'contextSynthesizer':
411
+ case 'mmrDiversityRanker':
412
+ case 'mutationGuard':
413
+ case 'attestationLog':
414
+ case 'gnnService':
415
+ case 'rvfOptimizer':
416
+ case 'guardedVectorBackend':
778
417
  case 'vectorBackend':
779
- case 'graphAdapter': {
780
- // These are accessed via AgentDB internal state, not direct construction
781
- if (!this.agentdb)
782
- return null;
783
- try {
784
- if (typeof this.agentdb.getController === 'function') {
785
- return this.agentdb.getController(name) ?? null;
786
- }
787
- }
788
- catch { /* fallthrough */ }
418
+ case 'graphAdapter':
789
419
  return null;
790
- }
791
420
  default:
792
421
  return null;
793
422
  }
@@ -840,7 +469,7 @@ export class ControllerRegistry extends EventEmitter {
840
469
  }
841
470
  /**
842
471
  * Lightweight in-memory tiered store (fallback when HierarchicalMemory
843
- * cannot be initialized from agentdb).
472
+ * cannot be initialized from legacy module).
844
473
  * Enforces per-tier size limits to prevent unbounded memory growth.
845
474
  */
846
475
  createTieredMemoryStub() {
@@ -883,7 +512,7 @@ export class ControllerRegistry extends EventEmitter {
883
512
  }
884
513
  /**
885
514
  * No-op consolidation stub (fallback when MemoryConsolidation
886
- * cannot be initialized from agentdb).
515
+ * cannot be initialized from legacy module).
887
516
  */
888
517
  createConsolidationStub() {
889
518
  return {