@claude-flow/memory 3.0.0-alpha.8 → 3.0.0

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 (184) hide show
  1. package/README.md +308 -37
  2. package/dist/agent-memory-scope.d.ts.map +1 -1
  3. package/dist/agent-memory-scope.js +10 -2
  4. package/dist/agent-memory-scope.js.map +1 -1
  5. package/dist/agentdb-adapter-key-isolation.test.d.ts +2 -0
  6. package/dist/agentdb-adapter-key-isolation.test.d.ts.map +1 -0
  7. package/dist/agentdb-adapter-key-isolation.test.js +175 -0
  8. package/dist/agentdb-adapter-key-isolation.test.js.map +1 -0
  9. package/dist/agentdb-adapter-upsert.test.d.ts +2 -0
  10. package/dist/agentdb-adapter-upsert.test.d.ts.map +1 -0
  11. package/dist/agentdb-adapter-upsert.test.js +216 -0
  12. package/dist/agentdb-adapter-upsert.test.js.map +1 -0
  13. package/dist/agentdb-adapter.d.ts +70 -1
  14. package/dist/agentdb-adapter.d.ts.map +1 -1
  15. package/dist/agentdb-adapter.js +365 -32
  16. package/dist/agentdb-adapter.js.map +1 -1
  17. package/dist/agentdb-backend.d.ts +25 -0
  18. package/dist/agentdb-backend.d.ts.map +1 -1
  19. package/dist/agentdb-backend.js +113 -28
  20. package/dist/agentdb-backend.js.map +1 -1
  21. package/dist/agentdb-retrieval-guard.d.ts +76 -0
  22. package/dist/agentdb-retrieval-guard.d.ts.map +1 -0
  23. package/dist/agentdb-retrieval-guard.js +77 -0
  24. package/dist/agentdb-retrieval-guard.js.map +1 -0
  25. package/dist/agentdb-retrieval-guard.test.d.ts +12 -0
  26. package/dist/agentdb-retrieval-guard.test.d.ts.map +1 -0
  27. package/dist/agentdb-retrieval-guard.test.js +129 -0
  28. package/dist/agentdb-retrieval-guard.test.js.map +1 -0
  29. package/dist/auto-memory-bridge.d.ts +12 -1
  30. package/dist/auto-memory-bridge.d.ts.map +1 -1
  31. package/dist/auto-memory-bridge.js +101 -7
  32. package/dist/auto-memory-bridge.js.map +1 -1
  33. package/dist/auto-memory-bridge.test.js +121 -15
  34. package/dist/auto-memory-bridge.test.js.map +1 -1
  35. package/dist/auto-memory-index-3224.test.d.ts +2 -0
  36. package/dist/auto-memory-index-3224.test.d.ts.map +1 -0
  37. package/dist/auto-memory-index-3224.test.js +77 -0
  38. package/dist/auto-memory-index-3224.test.js.map +1 -0
  39. package/dist/consolidator-embedding-benchmark.test.d.ts +39 -0
  40. package/dist/consolidator-embedding-benchmark.test.d.ts.map +1 -0
  41. package/dist/consolidator-embedding-benchmark.test.js +366 -0
  42. package/dist/consolidator-embedding-benchmark.test.js.map +1 -0
  43. package/dist/consolidator.d.ts +131 -0
  44. package/dist/consolidator.d.ts.map +1 -0
  45. package/dist/consolidator.js +309 -0
  46. package/dist/consolidator.js.map +1 -0
  47. package/dist/consolidator.test.d.ts +17 -0
  48. package/dist/consolidator.test.d.ts.map +1 -0
  49. package/dist/consolidator.test.js +376 -0
  50. package/dist/consolidator.test.js.map +1 -0
  51. package/dist/controller-registry.d.ts +290 -0
  52. package/dist/controller-registry.d.ts.map +1 -0
  53. package/dist/controller-registry.js +1095 -0
  54. package/dist/controller-registry.js.map +1 -0
  55. package/dist/controller-registry.test.d.ts +14 -0
  56. package/dist/controller-registry.test.d.ts.map +1 -0
  57. package/dist/controller-registry.test.js +818 -0
  58. package/dist/controller-registry.test.js.map +1 -0
  59. package/dist/database-provider.d.ts +14 -2
  60. package/dist/database-provider.d.ts.map +1 -1
  61. package/dist/database-provider.js +63 -3
  62. package/dist/database-provider.js.map +1 -1
  63. package/dist/database-provider.test.js +56 -3
  64. package/dist/database-provider.test.js.map +1 -1
  65. package/dist/entity-tagger.d.ts +31 -0
  66. package/dist/entity-tagger.d.ts.map +1 -0
  67. package/dist/entity-tagger.js +80 -0
  68. package/dist/entity-tagger.js.map +1 -0
  69. package/dist/entity-tagger.test.d.ts +12 -0
  70. package/dist/entity-tagger.test.d.ts.map +1 -0
  71. package/dist/entity-tagger.test.js +70 -0
  72. package/dist/entity-tagger.test.js.map +1 -0
  73. package/dist/fts5.test.d.ts +13 -0
  74. package/dist/fts5.test.d.ts.map +1 -0
  75. package/dist/fts5.test.js +144 -0
  76. package/dist/fts5.test.js.map +1 -0
  77. package/dist/graceful-retrieval.test.d.ts +14 -0
  78. package/dist/graceful-retrieval.test.d.ts.map +1 -0
  79. package/dist/graceful-retrieval.test.js +251 -0
  80. package/dist/graceful-retrieval.test.js.map +1 -0
  81. package/dist/hnsw-index.d.ts +62 -0
  82. package/dist/hnsw-index.d.ts.map +1 -1
  83. package/dist/hnsw-index.js +461 -16
  84. package/dist/hnsw-index.js.map +1 -1
  85. package/dist/hnsw-persistence.test.d.ts +13 -0
  86. package/dist/hnsw-persistence.test.d.ts.map +1 -0
  87. package/dist/hnsw-persistence.test.js +208 -0
  88. package/dist/hnsw-persistence.test.js.map +1 -0
  89. package/dist/hnsw-quantization.test.d.ts +17 -0
  90. package/dist/hnsw-quantization.test.d.ts.map +1 -0
  91. package/dist/hnsw-quantization.test.js +140 -0
  92. package/dist/hnsw-quantization.test.js.map +1 -0
  93. package/dist/hybrid-backend.d.ts +46 -2
  94. package/dist/hybrid-backend.d.ts.map +1 -1
  95. package/dist/hybrid-backend.js +120 -21
  96. package/dist/hybrid-backend.js.map +1 -1
  97. package/dist/hybrid-backend.test.js +139 -5
  98. package/dist/hybrid-backend.test.js.map +1 -1
  99. package/dist/index.d.ts +164 -10
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +272 -30
  102. package/dist/index.js.map +1 -1
  103. package/dist/index.test.d.ts +10 -0
  104. package/dist/index.test.d.ts.map +1 -0
  105. package/dist/index.test.js +71 -0
  106. package/dist/index.test.js.map +1 -0
  107. package/dist/json-security.d.ts +12 -0
  108. package/dist/json-security.d.ts.map +1 -0
  109. package/dist/json-security.js +20 -0
  110. package/dist/json-security.js.map +1 -0
  111. package/dist/learning-bridge.d.ts +29 -0
  112. package/dist/learning-bridge.d.ts.map +1 -1
  113. package/dist/learning-bridge.js +71 -6
  114. package/dist/learning-bridge.js.map +1 -1
  115. package/dist/learning-bridge.test.js +181 -1
  116. package/dist/learning-bridge.test.js.map +1 -1
  117. package/dist/memory-key.d.ts +3 -0
  118. package/dist/memory-key.d.ts.map +1 -0
  119. package/dist/memory-key.js +5 -0
  120. package/dist/memory-key.js.map +1 -0
  121. package/dist/migration.d.ts +19 -4
  122. package/dist/migration.d.ts.map +1 -1
  123. package/dist/migration.js +99 -24
  124. package/dist/migration.js.map +1 -1
  125. package/dist/migration.test.d.ts +11 -0
  126. package/dist/migration.test.d.ts.map +1 -0
  127. package/dist/migration.test.js +141 -0
  128. package/dist/migration.test.js.map +1 -0
  129. package/dist/mmr-benchmark.test.d.ts +2 -0
  130. package/dist/mmr-benchmark.test.d.ts.map +1 -0
  131. package/dist/mmr-benchmark.test.js +286 -0
  132. package/dist/mmr-benchmark.test.js.map +1 -0
  133. package/dist/mmr-rerank-perf.test.d.ts +2 -0
  134. package/dist/mmr-rerank-perf.test.d.ts.map +1 -0
  135. package/dist/mmr-rerank-perf.test.js +191 -0
  136. package/dist/mmr-rerank-perf.test.js.map +1 -0
  137. package/dist/persistent-sona.d.ts +144 -0
  138. package/dist/persistent-sona.d.ts.map +1 -0
  139. package/dist/persistent-sona.js +332 -0
  140. package/dist/persistent-sona.js.map +1 -0
  141. package/dist/rvf-backend.d.ts +53 -0
  142. package/dist/rvf-backend.d.ts.map +1 -0
  143. package/dist/rvf-backend.js +643 -0
  144. package/dist/rvf-backend.js.map +1 -0
  145. package/dist/rvf-learning-store.d.ts +139 -0
  146. package/dist/rvf-learning-store.d.ts.map +1 -0
  147. package/dist/rvf-learning-store.js +295 -0
  148. package/dist/rvf-learning-store.js.map +1 -0
  149. package/dist/rvf-migration.d.ts +45 -0
  150. package/dist/rvf-migration.d.ts.map +1 -0
  151. package/dist/rvf-migration.js +254 -0
  152. package/dist/rvf-migration.js.map +1 -0
  153. package/dist/smart-retrieval-scores.test.d.ts +2 -0
  154. package/dist/smart-retrieval-scores.test.d.ts.map +1 -0
  155. package/dist/smart-retrieval-scores.test.js +75 -0
  156. package/dist/smart-retrieval-scores.test.js.map +1 -0
  157. package/dist/smart-retrieval.d.ts +141 -0
  158. package/dist/smart-retrieval.d.ts.map +1 -0
  159. package/dist/smart-retrieval.js +389 -0
  160. package/dist/smart-retrieval.js.map +1 -0
  161. package/dist/smart-retrieval.test.d.ts +2 -0
  162. package/dist/smart-retrieval.test.d.ts.map +1 -0
  163. package/dist/smart-retrieval.test.js +418 -0
  164. package/dist/smart-retrieval.test.js.map +1 -0
  165. package/dist/sqlite-backend.d.ts +10 -0
  166. package/dist/sqlite-backend.d.ts.map +1 -1
  167. package/dist/sqlite-backend.js +101 -5
  168. package/dist/sqlite-backend.js.map +1 -1
  169. package/dist/sqljs-backend.d.ts +9 -0
  170. package/dist/sqljs-backend.d.ts.map +1 -1
  171. package/dist/sqljs-backend.js +91 -3
  172. package/dist/sqljs-backend.js.map +1 -1
  173. package/dist/tiered-memory.d.ts +171 -0
  174. package/dist/tiered-memory.d.ts.map +1 -0
  175. package/dist/tiered-memory.js +350 -0
  176. package/dist/tiered-memory.js.map +1 -0
  177. package/dist/tiered-memory.test.d.ts +9 -0
  178. package/dist/tiered-memory.test.d.ts.map +1 -0
  179. package/dist/tiered-memory.test.js +220 -0
  180. package/dist/tiered-memory.test.js.map +1 -0
  181. package/dist/types.d.ts +17 -0
  182. package/dist/types.d.ts.map +1 -1
  183. package/dist/types.js.map +1 -1
  184. package/package.json +10 -8
