@cmdoss/memwal-sdk 0.6.1 → 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 (148) hide show
  1. package/dist/ai-sdk/PDWVectorStore.d.ts.map +1 -1
  2. package/dist/ai-sdk/PDWVectorStore.js +4 -1
  3. package/dist/ai-sdk/PDWVectorStore.js.map +1 -1
  4. package/dist/ai-sdk/tools.d.ts +2 -2
  5. package/dist/ai-sdk/tools.js +2 -2
  6. package/dist/browser.d.ts +5 -6
  7. package/dist/browser.d.ts.map +1 -1
  8. package/dist/browser.js +7 -6
  9. package/dist/browser.js.map +1 -1
  10. package/dist/client/ClientMemoryManager.d.ts +1 -0
  11. package/dist/client/ClientMemoryManager.d.ts.map +1 -1
  12. package/dist/client/ClientMemoryManager.js +5 -1
  13. package/dist/client/ClientMemoryManager.js.map +1 -1
  14. package/dist/client/SimplePDWClient.d.ts +24 -1
  15. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  16. package/dist/client/SimplePDWClient.js +31 -9
  17. package/dist/client/SimplePDWClient.js.map +1 -1
  18. package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
  19. package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
  20. package/dist/client/namespaces/IndexNamespace.d.ts +38 -9
  21. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  22. package/dist/client/namespaces/IndexNamespace.js +77 -10
  23. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  24. package/dist/client/namespaces/MemoryNamespace.d.ts +27 -0
  25. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  26. package/dist/client/namespaces/MemoryNamespace.js +104 -0
  27. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  28. package/dist/client/namespaces/SearchNamespace.d.ts.map +1 -1
  29. package/dist/client/namespaces/SearchNamespace.js +25 -14
  30. package/dist/client/namespaces/SearchNamespace.js.map +1 -1
  31. package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
  32. package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
  33. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  34. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +69 -1
  35. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  36. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +46 -0
  37. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  38. package/dist/client/namespaces/consolidated/StorageNamespace.js +34 -0
  39. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  40. package/dist/graph/GraphService.js +2 -2
  41. package/dist/graph/GraphService.js.map +1 -1
  42. package/dist/index.d.ts +3 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +3 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/permissions/ConsentRepository.browser.d.ts +56 -0
  47. package/dist/permissions/ConsentRepository.browser.d.ts.map +1 -0
  48. package/dist/permissions/ConsentRepository.browser.js +198 -0
  49. package/dist/permissions/ConsentRepository.browser.js.map +1 -0
  50. package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
  51. package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
  52. package/dist/retrieval/MemoryRetrievalService.js +44 -4
  53. package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
  54. package/dist/services/EmbeddingService.d.ts +28 -1
  55. package/dist/services/EmbeddingService.d.ts.map +1 -1
  56. package/dist/services/EmbeddingService.js +54 -0
  57. package/dist/services/EmbeddingService.js.map +1 -1
  58. package/dist/services/GeminiAIService.d.ts.map +1 -1
  59. package/dist/services/GeminiAIService.js +283 -27
  60. package/dist/services/GeminiAIService.js.map +1 -1
  61. package/dist/services/IndexManager.d.ts +5 -1
  62. package/dist/services/IndexManager.d.ts.map +1 -1
  63. package/dist/services/IndexManager.js +17 -40
  64. package/dist/services/IndexManager.js.map +1 -1
  65. package/dist/services/MemoryIndexService.d.ts +31 -2
  66. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  67. package/dist/services/MemoryIndexService.js +75 -3
  68. package/dist/services/MemoryIndexService.js.map +1 -1
  69. package/dist/services/QueryService.js +1 -1
  70. package/dist/services/QueryService.js.map +1 -1
  71. package/dist/services/StorageService.d.ts +10 -0
  72. package/dist/services/StorageService.d.ts.map +1 -1
  73. package/dist/services/StorageService.js +13 -0
  74. package/dist/services/StorageService.js.map +1 -1
  75. package/dist/services/storage/QuiltBatchManager.d.ts +111 -4
  76. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  77. package/dist/services/storage/QuiltBatchManager.js +450 -38
  78. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  79. package/dist/services/storage/index.d.ts +1 -1
  80. package/dist/services/storage/index.d.ts.map +1 -1
  81. package/dist/services/storage/index.js.map +1 -1
  82. package/dist/utils/LRUCache.d.ts +106 -0
  83. package/dist/utils/LRUCache.d.ts.map +1 -0
  84. package/dist/utils/LRUCache.js +281 -0
  85. package/dist/utils/LRUCache.js.map +1 -0
  86. package/dist/utils/index.d.ts +1 -0
  87. package/dist/utils/index.d.ts.map +1 -1
  88. package/dist/utils/index.js +2 -0
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/memoryIndexOnChain.d.ts +212 -0
  91. package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
  92. package/dist/utils/memoryIndexOnChain.js +312 -0
  93. package/dist/utils/memoryIndexOnChain.js.map +1 -0
  94. package/dist/utils/rebuildIndexNode.d.ts +29 -0
  95. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  96. package/dist/utils/rebuildIndexNode.js +387 -45
  97. package/dist/utils/rebuildIndexNode.js.map +1 -1
  98. package/dist/vector/HnswWasmService.d.ts +20 -5
  99. package/dist/vector/HnswWasmService.d.ts.map +1 -1
  100. package/dist/vector/HnswWasmService.js +73 -40
  101. package/dist/vector/HnswWasmService.js.map +1 -1
  102. package/dist/vector/IHnswService.d.ts +10 -1
  103. package/dist/vector/IHnswService.d.ts.map +1 -1
  104. package/dist/vector/IHnswService.js.map +1 -1
  105. package/dist/vector/NodeHnswService.d.ts +16 -0
  106. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  107. package/dist/vector/NodeHnswService.js +108 -10
  108. package/dist/vector/NodeHnswService.js.map +1 -1
  109. package/dist/vector/createHnswService.d.ts +1 -1
  110. package/dist/vector/createHnswService.js +1 -1
  111. package/dist/vector/index.d.ts +1 -1
  112. package/dist/vector/index.js +1 -1
  113. package/package.json +157 -157
  114. package/src/ai-sdk/PDWVectorStore.ts +4 -1
  115. package/src/ai-sdk/tools.ts +2 -2
  116. package/src/browser.ts +15 -10
  117. package/src/client/ClientMemoryManager.ts +6 -1
  118. package/src/client/SimplePDWClient.ts +63 -10
  119. package/src/client/namespaces/EmbeddingsNamespace.ts +1 -1
  120. package/src/client/namespaces/IndexNamespace.ts +89 -11
  121. package/src/client/namespaces/MemoryNamespace.ts +137 -0
  122. package/src/client/namespaces/SearchNamespace.ts +27 -14
  123. package/src/client/namespaces/consolidated/AINamespace.ts +2 -2
  124. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +73 -1
  125. package/src/client/namespaces/consolidated/StorageNamespace.ts +57 -0
  126. package/src/core/types/index.ts +1 -1
  127. package/src/generated/pdw/capability.ts +319 -319
  128. package/src/graph/GraphService.ts +2 -2
  129. package/src/index.ts +25 -1
  130. package/src/permissions/ConsentRepository.browser.ts +249 -0
  131. package/src/retrieval/MemoryRetrievalService.ts +78 -4
  132. package/src/services/EmbeddingService.ts +66 -1
  133. package/src/services/GeminiAIService.ts +283 -27
  134. package/src/services/IndexManager.ts +18 -45
  135. package/src/services/MemoryIndexService.ts +85 -3
  136. package/src/services/QueryService.ts +1 -1
  137. package/src/services/StorageService.ts +15 -0
  138. package/src/services/storage/QuiltBatchManager.ts +538 -42
  139. package/src/services/storage/index.ts +6 -1
  140. package/src/utils/LRUCache.ts +378 -0
  141. package/src/utils/index.ts +8 -0
  142. package/src/utils/memoryIndexOnChain.ts +507 -0
  143. package/src/utils/rebuildIndexNode.ts +482 -52
  144. package/src/vector/HnswWasmService.ts +95 -43
  145. package/src/vector/IHnswService.ts +10 -1
  146. package/src/vector/NodeHnswService.ts +130 -10
  147. package/src/vector/createHnswService.ts +1 -1
  148. package/src/vector/index.ts +1 -1
