@claude-flow/memory 3.0.0-alpha.1 → 3.0.0-alpha.10

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 (163) hide show
  1. package/README.md +356 -18
  2. package/dist/agent-memory-scope.d.ts +131 -0
  3. package/dist/agent-memory-scope.d.ts.map +1 -0
  4. package/dist/agent-memory-scope.js +215 -0
  5. package/dist/agent-memory-scope.js.map +1 -0
  6. package/dist/agent-memory-scope.test.d.ts +8 -0
  7. package/dist/agent-memory-scope.test.d.ts.map +1 -0
  8. package/dist/agent-memory-scope.test.js +463 -0
  9. package/dist/agent-memory-scope.test.js.map +1 -0
  10. package/dist/agentdb-adapter.d.ts +22 -3
  11. package/dist/agentdb-adapter.d.ts.map +1 -1
  12. package/dist/agentdb-adapter.js +135 -8
  13. package/dist/agentdb-adapter.js.map +1 -1
  14. package/dist/auto-memory-bridge.d.ts +226 -0
  15. package/dist/auto-memory-bridge.d.ts.map +1 -0
  16. package/dist/auto-memory-bridge.js +709 -0
  17. package/dist/auto-memory-bridge.js.map +1 -0
  18. package/dist/auto-memory-bridge.test.d.ts +8 -0
  19. package/dist/auto-memory-bridge.test.d.ts.map +1 -0
  20. package/dist/auto-memory-bridge.test.js +754 -0
  21. package/dist/auto-memory-bridge.test.js.map +1 -0
  22. package/dist/benchmark.test.d.ts +2 -0
  23. package/dist/benchmark.test.d.ts.map +1 -0
  24. package/dist/benchmark.test.js +277 -0
  25. package/dist/benchmark.test.js.map +1 -0
  26. package/dist/hybrid-backend.d.ts.map +1 -1
  27. package/dist/hybrid-backend.js +29 -4
  28. package/dist/hybrid-backend.js.map +1 -1
  29. package/dist/index.d.ts +8 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/learning-bridge.d.ts +137 -0
  34. package/dist/learning-bridge.d.ts.map +1 -0
  35. package/dist/learning-bridge.js +335 -0
  36. package/dist/learning-bridge.js.map +1 -0
  37. package/dist/learning-bridge.test.d.ts +8 -0
  38. package/dist/learning-bridge.test.d.ts.map +1 -0
  39. package/dist/learning-bridge.test.js +578 -0
  40. package/dist/learning-bridge.test.js.map +1 -0
  41. package/dist/memory-graph.d.ts +100 -0
  42. package/dist/memory-graph.d.ts.map +1 -0
  43. package/dist/memory-graph.js +333 -0
  44. package/dist/memory-graph.js.map +1 -0
  45. package/dist/memory-graph.test.d.ts +8 -0
  46. package/dist/memory-graph.test.d.ts.map +1 -0
  47. package/dist/memory-graph.test.js +609 -0
  48. package/dist/memory-graph.test.js.map +1 -0
  49. package/dist/sqlite-backend.js +3 -3
  50. package/dist/sqljs-backend.d.ts.map +1 -1
  51. package/dist/sqljs-backend.js +5 -2
  52. package/dist/sqljs-backend.js.map +1 -1
  53. package/dist/types.d.ts +3 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +20 -5
  56. package/.agentic-flow/intelligence.json +0 -16
  57. package/__tests__/coverage/base.css +0 -224
  58. package/__tests__/coverage/block-navigation.js +0 -87
  59. package/__tests__/coverage/coverage-final.json +0 -19
  60. package/__tests__/coverage/favicon.png +0 -0
  61. package/__tests__/coverage/index.html +0 -206
  62. package/__tests__/coverage/lcov-report/base.css +0 -224
  63. package/__tests__/coverage/lcov-report/block-navigation.js +0 -87
  64. package/__tests__/coverage/lcov-report/favicon.png +0 -0
  65. package/__tests__/coverage/lcov-report/index.html +0 -206
  66. package/__tests__/coverage/lcov-report/prettify.css +0 -1
  67. package/__tests__/coverage/lcov-report/prettify.js +0 -2
  68. package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  69. package/__tests__/coverage/lcov-report/sorter.js +0 -210
  70. package/__tests__/coverage/lcov-report/src/agentdb-adapter.ts.html +0 -2737
  71. package/__tests__/coverage/lcov-report/src/agentdb-backend.ts.html +0 -3130
  72. package/__tests__/coverage/lcov-report/src/application/commands/delete-memory.command.ts.html +0 -601
  73. package/__tests__/coverage/lcov-report/src/application/commands/index.html +0 -131
  74. package/__tests__/coverage/lcov-report/src/application/commands/store-memory.command.ts.html +0 -394
  75. package/__tests__/coverage/lcov-report/src/application/queries/index.html +0 -116
  76. package/__tests__/coverage/lcov-report/src/application/queries/search-memory.query.ts.html +0 -796
  77. package/__tests__/coverage/lcov-report/src/application/services/index.html +0 -116
  78. package/__tests__/coverage/lcov-report/src/application/services/memory-application-service.ts.html +0 -793
  79. package/__tests__/coverage/lcov-report/src/cache-manager.ts.html +0 -1633
  80. package/__tests__/coverage/lcov-report/src/database-provider.ts.html +0 -1618
  81. package/__tests__/coverage/lcov-report/src/domain/entities/index.html +0 -116
  82. package/__tests__/coverage/lcov-report/src/domain/entities/memory-entry.ts.html +0 -952
  83. package/__tests__/coverage/lcov-report/src/domain/services/index.html +0 -116
  84. package/__tests__/coverage/lcov-report/src/domain/services/memory-domain-service.ts.html +0 -1294
  85. package/__tests__/coverage/lcov-report/src/hnsw-index.ts.html +0 -3124
  86. package/__tests__/coverage/lcov-report/src/hybrid-backend.ts.html +0 -2167
  87. package/__tests__/coverage/lcov-report/src/index.html +0 -266
  88. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/hybrid-memory-repository.ts.html +0 -1633
  89. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/index.html +0 -116
  90. package/__tests__/coverage/lcov-report/src/migration.ts.html +0 -2092
  91. package/__tests__/coverage/lcov-report/src/query-builder.ts.html +0 -1711
  92. package/__tests__/coverage/lcov-report/src/sqlite-backend.ts.html +0 -2281
  93. package/__tests__/coverage/lcov-report/src/sqljs-backend.ts.html +0 -2374
  94. package/__tests__/coverage/lcov-report/src/types.ts.html +0 -2266
  95. package/__tests__/coverage/lcov.info +0 -10238
  96. package/__tests__/coverage/prettify.css +0 -1
  97. package/__tests__/coverage/prettify.js +0 -2
  98. package/__tests__/coverage/sort-arrow-sprite.png +0 -0
  99. package/__tests__/coverage/sorter.js +0 -210
  100. package/__tests__/coverage/src/agentdb-adapter.ts.html +0 -2737
  101. package/__tests__/coverage/src/agentdb-backend.ts.html +0 -3130
  102. package/__tests__/coverage/src/application/commands/delete-memory.command.ts.html +0 -601
  103. package/__tests__/coverage/src/application/commands/index.html +0 -131
  104. package/__tests__/coverage/src/application/commands/store-memory.command.ts.html +0 -394
  105. package/__tests__/coverage/src/application/queries/index.html +0 -116
  106. package/__tests__/coverage/src/application/queries/search-memory.query.ts.html +0 -796
  107. package/__tests__/coverage/src/application/services/index.html +0 -116
  108. package/__tests__/coverage/src/application/services/memory-application-service.ts.html +0 -793
  109. package/__tests__/coverage/src/cache-manager.ts.html +0 -1633
  110. package/__tests__/coverage/src/database-provider.ts.html +0 -1618
  111. package/__tests__/coverage/src/domain/entities/index.html +0 -116
  112. package/__tests__/coverage/src/domain/entities/memory-entry.ts.html +0 -952
  113. package/__tests__/coverage/src/domain/services/index.html +0 -116
  114. package/__tests__/coverage/src/domain/services/memory-domain-service.ts.html +0 -1294
  115. package/__tests__/coverage/src/hnsw-index.ts.html +0 -3124
  116. package/__tests__/coverage/src/hybrid-backend.ts.html +0 -2167
  117. package/__tests__/coverage/src/index.html +0 -266
  118. package/__tests__/coverage/src/infrastructure/repositories/hybrid-memory-repository.ts.html +0 -1633
  119. package/__tests__/coverage/src/infrastructure/repositories/index.html +0 -116
  120. package/__tests__/coverage/src/migration.ts.html +0 -2092
  121. package/__tests__/coverage/src/query-builder.ts.html +0 -1711
  122. package/__tests__/coverage/src/sqlite-backend.ts.html +0 -2281
  123. package/__tests__/coverage/src/sqljs-backend.ts.html +0 -2374
  124. package/__tests__/coverage/src/types.ts.html +0 -2266
  125. package/benchmarks/cache-hit-rate.bench.ts +0 -535
  126. package/benchmarks/hnsw-indexing.bench.ts +0 -552
  127. package/benchmarks/memory-write.bench.ts +0 -469
  128. package/benchmarks/vector-search.bench.ts +0 -449
  129. package/docs/AGENTDB-INTEGRATION.md +0 -388
  130. package/docs/CROSS_PLATFORM.md +0 -505
  131. package/docs/WINDOWS_SUPPORT.md +0 -422
  132. package/examples/agentdb-example.ts +0 -345
  133. package/examples/cross-platform-usage.ts +0 -326
  134. package/framework/benchmark.ts +0 -112
  135. package/src/agentdb-adapter.ts +0 -884
  136. package/src/agentdb-backend.test.ts +0 -339
  137. package/src/agentdb-backend.ts +0 -1016
  138. package/src/application/commands/delete-memory.command.ts +0 -172
  139. package/src/application/commands/store-memory.command.ts +0 -103
  140. package/src/application/index.ts +0 -36
  141. package/src/application/queries/search-memory.query.ts +0 -237
  142. package/src/application/services/memory-application-service.ts +0 -236
  143. package/src/cache-manager.ts +0 -516
  144. package/src/database-provider.test.ts +0 -364
  145. package/src/database-provider.ts +0 -511
  146. package/src/domain/entities/memory-entry.ts +0 -289
  147. package/src/domain/index.ts +0 -35
  148. package/src/domain/repositories/memory-repository.interface.ts +0 -120
  149. package/src/domain/services/memory-domain-service.ts +0 -403
  150. package/src/hnsw-index.ts +0 -1013
  151. package/src/hybrid-backend.test.ts +0 -399
  152. package/src/hybrid-backend.ts +0 -694
  153. package/src/index.ts +0 -515
  154. package/src/infrastructure/index.ts +0 -23
  155. package/src/infrastructure/repositories/hybrid-memory-repository.ts +0 -516
  156. package/src/migration.ts +0 -669
  157. package/src/query-builder.ts +0 -542
  158. package/src/sqlite-backend.ts +0 -732
  159. package/src/sqljs-backend.ts +0 -763
  160. package/src/types.ts +0 -727
  161. package/tsconfig.json +0 -9
  162. package/tsconfig.tsbuildinfo +0 -1
  163. package/verify-cross-platform.ts +0 -170
@@ -1,505 +0,0 @@
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