package/dist/index.js CHANGED
@@ -47,40 +47,81 @@ export { generateMemoryId, createDefaultEntry, PERFORMANCE_TARGETS, } from './ty
47
47
  export { AutoMemoryBridge, resolveAutoMemoryDir, findGitRoot } from './auto-memory-bridge.js';
48
48
  // ===== Learning Bridge =====
49
49
  export { LearningBridge } from './learning-bridge.js';
50
+ // ===== RVF Learning Persistence (ADR-057 Phase 6) =====
51
+ export { RvfLearningStore } from './rvf-learning-store.js';
52
+ export { PersistentSonaCoordinator } from './persistent-sona.js';
53
+ // ===== RVF Migration (Bidirectional) =====
54
+ export { RvfMigrator } from './rvf-migration.js';
50
55
  // ===== Knowledge Graph =====
51
56
  export { MemoryGraph } from './memory-graph.js';
52
57
  // ===== Agent-Scoped Memory =====
53
58
  export { resolveAgentMemoryDir, createAgentBridge, transferKnowledge, listAgentScopes, } from './agent-memory-scope.js';
59
+ // ===== Controller Registry (ADR-053) =====
60
+ export { ControllerRegistry, INIT_LEVELS } from './controller-registry.js';
61
+ // ===== Tiered Memory with Temporal Validity (Zep/Graphiti-style) =====
62
+ export { TieredMemoryStore, isTemporallyValid } from './tiered-memory.js';
54
63
  // ===== Core Components =====