@@ -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":"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"}
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;IAsBV,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;IAiC9C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD7C,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);
@@ -185,6 +251,7 @@ export class NodeHnswService {
185
251
  console.log(`[NodeHnswService] Created new index for ${userAddress}`);
186
252
  }
187
253
  async addVector(userAddress, vectorId, vector, metadata) {
254
+ console.log(`[NodeHnswService] addVector: userAddress=${userAddress.slice(0, 10)}..., vectorId=${vectorId}, dims=${vector.length}`);
188
255
  await this.getOrCreateIndex(userAddress);
189
256
  const entry = this.indexCache.get(userAddress);
190
257
  if (!entry) {
@@ -197,8 +264,10 @@ export class NodeHnswService {
197
264
  }
198
265
  entry.isDirty = true;
199
266
  this.batchStats.pendingJobs++;
267
+ console.log(`[NodeHnswService] addVector: Added to pending batch. Pending: ${entry.pendingVectors.size}, isDirty: ${entry.isDirty}`);
200
268
  // Flush if batch is large enough
201
269
  if (entry.pendingVectors.size >= 50) {
270
+ console.log(`[NodeHnswService] addVector: Batch size >= 50, auto-flushing...`);
202
271
  await this.flushBatch(userAddress);
203
272
  }
204
273
  }
@@ -261,8 +330,23 @@ export class NodeHnswService {
261
330
  }
262
331
  async flushBatch(userAddress) {
263
332
  const entry = this.indexCache.get(userAddress);
264
- if (!entry || entry.pendingVectors.size === 0)
333
+ if (!entry) {
334
+ console.log(`[NodeHnswService] flushBatch: No cache entry for ${userAddress.slice(0, 10)}..., skipping`);
265
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
+ }
347
+ return;
348
+ }
349
+ console.log(`[NodeHnswService] flushBatch: Flushing ${entry.pendingVectors.size} vectors for ${userAddress.slice(0, 10)}...`);
266
350
  const startTime = Date.now();
267
351
  let processed = 0;
268
352
  try {
@@ -270,6 +354,7 @@ export class NodeHnswService {
270
354
  entry.index.addPoint(vector, vectorId);
271
355
  processed++;
272
356
  }
357
+ console.log(`[NodeHnswService] flushBatch: Added ${processed} points to index`);
273
358
  entry.pendingVectors.clear();
274
359
  entry.isDirty = true;
275
360
  entry.version++;
@@ -280,21 +365,27 @@ export class NodeHnswService {
280
365
  this.batchStats.averageProcessingTime =
281
366
  (this.batchStats.averageProcessingTime + processingTime) / 2;
282
367
  // Auto-save
368
+ console.log(`[NodeHnswService] flushBatch: Calling saveIndex()...`);
283
369
  await this.saveIndex(userAddress);
370
+ console.log(`[NodeHnswService] flushBatch: Complete in ${processingTime}ms`);
284
371
  }
285
372
  catch (error) {
286
373
  this.batchStats.failedJobs++;
287
- console.error('[NodeHnswService] Flush batch error:', error);
374
+ console.error('[NodeHnswService] flushBatch error:', error);
288
375
  throw error;
289
376
  }
290
377
  }
291
378
  async saveIndex(userAddress) {
292
379
  const entry = this.indexCache.get(userAddress);
293
- if (!entry)
380
+ if (!entry) {
381
+ console.log(`[NodeHnswService] saveIndex: No cache entry for ${userAddress}, skipping`);
294
382
  return;
383
+ }
295
384
  try {
296
385
  const indexPath = this.getIndexPath(userAddress);
386
+ console.log(`[NodeHnswService] saveIndex: Writing to ${indexPath}`);
297
387
  entry.index.writeIndex(indexPath);
388
+ console.log(`[NodeHnswService] saveIndex: writeIndex() complete`);
298
389
  // Save metadata separately
299
390
  const fs = await import('fs/promises');
300
391
  const metadataPath = indexPath + '.meta.json';
@@ -302,19 +393,25 @@ export class NodeHnswService {
302
393
  for (const [k, v] of entry.metadata) {
303
394
  metadataObj[k] = v;
304
395
  }
305
- // Preserve existing walrus blob ID if present
306
- const existingMeta = {};
396
+ // Preserve existing metadata and merge with in-memory metadata
397
+ // This prevents data loss when cache is cleared between requests
398
+ let existingMeta = {};
307
399
  try {
308
400
  const existingContent = await fs.readFile(metadataPath, 'utf-8');
309
- Object.assign(existingMeta, JSON.parse(existingContent));
401
+ existingMeta = JSON.parse(existingContent);
310
402
  }
311
403
  catch {
312
404
  // No existing metadata file
313
405
  }
406
+ // Merge: existing metadata + in-memory metadata (in-memory takes priority for same keys)
407
+ const mergedMetadata = {
408
+ ...(existingMeta.metadata || {}),
409
+ ...metadataObj
410
+ };
314
411
  await fs.writeFile(metadataPath, JSON.stringify({
315
412
  version: entry.version,
316
413
  dimensions: entry.dimensions,
317
- metadata: metadataObj,
414
+ metadata: mergedMetadata,
318
415
  walrusBlobId: existingMeta.walrusBlobId,
319
416
  walrusSyncTime: existingMeta.walrusSyncTime
320
417
  }));
@@ -581,7 +678,8 @@ export class NodeHnswService {
581
678
  clearInterval(this.batchProcessor);
582
679
  this.batchProcessor = undefined;
583
680
  }
584
- this.indexCache.clear();
681
+ // Destroy LRU cache (triggers cleanup and stops internal timers)
682
+ this.indexCache.destroy();
585
683
  this._isInitialized = false;
586
684
  console.log('[NodeHnswService] Service destroyed');
587
685
  }