@cmdoss/memwal-sdk 0.6.2 → 0.8.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 (247) hide show
  1. package/ARCHITECTURE.md +547 -547
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +310 -181
  4. package/dist/ai-sdk/tools.d.ts +2 -2
  5. package/dist/ai-sdk/tools.js +2 -2
  6. package/dist/client/ClientMemoryManager.js +2 -2
  7. package/dist/client/ClientMemoryManager.js.map +1 -1
  8. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  9. package/dist/client/SimplePDWClient.d.ts +29 -1
  10. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  11. package/dist/client/SimplePDWClient.js +45 -13
  12. package/dist/client/SimplePDWClient.js.map +1 -1
  13. package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
  14. package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
  15. package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
  16. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  17. package/dist/client/namespaces/MemoryNamespace.js +272 -39
  18. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  19. package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
  20. package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
  21. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
  22. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  23. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
  24. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  25. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
  26. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  27. package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
  28. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  29. package/dist/config/ConfigurationHelper.js +61 -61
  30. package/dist/config/defaults.js +2 -2
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/graph/GraphService.js +21 -21
  33. package/dist/graph/GraphService.js.map +1 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
  39. package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
  40. package/dist/infrastructure/seal/EncryptionService.js +37 -15
  41. package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
  42. package/dist/infrastructure/seal/SealService.d.ts +13 -5
  43. package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
  44. package/dist/infrastructure/seal/SealService.js +36 -34
  45. package/dist/infrastructure/seal/SealService.js.map +1 -1
  46. package/dist/langchain/createPDWRAG.js +30 -30
  47. package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
  48. package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
  49. package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
  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/CapabilityService.d.ts.map +1 -1
  55. package/dist/services/CapabilityService.js +30 -14
  56. package/dist/services/CapabilityService.js.map +1 -1
  57. package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
  58. package/dist/services/CrossContextPermissionService.js +9 -7
  59. package/dist/services/CrossContextPermissionService.js.map +1 -1
  60. package/dist/services/EmbeddingService.d.ts +28 -1
  61. package/dist/services/EmbeddingService.d.ts.map +1 -1
  62. package/dist/services/EmbeddingService.js +54 -0
  63. package/dist/services/EmbeddingService.js.map +1 -1
  64. package/dist/services/EncryptionService.d.ts.map +1 -1
  65. package/dist/services/EncryptionService.js +6 -5
  66. package/dist/services/EncryptionService.js.map +1 -1
  67. package/dist/services/GeminiAIService.js +309 -309
  68. package/dist/services/IndexManager.d.ts +5 -1
  69. package/dist/services/IndexManager.d.ts.map +1 -1
  70. package/dist/services/IndexManager.js +17 -40
  71. package/dist/services/IndexManager.js.map +1 -1
  72. package/dist/services/QueryService.js +1 -1
  73. package/dist/services/QueryService.js.map +1 -1
  74. package/dist/services/StorageService.d.ts +11 -0
  75. package/dist/services/StorageService.d.ts.map +1 -1
  76. package/dist/services/StorageService.js +73 -10
  77. package/dist/services/StorageService.js.map +1 -1
  78. package/dist/services/TransactionService.d.ts +20 -0
  79. package/dist/services/TransactionService.d.ts.map +1 -1
  80. package/dist/services/TransactionService.js +43 -0
  81. package/dist/services/TransactionService.js.map +1 -1
  82. package/dist/services/ViewService.js +2 -2
  83. package/dist/services/ViewService.js.map +1 -1
  84. package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
  85. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  86. package/dist/services/storage/QuiltBatchManager.js +410 -20
  87. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  88. package/dist/services/storage/index.d.ts +1 -1
  89. package/dist/services/storage/index.d.ts.map +1 -1
  90. package/dist/services/storage/index.js.map +1 -1
  91. package/dist/utils/LRUCache.d.ts +106 -0
  92. package/dist/utils/LRUCache.d.ts.map +1 -0
  93. package/dist/utils/LRUCache.js +281 -0
  94. package/dist/utils/LRUCache.js.map +1 -0
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.d.ts.map +1 -1
  97. package/dist/utils/index.js +2 -0
  98. package/dist/utils/index.js.map +1 -1
  99. package/dist/utils/memoryIndexOnChain.d.ts +212 -0
  100. package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
  101. package/dist/utils/memoryIndexOnChain.js +312 -0
  102. package/dist/utils/memoryIndexOnChain.js.map +1 -0
  103. package/dist/utils/rebuildIndexNode.d.ts +29 -0
  104. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  105. package/dist/utils/rebuildIndexNode.js +366 -98
  106. package/dist/utils/rebuildIndexNode.js.map +1 -1
  107. package/dist/vector/HnswWasmService.d.ts +20 -5
  108. package/dist/vector/HnswWasmService.d.ts.map +1 -1
  109. package/dist/vector/HnswWasmService.js +73 -40
  110. package/dist/vector/HnswWasmService.js.map +1 -1
  111. package/dist/vector/IHnswService.d.ts +10 -1
  112. package/dist/vector/IHnswService.d.ts.map +1 -1
  113. package/dist/vector/IHnswService.js.map +1 -1
  114. package/dist/vector/NodeHnswService.d.ts +16 -0
  115. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  116. package/dist/vector/NodeHnswService.js +84 -5
  117. package/dist/vector/NodeHnswService.js.map +1 -1
  118. package/dist/vector/createHnswService.d.ts +1 -1
  119. package/dist/vector/createHnswService.js +1 -1
  120. package/dist/vector/index.d.ts +1 -1
  121. package/dist/vector/index.js +1 -1
  122. package/package.json +157 -157
  123. package/src/access/PermissionService.ts +635 -635
  124. package/src/aggregation/AggregationService.ts +389 -389
  125. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  126. package/src/ai-sdk/index.ts +65 -65
  127. package/src/ai-sdk/tools.ts +460 -460
  128. package/src/ai-sdk/types.ts +404 -404
  129. package/src/batch/BatchManager.ts +597 -597
  130. package/src/batch/BatchingService.ts +429 -429
  131. package/src/batch/MemoryProcessingCache.ts +492 -492
  132. package/src/batch/index.ts +30 -30
  133. package/src/browser.ts +200 -200
  134. package/src/client/ClientMemoryManager.ts +987 -987
  135. package/src/client/PersonalDataWallet.ts +345 -345
  136. package/src/client/SimplePDWClient.ts +1289 -1222
  137. package/src/client/factory.ts +154 -154
  138. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  139. package/src/client/namespaces/BatchNamespace.ts +356 -356
  140. package/src/client/namespaces/CacheNamespace.ts +123 -123
  141. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  142. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  143. package/src/client/namespaces/ContextNamespace.ts +297 -297
  144. package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
  145. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  146. package/src/client/namespaces/GraphNamespace.ts +468 -468
  147. package/src/client/namespaces/IndexNamespace.ts +361 -361
  148. package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
  149. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  150. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  151. package/src/client/namespaces/SearchNamespace.ts +1049 -1049
  152. package/src/client/namespaces/StorageNamespace.ts +458 -458
  153. package/src/client/namespaces/TxNamespace.ts +260 -260
  154. package/src/client/namespaces/WalletNamespace.ts +243 -243
  155. package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
  156. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
  157. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  158. package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
  159. package/src/client/namespaces/consolidated/index.ts +39 -39
  160. package/src/client/signers/KeypairSigner.ts +108 -108
  161. package/src/client/signers/UnifiedSigner.ts +110 -110
  162. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  163. package/src/client/signers/index.ts +26 -26
  164. package/src/config/ConfigurationHelper.ts +412 -412
  165. package/src/config/defaults.ts +51 -51
  166. package/src/config/index.ts +8 -8
  167. package/src/config/validation.ts +70 -70
  168. package/src/core/index.ts +14 -14
  169. package/src/core/interfaces/IService.ts +307 -307
  170. package/src/core/interfaces/index.ts +8 -8
  171. package/src/core/types/capability.ts +297 -297
  172. package/src/core/types/index.ts +870 -870
  173. package/src/core/types/wallet.ts +270 -270
  174. package/src/core/types.ts +9 -9
  175. package/src/core/wallet.ts +222 -222
  176. package/src/embedding/index.ts +19 -19
  177. package/src/embedding/types.ts +357 -357
  178. package/src/errors/index.ts +602 -602
  179. package/src/errors/recovery.ts +461 -461
  180. package/src/errors/validation.ts +567 -567
  181. package/src/generated/pdw/capability.ts +319 -319
  182. package/src/graph/GraphService.ts +887 -887
  183. package/src/graph/KnowledgeGraphManager.ts +728 -728
  184. package/src/graph/index.ts +25 -25
  185. package/src/index.ts +498 -474
  186. package/src/infrastructure/index.ts +22 -22
  187. package/src/infrastructure/seal/EncryptionService.ts +628 -603
  188. package/src/infrastructure/seal/SealService.ts +613 -615
  189. package/src/infrastructure/seal/index.ts +9 -9
  190. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  191. package/src/infrastructure/sui/SuiService.ts +888 -888
  192. package/src/infrastructure/sui/index.ts +9 -9
  193. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  194. package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
  195. package/src/infrastructure/walrus/index.ts +9 -9
  196. package/src/langchain/PDWEmbeddings.ts +145 -145
  197. package/src/langchain/PDWVectorStore.ts +456 -456
  198. package/src/langchain/createPDWRAG.ts +303 -303
  199. package/src/langchain/index.ts +47 -47
  200. package/src/permissions/ConsentRepository.browser.ts +249 -249
  201. package/src/permissions/ConsentRepository.ts +364 -364
  202. package/src/pipeline/MemoryPipeline.ts +862 -862
  203. package/src/pipeline/PipelineManager.ts +683 -683
  204. package/src/pipeline/index.ts +26 -26
  205. package/src/retrieval/AdvancedSearchService.ts +629 -629
  206. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  207. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
  208. package/src/retrieval/MemoryRetrievalService.ts +904 -830
  209. package/src/retrieval/index.ts +42 -42
  210. package/src/services/BatchService.ts +352 -352
  211. package/src/services/CapabilityService.ts +464 -448
  212. package/src/services/ClassifierService.ts +465 -465
  213. package/src/services/CrossContextPermissionService.ts +486 -484
  214. package/src/services/EmbeddingService.ts +771 -706
  215. package/src/services/EncryptionService.ts +712 -711
  216. package/src/services/GeminiAIService.ts +753 -753
  217. package/src/services/IndexManager.ts +977 -1004
  218. package/src/services/MemoryIndexService.ts +1003 -1003
  219. package/src/services/MemoryService.ts +369 -369
  220. package/src/services/QueryService.ts +890 -890
  221. package/src/services/StorageService.ts +1182 -1111
  222. package/src/services/TransactionService.ts +838 -790
  223. package/src/services/VectorService.ts +462 -462
  224. package/src/services/ViewService.ts +484 -484
  225. package/src/services/index.ts +25 -25
  226. package/src/services/storage/BlobAttributesManager.ts +333 -333
  227. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  228. package/src/services/storage/MemorySearchManager.ts +387 -387
  229. package/src/services/storage/QuiltBatchManager.ts +1130 -660
  230. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  231. package/src/services/storage/WalrusStorageManager.ts +287 -287
  232. package/src/services/storage/index.ts +57 -52
  233. package/src/types/index.ts +13 -13
  234. package/src/utils/LRUCache.ts +378 -0
  235. package/src/utils/index.ts +76 -68
  236. package/src/utils/memoryIndexOnChain.ts +507 -0
  237. package/src/utils/rebuildIndex.ts +290 -290
  238. package/src/utils/rebuildIndexNode.ts +771 -424
  239. package/src/vector/BrowserHnswIndexService.ts +758 -758
  240. package/src/vector/HnswWasmService.ts +731 -679
  241. package/src/vector/IHnswService.ts +233 -224
  242. package/src/vector/NodeHnswService.ts +833 -735
  243. package/src/vector/VectorManager.ts +478 -478
  244. package/src/vector/createHnswService.ts +135 -135
  245. package/src/vector/index.ts +56 -56
  246. package/src/wallet/ContextWalletService.ts +656 -656
  247. package/src/wallet/MainWalletService.ts +317 -317