55
64
  export { AgentDBAdapter } from './agentdb-adapter.js';
56
65
  export { AgentDBBackend } from './agentdb-backend.js';
66
+ export { AgentDbRetrievalGuard, createAgentDbRetrievalGuard, isRetrievalGuardEnabled, isRetrievalGuardStrict, } from './agentdb-retrieval-guard.js';
57
67
  export { SQLiteBackend } from './sqlite-backend.js';
58
68
  export { SqlJsBackend } from './sqljs-backend.js';
59
69
  export { HybridBackend } from './hybrid-backend.js';
70
+ // `RvfBackend` and `HnswLite` are intentionally NOT re-exported from the top level
71
+ // per ADR-125 Phase 1. `RvfBackend` remains reachable via
72
+ // `createDatabase({ provider: 'rvf' })`. The legacy `hnsw-lite.ts` module was
73
+ // deleted by ADR-125 Phase 3; its brute-force-degrading code is inlined into
74
+ // `rvf-backend.ts` as a private helper.
60
75
  export { HNSWIndex } from './hnsw-index.js';
61
76
  export { CacheManager, TieredCacheManager } from './cache-manager.js';
62
77
  export { QueryBuilder, query, QueryTemplates } from './query-builder.js';
63
78
  export { MemoryMigrator, createMigrator, migrateMultipleSources } from './migration.js';
64
79
  export { createDatabase, getPlatformInfo, getAvailableProviders } from './database-provider.js';
80
+ // ===== Smart Retrieval (ADR-090) =====
81
+ export { smartSearch, defaultQueryExpansions } from './smart-retrieval.js';
65
82
  // ===== Unified Memory Service =====
66
83
  import { EventEmitter } from 'node:events';
67
84
  import { AgentDBAdapter } from './agentdb-adapter.js';
68
85
  import { MemoryMigrator } from './migration.js';
69
86
  /**
70
- * Unified Memory Service
87
+ * Memory Service implementation (legacy class name).
71
88
  *
72
- * High-level interface for the V3 memory system that provides:
89
+ * @deprecated Use {@link MemoryService} — the canonical name introduced by
90
+ * ADR-125 Phase 1. `UnifiedMemoryService` is preserved as an alias and will
91
+ * continue to work through `@claude-flow/memory@3.0.0-rc`. Both names refer
92
+ * to the same class.
93
+ *
94
+ * High-level interface that provides:
73
95
  * - Simple API for common operations
74
96
  * - Automatic embedding generation
75
97
  * - Cross-agent memory sharing
76
98
  * - SONA integration for learning
77
99
  * - Event-driven notifications
78
100
  * - Performance monitoring
101
+ *
102
+ * @see {@link MemoryService} for the canonical alias.
79
103
  */
