@claude-flow/memory 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/README.md +249 -0
  3. package/__tests__/coverage/base.css +224 -0
  4. package/__tests__/coverage/block-navigation.js +87 -0
  5. package/__tests__/coverage/coverage-final.json +19 -0
  6. package/__tests__/coverage/favicon.png +0 -0
  7. package/__tests__/coverage/index.html +206 -0
  8. package/__tests__/coverage/lcov-report/base.css +224 -0
  9. package/__tests__/coverage/lcov-report/block-navigation.js +87 -0
  10. package/__tests__/coverage/lcov-report/favicon.png +0 -0
  11. package/__tests__/coverage/lcov-report/index.html +206 -0
  12. package/__tests__/coverage/lcov-report/prettify.css +1 -0
  13. package/__tests__/coverage/lcov-report/prettify.js +2 -0
  14. package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/__tests__/coverage/lcov-report/sorter.js +210 -0
  16. package/__tests__/coverage/lcov-report/src/agentdb-adapter.ts.html +2737 -0
  17. package/__tests__/coverage/lcov-report/src/agentdb-backend.ts.html +3130 -0
  18. package/__tests__/coverage/lcov-report/src/application/commands/delete-memory.command.ts.html +601 -0
  19. package/__tests__/coverage/lcov-report/src/application/commands/index.html +131 -0
  20. package/__tests__/coverage/lcov-report/src/application/commands/store-memory.command.ts.html +394 -0
  21. package/__tests__/coverage/lcov-report/src/application/queries/index.html +116 -0
  22. package/__tests__/coverage/lcov-report/src/application/queries/search-memory.query.ts.html +796 -0
  23. package/__tests__/coverage/lcov-report/src/application/services/index.html +116 -0
  24. package/__tests__/coverage/lcov-report/src/application/services/memory-application-service.ts.html +793 -0
  25. package/__tests__/coverage/lcov-report/src/cache-manager.ts.html +1633 -0
  26. package/__tests__/coverage/lcov-report/src/database-provider.ts.html +1618 -0
  27. package/__tests__/coverage/lcov-report/src/domain/entities/index.html +116 -0
  28. package/__tests__/coverage/lcov-report/src/domain/entities/memory-entry.ts.html +952 -0
  29. package/__tests__/coverage/lcov-report/src/domain/services/index.html +116 -0
  30. package/__tests__/coverage/lcov-report/src/domain/services/memory-domain-service.ts.html +1294 -0
  31. package/__tests__/coverage/lcov-report/src/hnsw-index.ts.html +3124 -0
  32. package/__tests__/coverage/lcov-report/src/hybrid-backend.ts.html +2167 -0
  33. package/__tests__/coverage/lcov-report/src/index.html +266 -0
  34. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/hybrid-memory-repository.ts.html +1633 -0
  35. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/index.html +116 -0
  36. package/__tests__/coverage/lcov-report/src/migration.ts.html +2092 -0
  37. package/__tests__/coverage/lcov-report/src/query-builder.ts.html +1711 -0
  38. package/__tests__/coverage/lcov-report/src/sqlite-backend.ts.html +2281 -0
  39. package/__tests__/coverage/lcov-report/src/sqljs-backend.ts.html +2374 -0
  40. package/__tests__/coverage/lcov-report/src/types.ts.html +2266 -0
  41. package/__tests__/coverage/lcov.info +10238 -0
  42. package/__tests__/coverage/prettify.css +1 -0
  43. package/__tests__/coverage/prettify.js +2 -0
  44. package/__tests__/coverage/sort-arrow-sprite.png +0 -0
  45. package/__tests__/coverage/sorter.js +210 -0
  46. package/__tests__/coverage/src/agentdb-adapter.ts.html +2737 -0
  47. package/__tests__/coverage/src/agentdb-backend.ts.html +3130 -0
  48. package/__tests__/coverage/src/application/commands/delete-memory.command.ts.html +601 -0
  49. package/__tests__/coverage/src/application/commands/index.html +131 -0
  50. package/__tests__/coverage/src/application/commands/store-memory.command.ts.html +394 -0
  51. package/__tests__/coverage/src/application/queries/index.html +116 -0
  52. package/__tests__/coverage/src/application/queries/search-memory.query.ts.html +796 -0
  53. package/__tests__/coverage/src/application/services/index.html +116 -0
  54. package/__tests__/coverage/src/application/services/memory-application-service.ts.html +793 -0
  55. package/__tests__/coverage/src/cache-manager.ts.html +1633 -0
  56. package/__tests__/coverage/src/database-provider.ts.html +1618 -0
  57. package/__tests__/coverage/src/domain/entities/index.html +116 -0
  58. package/__tests__/coverage/src/domain/entities/memory-entry.ts.html +952 -0
  59. package/__tests__/coverage/src/domain/services/index.html +116 -0
  60. package/__tests__/coverage/src/domain/services/memory-domain-service.ts.html +1294 -0
  61. package/__tests__/coverage/src/hnsw-index.ts.html +3124 -0
  62. package/__tests__/coverage/src/hybrid-backend.ts.html +2167 -0
  63. package/__tests__/coverage/src/index.html +266 -0
  64. package/__tests__/coverage/src/infrastructure/repositories/hybrid-memory-repository.ts.html +1633 -0
  65. package/__tests__/coverage/src/infrastructure/repositories/index.html +116 -0
  66. package/__tests__/coverage/src/migration.ts.html +2092 -0
  67. package/__tests__/coverage/src/query-builder.ts.html +1711 -0
  68. package/__tests__/coverage/src/sqlite-backend.ts.html +2281 -0
  69. package/__tests__/coverage/src/sqljs-backend.ts.html +2374 -0
  70. package/__tests__/coverage/src/types.ts.html +2266 -0
  71. package/benchmarks/cache-hit-rate.bench.ts +535 -0
  72. package/benchmarks/hnsw-indexing.bench.ts +552 -0
  73. package/benchmarks/memory-write.bench.ts +469 -0
  74. package/benchmarks/vector-search.bench.ts +449 -0
  75. package/dist/agentdb-adapter.d.ts +146 -0
  76. package/dist/agentdb-adapter.d.ts.map +1 -0
  77. package/dist/agentdb-adapter.js +679 -0
  78. package/dist/agentdb-adapter.js.map +1 -0
  79. package/dist/agentdb-backend.d.ts +214 -0
  80. package/dist/agentdb-backend.d.ts.map +1 -0
  81. package/dist/agentdb-backend.js +827 -0
  82. package/dist/agentdb-backend.js.map +1 -0
  83. package/dist/agentdb-backend.test.d.ts +7 -0
  84. package/dist/agentdb-backend.test.d.ts.map +1 -0
  85. package/dist/agentdb-backend.test.js +258 -0
  86. package/dist/agentdb-backend.test.js.map +1 -0
  87. package/dist/application/commands/delete-memory.command.d.ts +65 -0
  88. package/dist/application/commands/delete-memory.command.d.ts.map +1 -0
  89. package/dist/application/commands/delete-memory.command.js +129 -0
  90. package/dist/application/commands/delete-memory.command.js.map +1 -0
  91. package/dist/application/commands/store-memory.command.d.ts +48 -0
  92. package/dist/application/commands/store-memory.command.d.ts.map +1 -0
  93. package/dist/application/commands/store-memory.command.js +72 -0
  94. package/dist/application/commands/store-memory.command.js.map +1 -0
  95. package/dist/application/index.d.ts +12 -0
  96. package/dist/application/index.d.ts.map +1 -0
  97. package/dist/application/index.js +15 -0
  98. package/dist/application/index.js.map +1 -0
  99. package/dist/application/queries/search-memory.query.d.ts +72 -0
  100. package/dist/application/queries/search-memory.query.d.ts.map +1 -0
  101. package/dist/application/queries/search-memory.query.js +143 -0
  102. package/dist/application/queries/search-memory.query.js.map +1 -0
  103. package/dist/application/services/memory-application-service.d.ts +121 -0
  104. package/dist/application/services/memory-application-service.d.ts.map +1 -0
  105. package/dist/application/services/memory-application-service.js +190 -0
  106. package/dist/application/services/memory-application-service.js.map +1 -0
  107. package/dist/cache-manager.d.ts +134 -0
  108. package/dist/cache-manager.d.ts.map +1 -0
  109. package/dist/cache-manager.js +407 -0
  110. package/dist/cache-manager.js.map +1 -0
  111. package/dist/database-provider.d.ts +86 -0
  112. package/dist/database-provider.d.ts.map +1 -0
  113. package/dist/database-provider.js +385 -0
  114. package/dist/database-provider.js.map +1 -0
  115. package/dist/database-provider.test.d.ts +7 -0
  116. package/dist/database-provider.test.d.ts.map +1 -0
  117. package/dist/database-provider.test.js +285 -0
  118. package/dist/database-provider.test.js.map +1 -0
  119. package/dist/domain/entities/memory-entry.d.ts +143 -0
  120. package/dist/domain/entities/memory-entry.d.ts.map +1 -0
  121. package/dist/domain/entities/memory-entry.js +226 -0
  122. package/dist/domain/entities/memory-entry.js.map +1 -0
  123. package/dist/domain/index.d.ts +11 -0
  124. package/dist/domain/index.d.ts.map +1 -0
  125. package/dist/domain/index.js +12 -0
  126. package/dist/domain/index.js.map +1 -0
  127. package/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
  128. package/dist/domain/repositories/memory-repository.interface.d.ts.map +1 -0
  129. package/dist/domain/repositories/memory-repository.interface.js +11 -0
  130. package/dist/domain/repositories/memory-repository.interface.js.map +1 -0
  131. package/dist/domain/services/memory-domain-service.d.ts +105 -0
  132. package/dist/domain/services/memory-domain-service.d.ts.map +1 -0
  133. package/dist/domain/services/memory-domain-service.js +297 -0
  134. package/dist/domain/services/memory-domain-service.js.map +1 -0
  135. package/dist/hnsw-index.d.ts +111 -0
  136. package/dist/hnsw-index.d.ts.map +1 -0
  137. package/dist/hnsw-index.js +781 -0
  138. package/dist/hnsw-index.js.map +1 -0
  139. package/dist/hybrid-backend.d.ts +217 -0
  140. package/dist/hybrid-backend.d.ts.map +1 -0
  141. package/dist/hybrid-backend.js +491 -0
  142. package/dist/hybrid-backend.js.map +1 -0
  143. package/dist/hybrid-backend.test.d.ts +8 -0
  144. package/dist/hybrid-backend.test.d.ts.map +1 -0
  145. package/dist/hybrid-backend.test.js +320 -0
  146. package/dist/hybrid-backend.test.js.map +1 -0
  147. package/dist/index.d.ts +188 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +345 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/infrastructure/index.d.ts +17 -0
  152. package/dist/infrastructure/index.d.ts.map +1 -0
  153. package/dist/infrastructure/index.js +16 -0
  154. package/dist/infrastructure/index.js.map +1 -0
  155. package/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
  156. package/dist/infrastructure/repositories/hybrid-memory-repository.d.ts.map +1 -0
  157. package/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
  158. package/dist/infrastructure/repositories/hybrid-memory-repository.js.map +1 -0
  159. package/dist/migration.d.ts +68 -0
  160. package/dist/migration.d.ts.map +1 -0
  161. package/dist/migration.js +513 -0
  162. package/dist/migration.js.map +1 -0
  163. package/dist/query-builder.d.ts +211 -0
  164. package/dist/query-builder.d.ts.map +1 -0
  165. package/dist/query-builder.js +438 -0
  166. package/dist/query-builder.js.map +1 -0
  167. package/dist/sqlite-backend.d.ts +121 -0
  168. package/dist/sqlite-backend.d.ts.map +1 -0
  169. package/dist/sqlite-backend.js +564 -0
  170. package/dist/sqlite-backend.js.map +1 -0
  171. package/dist/sqljs-backend.d.ts +128 -0
  172. package/dist/sqljs-backend.d.ts.map +1 -0
  173. package/dist/sqljs-backend.js +598 -0
  174. package/dist/sqljs-backend.js.map +1 -0
  175. package/dist/types.d.ts +481 -0
  176. package/dist/types.d.ts.map +1 -0
  177. package/dist/types.js +58 -0
  178. package/dist/types.js.map +1 -0
  179. package/docs/AGENTDB-INTEGRATION.md +388 -0
  180. package/docs/CROSS_PLATFORM.md +505 -0
  181. package/docs/WINDOWS_SUPPORT.md +422 -0
  182. package/examples/agentdb-example.ts +345 -0
  183. package/examples/cross-platform-usage.ts +326 -0
  184. package/framework/benchmark.ts +112 -0
  185. package/package.json +31 -0
  186. package/src/agentdb-adapter.ts +884 -0
  187. package/src/agentdb-backend.test.ts +339 -0
  188. package/src/agentdb-backend.ts +1016 -0
  189. package/src/application/commands/delete-memory.command.ts +172 -0
  190. package/src/application/commands/store-memory.command.ts +103 -0
  191. package/src/application/index.ts +36 -0
  192. package/src/application/queries/search-memory.query.ts +237 -0
  193. package/src/application/services/memory-application-service.ts +236 -0
  194. package/src/cache-manager.ts +516 -0
  195. package/src/database-provider.test.ts +364 -0
  196. package/src/database-provider.ts +511 -0
  197. package/src/domain/entities/memory-entry.ts +289 -0
  198. package/src/domain/index.ts +35 -0
  199. package/src/domain/repositories/memory-repository.interface.ts +120 -0
  200. package/src/domain/services/memory-domain-service.ts +403 -0
  201. package/src/hnsw-index.ts +1013 -0
  202. package/src/hybrid-backend.test.ts +399 -0
  203. package/src/hybrid-backend.ts +694 -0
  204. package/src/index.ts +515 -0
  205. package/src/infrastructure/index.ts +23 -0
  206. package/src/infrastructure/repositories/hybrid-memory-repository.ts +516 -0
  207. package/src/migration.ts +669 -0
  208. package/src/query-builder.ts +542 -0
  209. package/src/sqlite-backend.ts +732 -0
  210. package/src/sqljs-backend.ts +763 -0
  211. package/src/types.ts +727 -0
  212. package/tsconfig.json +9 -0
  213. package/tsconfig.tsbuildinfo +1 -0
  214. package/verify-cross-platform.ts +170 -0
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Hybrid Memory Repository - Infrastructure Layer
3
+ *
4
+ * Implements IMemoryRepository using SQLite + AgentDB hybrid backend.
5
+ * Per ADR-009, this is the default memory backend.
6
+ *
7
+ * @module v3/memory/infrastructure/repositories
8
+ */
9
+ /**
10
+ * Hybrid Memory Repository
11
+ *
12
+ * Uses SQLite for metadata and AgentDB for vectors.
13
+ * Implements hot caching for frequently accessed entries.
14
+ */
15
+ export class HybridMemoryRepository {
16
+ config;
17
+ entries = new Map();
18
+ namespaceIndex = new Map();
19
+ vectorIndex = new Map();
20
+ cache = new Map();
21
+ initialized = false;
22
+ constructor(config) {
23
+ this.config = config;
24
+ }
25
+ // ============================================================================
26
+ // Lifecycle
27
+ // ============================================================================
28
+ async initialize() {
29
+ if (this.initialized)
30
+ return;
31
+ // In production, would initialize SQLite and AgentDB connections
32
+ // For now, using in-memory implementation
33
+ this.entries = new Map();
34
+ this.namespaceIndex = new Map();
35
+ this.vectorIndex = new Map();
36
+ this.cache = new Map();
37
+ this.initialized = true;
38
+ }
39
+ async shutdown() {
40
+ // Clear all data
41
+ this.cache.clear();
42
+ this.initialized = false;
43
+ }
44
+ async clear() {
45
+ this.entries.clear();
46
+ this.namespaceIndex.clear();
47
+ this.vectorIndex.clear();
48
+ this.cache.clear();
49
+ }
50
+ // ============================================================================
51
+ // Basic CRUD
52
+ // ============================================================================
53
+ async save(entry) {
54
+ this.ensureInitialized();
55
+ // Store entry
56
+ this.entries.set(entry.id, entry);
57
+ // Update namespace index
58
+ if (!this.namespaceIndex.has(entry.namespace)) {
59
+ this.namespaceIndex.set(entry.namespace, new Set());
60
+ }
61
+ this.namespaceIndex.get(entry.namespace).add(entry.id);
62
+ // Store vector if present
63
+ if (entry.vector) {
64
+ this.vectorIndex.set(entry.id, entry.vector);
65
+ }
66
+ // Update cache
67
+ this.updateCache(entry);
68
+ }
69
+ async findById(id) {
70
+ this.ensureInitialized();
71
+ // Check cache first
72
+ const cached = this.cache.get(id);
73
+ if (cached) {
74
+ return cached.entry;
75
+ }
76
+ return this.entries.get(id) ?? null;
77
+ }
78
+ async findByKey(namespace, key) {
79
+ this.ensureInitialized();
80
+ for (const entry of this.entries.values()) {
81
+ if (entry.namespace === namespace && entry.key === key) {
82
+ return entry;
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+ async findByCompositeKey(compositeKey) {
88
+ const [namespace, key] = compositeKey.split(':');
89
+ return this.findByKey(namespace, key);
90
+ }
91
+ async delete(id) {
92
+ this.ensureInitialized();
93
+ const entry = this.entries.get(id);
94
+ if (!entry)
95
+ return false;
96
+ // Remove from all indexes
97
+ this.entries.delete(id);
98
+ this.namespaceIndex.get(entry.namespace)?.delete(id);
99
+ this.vectorIndex.delete(id);
100
+ this.cache.delete(id);
101
+ return true;
102
+ }
103
+ async exists(id) {
104
+ return this.entries.has(id);
105
+ }
106
+ // ============================================================================
107
+ // Bulk Operations
108
+ // ============================================================================
109
+ async saveMany(entries) {
110
+ const errors = [];
111
+ let success = 0;
112
+ for (const entry of entries) {
113
+ try {
114
+ await this.save(entry);
115
+ success++;
116
+ }
117
+ catch (error) {
118
+ errors.push({
119
+ id: entry.id,
120
+ error: error instanceof Error ? error.message : 'Unknown error',
121
+ });
122
+ }
123
+ }
124
+ return {
125
+ success,
126
+ failed: errors.length,
127
+ errors,
128
+ };
129
+ }
130
+ async findByIds(ids) {
131
+ return ids
132
+ .map((id) => this.entries.get(id))
133
+ .filter((e) => e !== undefined);
134
+ }
135
+ async deleteMany(ids) {
136
+ const errors = [];
137
+ let success = 0;
138
+ for (const id of ids) {
139
+ try {
140
+ if (await this.delete(id)) {
141
+ success++;
142
+ }
143
+ else {
144
+ errors.push({ id, error: 'Entry not found' });
145
+ }
146
+ }
147
+ catch (error) {
148
+ errors.push({
149
+ id,
150
+ error: error instanceof Error ? error.message : 'Unknown error',
151
+ });
152
+ }
153
+ }
154
+ return {
155
+ success,
156
+ failed: errors.length,
157
+ errors,
158
+ };
159
+ }
160
+ // ============================================================================
161
+ // Query Operations
162
+ // ============================================================================
163
+ async findAll(options) {
164
+ this.ensureInitialized();
165
+ let results = Array.from(this.entries.values());
166
+ // Apply filters
167
+ if (options?.namespace) {
168
+ results = results.filter((e) => e.namespace === options.namespace);
169
+ }
170
+ if (options?.type) {
171
+ results = results.filter((e) => e.type === options.type);
172
+ }
173
+ if (options?.status) {
174
+ results = results.filter((e) => e.status === options.status);
175
+ }
176
+ // Apply sorting
177
+ const orderBy = options?.orderBy ?? 'createdAt';
178
+ const orderDir = options?.orderDirection ?? 'desc';
179
+ results.sort((a, b) => {
180
+ let aVal, bVal;
181
+ switch (orderBy) {
182
+ case 'accessCount':
183
+ aVal = a.accessCount;
184
+ bVal = b.accessCount;
185
+ break;
186
+ case 'lastAccessedAt':
187
+ aVal = a.lastAccessedAt.getTime();
188
+ bVal = b.lastAccessedAt.getTime();
189
+ break;
190
+ case 'updatedAt':
191
+ aVal = a.updatedAt.getTime();
192
+ bVal = b.updatedAt.getTime();
193
+ break;
194
+ default:
195
+ aVal = a.createdAt.getTime();
196
+ bVal = b.createdAt.getTime();
197
+ }
198
+ return orderDir === 'asc' ? aVal - bVal : bVal - aVal;
199
+ });
200
+ // Apply pagination
201
+ if (options?.offset) {
202
+ results = results.slice(options.offset);
203
+ }
204
+ if (options?.limit) {
205
+ results = results.slice(0, options.limit);
206
+ }
207
+ return results;
208
+ }
209
+ async findByNamespace(namespace, options) {
210
+ return this.findAll({ ...options, namespace });
211
+ }
212
+ async findByType(type, options) {
213
+ return this.findAll({ ...options, type });
214
+ }
215
+ async findByStatus(status, options) {
216
+ return this.findAll({ ...options, status });
217
+ }
218
+ // ============================================================================
219
+ // Vector Search
220
+ // ============================================================================
221
+ async searchByVector(options) {
222
+ this.ensureInitialized();
223
+ const results = [];
224
+ for (const [id, vector] of this.vectorIndex) {
225
+ const entry = this.entries.get(id);
226
+ if (!entry)
227
+ continue;
228
+ if (options.namespace && entry.namespace !== options.namespace)
229
+ continue;
230
+ if (options.type && entry.type !== options.type)
231
+ continue;
232
+ const similarity = this.cosineSimilarity(options.vector, vector);
233
+ const threshold = options.threshold ?? 0.5;
234
+ if (similarity >= threshold) {
235
+ results.push({
236
+ entry,
237
+ similarity,
238
+ distance: 1 - similarity,
239
+ });
240
+ }
241
+ }
242
+ // Sort by similarity descending
243
+ results.sort((a, b) => b.similarity - a.similarity);
244
+ // Limit results
245
+ return results.slice(0, options.limit ?? 10);
246
+ }
247
+ async findSimilar(entryId, limit = 10) {
248
+ const entry = this.entries.get(entryId);
249
+ if (!entry || !entry.vector)
250
+ return [];
251
+ return this.searchByVector({
252
+ vector: entry.vector,
253
+ namespace: entry.namespace,
254
+ limit: limit + 1, // Include self
255
+ }).then((results) => results.filter((r) => r.entry.id !== entryId).slice(0, limit));
256
+ }
257
+ // ============================================================================
258
+ // Maintenance Operations
259
+ // ============================================================================
260
+ async findExpired() {
261
+ return Array.from(this.entries.values()).filter((e) => e.isExpired());
262
+ }
263
+ async deleteExpired() {
264
+ const expired = await this.findExpired();
265
+ for (const entry of expired) {
266
+ await this.delete(entry.id);
267
+ }
268
+ return expired.length;
269
+ }
270
+ async findCold(milliseconds) {
271
+ return Array.from(this.entries.values()).filter((e) => e.isCold(milliseconds));
272
+ }
273
+ async archiveCold(milliseconds) {
274
+ const cold = await this.findCold(milliseconds);
275
+ for (const entry of cold) {
276
+ entry.archive();
277
+ await this.save(entry);
278
+ }
279
+ return cold.length;
280
+ }
281
+ // ============================================================================
282
+ // Statistics
283
+ // ============================================================================
284
+ async getStatistics() {
285
+ const entries = Array.from(this.entries.values());
286
+ const entriesByNamespace = {};
287
+ const entriesByType = {
288
+ semantic: 0,
289
+ episodic: 0,
290
+ procedural: 0,
291
+ working: 0,
292
+ };
293
+ let totalAccessCount = 0;
294
+ let totalSize = 0;
295
+ let activeCount = 0;
296
+ let archivedCount = 0;
297
+ let deletedCount = 0;
298
+ for (const entry of entries) {
299
+ // Count by namespace
300
+ entriesByNamespace[entry.namespace] = (entriesByNamespace[entry.namespace] ?? 0) + 1;
301
+ // Count by type
302
+ entriesByType[entry.type]++;
303
+ // Accumulate stats
304
+ totalAccessCount += entry.accessCount;
305
+ totalSize += JSON.stringify(entry.value).length;
306
+ // Count by status
307
+ switch (entry.status) {
308
+ case 'active':
309
+ activeCount++;
310
+ break;
311
+ case 'archived':
312
+ archivedCount++;
313
+ break;
314
+ case 'deleted':
315
+ deletedCount++;
316
+ break;
317
+ }
318
+ }
319
+ // Find hottest and coldest
320
+ const sorted = [...entries].sort((a, b) => b.accessCount - a.accessCount);
321
+ const hottestEntries = sorted.slice(0, 5).map((e) => e.id);
322
+ const coldestEntries = sorted.slice(-5).reverse().map((e) => e.id);
323
+ return {
324
+ totalEntries: entries.length,
325
+ activeEntries: activeCount,
326
+ archivedEntries: archivedCount,
327
+ deletedEntries: deletedCount,
328
+ totalSize,
329
+ entriesByNamespace,
330
+ entriesByType,
331
+ averageAccessCount: entries.length > 0 ? totalAccessCount / entries.length : 0,
332
+ hottestEntries,
333
+ coldestEntries,
334
+ };
335
+ }
336
+ async count(options) {
337
+ const entries = await this.findAll(options);
338
+ return entries.length;
339
+ }
340
+ // ============================================================================
341
+ // Namespace Operations
342
+ // ============================================================================
343
+ async listNamespaces() {
344
+ return Array.from(this.namespaceIndex.keys());
345
+ }
346
+ async deleteNamespace(namespace) {
347
+ const ids = this.namespaceIndex.get(namespace);
348
+ if (!ids)
349
+ return 0;
350
+ const count = ids.size;
351
+ for (const id of ids) {
352
+ await this.delete(id);
353
+ }
354
+ this.namespaceIndex.delete(namespace);
355
+ return count;
356
+ }
357
+ async getNamespaceSize(namespace) {
358
+ const ids = this.namespaceIndex.get(namespace);
359
+ if (!ids)
360
+ return 0;
361
+ let size = 0;
362
+ for (const id of ids) {
363
+ const entry = this.entries.get(id);
364
+ if (entry) {
365
+ size += JSON.stringify(entry.value).length;
366
+ }
367
+ }
368
+ return size;
369
+ }
370
+ // ============================================================================
371
+ // Private Methods
372
+ // ============================================================================
373
+ ensureInitialized() {
374
+ if (!this.initialized) {
375
+ throw new Error('Repository not initialized. Call initialize() first.');
376
+ }
377
+ }
378
+ updateCache(entry) {
379
+ const maxCacheSize = this.config.cacheSize ?? 100;
380
+ // Evict oldest entries if cache is full
381
+ if (this.cache.size >= maxCacheSize) {
382
+ const oldest = Array.from(this.cache.entries())
383
+ .sort(([, a], [, b]) => a.timestamp - b.timestamp)
384
+ .slice(0, Math.floor(maxCacheSize * 0.2));
385
+ for (const [id] of oldest) {
386
+ this.cache.delete(id);
387
+ }
388
+ }
389
+ this.cache.set(entry.id, {
390
+ entry,
391
+ timestamp: Date.now(),
392
+ });
393
+ }
394
+ cosineSimilarity(a, b) {
395
+ if (a.length !== b.length)
396
+ return 0;
397
+ let dotProduct = 0;
398
+ let normA = 0;
399
+ let normB = 0;
400
+ for (let i = 0; i < a.length; i++) {
401
+ dotProduct += a[i] * b[i];
402
+ normA += a[i] * a[i];
403
+ normB += b[i] * b[i];
404
+ }
405
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
406
+ return denominator === 0 ? 0 : dotProduct / denominator;
407
+ }
408
+ }
409
+ //# sourceMappingURL=hybrid-memory-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid-memory-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/hybrid-memory-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * V3 Memory Migration Utility
3
+ *
4
+ * Migrates data from legacy memory systems (SQLite, Markdown, JSON, etc.)
5
+ * to the unified AgentDB-backed memory system with HNSW indexing.
6
+ *
7
+ * @module v3/memory/migration
8
+ */
9
+ import { EventEmitter } from 'node:events';
10
+ import { MigrationConfig, MigrationProgress, MigrationResult, MigrationSource, EmbeddingGenerator } from './types.js';
11
+ import { AgentDBAdapter } from './agentdb-adapter.js';
12
+ /**
13
+ * Memory Migration Manager
14
+ *
15
+ * Handles migration from:
16
+ * - SQLite backends (.db files)
17
+ * - Markdown backends (.md files)
18
+ * - JSON memory stores (.json files)
19
+ * - MemoryManager instances
20
+ * - SwarmMemory instances
21
+ * - DistributedMemory instances
22
+ */
23
+ export declare class MemoryMigrator extends EventEmitter {
24
+ private config;
25
+ private target;
26
+ private embeddingGenerator?;
27
+ private progress;
28
+ constructor(target: AgentDBAdapter, config: Partial<MigrationConfig>, embeddingGenerator?: EmbeddingGenerator);
29
+ /**
30
+ * Run the migration
31
+ */
32
+ migrate(): Promise<MigrationResult>;
33
+ /**
34
+ * Get current migration progress
35
+ */
36
+ getProgress(): MigrationProgress;
37
+ private loadFromSource;
38
+ private loadFromSQLite;
39
+ private loadFromMarkdown;
40
+ private loadFromJSON;
41
+ private loadFromMemoryManager;
42
+ private loadFromSwarmMemory;
43
+ private loadFromDistributedMemory;
44
+ private processBatch;
45
+ private transformEntry;
46
+ private initializeProgress;
47
+ private validateEntry;
48
+ private addError;
49
+ private parseTimestamp;
50
+ private isValidMemoryType;
51
+ private estimateTimeRemaining;
52
+ private generateSummary;
53
+ private walkDirectory;
54
+ private parseMarkdownEntry;
55
+ }
56
+ /**
57
+ * Convenience function to create a migrator
58
+ */
59
+ export declare function createMigrator(target: AgentDBAdapter, source: MigrationSource, sourcePath: string, options?: Partial<MigrationConfig>, embeddingGenerator?: EmbeddingGenerator): MemoryMigrator;
60
+ /**
61
+ * Migrate from multiple sources
62
+ */
63
+ export declare function migrateMultipleSources(target: AgentDBAdapter, sources: Array<{
64
+ source: MigrationSource;
65
+ path: string;
66
+ }>, options?: Partial<MigrationConfig>, embeddingGenerator?: EmbeddingGenerator): Promise<MigrationResult[]>;
67
+ export default MemoryMigrator;
68
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EAEf,eAAe,EAIf,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA6BtD;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAoB;gBAGlC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,kBAAkB,CAAC,EAAE,kBAAkB;IASzC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IA2DzC;;OAEG;IACH,WAAW,IAAI,iBAAiB;YAMlB,cAAc;YAmBd,cAAc;YA+Bd,gBAAgB;YAyBhB,YAAY;YA+BZ,qBAAqB;YAsBrB,mBAAmB;YAmCnB,yBAAyB;YAOzB,YAAY;YA4CZ,cAAc;IAmE5B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,eAAe;YA6BT,aAAa;IAuB3B,OAAO,CAAC,kBAAkB;CA6D3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,EACtC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,cAAc,CAMhB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,EACtC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B;AAED,eAAe,cAAc,CAAC"}