@cmdoss/memwal-sdk 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/ARCHITECTURE.md +547 -547
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +181 -181
  4. package/dist/ai-sdk/tools.d.ts +2 -2
  5. package/dist/ai-sdk/tools.js +2 -2
  6. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  7. package/dist/client/SimplePDWClient.d.ts +1 -1
  8. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  9. package/dist/client/SimplePDWClient.js +16 -7
  10. package/dist/client/SimplePDWClient.js.map +1 -1
  11. package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
  12. package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
  13. package/dist/client/namespaces/MemoryNamespace.d.ts +27 -0
  14. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  15. package/dist/client/namespaces/MemoryNamespace.js +104 -0
  16. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  17. package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
  18. package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
  19. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  20. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +22 -2
  21. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  22. package/dist/graph/GraphService.js +1 -1
  23. package/dist/graph/GraphService.js.map +1 -1
  24. package/dist/index.d.ts +3 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
  29. package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
  30. package/dist/retrieval/MemoryRetrievalService.js +44 -4
  31. package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
  32. package/dist/services/EmbeddingService.d.ts +28 -1
  33. package/dist/services/EmbeddingService.d.ts.map +1 -1
  34. package/dist/services/EmbeddingService.js +54 -0
  35. package/dist/services/EmbeddingService.js.map +1 -1
  36. package/dist/services/IndexManager.d.ts +5 -1
  37. package/dist/services/IndexManager.d.ts.map +1 -1
  38. package/dist/services/IndexManager.js +17 -40
  39. package/dist/services/IndexManager.js.map +1 -1
  40. package/dist/services/QueryService.js +1 -1
  41. package/dist/services/QueryService.js.map +1 -1
  42. package/dist/services/StorageService.d.ts +10 -0
  43. package/dist/services/StorageService.d.ts.map +1 -1
  44. package/dist/services/StorageService.js +13 -0
  45. package/dist/services/StorageService.js.map +1 -1
  46. package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
  47. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  48. package/dist/services/storage/QuiltBatchManager.js +410 -20
  49. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  50. package/dist/services/storage/index.d.ts +1 -1
  51. package/dist/services/storage/index.d.ts.map +1 -1
  52. package/dist/services/storage/index.js.map +1 -1
  53. package/dist/utils/LRUCache.d.ts +106 -0
  54. package/dist/utils/LRUCache.d.ts.map +1 -0
  55. package/dist/utils/LRUCache.js +281 -0
  56. package/dist/utils/LRUCache.js.map +1 -0
  57. package/dist/utils/index.d.ts +1 -0
  58. package/dist/utils/index.d.ts.map +1 -1
  59. package/dist/utils/index.js +2 -0
  60. package/dist/utils/index.js.map +1 -1
  61. package/dist/utils/memoryIndexOnChain.d.ts +212 -0
  62. package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
  63. package/dist/utils/memoryIndexOnChain.js +312 -0
  64. package/dist/utils/memoryIndexOnChain.js.map +1 -0
  65. package/dist/utils/rebuildIndexNode.d.ts +29 -0
  66. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  67. package/dist/utils/rebuildIndexNode.js +366 -98
  68. package/dist/utils/rebuildIndexNode.js.map +1 -1
  69. package/dist/vector/HnswWasmService.d.ts +20 -5
  70. package/dist/vector/HnswWasmService.d.ts.map +1 -1
  71. package/dist/vector/HnswWasmService.js +73 -40
  72. package/dist/vector/HnswWasmService.js.map +1 -1
  73. package/dist/vector/IHnswService.d.ts +10 -1
  74. package/dist/vector/IHnswService.d.ts.map +1 -1
  75. package/dist/vector/IHnswService.js.map +1 -1
  76. package/dist/vector/NodeHnswService.d.ts +16 -0
  77. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  78. package/dist/vector/NodeHnswService.js +84 -5
  79. package/dist/vector/NodeHnswService.js.map +1 -1
  80. package/dist/vector/createHnswService.d.ts +1 -1
  81. package/dist/vector/createHnswService.js +1 -1
  82. package/dist/vector/index.d.ts +1 -1
  83. package/dist/vector/index.js +1 -1
  84. package/package.json +157 -157
  85. package/src/access/index.ts +8 -8
  86. package/src/aggregation/index.ts +8 -8
  87. package/src/ai-sdk/tools.ts +2 -2
  88. package/src/client/SimplePDWClient.ts +23 -8
  89. package/src/client/namespaces/EmbeddingsNamespace.ts +1 -1
  90. package/src/client/namespaces/MemoryNamespace.ts +137 -0
  91. package/src/client/namespaces/consolidated/AINamespace.ts +2 -2
  92. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +20 -2
  93. package/src/client/signers/DappKitSigner.ts +207 -207
  94. package/src/core/types/index.ts +1 -1
  95. package/src/generated/pdw/deps/sui/object.ts +12 -12
  96. package/src/generated/pdw/deps/sui/vec_map.ts +32 -32
  97. package/src/generated/pdw/memory.ts +1087 -1087
  98. package/src/generated/pdw/wallet.ts +123 -123
  99. package/src/generated/utils/index.ts +159 -159
  100. package/src/graph/GraphService.ts +1 -1
  101. package/src/index.ts +25 -1
  102. package/src/permissions/index.ts +9 -9
  103. package/src/retrieval/MemoryRetrievalService.ts +78 -4
  104. package/src/services/EmbeddingService.ts +66 -1
  105. package/src/services/IndexManager.ts +18 -45
  106. package/src/services/QueryService.ts +1 -1
  107. package/src/services/StorageService.ts +15 -0
  108. package/src/services/storage/QuiltBatchManager.ts +492 -22
  109. package/src/services/storage/index.ts +6 -1
  110. package/src/utils/LRUCache.ts +378 -0
  111. package/src/utils/index.ts +8 -0
  112. package/src/utils/memoryIndexOnChain.ts +507 -0
  113. package/src/utils/rebuildIndexNode.ts +453 -106
  114. package/src/vector/HnswWasmService.ts +95 -43
  115. package/src/vector/IHnswService.ts +10 -1
  116. package/src/vector/NodeHnswService.ts +103 -5
  117. package/src/vector/createHnswService.ts +1 -1
  118. package/src/vector/index.ts +1 -1
  119. package/src/wallet/index.ts +17 -17