80
104
  export class UnifiedMemoryService extends EventEmitter {
81
105
  adapter;
82
106
  config;
83
107
  initialized = false;
108
+ /** Total successful `store()` calls since last snapshot trigger (ADR-125 Phase 3). */
109
+ storeCountSinceSnapshot = 0;
110
+ /** Resolved snapshot interval — see {@link UnifiedMemoryServiceConfig.snapshotInterval}. */
111
+ snapshotInterval;
112
+ /** Background consolidator timer (ADR-125 Phase 4). */
113
+ consolidatorTimer = null;
114
+ /** Lazy-loaded consolidator instance (ADR-125 Phase 4). */
115
+ consolidator = null;
116
+ /**
117
+ * The active memory backend. Defaults to the `AgentDBAdapter` created from
118
+ * config, but can be any `IMemoryBackend` implementation (e.g. `HybridBackend`
119
+ * when constructed via `createHybridService` per ADR-009 / ADR-125 Phase 2).
120
+ *
121
+ * Public so consumers can introspect the backend type without reaching for
122
+ * `getAdapter()` (which is AgentDB-specific).
123
+ */
124
+ backend;
84
125
  constructor(config = {}) {
85
126
  super();
86
127
  this.config = {
@@ -89,6 +130,10 @@ export class UnifiedMemoryService extends EventEmitter {
89
130
  autoEmbed: true,
90
131
  ...config,
91
132
  };
133
+ // ADR-125 Phase 3 — snapshot every Nth store. 0/Infinity = disabled.
134
+ const raw = this.config.snapshotInterval;
135
+ this.snapshotInterval =
136
+ raw === undefined ? 1000 : raw === 0 ? Infinity : raw;
92
137
  this.adapter = new AgentDBAdapter({
93
138
  dimensions: this.config.dimensions,
94
139
  cacheEnabled: this.config.cacheEnabled,
@@ -102,6 +147,9 @@ export class UnifiedMemoryService extends EventEmitter {
102
147
  persistencePath: this.config.persistencePath,
103
148
  maxEntries: this.config.maxEntries,
104
149
  });
150
+ // Default backend is the AgentDB adapter — ADR-125 Phase 2 introduces the
151
+ // ability to replace it via `withBackend()` / `createHybridService`.
152
+ this.backend = this.adapter;
105
153
  // Forward adapter events
106
154
  this.adapter.on('entry:stored', (data) => this.emit('entry:stored', data));
107
155
  this.adapter.on('entry:updated', (data) => this.emit('entry:updated', data));
@@ -110,76 +158,235 @@ export class UnifiedMemoryService extends EventEmitter {
110
158
  this.adapter.on('cache:miss', (data) => this.emit('cache:miss', data));
111
159
  this.adapter.on('index:added', (data) => this.emit('index:added', data));
112
160
  }
161
+ /**
162
+ * Replace the active backend with a pre-built `IMemoryBackend`.
163
+ *
164
+ * Used by `createHybridService` (ADR-125 Phase 2) to wire `HybridBackend`
165
+ * through `createDatabase` rather than instantiating `AgentDBAdapter`
166
+ * directly. The legacy `AgentDBAdapter` instance is kept around for the
167
+ * `storeEntry` / `semanticSearch` convenience methods that the IMemoryBackend
168
+ * interface doesn't cover; those calls still flow through it.
169
+ *
170
+ * Returns `this` for chaining.
171
+ *
172
+ * @internal Prefer the factory functions (`createHybridService`,
173
+ * `createPersistentService`, etc.) over calling this directly.
174
+ */
175
+ withBackend(backend) {
176
+ this.backend = backend;
177
+ return this;
178
+ }
113
179
  // ===== Lifecycle =====
114
180
  async initialize() {
115
181
  if (this.initialized)
116
182
  return;
117
- await this.adapter.initialize();
183
+ await this.backend.initialize();
184
+ // If the active backend is something other than the adapter (e.g. a
185
+ // HybridBackend wired by createHybridService), the adapter may never be
186
+ // used — skip its initialize() in that case to avoid double-allocating.
118
187
  this.initialized = true;
188
+ // ADR-125 Phase 4 — start background consolidator if requested.
189
+ this.startConsolidatorTimer();
119
190
  this.emit('initialized');
120
191
  }
121
192
  async shutdown() {
122
193
  if (!this.initialized)
123
194
  return;
124
- await this.adapter.shutdown();
195
+ // ADR-125 Phase 4 — stop consolidator timer first to prevent a sweep
196
+ // from racing the snapshot below.
197
+ if (this.consolidatorTimer) {
198
+ clearInterval(this.consolidatorTimer);
199
+ this.consolidatorTimer = null;
200
+ }
201
+ // ADR-125 Phase 3 — flush a final HNSW + meta snapshot before tearing the
202
+ // backend down. Only meaningful when the AgentDBAdapter is the active
203
+ // backend and persistence is enabled.
204
+ if (this.backend === this.adapter) {
205
+ try {
206
+ await this.adapter.saveSnapshot();
207
+ }
208
+ catch {
209
+ // saveToDisk already emits failure events; do not throw from shutdown.
210
+ }
211
+ }
212
+ await this.backend.shutdown();
125
213
  this.initialized = false;
126
214
  this.emit('shutdown');
127
215
  }
216
+ /**
217
+ * Alias for {@link shutdown}. Matches the lifecycle name expected by callers
218
+ * who treat `MemoryService` like a connection — referenced from ADR-125
219
+ * Phase 3 (snapshot on close()) and Phase 4 (consolidator timer cleanup).
220
+ */
221
+ async close() {
222
+ return this.shutdown();
223
+ }
224
+ /**
225
+ * Start the background consolidator timer if configured.
226
+ * @internal
227
+ */
228
+ startConsolidatorTimer() {
229
+ const cfg = this.config.consolidator;
230
+ if (!cfg?.autoRun)
231
+ return;
232
+ const intervalMs = cfg.intervalMs ?? 6 * 60 * 60 * 1000; // default 6h
233
+ if (intervalMs <= 0)
234
+ return;
235
+ this.consolidatorTimer = setInterval(() => {
236
+ void this.runAutoConsolidation();
237
+ }, intervalMs);
238
+ // Don't block process exit on the timer (Node-only; no-op elsewhere).
239
+ if (typeof this.consolidatorTimer.unref === 'function') {
240
+ this.consolidatorTimer.unref();
241
+ }
242
+ }
243
+ /**
244
+ * Run a single consolidator cycle on the active adapter. Emits a
245
+ * `consolidation:complete` event with the {@link ConsolidationResult}.
246
+ * @internal
247
+ */
248
+ async runAutoConsolidation() {
249
+ try {
250
+ const consolidator = await this.getConsolidator();
251
+ const result = await consolidator.runAll();
252
+ this.emit('consolidation:complete', result);
253
+ }
254
+ catch (err) {
255
+ this.emit('consolidation:failed', {
256
+ reason: err instanceof Error ? err.message : String(err),
257
+ });
258
+ }
259
+ }
260
+ /**
261
+ * Get (and lazily construct) the {@link MemoryConsolidator} bound to this
262
+ * service. Added by ADR-125 Phase 4.
263
+ */
264
+ async getConsolidator() {
265
+ if (this.consolidator)
266
+ return this.consolidator;
267
+ const { MemoryConsolidator } = await import('./consolidator.js');
268
+ // The consolidator reaches into AgentDBAdapter private state. Cast through
269
+ // any to bypass TS's view of those fields (the runtime structure is stable
270
+ // and tested by consolidator.test.ts).
271
+ this.consolidator = new MemoryConsolidator(this, {
272
+ dedupStrategy: this.config.consolidator?.dedupStrategy ?? 'keep-newest',
273
+ intervalMs: this.config.consolidator?.intervalMs,
274
+ });
275
+ return this.consolidator;
276
+ }
128
277
  // ===== IMemoryBackend Implementation =====
129
278
  async store(entry) {
130
- return this.adapter.store(entry);
279
+ await this.backend.store(entry);
280
+ this.maybeSnapshot();
281
+ }
282
+ /**
283
+ * If a snapshot interval is configured and the threshold is hit, fire a
284
+ * snapshot in the background. Only meaningful when the active backend is
285
+ * the AgentDBAdapter with persistence enabled.
286
+ *
287
+ * @internal — ADR-125 Phase 3
288
+ */
289
+ maybeSnapshot() {
290
+ if (!Number.isFinite(this.snapshotInterval))
291
+ return;
292
+ if (this.backend !== this.adapter)
293
+ return;
294
+ if (!this.config.persistenceEnabled || !this.config.persistencePath)
295
+ return;
296
+ this.storeCountSinceSnapshot += 1;
297
+ if (this.storeCountSinceSnapshot >= this.snapshotInterval) {
298
+ this.storeCountSinceSnapshot = 0;
299
+ // Fire and forget — saveSnapshot emits its own lifecycle events.
300
+ void this.adapter.saveSnapshot();
301
+ }
131
302
  }
132
303
  async get(id) {
133
- return this.adapter.get(id);
304
+ return this.backend.get(id);
134
305
  }
135
306
  async getByKey(namespace, key) {
136
- return this.adapter.getByKey(namespace, key);
307
+ return this.backend.getByKey(namespace, key);
137
308
  }
138
309
  async update(id, update) {
139
- return this.adapter.update(id, update);
310
+ return this.backend.update(id, update);
140
311
  }
141
312
  async delete(id) {
142
- return this.adapter.delete(id);
313
+ return this.backend.delete(id);
143
314
  }
144
315
  async query(query) {
145
- return this.adapter.query(query);
316
+ return this.backend.query(query);
146
317
  }
147
318
  async search(embedding, options) {
148
- return this.adapter.search(embedding, options);
319
+ return this.backend.search(embedding, options);
149
320
  }
150
321
  async bulkInsert(entries) {
151
- return this.adapter.bulkInsert(entries);
322
+ await this.backend.bulkInsert(entries);
323
+ // Count each entry toward the snapshot threshold (ADR-125 Phase 3).
324
+ for (let i = 0; i < entries.length; i++) {
325
+ this.maybeSnapshot();
326
+ }
152
327
  }
153
328
  async bulkDelete(ids) {
154
- return this.adapter.bulkDelete(ids);
329
+ return this.backend.bulkDelete(ids);
155
330
  }
156
331
  async count(namespace) {
157
- return this.adapter.count(namespace);
332
+ return this.backend.count(namespace);
158
333
  }
159
334
  async listNamespaces() {
160
- return this.adapter.listNamespaces();
335
+ return this.backend.listNamespaces();
161
336
  }
162
337
  async clearNamespace(namespace) {
163
- return this.adapter.clearNamespace(namespace);
338
+ return this.backend.clearNamespace(namespace);
164
339
  }
165
340
  async getStats() {
166
- return this.adapter.getStats();
341
+ return this.backend.getStats();
167
342
  }
168
343
  async healthCheck() {
169
- return this.adapter.healthCheck();
344
+ return this.backend.healthCheck();
170
345
  }
171
346
  // ===== Convenience Methods =====
172
347
  /**
173
- * Store an entry from simple input
348
+ * Store an entry from simple input.
349
+ *
350
+ * When the active backend is the default AgentDBAdapter, delegates to its
351
+ * native `storeEntry`. When a custom backend is wired (e.g. HybridBackend
352
+ * via `createHybridService`), this builds a full `MemoryEntry` and stores
353
+ * it through the IMemoryBackend interface.
174
354
  */
175
355
  async storeEntry(input) {
176
- return this.adapter.storeEntry(input);
356
+ if (this.backend === this.adapter) {
357
+ return this.adapter.storeEntry(input);
358
+ }
359
+ // Generic path for non-AgentDBAdapter backends
360
+ const { createDefaultEntry } = await import('./types.js');
361
+ const entry = createDefaultEntry(input);
362
+ // Generate an embedding on demand if needed
363
+ if (!entry.embedding && this.config.embeddingGenerator && entry.content) {
364
+ try {
365
+ entry.embedding = await this.config.embeddingGenerator(entry.content);
366
+ }
367
+ catch {
368
+ // Leave embedding undefined; backend may still accept the entry.
369
+ }
370
+ }
371
+ await this.backend.store(entry);
372
+ return entry;
177
373
  }
178
374
  /**
179
- * Semantic search by content string
375
+ * Semantic search by content string.
376
+ *
377
+ * When the active backend is the default AgentDBAdapter, delegates to its
378
+ * native `semanticSearch`. Otherwise generates an embedding via the
379
+ * configured generator and calls `backend.search()`.
180
380
  */
181
381
  async semanticSearch(content, k = 10, threshold) {
182
- return this.adapter.semanticSearch(content, k, threshold);
382
+ if (this.backend === this.adapter) {
383
+ return this.adapter.semanticSearch(content, k, threshold);
384
+ }
385
+ if (!this.config.embeddingGenerator) {
386
+ throw new Error('semanticSearch requires an embeddingGenerator when backend is not the AgentDBAdapter');
387
+ }
388
+ const embedding = await this.config.embeddingGenerator(content);
389
+ return this.backend.search(embedding, { k, threshold });
183
390
  }
184
391
  /**
185
392
  * Find similar entries to a given entry
@@ -236,7 +443,12 @@ export class UnifiedMemoryService extends EventEmitter {
236
443
  }
237
444
  // ===== Migration =====
238
445
  /**
239
- * Migrate from a legacy memory source
446
+ * Migrate from a legacy memory source.
447
+ *
448
+ * The migrator is AgentDB-specific (writes through `AgentDBAdapter`).
449
+ * When a custom backend is wired (e.g. HybridBackend), migration still
450
+ * targets the local AgentDB adapter; the hybrid backend can pick up the
451
+ * migrated entries on next read via its own AgentDB index.
240
452
  */
241
453
  async migrateFrom(source, sourcePath, options = {}) {
242
454
  const migrator = new MemoryMigrator(this.adapter, { source, sourcePath, ...options }, this.config.embeddingGenerator);
@@ -289,6 +501,23 @@ export class UnifiedMemoryService extends EventEmitter {
289
501
  return this.initialized;
290
502
  }
291
503
  }
504
+ // ===== Canonical Alias (ADR-125 Phase 1) =====
505
+ /**
506
+ * Canonical memory service entry point (ADR-125).
507
+ *
508
+ * `MemoryService` is the preferred name as of `@claude-flow/memory@3.0.0-alpha.18`.
509
+ * It is an alias of {@link UnifiedMemoryService}; both names refer to the same
510
+ * class so existing callers continue working unchanged.
511
+ *
512
+ * @example
513
+ * ```typescript
514
+ * import { MemoryService } from '@claude-flow/memory';
515
+ *
516
+ * const memory = new MemoryService({ dimensions: 1536 });
517
+ * await memory.initialize();
518
+ * ```
519
+ */
520
+ export const MemoryService = UnifiedMemoryService;
292
521
  // ===== Factory Functions =====
293
522
  /**
294
523
  * Create a simple in-memory service (for testing)
@@ -321,12 +550,16 @@ export function createEmbeddingService(embeddingGenerator, dimensions = 1536) {
321
550
  });
322
551
  }
323
552
  /**
324
- * Create a hybrid memory service (SQLite + AgentDB)
325
- * This is the DEFAULT recommended configuration per ADR-009
553
+ * Create a hybrid memory service (SQLite + AgentDB).
554
+ *
555
+ * This is the DEFAULT recommended configuration per ADR-009. ADR-125 Phase 2
556
+ * delivers the real wiring: the returned service's backend is a `HybridBackend`
557
+ * created through `createDatabase({ provider: 'hybrid' })`, not an AgentDB-only
558
+ * downgrade as in earlier versions.
326
559
  *
327
560
  * @example
328
561
  * ```typescript
329
- * const memory = createHybridService('./data/memory.db', embeddingFn);
562
+ * const memory = await createHybridService('./data/memory.db', embeddingFn);
330
563
  * await memory.initialize();
331
564
  *
332
565
  * // Structured queries go to SQLite
@@ -334,19 +567,28 @@ export function createEmbeddingService(embeddingGenerator, dimensions = 1536) {
334
567
  *
335
568
  * // Semantic queries go to AgentDB
336
569
  * const similar = await memory.semanticSearch('authentication patterns', 10);
570
+ *
571
+ * // Verify the backend is actually hybrid
572
+ * import { HybridBackend } from '@claude-flow/memory';
573
+ * memory.backend instanceof HybridBackend; // true
337
574
  * ```
338
575
  */
339
- export function createHybridService(databasePath, embeddingGenerator, dimensions = 1536) {
340
- return new UnifiedMemoryService({
576
+ export async function createHybridService(databasePath, embeddingGenerator, dimensions = 1536) {
577
+ const { createDatabase } = await import('./database-provider.js');
578
+ const hybridBackend = await createDatabase(databasePath, {
579
+ provider: 'hybrid',
580
+ embeddingGenerator,
581
+ dimensions,
582
+ });
583
+ const service = new UnifiedMemoryService({
341
584
  embeddingGenerator,
342
585
  dimensions,
343
586
  autoEmbed: true,
344
587
  cacheEnabled: true,
345
- // Note: This would require extending UnifiedMemoryService to support HybridBackend
346
- // For now, this creates an AgentDB service with persistence
347
588
  persistenceEnabled: true,
348
589
  persistencePath: databasePath,
349
590
  });
591
+ return service.withBackend(hybridBackend);
350
592
  }
351
593
  // Default export
352
594
  export default UnifiedMemoryService;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAwDH,mDAAmD;AACnD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAY9F,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,yDAAyD;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQ3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,4CAA4C;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,8BAA8B;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUhD,kCAAkC;AAClC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAQjC,4CAA4C;AAC5C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAW3E,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQ1E,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,mFAAmF;AACnF,0DAA0D;AAC1D,8EAA8E;AAC9E,6EAA6E;AAC7E,wCAAwC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGhG,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAW3E,qCAAqC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB3C,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAsChD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IAC5C,OAAO,CAAiB;IACxB,MAAM,CAA6B;IACnC,WAAW,GAAY,KAAK,CAAC;IAErC,sFAAsF;IAC9E,uBAAuB,GAAW,CAAC,CAAC;IAE5C,4FAA4F;IAC3E,gBAAgB,CAAS;IAE1C,uDAAuD;IAC/C,iBAAiB,GAA0C,IAAI,CAAC;IAExE,2DAA2D;IACnD,YAAY,GAAe,IAAI,CAAC;IAExC;;;;;;;OAOG;IACI,OAAO,CAAiB;IAE/B,YAAY,SAAqC,EAAE;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;YACf,GAAG,MAAM;SACV,CAAC;QAEF,qEAAqE;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,gBAAgB;YACnB,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;QAExD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YAC5C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB;IAExB,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,oEAAoE;QACpE,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,gEAAgE;QAChE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,qEAAqE;QACrE,kCAAkC;QAClC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,0EAA0E;QAC1E,sEAAsE;QACtE,sCAAsC;QACtC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,OAAO;YAAE,OAAO;QAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QACtE,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnC,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,sEAAsE;QACtE,IAAI,OAAQ,IAAI,CAAC,iBAAyB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC/D,IAAI,CAAC,iBAAyB,CAAC,KAAK,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACjE,2EAA2E;QAC3E,2EAA2E;QAC3E,uCAAuC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,IAAW,EAAE;YACtD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,IAAI,aAAa;YACvE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU;SACjD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,4CAA4C;IAE5C,KAAK,CAAC,KAAK,CAAC,KAAkB;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACK,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO;QACpD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,OAAO;QAE5E,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1D,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;YACjC,iEAAiE;YACjE,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,GAAW;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAyB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAkB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAuB,EAAE,OAAsB;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,oEAAoE;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAa;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,kCAAkC;IAElC;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,KAAuB;QACtC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,+CAA+C;QAC/C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAY,CAAC,CAAC;QAC/C,4CAA4C;QAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,IAAI,CAAC;gBACH,KAAK,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,OAAe,EACf,IAAY,EAAE,EACd,SAAkB;QAElB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,IAAY,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEjE,8BAA8B;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,GAAW,EACX,OAA2D;QAE3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,OAAe;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,IAAc;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAc;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB;IAExB;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CACf,MAAuB,EACvB,UAAkB,EAClB,UAAoC,EAAE;QAEtC,MAAM,QAAQ,GAAG,IAAI,cAAc,CACjC,IAAI,CAAC,OAAO,EACZ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,EAClC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC/B,CAAC;QAEF,2BAA2B;QAC3B,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,QAAQ,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QACnF,QAAQ,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QACrF,QAAQ,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEjF,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,yCAAyC;IAEzC;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,UAAU,GAAI,KAAK,CAAC,QAAQ,CAAC,UAAuB,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACrB,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAI,KAAK,CAAC,QAAQ,CAAC,UAAuB,IAAI,EAAE,CAAC;YACjE,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IAEtB;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,gDAAgD;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAiBlD,gCAAgC;AAEhC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,oBAAoB,CAAC;QAC9B,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,oBAAoB,CAAC;QAC9B,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,kBAAsC,EACtC,aAAqB,IAAI;IAEzB,OAAO,IAAI,oBAAoB,CAAC;QAC9B,kBAAkB;QAClB,UAAU;QACV,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAoB,EACpB,kBAAsC,EACtC,aAAqB,IAAI;IAEzB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE;QACvD,QAAQ,EAAE,QAAQ;QAClB,kBAAkB;QAClB,UAAU;KACX,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;QACvC,kBAAkB;QAClB,UAAU;QACV,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;QAClB,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,YAAY;KAC9B,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED,iBAAiB;AACjB,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Phase 1 — Public API surface tests (ADR-125)
3
+ *
4
+ * Asserts that:
5
+ * - `MemoryService` is the canonical exported entry point.
6
+ * - `UnifiedMemoryService` remains exported as a deprecated alias to the same class.
7
+ * - `HnswLite` and `RvfBackend` are NOT exported from the top-level package surface.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Phase 1 — Public API surface tests (ADR-125)
3
+ *
4
+ * Asserts that:
5
+ * - `MemoryService` is the canonical exported entry point.
6
+ * - `UnifiedMemoryService` remains exported as a deprecated alias to the same class.
7
+ * - `HnswLite` and `RvfBackend` are NOT exported from the top-level package surface.
8
+ */
9
+ import { describe, it, expect } from 'vitest';
10
+ import * as memoryPkg from './index.js';
11
+ import { createHybridService, MemoryService } from './index.js';
12
+ import { HybridBackend } from './hybrid-backend.js';
13
+ describe('Phase 1 — canonical public exports', () => {
14
+ it('exports `MemoryService` as the canonical entry point', () => {
15
+ expect(memoryPkg).toHaveProperty('MemoryService');
16
+ expect(typeof memoryPkg.MemoryService).toBe('function');
17
+ });
18
+ it('also exports `UnifiedMemoryService` as a deprecated alias', () => {
19
+ expect(memoryPkg).toHaveProperty('UnifiedMemoryService');
20
+ expect(typeof memoryPkg.UnifiedMemoryService).toBe('function');
21
+ });
22
+ it('`MemoryService` and `UnifiedMemoryService` reference the same class', () => {
23
+ expect(memoryPkg.MemoryService).toBe(memoryPkg.UnifiedMemoryService);
24
+ });
25
+ it('does NOT expose `HnswLite` from the top-level package', () => {
26
+ expect(memoryPkg).not.toHaveProperty('HnswLite');
27
+ });
28
+ it('does NOT expose `RvfBackend` from the top-level package', () => {
29
+ expect(memoryPkg).not.toHaveProperty('RvfBackend');
30
+ });
31
+ it('does NOT expose DDD layer types from the top-level package', () => {
32
+ // These live under src/domain, src/application, src/infrastructure
33
+ // and have never been re-exported from index.ts — assert that invariant.
34
+ expect(memoryPkg).not.toHaveProperty('StoreMemoryCommandHandler');
35
+ expect(memoryPkg).not.toHaveProperty('SearchMemoryQueryHandler');
36
+ expect(memoryPkg).not.toHaveProperty('HybridMemoryRepository');
37
+ });
38
+ it('continues to expose the backend constructors that PR A keeps public', () => {
39
+ // Backends that downstream packages import directly remain stable.
40
+ expect(memoryPkg).toHaveProperty('AgentDBBackend');
41
+ expect(memoryPkg).toHaveProperty('SQLiteBackend');
42
+ expect(memoryPkg).toHaveProperty('SqlJsBackend');
43
+ expect(memoryPkg).toHaveProperty('HybridBackend');
44
+ });
45
+ });
46
+ describe('Phase 2 — createHybridService returns a real HybridBackend', () => {
47
+ it('returns a MemoryService whose backend is a HybridBackend instance', async () => {
48
+ // Trivial embedder for the test — returns a zero vector of the right shape.
49
+ const embedder = async (_text) => new Float32Array(384);
50
+ const svc = await createHybridService(':memory:', embedder, 384);
51
+ try {
52
+ expect(svc).toBeInstanceOf(MemoryService);
53
+ expect(svc.backend).toBeDefined();
54
+ expect(svc.backend).toBeInstanceOf(HybridBackend);
55
+ }
56
+ finally {
57
+ // initialize is required before shutdown; do the minimal lifecycle.
58
+ await svc.initialize().catch(() => undefined);
59
+ await svc.shutdown().catch(() => undefined);
60
+ }
61
+ });
62
+ it('initializes and shuts down without error', async () => {
63
+ const embedder = async (_text) => new Float32Array(384);
64
+ const svc = await createHybridService(':memory:', embedder, 384);
65
+ await svc.initialize();
66
+ expect(svc.isInitialized()).toBe(true);
67
+ await svc.shutdown();
68
+ expect(svc.isInitialized()).toBe(false);
69
+ });
70
+ });
71
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * JSON security utilities for memory backends.
3
+ * Prevents prototype pollution when parsing JSON from database rows.
4
+ *
5
+ * @module v3/memory/json-security
6
+ */
7
+ /**
8
+ * Parse JSON safely, stripping keys that enable prototype pollution.
9
+ * Drop-in replacement for JSON.parse that filters __proto__, constructor, prototype.
10
+ */
11
+ export declare function safeJsonParse<T = unknown>(content: string): T;
12
+ //# sourceMappingURL=json-security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-security.d.ts","sourceRoot":"","sources":["../src/json-security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAO7D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * JSON security utilities for memory backends.
3
+ * Prevents prototype pollution when parsing JSON from database rows.
4
+ *
5
+ * @module v3/memory/json-security
6
+ */
7
+ const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
8
+ /**
9
+ * Parse JSON safely, stripping keys that enable prototype pollution.
10
+ * Drop-in replacement for JSON.parse that filters __proto__, constructor, prototype.
11
+ */
12
+ export function safeJsonParse(content) {
13
+ return JSON.parse(content, (key, value) => {
14
+ if (DANGEROUS_KEYS.has(key)) {
15
+ return undefined;
16
+ }
17
+ return value;
18
+ });
19
+ }
20
+ //# sourceMappingURL=json-security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-security.js","sourceRoot":"","sources":["../src/json-security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAc,OAAe;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAM,CAAC;AACV,CAAC"}