@@ -26,13 +26,82 @@
26
26
  * ```
27
27
  */
28
28
  import { WalrusClient } from '@mysten/walrus';
29
+ /**
30
+ * Find a matching file in a Quilt using multiple strategies
31
+ * Mirrors the logic in SDK's QuiltBatchManager.findMemoryInQuilt()
32
+ *
33
+ * Strategies (in order):
34
+ * 1. Match by tags['memory_id'] === vectorId
35
+ * 2. Match by identifier === `memory-${vectorId}.json`
36
+ * 3. Match by JSON metadata.memoryId === vectorId
37
+ * 4. Fallback to index-based matching
38
+ */
39
+ async function findMatchingFile(files, vectorId, fallbackIndex) {
40
+ let matchedFile;
41
+ let matchStrategy = '';
42
+ // Strategy 1: Match by tags['memory_id']
43
+ for (const f of files) {
44
+ const tags = await f.getTags();
45
+ if (tags?.['memory_id'] === String(vectorId)) {
46
+ matchedFile = f;
47
+ const identifier = await f.getIdentifier();
48
+ matchStrategy = `memory_id tag: ${tags['memory_id']} (${identifier})`;
49
+ break;
50
+ }
51
+ }
52
+ // Strategy 2: Match by identifier pattern "memory-{vectorId}.json"
53
+ if (!matchedFile) {
54
+ for (const f of files) {
55
+ const identifier = await f.getIdentifier();
56
+ if (identifier === `memory-${vectorId}.json`) {
57
+ matchedFile = f;
58
+ matchStrategy = `identifier: ${identifier}`;
59
+ break;
60
+ }
61
+ }
62
+ }
63
+ // Strategy 3: Parse JSON to find matching metadata.memoryId
64
+ if (!matchedFile) {
65
+ for (const f of files) {
66
+ try {
67
+ const json = await f.json();
68
+ if (json?.metadata?.memoryId === String(vectorId)) {
69
+ matchedFile = f;
70
+ const identifier = await f.getIdentifier();
71
+ matchStrategy = `JSON metadata.memoryId: ${json.metadata.memoryId} (${identifier})`;
72
+ break;
73
+ }
74
+ }
75
+ catch {
76
+ // Not valid JSON, continue
77
+ }
78
+ }
79
+ }
80
+ // Strategy 4: Fallback to index-based matching
81
+ if (!matchedFile && fallbackIndex < files.length) {
82
+ matchedFile = files[fallbackIndex];
83
+ const identifier = await matchedFile.getIdentifier();
84
+ matchStrategy = `index fallback (${fallbackIndex}): ${identifier || 'no identifier'}`;
85
+ }
86
+ return { file: matchedFile, matchStrategy };
87
+ }
29
88
  /**
30
89
  * Rebuild HNSW index from blockchain + Walrus (Node.js)
31
90
  */
32
91
  export async function rebuildIndexNode(options) {
33
- const { userAddress, client, packageId, network = process.env.WALRUS_NETWORK || 'testnet', walrusAggregator, indexDirectory = './.pdw-indexes', onProgress, force = false } = options;
92
+ const { userAddress, client, packageId, network = process.env.WALRUS_NETWORK || 'testnet', walrusAggregator, indexDirectory = './.pdw-indexes', onProgress, force = false, quiltIds = [], fetchConcurrency = 10 } = options;
34
93
  const startTime = Date.now();
35
94
  const errors = [];
95
+ // Detailed timing
96
+ const timing = {
97
+ initMs: 0,
98
+ blockchainFetchMs: 0,
99
+ walrusFetchMs: 0,
100
+ processingMs: 0,
101
+ saveMs: 0,
102
+ blobsFetched: 0,
103
+ totalBytesDownloaded: 0,
104
+ };
36
105
  console.log('[rebuildIndexNode] Starting index rebuild...');
37
106
  onProgress?.(0, 0, 'Initializing...');
38
107
  try {
@@ -57,6 +126,8 @@ export async function rebuildIndexNode(options) {
57
126
  }
58
127
  });
59
128
  await hnswService.initialize();
129
+ timing.initMs = Date.now() - startTime;
130
+ console.log(`[rebuildIndexNode] ⏱️ Init: ${timing.initMs}ms`);
60
131
  // Check if index exists
61
132
  const indexPath = `${indexDirectory}/${userAddress.replace(/[^a-zA-Z0-9]/g, '_')}.hnsw`;
62
133
  let indexExists = false;
@@ -83,6 +154,7 @@ export async function rebuildIndexNode(options) {
83
154
  console.log('[rebuildIndexNode] Deleted existing index for rebuild');
84
155
  }
85
156
  // Fetch all memories from blockchain
157
+ const blockchainFetchStart = Date.now();
86
158
  console.log('[rebuildIndexNode] Fetching memories from blockchain...');
87
159
  onProgress?.(0, 0, 'Fetching memories from blockchain...');
88
160
  const memories = [];
@@ -138,130 +210,326 @@ export async function rebuildIndexNode(options) {
138
210
  memoriesByBlobId.set(memory.blobId, list);
139
211
  }
140
212
  console.log(`[rebuildIndexNode] Unique blobIds: ${memoriesByBlobId.size} (${memoriesByBlobId.size < totalMemories ? 'Quilt detected' : 'individual blobs'})`);
213
+ timing.blockchainFetchMs = Date.now() - blockchainFetchStart;
214
+ console.log(`[rebuildIndexNode] ⏱️ Blockchain fetch: ${timing.blockchainFetchMs}ms`);
141
215
  let indexedCount = 0;
142
216
  let failedCount = 0;
143
217
  let processedCount = 0;
144
- // Cache for Quilt files to avoid re-fetching
218
+ // ==================== PARALLEL BLOB FETCHING + CONTENT ====================
219
+ // Step 1: Check blob types (Quilt vs regular) in parallel
220
+ // Step 2: Fetch content in parallel (patches for Quilt, bytes for regular)
221
+ const blobIds = Array.from(memoriesByBlobId.keys());
222
+ console.log(`[rebuildIndexNode] Fetching ${blobIds.length} blobs (concurrency: ${fetchConcurrency})...`);
223
+ const fetchStartTime = Date.now();
145
224
  const quiltFileCache = new Map();
146
- for (const [blobId, memoriesInBlob] of memoriesByBlobId) {
147
- console.log(`[rebuildIndexNode] Processing blobId ${blobId.substring(0, 20)}... (${memoriesInBlob.length} memories)`);
148
- try {
149
- // Use getBlob().files() to correctly parse Quilt structure
150
- // For regular blob: returns [singleFile]
151
- // For Quilt: returns [file1, file2, ...] - all files in the quilt
152
- let files;
153
- if (quiltFileCache.has(blobId)) {
154
- files = quiltFileCache.get(blobId);
155
- console.log(`[rebuildIndexNode] ♻️ Using cached files (${files.length} files)`);
156
- }
157
- else {
158
- const blob = await walrusClient.walrus.getBlob({ blobId });
159
- files = await blob.files();
160
- quiltFileCache.set(blobId, files);
161
- console.log(`[rebuildIndexNode] 📥 Fetched ${files.length} file(s) from Walrus`);
162
- }
163
- // For each memory in this blobId
164
- for (let i = 0; i < memoriesInBlob.length; i++) {
165
- const memory = memoriesInBlob[i];
166
- processedCount++;
167
- const progress = `Memory ${processedCount}/${totalMemories}`;
168
- console.log(`[rebuildIndexNode] Processing ${progress}: vectorId=${memory.vectorId}`);
169
- onProgress?.(processedCount, totalMemories, `Processing ${progress}...`);
225
+ const contentCache = new Map(); // blobId or blobId:identifier -> content
226
+ const fetchErrors = [];
227
+ // Process in batches to control concurrency
228
+ for (let i = 0; i < blobIds.length; i += fetchConcurrency) {
229
+ const batch = blobIds.slice(i, i + fetchConcurrency);
230
+ const batchNum = Math.floor(i / fetchConcurrency) + 1;
231
+ const totalBatches = Math.ceil(blobIds.length / fetchConcurrency);
232
+ console.log(`[rebuildIndexNode] 📥 Batch ${batchNum}/${totalBatches}: ${batch.length} blobs...`);
233
+ onProgress?.(i, blobIds.length, `Fetching batch ${batchNum}/${totalBatches}...`);
234
+ // Parallel fetch: check type + fetch content for each blob
235
+ const results = await Promise.all(batch.map(async (blobId) => {
236
+ try {
237
+ // Try as Quilt first (getBlob + files)
170
238
  try {
171
- // Determine which file to use
172
- // For Quilt: match by index
173
- // For single blob: use the only file
174
- const fileIndex = files.length === 1 ? 0 : Math.min(i, files.length - 1);
175
- const file = files[fileIndex];
176
- if (!file) {
177
- throw new Error(`No file found at index ${fileIndex}`);
178
- }
179
- // Get file content
180
- const rawBytes = await file.bytes();
181
- const rawText = new TextDecoder().decode(rawBytes);
182
- const trimmedText = rawText.trim();
183
- // Get file identifier and tags if available (for Quilts)
184
- const identifier = await file.getIdentifier();
185
- const tags = await file.getTags();
186
- if (identifier) {
187
- console.log(`[rebuildIndexNode] 📎 File identifier: ${identifier}`);
188
- }
189
- let content;
190
- let embedding;
191
- let metadata = {};
192
- let timestamp = Date.now();
193
- if (trimmedText.startsWith('{') && trimmedText.endsWith('}')) {
194
- // JSON package format (correct format)
195
- try {
196
- const memoryData = JSON.parse(trimmedText);
197
- content = memoryData.content;
198
- embedding = memoryData.embedding;
199
- metadata = memoryData.metadata || {};
200
- timestamp = memoryData.timestamp || Date.now();
201
- if (!embedding || embedding.length !== 3072) {
202
- throw new Error(`Invalid embedding in JSON: length=${embedding?.length || 0}`);
203
- }
204
- console.log(`[rebuildIndexNode] 📦 Format: JSON package`);
205
- }
206
- catch (jsonError) {
207
- throw new Error(`Invalid JSON structure: ${jsonError.message}`);
208
- }
209
- }
210
- else if (trimmedText.length > 0 && !trimmedText.includes('\x00') && trimmedText.length < 10000) {
211
- // Plain text format - cannot index without embedding
212
- throw new Error('Plain text format detected but no embedding available - skip');
239
+ const blob = await walrusClient.walrus.getBlob({ blobId });
240
+ const quiltFiles = await blob.files();
241
+ if (quiltFiles.length > 1) {
242
+ // It's a Quilt with multiple patches - fetch all content in parallel
243
+ const patchResults = await Promise.all(quiltFiles.map(async (file) => {
244
+ const identifier = await file.getIdentifier();
245
+ const tags = await file.getTags();
246
+ const bytes = await file.bytes();
247
+ return { file, identifier, tags, bytes };
248
+ }));
249
+ return {
250
+ blobId,
251
+ success: true,
252
+ isQuilt: true,
253
+ files: quiltFiles,
254
+ patches: patchResults,
255
+ };
213
256
  }
214
257
  else {
215
- throw new Error('Binary, encrypted, or empty content - cannot index');
258
+ // Single file in blob - fetch content
259
+ const bytes = await quiltFiles[0].bytes();
260
+ return {
261
+ blobId,
262
+ success: true,
263
+ isQuilt: false,
264
+ files: quiltFiles,
265
+ bytes,
266
+ };
267
+ }
268
+ }
269
+ catch {
270
+ // Not a Quilt - try as regular blob
271
+ const files = await walrusClient.walrus.getFiles({ ids: [blobId] });
272
+ if (files[0]) {
273
+ const bytes = await files[0].bytes();
274
+ return {
275
+ blobId,
276
+ success: true,
277
+ isQuilt: false,
278
+ files,
279
+ bytes,
280
+ };
216
281
  }
217
- // Add to HNSW index
218
- await hnswService.addVector(userAddress, memory.vectorId, embedding, {
219
- blobId: memory.blobId,
220
- memoryObjectId: memory.id,
221
- category: metadata.category || memory.category || tags?.['category'],
222
- importance: metadata.importance || memory.importance || parseInt(tags?.['importance'] || '5'),
223
- topic: metadata.topic || tags?.['topic'] || '',
224
- timestamp,
225
- content,
226
- isEncrypted: false
227
- });
228
- indexedCount++;
229
- console.log(`[rebuildIndexNode] ✓ Indexed: "${content.substring(0, 30)}..."`);
282
+ return { blobId, success: false, error: 'No file found' };
230
283
  }
231
- catch (error) {
232
- failedCount++;
233
- const errorMsg = error.message || String(error);
234
- errors.push({ blobId: memory.blobId, error: errorMsg });
235
- console.error(`[rebuildIndexNode] ✗ Failed: ${errorMsg}`);
284
+ }
285
+ catch (error) {
286
+ return { blobId, success: false, error: error.message || String(error) };
287
+ }
288
+ }));
289
+ // Process results into caches
290
+ for (const result of results) {
291
+ if (!result.success) {
292
+ fetchErrors.push({ blobId: result.blobId, error: result.error || 'Unknown error' });
293
+ console.error(`[rebuildIndexNode] ✗ ${result.blobId.substring(0, 16)}...: ${result.error}`);
294
+ continue;
295
+ }
296
+ if (result.isQuilt && result.patches) {
297
+ // Quilt: cache files and patch contents
298
+ quiltFileCache.set(result.blobId, result.files);
299
+ for (const patch of result.patches) {
300
+ const cacheKey = patch.identifier
301
+ ? `${result.blobId}:${patch.identifier}`
302
+ : result.blobId;
303
+ contentCache.set(cacheKey, patch.bytes);
236
304
  }
305
+ console.log(`[rebuildIndexNode] ✓ ${result.blobId.substring(0, 16)}... (Quilt: ${result.patches.length} patches)`);
306
+ }
307
+ else if (result.bytes) {
308
+ // Regular blob: cache file and content
309
+ quiltFileCache.set(result.blobId, result.files);
310
+ contentCache.set(result.blobId, result.bytes);
311
+ console.log(`[rebuildIndexNode] ✓ ${result.blobId.substring(0, 16)}... (${result.bytes.length} bytes)`);
237
312
  }
238
313
  }
239
- catch (error) {
240
- // Failed to fetch files for this blobId
241
- const errorMsg = error.message || String(error);
242
- console.error(`[rebuildIndexNode] ✗ Failed to fetch blobId: ${errorMsg}`);
314
+ }
315
+ timing.walrusFetchMs = Date.now() - fetchStartTime;
316
+ timing.blobsFetched = quiltFileCache.size;
317
+ // Calculate total bytes downloaded
318
+ for (const bytes of contentCache.values()) {
319
+ timing.totalBytesDownloaded += bytes.length;
320
+ }
321
+ console.log(`[rebuildIndexNode] ⏱️ Walrus fetch: ${timing.walrusFetchMs}ms (${quiltFileCache.size} blobs, ${contentCache.size} contents, ${(timing.totalBytesDownloaded / 1024).toFixed(1)}KB)`);
322
+ const processingStart = Date.now();
323
+ // ==================== PROCESS MEMORIES ====================
324
+ for (const [blobId, memoriesInBlob] of memoriesByBlobId) {
325
+ console.log(`[rebuildIndexNode] Processing blobId ${blobId.substring(0, 20)}... (${memoriesInBlob.length} memories)`);
326
+ // Get pre-fetched files from cache
327
+ const files = quiltFileCache.get(blobId);
328
+ if (!files) {
329
+ // Blob fetch failed - mark all memories in this blob as failed
330
+ const fetchError = fetchErrors.find(e => e.blobId === blobId);
331
+ const errorMsg = fetchError?.error || 'Failed to fetch blob';
332
+ console.error(`[rebuildIndexNode] ✗ No files available: ${errorMsg}`);
243
333
  for (const memory of memoriesInBlob) {
244
334
  processedCount++;
245
335
  failedCount++;
246
- errors.push({ blobId: memory.blobId, error: `Failed to fetch blob: ${errorMsg}` });
336
+ errors.push({ blobId: memory.blobId, error: `Blob fetch failed: ${errorMsg}` });
337
+ }
338
+ continue;
339
+ }
340
+ console.log(`[rebuildIndexNode] 📦 Using ${files.length} pre-fetched file(s)`);
341
+ // For each memory in this blobId
342
+ for (let i = 0; i < memoriesInBlob.length; i++) {
343
+ const memory = memoriesInBlob[i];
344
+ processedCount++;
345
+ const progress = `Memory ${processedCount}/${totalMemories}`;
346
+ console.log(`[rebuildIndexNode] Processing ${progress}: vectorId=${memory.vectorId}`);
347
+ onProgress?.(processedCount, totalMemories, `Processing ${progress}...`);
348
+ try {
349
+ // Find matching file using helper function (mirrors SDK's QuiltBatchManager.findMemoryInQuilt)
350
+ let file;
351
+ if (files.length === 1) {
352
+ // Single file - use it directly
353
+ file = files[0];
354
+ }
355
+ else if (files.length > 1) {
356
+ // Multiple files in Quilt - use matching strategies
357
+ const { file: matchedFile, matchStrategy } = await findMatchingFile(files, memory.vectorId, i);
358
+ file = matchedFile;
359
+ if (matchStrategy) {
360
+ console.log(`[rebuildIndexNode] 🎯 Matched by ${matchStrategy}`);
361
+ }
362
+ }
363
+ if (!file) {
364
+ throw new Error(`No file found for memory vectorId=${memory.vectorId} (blob has ${files.length} files)`);
365
+ }
366
+ // Get file identifier and tags if available (for Quilts)
367
+ const identifier = await file.getIdentifier();
368
+ const tags = await file.getTags();
369
+ // Get content from cache (already pre-fetched) or fetch if not cached
370
+ const cacheKey = identifier ? `${blobId}:${identifier}` : blobId;
371
+ let rawBytes = contentCache.get(cacheKey);
372
+ if (!rawBytes) {
373
+ // Fallback: fetch content if not in cache
374
+ rawBytes = await file.bytes();
375
+ }
376
+ const rawText = new TextDecoder().decode(rawBytes);
377
+ const trimmedText = rawText.trim();
378
+ if (identifier) {
379
+ console.log(`[rebuildIndexNode] 📎 File identifier: ${identifier}`);
380
+ }
381
+ let content;
382
+ let embedding;
383
+ let metadata = {};
384
+ let timestamp = Date.now();
385
+ if (trimmedText.startsWith('{') && trimmedText.endsWith('}')) {
386
+ // JSON package format (correct format)
387
+ try {
388
+ const memoryData = JSON.parse(trimmedText);
389
+ content = memoryData.content;
390
+ embedding = memoryData.embedding;
391
+ metadata = memoryData.metadata || {};
392
+ timestamp = memoryData.timestamp || Date.now();
393
+ if (!embedding || embedding.length !== 3072) {
394
+ throw new Error(`Invalid embedding in JSON: length=${embedding?.length || 0}`);
395
+ }
396
+ console.log(`[rebuildIndexNode] 📦 Format: JSON package`);
397
+ }
398
+ catch (jsonError) {
399
+ throw new Error(`Invalid JSON structure: ${jsonError.message}`);
400
+ }
401
+ }
402
+ else if (trimmedText.length > 0 && !trimmedText.includes('\x00') && trimmedText.length < 10000) {
403
+ // Plain text format - cannot index without embedding
404
+ throw new Error('Plain text format detected but no embedding available - skip');
405
+ }
406
+ else {
407
+ throw new Error('Binary, encrypted, or empty content - cannot index');
408
+ }
409
+ // Add to HNSW index
410
+ await hnswService.addVector(userAddress, memory.vectorId, embedding, {
411
+ blobId: memory.blobId,
412
+ memoryObjectId: memory.id,
413
+ category: metadata.category || memory.category || tags?.['category'],
414
+ importance: metadata.importance || memory.importance || parseInt(tags?.['importance'] || '5'),
415
+ topic: metadata.topic || tags?.['topic'] || '',
416
+ timestamp,
417
+ content,
418
+ isEncrypted: false
419
+ });
420
+ indexedCount++;
421
+ console.log(`[rebuildIndexNode] ✓ Indexed: "${content.substring(0, 30)}..."`);
422
+ }
423
+ catch (error) {
424
+ failedCount++;
425
+ const errorMsg = error.message || String(error);
426
+ errors.push({ blobId: memory.blobId, error: errorMsg });
427
+ console.error(`[rebuildIndexNode] ✗ Failed: ${errorMsg}`);
428
+ }
429
+ }
430
+ }
431
+ // ==================== QUILT MEMORIES ====================
432
+ // Process additional Quilts that may not have on-chain Memory objects
433
+ let quiltMemoriesTotal = 0;
434
+ let quiltMemoriesIndexed = 0;
435
+ if (quiltIds.length > 0) {
436
+ console.log(`\n[rebuildIndexNode] Processing ${quiltIds.length} additional Quilt(s)...`);
437
+ onProgress?.(processedCount, totalMemories + quiltIds.length, 'Processing Quilts...');
438
+ for (const quiltId of quiltIds) {
439
+ console.log(`[rebuildIndexNode] Processing Quilt: ${quiltId.substring(0, 30)}...`);
440
+ try {
441
+ // Fetch Quilt files
442
+ const blob = await walrusClient.walrus.getBlob({ blobId: quiltId });
443
+ const files = await blob.files();
444
+ console.log(`[rebuildIndexNode] 📥 Fetched Quilt: ${files.length} file(s)`);
445
+ // Process each file in the Quilt
446
+ for (let fileIdx = 0; fileIdx < files.length; fileIdx++) {
447
+ const file = files[fileIdx];
448
+ quiltMemoriesTotal++;
449
+ try {
450
+ const identifier = await file.getIdentifier() || `quilt-file-${fileIdx}`;
451
+ const tags = await file.getTags();
452
+ // Parse JSON content
453
+ const rawBytes = await file.bytes();
454
+ let rawText = new TextDecoder().decode(rawBytes);
455
+ // Trim trailing null bytes (Quilt corruption workaround)
456
+ let lastValidIndex = rawText.length - 1;
457
+ while (lastValidIndex >= 0 && rawText.charCodeAt(lastValidIndex) === 0) {
458
+ lastValidIndex--;
459
+ }
460
+ rawText = rawText.slice(0, lastValidIndex + 1);
461
+ if (!rawText.startsWith('{') || !rawText.endsWith('}')) {
462
+ throw new Error('Not a JSON file');
463
+ }
464
+ const memoryData = JSON.parse(rawText);
465
+ if (!memoryData.embedding || memoryData.embedding.length === 0) {
466
+ throw new Error('No embedding in package');
467
+ }
468
+ // Generate unique vector ID for Quilt memory
469
+ const vectorId = Date.now() % 4294967295 + fileIdx;
470
+ const memoryId = memoryData.metadata?.memoryId || identifier.replace('.json', '');
471
+ // Add to HNSW index
472
+ await hnswService.addVector(userAddress, vectorId, memoryData.embedding, {
473
+ blobId: quiltId,
474
+ memoryObjectId: memoryId,
475
+ category: memoryData.metadata?.category || tags?.['category'] || 'general',
476
+ importance: memoryData.metadata?.importance || parseInt(tags?.['importance'] || '3'),
477
+ topic: memoryData.metadata?.topic || tags?.['topic'] || '',
478
+ timestamp: memoryData.timestamp || Date.now(),
479
+ content: memoryData.content || '[encrypted]',
480
+ isEncrypted: memoryData.encrypted === true,
481
+ quiltId,
482
+ identifier
483
+ });
484
+ quiltMemoriesIndexed++;
485
+ console.log(`[rebuildIndexNode] ✓ Indexed Quilt file: ${identifier}`);
486
+ }
487
+ catch (fileError) {
488
+ const errorMsg = fileError.message || String(fileError);
489
+ errors.push({ blobId: quiltId, error: `File ${fileIdx}: ${errorMsg}` });
490
+ console.error(`[rebuildIndexNode] ✗ Failed file ${fileIdx}: ${errorMsg}`);
491
+ }
492
+ }
493
+ }
494
+ catch (quiltError) {
495
+ const errorMsg = quiltError.message || String(quiltError);
496
+ errors.push({ blobId: quiltId, error: `Quilt fetch failed: ${errorMsg}` });
497
+ console.error(`[rebuildIndexNode] ✗ Failed to fetch Quilt: ${errorMsg}`);
247
498
  }
248
499
  }
500
+ console.log(`[rebuildIndexNode] Quilt indexing complete: ${quiltMemoriesIndexed}/${quiltMemoriesTotal}`);
249
501
  }
502
+ // Update totals
503
+ const finalTotal = totalMemories + quiltMemoriesTotal;
504
+ const finalIndexed = indexedCount + quiltMemoriesIndexed;
505
+ const finalFailed = failedCount + (quiltMemoriesTotal - quiltMemoriesIndexed);
506
+ timing.processingMs = Date.now() - processingStart;
507
+ console.log(`[rebuildIndexNode] ⏱️ Processing: ${timing.processingMs}ms`);
250
508
  // Force save index
509
+ const saveStart = Date.now();
251
510
  console.log('[rebuildIndexNode] Saving index to disk...');
252
- onProgress?.(totalMemories, totalMemories, 'Saving index...');
511
+ onProgress?.(finalTotal, finalTotal, 'Saving index...');
253
512
  await hnswService.flushBatch(userAddress);
513
+ timing.saveMs = Date.now() - saveStart;
514
+ console.log(`[rebuildIndexNode] ⏱️ Save: ${timing.saveMs}ms`);
254
515
  const duration = Date.now() - startTime;
255
516
  console.log('[rebuildIndexNode] Index rebuild complete!');
256
- console.log(`[rebuildIndexNode] Total: ${totalMemories}, Indexed: ${indexedCount}, Failed: ${failedCount}`);
517
+ console.log(`[rebuildIndexNode] On-chain: ${totalMemories}, Quilts: ${quiltMemoriesTotal}, Total indexed: ${finalIndexed}, Failed: ${finalFailed}`);
257
518
  console.log(`[rebuildIndexNode] Duration: ${(duration / 1000).toFixed(2)}s`);
519
+ console.log(`[rebuildIndexNode] ⏱️ TIMING BREAKDOWN:`);
520
+ console.log(` Init: ${timing.initMs}ms (${((timing.initMs / duration) * 100).toFixed(1)}%)`);
521
+ console.log(` Blockchain: ${timing.blockchainFetchMs}ms (${((timing.blockchainFetchMs / duration) * 100).toFixed(1)}%)`);
522
+ console.log(` Walrus: ${timing.walrusFetchMs}ms (${((timing.walrusFetchMs / duration) * 100).toFixed(1)}%)`);
523
+ console.log(` Processing: ${timing.processingMs}ms (${((timing.processingMs / duration) * 100).toFixed(1)}%)`);
524
+ console.log(` Save: ${timing.saveMs}ms (${((timing.saveMs / duration) * 100).toFixed(1)}%)`);
258
525
  return {
259
526
  success: true,
260
- totalMemories,
261
- indexedMemories: indexedCount,
262
- failedMemories: failedCount,
527
+ totalMemories: finalTotal,
528
+ indexedMemories: finalIndexed,
529
+ failedMemories: finalFailed,
263
530
  errors,
264
- duration
531
+ duration,
532
+ timing
265
533
  };
266
534
  }
267
535
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"rebuildIndexNode.js","sourceRoot":"","sources":["../../src/utils/rebuildIndexNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebuildIndexNode.js","sourceRoot":"","sources":["../../src/utils/rebuildIndexNode.ts"],"names":[],"mappings":"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"}