@@ -11,6 +11,7 @@
11
11
  * - ✅ Walrus storage integration
12
12
  * - ✅ Near-native performance via WASM
13
13
  * - ✅ Safe for Node.js/SSR (uses dynamic import)
14
+ * - ✅ LRU cache with memory limits to prevent OOM
14
15
  */
15
16
  type HierarchicalNSW = any;
16
17
  import { StorageService } from '../services/StorageService';
@@ -18,6 +19,12 @@ import { HNSWIndexConfig, HNSWSearchResult, HNSWSearchOptions, BatchConfig, Batc
18
19
  /**
19
20
  * Browser-compatible HNSW vector indexing service using WebAssembly
20
21
  * Drop-in replacement for HnswIndexService with identical API
22
+ *
23
+ * Memory Management:
24
+ * - LRU cache limits number of indexes in memory (default: 5)
25
+ * - TTL-based expiration for idle indexes (default: 10 minutes)
26
+ * - Optional memory limit (default: 512MB)
27
+ * - Automatic cleanup of expired/evicted indexes
21
28
  */
22
29
  export declare class HnswWasmService {
23
30
  private storageService;
@@ -27,9 +34,15 @@ export declare class HnswWasmService {
27
34
  private readonly config;
28
35
  private readonly indexConfig;
29
36
  private batchProcessor?;
30
- private cacheCleanup?;
31
37
  private initPromise;
32
- constructor(storageService: StorageService, indexConfig?: Partial<HNSWIndexConfig>, batchConfig?: Partial<BatchConfig>);
38
+ private readonly maxCachedIndexes;
39
+ private readonly indexTtlMs;
40
+ private readonly maxMemoryBytes;
41
+ constructor(storageService: StorageService, indexConfig?: Partial<HNSWIndexConfig>, batchConfig?: Partial<BatchConfig>, memoryConfig?: {
42
+ maxCachedIndexes?: number;
43
+ indexTtlMs?: number;
44
+ maxMemoryMB?: number;
45
+ });
33
46
  /**
34
47
  * Initialize hnswlib-wasm (must be called before use)
35
48
  */
@@ -68,7 +81,11 @@ export declare class HnswWasmService {
68
81
  /**
69
82
  * Get cache statistics
70
83
  */
71
- getCacheStats(): BatchStats;
84
+ getCacheStats(): BatchStats & {
85
+ memoryUsageMB: number;
86
+ maxMemoryMB: number;
87
+ maxCachedIndexes: number;
88
+ };
72
89
  /**
73
90
  * Remove a vector from the index
74
91
  */
@@ -84,12 +101,10 @@ export declare class HnswWasmService {
84
101
  private createCacheEntry;
85
102
  private scheduleBatchJob;
86
103
  private startBatchProcessor;
87
- private startCacheCleanup;
88
104
  private processBatchJobs;
89
105
  private flushPendingVectors;
90
106
  private saveIndexToWalrus;
91
107
  private applyMetadataFilter;
92
- private cleanupCache;
93
108
  private validateVector;
94
109
  private createVectorError;
95
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HnswWasmService.d.ts","sourceRoot":"","sources":["../../src/vector/HnswWasmService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,KAAK,eAAe,GAAG,GAAG,CAAC;AAU3B,OAAO,EAAE,cAAc,EAAuB,MAAM,4BAA4B,CAAC;AACjF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EAEX,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAuB5B;;;GAGG;AACH,qBAAa,eAAe;IAWxB,OAAO,CAAC,cAAc;IAVxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,WAAW,CAA8B;gBAGvC,cAAc,EAAE,cAAc,EACtC,WAAW,GAAE,OAAO,CAAC,eAAe,CAAM,EAC1C,WAAW,GAAE,OAAO,CAAC,WAAW,CAAM;IAwBxC;;OAEG;YACW,UAAU;IAexB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,GACrC,OAAO,CAAC;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;IA0C9D;;OAEG;IACH,uBAAuB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI;IAkDP;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAuE5B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuC9E;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBrD;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;OAEG;IACH,aAAa,IAAI,UAAU;IA2B3B;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqBzD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC;;OAEG;IACH,OAAO,IAAI,IAAI;YAcD,gBAAgB;IAiB9B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;YAMX,gBAAgB;YAuBhB,mBAAmB;YAsDnB,iBAAiB;IAyC/B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;CAM1B;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"HnswWasmService.d.ts","sourceRoot":"","sources":["../../src/vector/HnswWasmService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,KAAK,eAAe,GAAG,GAAG,CAAC;AAU3B,OAAO,EAAE,cAAc,EAAuB,MAAM,4BAA4B,CAAC;AACjF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EAEX,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAgC5B;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAexB,OAAO,CAAC,cAAc;IAdxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,WAAW,CAA8B;IAGjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAG9B,cAAc,EAAE,cAAc,EACtC,WAAW,GAAE,OAAO,CAAC,eAAe,CAAM,EAC1C,WAAW,GAAE,OAAO,CAAC,WAAW,CAAM,EACtC,YAAY,CAAC,EAAE;QACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IA4DH;;OAEG;YACW,UAAU;IAcxB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,GACrC,OAAO,CAAC;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;IA4C9D;;OAEG;IACH,uBAAuB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI;IAqDP;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAuE5B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwC9E;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBrD;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAsBD;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqBzD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC;;OAEG;IACH,OAAO,IAAI,IAAI;YAYD,gBAAgB;IAkB9B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;YAQb,gBAAgB;YAuBhB,mBAAmB;YAsDnB,iBAAiB;IAyC/B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;CAM1B;AAED,eAAe,eAAe,CAAC"}
@@ -11,6 +11,7 @@
11
11
  * - ✅ Walrus storage integration
12
12
  * - ✅ Near-native performance via WASM
13
13
  * - ✅ Safe for Node.js/SSR (uses dynamic import)
14
+ * - ✅ LRU cache with memory limits to prevent OOM
14
15
  */
15
16
  /**
16
17
  * Helper to dynamically load hnswlib-wasm (browser only)
@@ -19,15 +20,26 @@ async function loadHnswlibDynamic() {
19
20
  const module = await import('hnswlib-wasm/dist/hnswlib.js');
20
21
  return module.loadHnswlib();
21
22
  }
23
+ import { LRUCache, estimateIndexCacheSize } from '../utils/LRUCache.js';
24
+ // Memory management constants
25
+ const DEFAULT_MAX_CACHED_INDEXES = 5; // Max number of user indexes to keep in memory
26
+ const DEFAULT_INDEX_TTL_MS = 10 * 60 * 1000; // 10 minutes TTL for idle indexes
27
+ const DEFAULT_MAX_MEMORY_MB = 512; // 512MB max memory for index cache
28
+ const DEFAULT_CLEANUP_INTERVAL_MS = 60 * 1000; // Check every 1 minute
22
29
  /**
23
30
  * Browser-compatible HNSW vector indexing service using WebAssembly
24
31
  * Drop-in replacement for HnswIndexService with identical API
32
+ *
33
+ * Memory Management:
34
+ * - LRU cache limits number of indexes in memory (default: 5)
35
+ * - TTL-based expiration for idle indexes (default: 10 minutes)
36
+ * - Optional memory limit (default: 512MB)
37
+ * - Automatic cleanup of expired/evicted indexes
25
38
  */
26
39
  export class HnswWasmService {
27
- constructor(storageService, indexConfig = {}, batchConfig = {}) {
40
+ constructor(storageService, indexConfig = {}, batchConfig = {}, memoryConfig) {
28
41
  this.storageService = storageService;
29
42
  this.hnswlib = null;
30
- this.indexCache = new Map();
31
43
  this.batchJobs = new Map();
32
44
  this.initPromise = null;
33
45
  // Default HNSW configuration (matching HnswIndexService)
@@ -46,6 +58,40 @@ export class HnswWasmService {
46
58
  maxCacheSize: batchConfig.maxCacheSize || 100,
47
59
  cacheTtlMs: batchConfig.cacheTtlMs || 30 * 60 * 1000 // 30 minutes
48
60
  };
61
+ // Memory management configuration
62
+ this.maxCachedIndexes = memoryConfig?.maxCachedIndexes ?? DEFAULT_MAX_CACHED_INDEXES;
63
+ this.indexTtlMs = memoryConfig?.indexTtlMs ?? DEFAULT_INDEX_TTL_MS;
64
+ this.maxMemoryBytes = (memoryConfig?.maxMemoryMB ?? DEFAULT_MAX_MEMORY_MB) * 1024 * 1024;
65
+ // Initialize LRU cache with memory limits
66
+ this.indexCache = new LRUCache({
67
+ maxSize: this.maxCachedIndexes,
68
+ ttlMs: this.indexTtlMs,
69
+ cleanupIntervalMs: DEFAULT_CLEANUP_INTERVAL_MS,
70
+ maxMemoryBytes: this.maxMemoryBytes,
71
+ sizeEstimator: (entry) => estimateIndexCacheSize({
72
+ vectors: entry.vectors || new Map(),
73
+ metadata: entry.metadata,
74
+ pendingVectors: entry.pendingVectors,
75
+ }),
76
+ onEvict: (userAddress, entry, reason) => {
77
+ console.log(`🧹 [HnswWasmService] Evicting index for ${userAddress} (reason: ${reason})`);
78
+ // Dispose WASM resources
79
+ if (entry.index) {
80
+ try {
81
+ if (typeof entry.index.free === 'function') {
82
+ entry.index.free();
83
+ }
84
+ }
85
+ catch (e) {
86
+ // Ignore cleanup errors
87
+ }
88
+ }
89
+ // Remove associated batch job
90
+ this.batchJobs.delete(userAddress);
91
+ },
92
+ });
93
+ console.log(`✅ HnswWasmService initialized with memory limits:`);
94
+ console.log(` Max indexes: ${this.maxCachedIndexes}, TTL: ${this.indexTtlMs / 1000}s, Max memory: ${this.maxMemoryBytes / 1024 / 1024}MB`);
49
95
  // Initialize WASM library asynchronously
50
96
  this.initPromise = this.initialize();
51
97
  }
@@ -57,9 +103,8 @@ export class HnswWasmService {
57
103
  console.log('🔧 Loading hnswlib-wasm...');
58
104
  this.hnswlib = await loadHnswlibDynamic();
59
105
  console.log('✅ hnswlib-wasm loaded successfully');
60
- // Start background processors
106
+ // Start batch processor (cache cleanup is handled by LRUCache)
61
107
  this.startBatchProcessor();
62
- this.startCacheCleanup();
63
108
  }
64
109
  catch (error) {
65
110
  console.error('❌ Failed to load hnswlib-wasm:', error);
@@ -86,10 +131,11 @@ export class HnswWasmService {
86
131
  const config = { ...this.indexConfig, ...options };
87
132
  console.log(`🔨 Creating new HNSW index for user ${userAddress}`);
88
133
  console.log(` Dimensions: ${config.dimension}, M: ${config.m}, efConstruction: ${config.efConstruction}`);
134
+ console.log(` Cache stats: ${this.indexCache.size}/${this.maxCachedIndexes} indexes, ${(this.indexCache.memoryBytes / 1024 / 1024).toFixed(1)}MB`);
89
135
  // Create a new index using WASM (constructor takes: spaceName, numDimensions, autoSaveFilename)
90
136
  const index = new this.hnswlib.HierarchicalNSW(config.spaceType, config.dimension, '');
91
137
  index.initIndex(config.maxElements, config.m, config.efConstruction, config.randomSeed);
92
- // Create cache entry
138
+ // Create cache entry (LRU cache handles eviction automatically)
93
139
  this.indexCache.set(userAddress, {
94
140
  index,
95
141
  lastModified: new Date(),
@@ -97,7 +143,8 @@ export class HnswWasmService {
97
143
  isDirty: false,
98
144
  version: 1,
99
145
  metadata: new Map(),
100
- dimensions: config.dimension
146
+ dimensions: config.dimension,
147
+ vectors: new Map(),
101
148
  });
102
149
  // Serialize the empty index
103
150
  const indexName = `index_${userAddress}_${Date.now()}`;
@@ -120,7 +167,7 @@ export class HnswWasmService {
120
167
  try {
121
168
  // Validate input
122
169
  this.validateVector(vector);
123
- // Get or create cache entry
170
+ // Get or create cache entry (LRU cache will evict old entries if needed)
124
171
  let cacheEntry = this.indexCache.get(userAddress);
125
172
  if (!cacheEntry) {
126
173
  console.warn(`No cached index found for user ${userAddress}, will create on first flush`);
@@ -132,7 +179,8 @@ export class HnswWasmService {
132
179
  isDirty: true,
133
180
  version: 1,
134
181
  metadata: new Map(),
135
- dimensions: vector.length
182
+ dimensions: vector.length,
183
+ vectors: new Map(),
136
184
  };
137
185
  this.indexCache.set(userAddress, cacheEntry);
138
186
  }
@@ -145,6 +193,8 @@ export class HnswWasmService {
145
193
  if (metadata) {
146
194
  cacheEntry.metadata.set(vectorId, metadata);
147
195
  }
196
+ // Also cache the vector for serialization
197
+ cacheEntry.vectors.set(vectorId, vector);
148
198
  cacheEntry.isDirty = true;
149
199
  cacheEntry.lastModified = new Date();
150
200
  // Schedule or update batch job
@@ -239,7 +289,8 @@ export class HnswWasmService {
239
289
  isDirty: false,
240
290
  version: 1,
241
291
  metadata: new Map(),
242
- dimensions: this.indexConfig.dimension
292
+ dimensions: this.indexConfig.dimension,
293
+ vectors: new Map(),
243
294
  });
244
295
  console.log(`✅ Index loaded successfully for ${userAddress}`);
245
296
  return index;
@@ -275,26 +326,21 @@ export class HnswWasmService {
275
326
  * Get cache statistics
276
327
  */
277
328
  getCacheStats() {
278
- const cacheEntries = [];
279
329
  let totalPendingVectors = 0;
280
- for (const [userAddress, entry] of this.indexCache.entries()) {
281
- const pendingCount = entry.pendingVectors.size;
282
- totalPendingVectors += pendingCount;
283
- cacheEntries.push({
284
- userAddress,
285
- pendingVectors: pendingCount,
286
- lastModified: entry.lastModified,
287
- isDirty: entry.isDirty,
288
- indexDimensions: entry.dimensions
289
- });
330
+ for (const [, entry] of this.indexCache.entries()) {
331
+ totalPendingVectors += entry.pendingVectors.size;
290
332
  }
333
+ const lruStats = this.indexCache.getStats();
291
334
  return {
292
335
  totalUsers: this.indexCache.size,
293
336
  totalPendingVectors,
294
337
  activeBatchJobs: this.batchJobs.size,
295
338
  cacheHitRate: 0, // TODO: Implement hit rate tracking
296
339
  averageBatchSize: totalPendingVectors / Math.max(1, this.indexCache.size),
297
- averageProcessingTime: 0 // TODO: Implement timing tracking
340
+ averageProcessingTime: 0, // TODO: Implement timing tracking
341
+ memoryUsageMB: lruStats.memoryBytes / 1024 / 1024,
342
+ maxMemoryMB: this.maxMemoryBytes / 1024 / 1024,
343
+ maxCachedIndexes: this.maxCachedIndexes,
298
344
  };
299
345
  }
300
346
  /**
@@ -333,10 +379,8 @@ export class HnswWasmService {
333
379
  if (this.batchProcessor) {
334
380
  clearInterval(this.batchProcessor);
335
381
  }
336
- if (this.cacheCleanup) {
337
- clearInterval(this.cacheCleanup);
338
- }
339
- this.indexCache.clear();
382
+ // LRU cache cleanup is handled internally, but we should destroy it
383
+ this.indexCache.destroy();
340
384
  this.batchJobs.clear();
341
385
  console.log('🛑 HnswWasmService destroyed');
342
386
  }
@@ -352,7 +396,8 @@ export class HnswWasmService {
352
396
  isDirty: false,
353
397
  version: 1,
354
398
  metadata: new Map(),
355
- dimensions
399
+ dimensions,
400
+ vectors: new Map(),
356
401
  };
357
402
  }
358
403
  scheduleBatchJob(userAddress, vectorId, vector) {
@@ -372,11 +417,7 @@ export class HnswWasmService {
372
417
  await this.processBatchJobs();
373
418
  }, this.config.batchDelayMs);
374
419
  }
375
- startCacheCleanup() {
376
- this.cacheCleanup = setInterval(() => {
377
- this.cleanupCache();
378
- }, 5 * 60 * 1000); // Every 5 minutes
379
- }
420
+ // Note: Cache cleanup is now handled by LRUCache internally
380
421
  async processBatchJobs() {
381
422
  const now = Date.now();
382
423
  const jobsToProcess = [];
@@ -487,15 +528,7 @@ export class HnswWasmService {
487
528
  }
488
529
  return { ids: filteredIds, distances: filteredDistances };
489
530
  }
490
- cleanupCache() {
491
- const now = Date.now();
492
- for (const [userAddress, entry] of this.indexCache.entries()) {
493
- if (now - entry.lastModified.getTime() > this.config.cacheTtlMs) {
494
- console.debug(`🧹 Removing stale cache entry for user ${userAddress}`);
495
- this.indexCache.delete(userAddress);
496
- }
497
- }
498
- }
531
+ // Note: cleanupCache is now handled by LRUCache internally
499
532
  validateVector(vector) {
500
533
  if (!Array.isArray(vector) || vector.length === 0) {
501
534
  throw new Error('Vector must be a non-empty array');
@@ -1 +1 @@
1
- {"version":3,"file":"HnswWasmService.js","sourceRoot":"","sources":["../../src/vector/HnswWasmService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HnswWasmService.js","sourceRoot":"","sources":["../../src/vector/HnswWasmService.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * Configuration for HNSW index
12
12
  */
13
13
  export interface IHnswIndexConfig {
14
- /** Vector dimension (e.g., 768 for text-embedding-004) */
14
+ /** Vector dimension (e.g., 3072 for text-embedding-004) */
15
15
  dimension: number;
16
16
  /** Maximum number of elements in the index */
17
17
  maxElements?: number;
@@ -167,6 +167,15 @@ export interface HnswServiceConfig {
167
167
  indexDirectory?: string;
168
168
  /** Walrus backup configuration (optional) */
169
169
  walrusBackup?: WalrusBackupConfig;
170
+ /** Memory management configuration for LRU cache */
171
+ memoryConfig?: {
172
+ /** Maximum number of cached indexes (default: 5) */
173
+ maxCachedIndexes?: number;
174
+ /** TTL for cached indexes in ms (default: 10 minutes) */
175
+ indexTtlMs?: number;
176
+ /** Maximum memory in MB (default: 512MB) */
177
+ maxMemoryMB?: number;
178
+ };
170
179
  }
171
180
  /**
172
181
  * Check if running in browser environment with required APIs
@@ -1 +1 @@
1
- {"version":3,"file":"IHnswService.d.ts","sourceRoot":"","sources":["../../src/vector/IHnswService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,SAAS,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAID;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,MAAM,CACJ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEpC;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;OAEG;IACH,aAAa,IAAI,eAAe,CAAC;IAEjC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,YAAY,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,cAAc,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;OAEG;IACH,eAAe,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAErD;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,qCAAqC;IACrC,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAID;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAIhC"}
1
+ {"version":3,"file":"IHnswService.d.ts","sourceRoot":"","sources":["../../src/vector/IHnswService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IHnswService.js","sourceRoot":"","sources":["../../src/vector/IHnswService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuMH,kEAAkE;AAElE;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI;QACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"IHnswService.js","sourceRoot":"","sources":["../../src/vector/IHnswService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgNH,kEAAkE;AAElE;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI;QACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;AACvC,CAAC"}
@@ -24,12 +24,28 @@ export declare class NodeHnswService implements IHnswService {
24
24
  private initPromise;
25
25
  private _isInitialized;
26
26
  private walrusClient;
27
+ private readonly maxCachedIndexes;
28
+ private readonly indexTtlMs;
29
+ private readonly maxMemoryMB;
27
30
  /**
28
31
  * Create Walrus client using @mysten/walrus SDK
29
32
  */
30
33
  private createWalrusClient;
31
34
  private batchStats;
32
35
  constructor(config?: HnswServiceConfig);
36
+ /**
37
+ * Save index synchronously (for eviction callback)
38
+ */
39
+ private saveIndexSync;
40
+ /**
41
+ * Get cache statistics for monitoring
42
+ */
43
+ getCacheStats(): {
44
+ totalUsers: number;
45
+ maxCachedIndexes: number;
46
+ memoryUsageMB: number;
47
+ maxMemoryMB: number;
48
+ };
33
49
  /**
34
50
  * Initialize hnswlib-node (dynamic import)
35
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"NodeHnswService.d.ts","sourceRoot":"","sources":["../../src/vector/NodeHnswService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAEjB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAiBxB;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAqB;IACnD,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAA2D;IAE/E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,UAAU,CAKhB;gBAEU,MAAM,GAAE,iBAAsB;IAmB1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAYnB,aAAa;IA8B3B,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,mBAAmB;YAMb,qBAAqB;IAYnC,OAAO,CAAC,YAAY;IAKpB;;;OAGG;YACW,YAAY;IAsB1B;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CpD,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAyBV,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA6C7B,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE,aAAa,IAAI,eAAe;IAI1B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC9C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE7C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiEhD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsF/D;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuF3E;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B,OAAO,IAAI,IAAI;CAUhB"}
1
+ {"version":3,"file":"NodeHnswService.d.ts","sourceRoot":"","sources":["../../src/vector/NodeHnswService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAEjB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAuBxB;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAqB;IACnD,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAA2D;IAG/E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,UAAU,CAKhB;gBAEU,MAAM,GAAE,iBAAsB;IA+C1C;;OAEG;YACW,aAAa;IAyB3B;;OAEG;IACH,aAAa,IAAI;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB;IAUD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAYnB,aAAa;IA8B3B,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,mBAAmB;YAMb,qBAAqB;IAYnC,OAAO,CAAC,YAAY;IAKpB;;;OAGG;YACW,YAAY;IAsB1B;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CpD,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAyBV,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA6C7B,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE,aAAa,IAAI,eAAe;IAI1B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD9C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE7C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiEhD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsF/D;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuF3E;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B,OAAO,IAAI,IAAI;CAWhB"}
@@ -12,6 +12,11 @@
12
12
  */
13
13
  import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
14
14
  import { walrus } from '@mysten/walrus';
15
+ import { LRUCache, estimateIndexCacheSize } from '../utils/LRUCache.js';
16
+ // Memory management constants
17
+ const DEFAULT_MAX_CACHED_INDEXES = 5;
18
+ const DEFAULT_INDEX_TTL_MS = 10 * 60 * 1000; // 10 minutes
19
+ const DEFAULT_MAX_MEMORY_MB = 512;
15
20
  /**
16
21
  * Node.js HNSW vector indexing service using native bindings
17
22
  */
@@ -27,7 +32,6 @@ export class NodeHnswService {
27
32
  }
28
33
  constructor(config = {}) {
29
34
  this.hnswlib = null;
30
- this.indexCache = new Map();
31
35
  this.initPromise = null;
32
36
  this._isInitialized = false;
33
37
  this.walrusClient = null;
@@ -48,11 +52,73 @@ export class NodeHnswService {
48
52
  };
49
53
  this.indexDirectory = config.indexDirectory || './.pdw-indexes';
50
54
  this.walrusConfig = config.walrusBackup;
55
+ // Memory management configuration
56
+ this.maxCachedIndexes = config.memoryConfig?.maxCachedIndexes || DEFAULT_MAX_CACHED_INDEXES;
57
+ this.indexTtlMs = config.memoryConfig?.indexTtlMs || DEFAULT_INDEX_TTL_MS;
58
+ this.maxMemoryMB = config.memoryConfig?.maxMemoryMB || DEFAULT_MAX_MEMORY_MB;
59
+ // Initialize LRU cache with eviction callback
60
+ this.indexCache = new LRUCache({
61
+ maxSize: this.maxCachedIndexes,
62
+ ttlMs: this.indexTtlMs,
63
+ maxMemoryBytes: this.maxMemoryMB * 1024 * 1024,
64
+ sizeEstimator: (entry) => estimateIndexCacheSize({
65
+ vectors: new Map(), // Vectors are stored in the native index, not JS
66
+ metadata: entry.metadata,
67
+ pendingVectors: entry.pendingVectors
68
+ }),
69
+ onEvict: (userAddress, entry, reason) => {
70
+ console.log(`[NodeHnswService] Evicting index for ${userAddress.slice(0, 10)}... (reason: ${reason})`);
71
+ // Save dirty index before eviction
72
+ if (entry.isDirty) {
73
+ this.saveIndexSync(userAddress, entry).catch(err => {
74
+ console.error(`[NodeHnswService] Failed to save evicted index: ${err}`);
75
+ });
76
+ }
77
+ }
78
+ });
79
+ console.log(`[NodeHnswService] Initialized with LRU cache: maxIndexes=${this.maxCachedIndexes}, ttl=${this.indexTtlMs}ms, maxMemory=${this.maxMemoryMB}MB`);
51
80
  // Initialize Walrus SDK client for cloud backup
52
81
  if (this.walrusConfig?.enabled) {
53
82
  this.walrusClient = this.createWalrusClient('testnet');
54
83
  }
55
84
  }
85
+ /**
86
+ * Save index synchronously (for eviction callback)
87
+ */
88
+ async saveIndexSync(userAddress, entry) {
89
+ try {
90
+ const indexPath = this.getIndexPath(userAddress);
91
+ entry.index.writeIndex(indexPath);
92
+ const fs = await import('fs/promises');
93
+ const metadataPath = indexPath + '.meta.json';
94
+ const metadataObj = {};
95
+ for (const [k, v] of entry.metadata) {
96
+ metadataObj[k] = v;
97
+ }
98
+ await fs.writeFile(metadataPath, JSON.stringify({
99
+ version: entry.version,
100
+ dimensions: entry.dimensions,
101
+ metadata: metadataObj,
102
+ walrusBlobId: entry.walrusBlobId,
103
+ }));
104
+ console.log(`[NodeHnswService] Saved evicted index for ${userAddress.slice(0, 10)}...`);
105
+ }
106
+ catch (error) {
107
+ console.error(`[NodeHnswService] Error saving evicted index:`, error);
108
+ }
109
+ }
110
+ /**
111
+ * Get cache statistics for monitoring
112
+ */
113
+ getCacheStats() {
114
+ const stats = this.indexCache.getStats();
115
+ return {
116
+ totalUsers: stats.size,
117
+ maxCachedIndexes: this.maxCachedIndexes,
118
+ memoryUsageMB: stats.memoryBytes / (1024 * 1024),
119
+ maxMemoryMB: this.maxMemoryMB,
120
+ };
121
+ }
56
122
  /**
57
123
  * Initialize hnswlib-node (dynamic import)
58
124
  */
@@ -102,7 +168,7 @@ export class NodeHnswService {
102
168
  }, 5000);
103
169
  }
104
170
  async processPendingBatches() {
105
- for (const [userAddress, entry] of this.indexCache) {
171
+ for (const [userAddress, entry] of this.indexCache.entries()) {
106
172
  if (entry.isDirty && entry.pendingVectors.size > 0) {
107
173
  try {
108
174
  await this.flushBatch(userAddress);
@@ -264,8 +330,20 @@ export class NodeHnswService {
264
330
  }
265
331
  async flushBatch(userAddress) {
266
332
  const entry = this.indexCache.get(userAddress);
267
- if (!entry || entry.pendingVectors.size === 0) {
268
- console.log(`[NodeHnswService] flushBatch: No pending vectors for ${userAddress.slice(0, 10)}..., skipping`);
333
+ if (!entry) {
334
+ console.log(`[NodeHnswService] flushBatch: No cache entry for ${userAddress.slice(0, 10)}..., skipping`);
335
+ return;
336
+ }
337
+ // Even if no pending vectors, we may need to save metadata that was added
338
+ if (entry.pendingVectors.size === 0) {
339
+ // Still save index to persist any metadata that was added
340
+ if (entry.isDirty || entry.metadata.size > 0) {
341
+ console.log(`[NodeHnswService] flushBatch: No pending vectors but isDirty=${entry.isDirty}, metadata.size=${entry.metadata.size}, saving index...`);
342
+ await this.saveIndex(userAddress);
343
+ }
344
+ else {
345
+ console.log(`[NodeHnswService] flushBatch: No pending vectors and nothing to save for ${userAddress.slice(0, 10)}...`);
346
+ }
269
347
  return;
270
348
  }
271
349
  console.log(`[NodeHnswService] flushBatch: Flushing ${entry.pendingVectors.size} vectors for ${userAddress.slice(0, 10)}...`);
@@ -600,7 +678,8 @@ export class NodeHnswService {
600
678
  clearInterval(this.batchProcessor);
601
679
  this.batchProcessor = undefined;
602
680
  }
603
- this.indexCache.clear();
681
+ // Destroy LRU cache (triggers cleanup and stops internal timers)
682
+ this.indexCache.destroy();
604
683
  this._isInitialized = false;
605
684
  console.log('[NodeHnswService] Service destroyed');
606
685
  }