@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,236 @@
1
+ /**
2
+ * Memory Application Service - Application Layer
3
+ *
4
+ * Orchestrates use cases and coordinates between domain and infrastructure.
5
+ * Provides a simplified interface for external consumers.
6
+ *
7
+ * @module v3/memory/application/services
8
+ */
9
+
10
+ import { MemoryEntry, MemoryType } from '../../domain/entities/memory-entry.js';
11
+ import { IMemoryRepository, VectorSearchResult, MemoryStatistics } from '../../domain/repositories/memory-repository.interface.js';
12
+ import { MemoryDomainService, ConsolidationOptions, ConsolidationResult } from '../../domain/services/memory-domain-service.js';
13
+ import { StoreMemoryCommandHandler, StoreMemoryInput } from '../commands/store-memory.command.js';
14
+ import { DeleteMemoryCommandHandler, BulkDeleteMemoryCommandHandler } from '../commands/delete-memory.command.js';
15
+ import { SearchMemoryQueryHandler, SearchMemoryInput, GetMemoryByKeyQueryHandler } from '../queries/search-memory.query.js';
16
+
17
+ /**
18
+ * Memory Application Service
19
+ *
20
+ * Main entry point for memory operations.
21
+ * Coordinates commands and queries with domain services.
22
+ */
23
+ export class MemoryApplicationService {
24
+ private readonly domainService: MemoryDomainService;
25
+ private readonly storeHandler: StoreMemoryCommandHandler;
26
+ private readonly deleteHandler: DeleteMemoryCommandHandler;
27
+ private readonly bulkDeleteHandler: BulkDeleteMemoryCommandHandler;
28
+ private readonly searchHandler: SearchMemoryQueryHandler;
29
+ private readonly getByKeyHandler: GetMemoryByKeyQueryHandler;
30
+
31
+ constructor(private readonly repository: IMemoryRepository) {
32
+ this.domainService = new MemoryDomainService(repository);
33
+ this.storeHandler = new StoreMemoryCommandHandler(repository, this.domainService);
34
+ this.deleteHandler = new DeleteMemoryCommandHandler(repository);
35
+ this.bulkDeleteHandler = new BulkDeleteMemoryCommandHandler(repository);
36
+ this.searchHandler = new SearchMemoryQueryHandler(repository);
37
+ this.getByKeyHandler = new GetMemoryByKeyQueryHandler(repository);
38
+ }
39
+
40
+ // ============================================================================
41
+ // Store Operations (Commands)
42
+ // ============================================================================
43
+
44
+ /**
45
+ * Store a memory entry
46
+ */
47
+ async store(input: StoreMemoryInput): Promise<MemoryEntry> {
48
+ const result = await this.storeHandler.execute(input);
49
+ return result.entry;
50
+ }
51
+
52
+ /**
53
+ * Store multiple memory entries
54
+ */
55
+ async storeMany(inputs: StoreMemoryInput[]): Promise<MemoryEntry[]> {
56
+ const results = await Promise.all(inputs.map((input) => this.storeHandler.execute(input)));
57
+ return results.map((r) => r.entry);
58
+ }
59
+
60
+ // ============================================================================
61
+ // Retrieve Operations (Queries)
62
+ // ============================================================================
63
+
64
+ /**
65
+ * Get a memory entry by namespace and key
66
+ */
67
+ async get(namespace: string, key: string): Promise<MemoryEntry | null> {
68
+ const result = await this.getByKeyHandler.execute({ namespace, key, trackAccess: true });
69
+ return result.entry ?? null;
70
+ }
71
+
72
+ /**
73
+ * Get a memory entry by ID
74
+ */
75
+ async getById(id: string): Promise<MemoryEntry | null> {
76
+ return this.repository.findById(id);
77
+ }
78
+
79
+ /**
80
+ * Search memory entries
81
+ */
82
+ async search(input: SearchMemoryInput): Promise<{
83
+ entries: MemoryEntry[];
84
+ total: number;
85
+ hasMore: boolean;
86
+ }> {
87
+ const result = await this.searchHandler.execute(input);
88
+ return {
89
+ entries: result.entries,
90
+ total: result.total,
91
+ hasMore: result.hasMore,
92
+ };
93
+ }
94
+
95
+ /**
96
+ * Search by vector similarity
97
+ */
98
+ async searchByVector(
99
+ vector: Float32Array,
100
+ options?: {
101
+ namespace?: string;
102
+ limit?: number;
103
+ threshold?: number;
104
+ }
105
+ ): Promise<VectorSearchResult[]> {
106
+ return this.domainService.searchSimilarWithTracking(
107
+ vector,
108
+ options?.namespace,
109
+ options?.limit ?? 10
110
+ );
111
+ }
112
+
113
+ /**
114
+ * Get all entries in a namespace
115
+ */
116
+ async getNamespace(namespace: string): Promise<MemoryEntry[]> {
117
+ return this.repository.findByNamespace(namespace, { status: 'active' });
118
+ }
119
+
120
+ /**
121
+ * List all namespaces
122
+ */
123
+ async listNamespaces(): Promise<string[]> {
124
+ return this.repository.listNamespaces();
125
+ }
126
+
127
+ // ============================================================================
128
+ // Delete Operations (Commands)
129
+ // ============================================================================
130
+
131
+ /**
132
+ * Delete a memory entry by namespace and key
133
+ */
134
+ async delete(namespace: string, key: string, hardDelete = false): Promise<boolean> {
135
+ const result = await this.deleteHandler.execute({ namespace, key, hardDelete });
136
+ return result.deleted;
137
+ }
138
+
139
+ /**
140
+ * Delete a memory entry by ID
141
+ */
142
+ async deleteById(id: string, hardDelete = false): Promise<boolean> {
143
+ const result = await this.deleteHandler.execute({ id, hardDelete });
144
+ return result.deleted;
145
+ }
146
+
147
+ /**
148
+ * Delete all entries in a namespace
149
+ */
150
+ async deleteNamespace(namespace: string, hardDelete = false): Promise<number> {
151
+ const entries = await this.repository.findByNamespace(namespace);
152
+ const result = await this.bulkDeleteHandler.execute({
153
+ ids: entries.map((e) => e.id),
154
+ hardDelete,
155
+ });
156
+ return result.deletedCount;
157
+ }
158
+
159
+ /**
160
+ * Clear all memory entries
161
+ */
162
+ async clear(): Promise<void> {
163
+ await this.repository.clear();
164
+ }
165
+
166
+ // ============================================================================
167
+ // Maintenance Operations
168
+ // ============================================================================
169
+
170
+ /**
171
+ * Consolidate memories using specified strategy
172
+ */
173
+ async consolidate(options: ConsolidationOptions): Promise<ConsolidationResult> {
174
+ return this.domainService.consolidate(options);
175
+ }
176
+
177
+ /**
178
+ * Clean up expired memories
179
+ */
180
+ async cleanupExpired(): Promise<number> {
181
+ return this.repository.deleteExpired();
182
+ }
183
+
184
+ /**
185
+ * Archive cold (rarely accessed) memories
186
+ */
187
+ async archiveCold(milliseconds: number = 86400000): Promise<number> {
188
+ return this.repository.archiveCold(milliseconds);
189
+ }
190
+
191
+ // ============================================================================
192
+ // Statistics
193
+ // ============================================================================
194
+
195
+ /**
196
+ * Get memory statistics
197
+ */
198
+ async getStatistics(): Promise<MemoryStatistics> {
199
+ return this.repository.getStatistics();
200
+ }
201
+
202
+ /**
203
+ * Count entries matching criteria
204
+ */
205
+ async count(options?: {
206
+ namespace?: string;
207
+ type?: MemoryType;
208
+ }): Promise<number> {
209
+ return this.repository.count(options);
210
+ }
211
+
212
+ /**
213
+ * Analyze a namespace
214
+ */
215
+ async analyzeNamespace(namespace: string) {
216
+ return this.domainService.analyzeNamespace(namespace);
217
+ }
218
+
219
+ // ============================================================================
220
+ // Lifecycle
221
+ // ============================================================================
222
+
223
+ /**
224
+ * Initialize the memory service
225
+ */
226
+ async initialize(): Promise<void> {
227
+ await this.repository.initialize();
228
+ }
229
+
230
+ /**
231
+ * Shutdown the memory service
232
+ */
233
+ async shutdown(): Promise<void> {
234
+ await this.repository.shutdown();
235
+ }
236
+ }