@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,505 @@
1
+ # Cross-Platform Database Support
2
+
3
+ ## Overview
4
+
5
+ The `@claude-flow/memory` module provides **universal cross-platform support** through intelligent database provider selection. This ensures your application works seamlessly on Windows, macOS, and Linux without code changes.
6
+
7
+ ## Architecture
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────┐
11
+ │ createDatabase() Factory │
12
+ │ Platform-Aware Auto-Selection │
13
+ └──────────────┬──────────────────────────┘
14
+
15
+ ┌───────┴────────┐
16
+ │ │
17
+ ▼ ▼
18
+ ┌─────────────┐ ┌─────────────┐
19
+ │ Windows │ │ macOS/Linux │
20
+ │ Detected │ │ Detected │
21
+ └──────┬──────┘ └──────┬──────┘
22
+ │ │
23
+ ▼ ▼
24
+ ┌─────────────┐ ┌─────────────┐
25
+ │ sql.js │ │better-sqlite│
26
+ │ (WASM) │ │ (Native) │
27
+ └──────┬──────┘ └──────┬──────┘
28
+ │ │
29
+ └────────┬────────┘
30
+
31
+
32
+ ┌─────────────┐
33
+ │JSON Fallback│
34
+ │ (Universal) │
35
+ └─────────────┘
36
+ ```
37
+
38
+ ## Supported Providers
39
+
40
+ ### 1. better-sqlite3 (Native SQLite)
41
+
42
+ **Best for:** macOS, Linux
43
+ **Performance:** Fastest (native C++ bindings)
44
+ **Features:**
45
+ - WAL mode for concurrent reads
46
+ - ACID transactions
47
+ - Optimal performance
48
+ - Native compilation required
49
+
50
+ ```typescript
51
+ const db = await createDatabase('./data/memory.db', {
52
+ provider: 'better-sqlite3',
53
+ walMode: true,
54
+ optimize: true
55
+ });
56
+ ```
57
+
58
+ ### 2. sql.js (WASM SQLite)
59
+
60
+ **Best for:** Windows, environments without native compilation
61
+ **Performance:** Good (WebAssembly)
62
+ **Features:**
63
+ - Pure JavaScript/WASM (no native compilation)
64
+ - Works everywhere
65
+ - Auto-persistence to disk
66
+ - Slightly slower than native
67
+
68
+ ```typescript
69
+ const db = await createDatabase('./data/memory.db', {
70
+ provider: 'sql.js',
71
+ autoPersistInterval: 5000 // Persist every 5 seconds
72
+ });
73
+ ```
74
+
75
+ ### 3. JSON (Simple File Storage)
76
+
77
+ **Best for:** Maximum compatibility, small datasets
78
+ **Performance:** Slower (brute-force search)
79
+ **Features:**
80
+ - Zero dependencies
81
+ - Human-readable storage
82
+ - Works on all platforms
83
+ - Limited scalability
84
+
85
+ ```typescript
86
+ const db = await createDatabase('./data/memory.db', {
87
+ provider: 'json'
88
+ });
89
+ ```
90
+
91
+ ## Platform-Specific Recommendations
92
+
93
+ ### Windows
94
+
95
+ ```typescript
96
+ // Recommended: sql.js (no native compilation issues)
97
+ const db = await createDatabase('./data/memory.db', {
98
+ provider: 'sql.js',
99
+ autoPersistInterval: 10000, // Auto-save every 10s
100
+ verbose: true
101
+ });
102
+ ```
103
+
104
+ **Why sql.js on Windows?**
105
+ - No Visual Studio build tools required
106
+ - No Python dependency for node-gyp
107
+ - Pure JavaScript/WASM stack
108
+ - Reliable across Windows versions
109
+
110
+ ### macOS
111
+
112
+ ```typescript
113
+ // Recommended: better-sqlite3 (native performance)
114
+ const db = await createDatabase('./data/memory.db', {
115
+ provider: 'better-sqlite3',
116
+ walMode: true, // Enable WAL mode
117
+ optimize: true // Performance optimizations
118
+ });
119
+ ```
120
+
121
+ **Why better-sqlite3 on macOS?**
122
+ - Native compilation works reliably
123
+ - Maximum performance
124
+ - WAL mode for concurrent access
125
+ - Apple's SQLite optimizations
126
+
127
+ ### Linux
128
+
129
+ ```typescript
130
+ // Recommended: better-sqlite3 (native performance)
131
+ const db = await createDatabase('./data/memory.db', {
132
+ provider: 'better-sqlite3',
133
+ walMode: true,
134
+ optimize: true
135
+ });
136
+ ```
137
+
138
+ **Why better-sqlite3 on Linux?**
139
+ - Native SQLite library widely available
140
+ - Excellent performance
141
+ - Production-ready
142
+ - Standard on most distributions
143
+
144
+ ## Automatic Provider Selection
145
+
146
+ The `createDatabase()` function uses intelligent platform detection:
147
+
148
+ ```typescript
149
+ // Auto-select best provider for current platform
150
+ const db = await createDatabase('./data/memory.db');
151
+ ```
152
+
153
+ **Selection Algorithm:**
154
+
155
+ 1. **Detect platform** (Windows, macOS, Linux)
156
+ 2. **Try recommended provider** for platform
157
+ 3. **Test provider availability** (compilation check)
158
+ 4. **Fallback to alternatives** if needed
159
+ 5. **Final fallback** to JSON if all fail
160
+
161
+ ```typescript
162
+ // Example: Auto-selection with fallback chain
163
+ Windows: sql.js → JSON
164
+ macOS: better-sqlite3 → sql.js → JSON
165
+ Linux: better-sqlite3 → sql.js → JSON
166
+ ```
167
+
168
+ ## Usage Examples
169
+
170
+ ### Example 1: Cross-Platform Application
171
+
172
+ ```typescript
173
+ import { createDatabase, getPlatformInfo } from '@claude-flow/memory';
174
+
175
+ async function initDatabase() {
176
+ const platform = getPlatformInfo();
177
+ console.log(`Running on ${platform.os}`);
178
+ console.log(`Recommended: ${platform.recommendedProvider}`);
179
+
180
+ // Auto-select best provider
181
+ const db = await createDatabase('./data/app.db', {
182
+ verbose: true
183
+ });
184
+
185
+ return db;
186
+ }
187
+ ```
188
+
189
+ ### Example 2: Windows-Specific Setup
190
+
191
+ ```typescript
192
+ import { createDatabase } from '@claude-flow/memory';
193
+
194
+ async function windowsSetup() {
195
+ // Force sql.js for Windows reliability
196
+ const db = await createDatabase('./data/windows.db', {
197
+ provider: 'sql.js',
198
+ autoPersistInterval: 5000,
199
+ verbose: true
200
+ });
201
+
202
+ // Store data
203
+ await db.store({
204
+ id: 'config-1',
205
+ key: 'app-config',
206
+ content: JSON.stringify({ theme: 'dark' }),
207
+ // ... other fields
208
+ });
209
+
210
+ // Changes auto-persist every 5 seconds
211
+ // Or manually trigger:
212
+ await db.persist();
213
+
214
+ return db;
215
+ }
216
+ ```
217
+
218
+ ### Example 3: Unix Performance Optimization
219
+
220
+ ```typescript
221
+ import { createDatabase, getAvailableProviders } from '@claude-flow/memory';
222
+
223
+ async function unixSetup() {
224
+ const available = await getAvailableProviders();
225
+
226
+ if (available.betterSqlite3) {
227
+ // Use native SQLite with optimizations
228
+ const db = await createDatabase('./data/unix.db', {
229
+ provider: 'better-sqlite3',
230
+ walMode: true, // Concurrent reads
231
+ optimize: true, // Performance tuning
232
+ maxEntries: 1000000 // Large dataset support
233
+ });
234
+
235
+ return db;
236
+ } else {
237
+ // Fallback to sql.js
238
+ const db = await createDatabase('./data/unix.db', {
239
+ provider: 'sql.js'
240
+ });
241
+
242
+ return db;
243
+ }
244
+ }
245
+ ```
246
+
247
+ ### Example 4: Migration Between Providers
248
+
249
+ ```typescript
250
+ import { createDatabase } from '@claude-flow/memory';
251
+
252
+ async function migrateDatabase() {
253
+ // Load from JSON
254
+ const sourceDb = await createDatabase('./old/data.db', {
255
+ provider: 'json'
256
+ });
257
+
258
+ const entries = await sourceDb.query({
259
+ type: 'hybrid',
260
+ limit: 10000
261
+ });
262
+
263
+ await sourceDb.shutdown();
264
+
265
+ // Migrate to SQLite
266
+ const destDb = await createDatabase('./new/data.db', {
267
+ provider: 'auto' // Auto-select best for platform
268
+ });
269
+
270
+ await destDb.bulkInsert(entries);
271
+ console.log(`Migrated ${entries.length} entries`);
272
+
273
+ await destDb.shutdown();
274
+ }
275
+ ```
276
+
277
+ ## API Reference
278
+
279
+ ### createDatabase()
280
+
281
+ ```typescript
282
+ async function createDatabase(
283
+ path: string,
284
+ options?: DatabaseOptions
285
+ ): Promise<IMemoryBackend>
286
+ ```
287
+
288
+ **Parameters:**
289
+ - `path` - Database file path (`:memory:` for in-memory)
290
+ - `options.provider` - Provider type (`'auto'`, `'better-sqlite3'`, `'sql.js'`, `'json'`)
291
+ - `options.verbose` - Enable logging
292
+ - `options.walMode` - Enable WAL mode (better-sqlite3 only)
293
+ - `options.optimize` - Enable optimizations
294
+ - `options.autoPersistInterval` - Auto-save interval in ms (sql.js only)
295
+ - `options.wasmPath` - Custom WASM file path (sql.js only)
296
+
297
+ **Returns:** Initialized `IMemoryBackend` instance
298
+
299
+ ### getPlatformInfo()
300
+
301
+ ```typescript
302
+ function getPlatformInfo(): PlatformInfo
303
+ ```
304
+
305
+ **Returns:**
306
+ ```typescript
307
+ {
308
+ os: string; // 'win32', 'darwin', 'linux'
309
+ isWindows: boolean;
310
+ isMacOS: boolean;
311
+ isLinux: boolean;
312
+ recommendedProvider: DatabaseProvider;
313
+ }
314
+ ```
315
+
316
+ ### getAvailableProviders()
317
+
318
+ ```typescript
319
+ async function getAvailableProviders(): Promise<{
320
+ betterSqlite3: boolean;
321
+ sqlJs: boolean;
322
+ json: boolean;
323
+ }>
324
+ ```
325
+
326
+ **Returns:** Which providers are available and working
327
+
328
+ ## Performance Comparison
329
+
330
+ | Provider | Read Speed | Write Speed | Memory | Compilation |
331
+ |----------|------------|-------------|--------|-------------|
332
+ | better-sqlite3 | ⚡⚡⚡⚡⚡ | ⚡⚡⚡⚡⚡ | Low | Required |
333
+ | sql.js | ⚡⚡⚡⚡ | ⚡⚡⚡⚡ | Medium | None |
334
+ | JSON | ⚡⚡ | ⚡⚡ | Low | None |
335
+
336
+ ## Installation
337
+
338
+ ### All Platforms
339
+
340
+ ```bash
341
+ npm install @claude-flow/memory
342
+ ```
343
+
344
+ Dependencies are installed automatically:
345
+ - `better-sqlite3` (tries to compile, fails gracefully)
346
+ - `sql.js` (pure JavaScript, always works)
347
+
348
+ ### Windows-Specific
349
+
350
+ If you encounter compilation errors with `better-sqlite3`:
351
+
352
+ ```bash
353
+ # Skip better-sqlite3 compilation
354
+ npm install @claude-flow/memory --no-optional
355
+
356
+ # The module will automatically use sql.js
357
+ ```
358
+
359
+ ### Linux-Specific
360
+
361
+ Install SQLite development headers:
362
+
363
+ ```bash
364
+ # Debian/Ubuntu
365
+ sudo apt-get install libsqlite3-dev
366
+
367
+ # RHEL/Fedora
368
+ sudo yum install sqlite-devel
369
+
370
+ # Then install
371
+ npm install @claude-flow/memory
372
+ ```
373
+
374
+ ## Troubleshooting
375
+
376
+ ### Windows: better-sqlite3 Compilation Fails
377
+
378
+ **Problem:** `node-gyp` errors, missing Visual Studio
379
+
380
+ **Solution:** Use sql.js provider (automatic fallback)
381
+
382
+ ```typescript
383
+ const db = await createDatabase('./data/memory.db', {
384
+ provider: 'sql.js'
385
+ });
386
+ ```
387
+
388
+ ### macOS: Code Signing Issues
389
+
390
+ **Problem:** "cannot be opened because the developer cannot be verified"
391
+
392
+ **Solution:** Allow native module in System Preferences or use sql.js
393
+
394
+ ```bash
395
+ # Allow native module
396
+ xattr -d com.apple.quarantine node_modules/better-sqlite3/build/Release/better_sqlite3.node
397
+ ```
398
+
399
+ ### Linux: Missing SQLite Headers
400
+
401
+ **Problem:** `sqlite3.h not found`
402
+
403
+ **Solution:** Install development headers
404
+
405
+ ```bash
406
+ sudo apt-get install libsqlite3-dev
407
+ ```
408
+
409
+ ## Best Practices
410
+
411
+ ### 1. Use Auto-Selection in Production
412
+
413
+ ```typescript
414
+ // Let the library choose the best provider
415
+ const db = await createDatabase('./data/memory.db');
416
+ ```
417
+
418
+ ### 2. Persist Regularly on Windows
419
+
420
+ ```typescript
421
+ // sql.js is in-memory, persist frequently
422
+ const db = await createDatabase('./data/memory.db', {
423
+ provider: 'sql.js',
424
+ autoPersistInterval: 5000 // 5 seconds
425
+ });
426
+ ```
427
+
428
+ ### 3. Enable WAL Mode on Unix
429
+
430
+ ```typescript
431
+ // Better concurrency on macOS/Linux
432
+ const db = await createDatabase('./data/memory.db', {
433
+ provider: 'better-sqlite3',
434
+ walMode: true
435
+ });
436
+ ```
437
+
438
+ ### 4. Check Health Regularly
439
+
440
+ ```typescript
441
+ const health = await db.healthCheck();
442
+ if (health.status !== 'healthy') {
443
+ console.warn('Database issues:', health.issues);
444
+ console.log('Recommendations:', health.recommendations);
445
+ }
446
+ ```
447
+
448
+ ### 5. Handle Shutdown Gracefully
449
+
450
+ ```typescript
451
+ // Always shutdown to persist changes
452
+ process.on('SIGINT', async () => {
453
+ await db.shutdown();
454
+ process.exit(0);
455
+ });
456
+ ```
457
+
458
+ ## Environment Variables
459
+
460
+ ```bash
461
+ # Force specific provider
462
+ CLAUDE_FLOW_DB_PROVIDER=sql.js
463
+
464
+ # Enable verbose logging
465
+ CLAUDE_FLOW_DB_VERBOSE=true
466
+
467
+ # Set auto-persist interval (ms)
468
+ CLAUDE_FLOW_DB_PERSIST_INTERVAL=10000
469
+ ```
470
+
471
+ ## Docker Support
472
+
473
+ ```dockerfile
474
+ FROM node:20-alpine
475
+
476
+ # Install SQLite for better-sqlite3 (optional)
477
+ RUN apk add --no-cache sqlite-dev python3 make g++
478
+
479
+ WORKDIR /app
480
+ COPY package*.json ./
481
+ RUN npm install
482
+
483
+ # Will use better-sqlite3 if compilation succeeds,
484
+ # otherwise falls back to sql.js automatically
485
+ ```
486
+
487
+ ## Testing
488
+
489
+ Run cross-platform tests:
490
+
491
+ ```bash
492
+ # Run all tests
493
+ npm test
494
+
495
+ # Test specific provider
496
+ npm test -- --grep "sql.js"
497
+ npm test -- --grep "better-sqlite3"
498
+
499
+ # Test on current platform
500
+ npm test -- src/database-provider.test.ts
501
+ ```
502
+
503
+ ## License
504
+
505
+ MIT