@cmdoss/memwal-sdk 0.6.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.
- package/ARCHITECTURE.md +463 -0
- package/BENCHMARKS.md +238 -0
- package/README.md +142 -0
- package/dist/access/PermissionService.d.ts +179 -0
- package/dist/access/PermissionService.d.ts.map +1 -0
- package/dist/access/PermissionService.js +445 -0
- package/dist/access/PermissionService.js.map +1 -0
- package/dist/access/index.d.ts +8 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +7 -0
- package/dist/access/index.js.map +1 -0
- package/dist/aggregation/AggregationService.d.ts +132 -0
- package/dist/aggregation/AggregationService.d.ts.map +1 -0
- package/dist/aggregation/AggregationService.js +225 -0
- package/dist/aggregation/AggregationService.js.map +1 -0
- package/dist/aggregation/index.d.ts +8 -0
- package/dist/aggregation/index.d.ts.map +1 -0
- package/dist/aggregation/index.js +7 -0
- package/dist/aggregation/index.js.map +1 -0
- package/dist/ai-sdk/PDWVectorStore.d.ts +124 -0
- package/dist/ai-sdk/PDWVectorStore.d.ts.map +1 -0
- package/dist/ai-sdk/PDWVectorStore.js +557 -0
- package/dist/ai-sdk/PDWVectorStore.js.map +1 -0
- package/dist/ai-sdk/index.d.ts +45 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +45 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/ai-sdk/tools.d.ts +153 -0
- package/dist/ai-sdk/tools.d.ts.map +1 -0
- package/dist/ai-sdk/tools.js +312 -0
- package/dist/ai-sdk/tools.js.map +1 -0
- package/dist/ai-sdk/types.d.ts +336 -0
- package/dist/ai-sdk/types.d.ts.map +1 -0
- package/dist/ai-sdk/types.js +36 -0
- package/dist/ai-sdk/types.js.map +1 -0
- package/dist/api/client.d.ts +43 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +136 -0
- package/dist/api/client.js.map +1 -0
- package/dist/batch/BatchManager.d.ts +147 -0
- package/dist/batch/BatchManager.d.ts.map +1 -0
- package/dist/batch/BatchManager.js +427 -0
- package/dist/batch/BatchManager.js.map +1 -0
- package/dist/batch/BatchingService.d.ts +122 -0
- package/dist/batch/BatchingService.d.ts.map +1 -0
- package/dist/batch/BatchingService.js +301 -0
- package/dist/batch/BatchingService.js.map +1 -0
- package/dist/batch/MemoryProcessingCache.d.ts +147 -0
- package/dist/batch/MemoryProcessingCache.d.ts.map +1 -0
- package/dist/batch/MemoryProcessingCache.js +349 -0
- package/dist/batch/MemoryProcessingCache.js.map +1 -0
- package/dist/batch/index.d.ts +13 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/batch/index.js +10 -0
- package/dist/batch/index.js.map +1 -0
- package/dist/browser.d.ts +73 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +66 -0
- package/dist/browser.js.map +1 -0
- package/dist/chat/index.d.ts +13 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +14 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/client/ClientMemoryManager.d.ts +202 -0
- package/dist/client/ClientMemoryManager.d.ts.map +1 -0
- package/dist/client/ClientMemoryManager.js +764 -0
- package/dist/client/ClientMemoryManager.js.map +1 -0
- package/dist/client/PersonalDataWallet.d.ts +406 -0
- package/dist/client/PersonalDataWallet.d.ts.map +1 -0
- package/dist/client/PersonalDataWallet.js +229 -0
- package/dist/client/PersonalDataWallet.js.map +1 -0
- package/dist/client/SimplePDWClient.d.ts +534 -0
- package/dist/client/SimplePDWClient.d.ts.map +1 -0
- package/dist/client/SimplePDWClient.js +876 -0
- package/dist/client/SimplePDWClient.js.map +1 -0
- package/dist/client/factory.d.ts +99 -0
- package/dist/client/factory.d.ts.map +1 -0
- package/dist/client/factory.js +126 -0
- package/dist/client/factory.js.map +1 -0
- package/dist/client/namespaces/AnalyticsNamespace.d.ts +178 -0
- package/dist/client/namespaces/AnalyticsNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/AnalyticsNamespace.js +261 -0
- package/dist/client/namespaces/AnalyticsNamespace.js.map +1 -0
- package/dist/client/namespaces/BatchNamespace.d.ts +120 -0
- package/dist/client/namespaces/BatchNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/BatchNamespace.js +261 -0
- package/dist/client/namespaces/BatchNamespace.js.map +1 -0
- package/dist/client/namespaces/CacheNamespace.d.ts +80 -0
- package/dist/client/namespaces/CacheNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/CacheNamespace.js +100 -0
- package/dist/client/namespaces/CacheNamespace.js.map +1 -0
- package/dist/client/namespaces/CapabilityNamespace.d.ts +145 -0
- package/dist/client/namespaces/CapabilityNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/CapabilityNamespace.js +181 -0
- package/dist/client/namespaces/CapabilityNamespace.js.map +1 -0
- package/dist/client/namespaces/ChatNamespace.d.ts +110 -0
- package/dist/client/namespaces/ChatNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/ChatNamespace.js +123 -0
- package/dist/client/namespaces/ChatNamespace.js.map +1 -0
- package/dist/client/namespaces/ClassifyNamespace.d.ts +96 -0
- package/dist/client/namespaces/ClassifyNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/ClassifyNamespace.js +149 -0
- package/dist/client/namespaces/ClassifyNamespace.js.map +1 -0
- package/dist/client/namespaces/ContextNamespace.d.ts +150 -0
- package/dist/client/namespaces/ContextNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/ContextNamespace.js +250 -0
- package/dist/client/namespaces/ContextNamespace.js.map +1 -0
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts +64 -0
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/EmbeddingsNamespace.js +86 -0
- package/dist/client/namespaces/EmbeddingsNamespace.js.map +1 -0
- package/dist/client/namespaces/EncryptionNamespace.d.ts +128 -0
- package/dist/client/namespaces/EncryptionNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/EncryptionNamespace.js +161 -0
- package/dist/client/namespaces/EncryptionNamespace.js.map +1 -0
- package/dist/client/namespaces/GraphNamespace.d.ts +168 -0
- package/dist/client/namespaces/GraphNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/GraphNamespace.js +314 -0
- package/dist/client/namespaces/GraphNamespace.js.map +1 -0
- package/dist/client/namespaces/IndexNamespace.d.ts +141 -0
- package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/IndexNamespace.js +238 -0
- package/dist/client/namespaces/IndexNamespace.js.map +1 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts +277 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/MemoryNamespace.js +907 -0
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -0
- package/dist/client/namespaces/PermissionsNamespace.d.ts +114 -0
- package/dist/client/namespaces/PermissionsNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/PermissionsNamespace.js +179 -0
- package/dist/client/namespaces/PermissionsNamespace.js.map +1 -0
- package/dist/client/namespaces/PipelineNamespace.d.ts +125 -0
- package/dist/client/namespaces/PipelineNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/PipelineNamespace.js +171 -0
- package/dist/client/namespaces/PipelineNamespace.js.map +1 -0
- package/dist/client/namespaces/SearchNamespace.d.ts +382 -0
- package/dist/client/namespaces/SearchNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/SearchNamespace.js +821 -0
- package/dist/client/namespaces/SearchNamespace.js.map +1 -0
- package/dist/client/namespaces/StorageNamespace.d.ts +180 -0
- package/dist/client/namespaces/StorageNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/StorageNamespace.js +354 -0
- package/dist/client/namespaces/StorageNamespace.js.map +1 -0
- package/dist/client/namespaces/TxNamespace.d.ts +143 -0
- package/dist/client/namespaces/TxNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/TxNamespace.js +208 -0
- package/dist/client/namespaces/TxNamespace.js.map +1 -0
- package/dist/client/namespaces/WalletNamespace.d.ts +124 -0
- package/dist/client/namespaces/WalletNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/WalletNamespace.js +197 -0
- package/dist/client/namespaces/WalletNamespace.js.map +1 -0
- package/dist/client/namespaces/consolidated/AINamespace.d.ts +265 -0
- package/dist/client/namespaces/consolidated/AINamespace.d.ts.map +1 -0
- package/dist/client/namespaces/consolidated/AINamespace.js +390 -0
- package/dist/client/namespaces/consolidated/AINamespace.js.map +1 -0
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +265 -0
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js +412 -0
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -0
- package/dist/client/namespaces/consolidated/SecurityNamespace.d.ts +354 -0
- package/dist/client/namespaces/consolidated/SecurityNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/consolidated/SecurityNamespace.js +522 -0
- package/dist/client/namespaces/consolidated/SecurityNamespace.js.map +1 -0
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +235 -0
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -0
- package/dist/client/namespaces/consolidated/StorageNamespace.js +351 -0
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -0
- package/dist/client/namespaces/consolidated/index.d.ts +17 -0
- package/dist/client/namespaces/consolidated/index.d.ts.map +1 -0
- package/dist/client/namespaces/consolidated/index.js +13 -0
- package/dist/client/namespaces/consolidated/index.js.map +1 -0
- package/dist/client/signers/KeypairSigner.d.ts +55 -0
- package/dist/client/signers/KeypairSigner.d.ts.map +1 -0
- package/dist/client/signers/KeypairSigner.js +84 -0
- package/dist/client/signers/KeypairSigner.js.map +1 -0
- package/dist/client/signers/UnifiedSigner.d.ts +88 -0
- package/dist/client/signers/UnifiedSigner.d.ts.map +1 -0
- package/dist/client/signers/UnifiedSigner.js +13 -0
- package/dist/client/signers/UnifiedSigner.js.map +1 -0
- package/dist/client/signers/WalletAdapterSigner.d.ts +94 -0
- package/dist/client/signers/WalletAdapterSigner.d.ts.map +1 -0
- package/dist/client/signers/WalletAdapterSigner.js +91 -0
- package/dist/client/signers/WalletAdapterSigner.js.map +1 -0
- package/dist/client/signers/index.d.ts +14 -0
- package/dist/client/signers/index.d.ts.map +1 -0
- package/dist/client/signers/index.js +12 -0
- package/dist/client/signers/index.js.map +1 -0
- package/dist/config/ConfigurationHelper.d.ts +167 -0
- package/dist/config/ConfigurationHelper.d.ts.map +1 -0
- package/dist/config/ConfigurationHelper.js +283 -0
- package/dist/config/ConfigurationHelper.js.map +1 -0
- package/dist/config/defaults.d.ts +9 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +49 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/validation.d.ts +12 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +61 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/interfaces/IService.d.ts +162 -0
- package/dist/core/interfaces/IService.d.ts.map +1 -0
- package/dist/core/interfaces/IService.js +159 -0
- package/dist/core/interfaces/IService.js.map +1 -0
- package/dist/core/interfaces/index.d.ts +7 -0
- package/dist/core/interfaces/index.d.ts.map +1 -0
- package/dist/core/interfaces/index.js +7 -0
- package/dist/core/interfaces/index.js.map +1 -0
- package/dist/core/types/capability.d.ts +268 -0
- package/dist/core/types/capability.d.ts.map +1 -0
- package/dist/core/types/capability.js +16 -0
- package/dist/core/types/capability.js.map +1 -0
- package/dist/core/types/index.d.ts +750 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +6 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/wallet.d.ts +254 -0
- package/dist/core/types/wallet.d.ts.map +1 -0
- package/dist/core/types/wallet.js +27 -0
- package/dist/core/types/wallet.js.map +1 -0
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/wallet.d.ts +209 -0
- package/dist/core/wallet.d.ts.map +1 -0
- package/dist/core/wallet.js +27 -0
- package/dist/core/wallet.js.map +1 -0
- package/dist/embedding/index.d.ts +9 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +8 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/types.d.ts +302 -0
- package/dist/embedding/types.d.ts.map +1 -0
- package/dist/embedding/types.js +9 -0
- package/dist/embedding/types.js.map +1 -0
- package/dist/encryption/index.d.ts +14 -0
- package/dist/encryption/index.d.ts.map +1 -0
- package/dist/encryption/index.js +14 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/errors/index.d.ts +149 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +301 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/recovery.d.ts +128 -0
- package/dist/errors/recovery.d.ts.map +1 -0
- package/dist/errors/recovery.js +320 -0
- package/dist/errors/recovery.js.map +1 -0
- package/dist/errors/validation.d.ts +106 -0
- package/dist/errors/validation.d.ts.map +1 -0
- package/dist/errors/validation.js +354 -0
- package/dist/errors/validation.js.map +1 -0
- package/dist/generated/pdw/capability.d.ts +223 -0
- package/dist/generated/pdw/capability.d.ts.map +1 -0
- package/dist/generated/pdw/capability.js +238 -0
- package/dist/generated/pdw/capability.js.map +1 -0
- package/dist/generated/pdw/deps/sui/object.d.ts +9 -0
- package/dist/generated/pdw/deps/sui/object.d.ts.map +1 -0
- package/dist/generated/pdw/deps/sui/object.js +11 -0
- package/dist/generated/pdw/deps/sui/object.js.map +1 -0
- package/dist/generated/pdw/deps/sui/vec_map.d.ts +37 -0
- package/dist/generated/pdw/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/generated/pdw/deps/sui/vec_map.js +28 -0
- package/dist/generated/pdw/deps/sui/vec_map.js.map +1 -0
- package/dist/generated/pdw/memory.d.ts +676 -0
- package/dist/generated/pdw/memory.d.ts.map +1 -0
- package/dist/generated/pdw/memory.js +681 -0
- package/dist/generated/pdw/memory.js.map +1 -0
- package/dist/generated/pdw/wallet.d.ts +78 -0
- package/dist/generated/pdw/wallet.d.ts.map +1 -0
- package/dist/generated/pdw/wallet.js +89 -0
- package/dist/generated/pdw/wallet.js.map +1 -0
- package/dist/generated/utils/index.d.ts +12 -0
- package/dist/generated/utils/index.d.ts.map +1 -0
- package/dist/generated/utils/index.js +132 -0
- package/dist/generated/utils/index.js.map +1 -0
- package/dist/graph/BrowserKnowledgeGraphManager.d.ts +101 -0
- package/dist/graph/BrowserKnowledgeGraphManager.d.ts.map +1 -0
- package/dist/graph/BrowserKnowledgeGraphManager.js +411 -0
- package/dist/graph/BrowserKnowledgeGraphManager.js.map +1 -0
- package/dist/graph/GraphService.d.ts +194 -0
- package/dist/graph/GraphService.d.ts.map +1 -0
- package/dist/graph/GraphService.js +662 -0
- package/dist/graph/GraphService.js.map +1 -0
- package/dist/graph/KnowledgeGraphManager.d.ts +161 -0
- package/dist/graph/KnowledgeGraphManager.d.ts.map +1 -0
- package/dist/graph/KnowledgeGraphManager.js +495 -0
- package/dist/graph/KnowledgeGraphManager.js.map +1 -0
- package/dist/graph/index.d.ts +11 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +9 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/hooks.wip/index.d.ts +55 -0
- package/dist/hooks.wip/index.d.ts.map +1 -0
- package/dist/hooks.wip/index.js +58 -0
- package/dist/hooks.wip/index.js.map +1 -0
- package/dist/hooks.wip/useCreateMemory.d.ts +111 -0
- package/dist/hooks.wip/useCreateMemory.d.ts.map +1 -0
- package/dist/hooks.wip/useCreateMemory.js +149 -0
- package/dist/hooks.wip/useCreateMemory.js.map +1 -0
- package/dist/hooks.wip/useCreateMemoryBatch.d.ts +122 -0
- package/dist/hooks.wip/useCreateMemoryBatch.d.ts.map +1 -0
- package/dist/hooks.wip/useCreateMemoryBatch.js +221 -0
- package/dist/hooks.wip/useCreateMemoryBatch.js.map +1 -0
- package/dist/hooks.wip/useKnowledgeGraph.d.ts +66 -0
- package/dist/hooks.wip/useKnowledgeGraph.d.ts.map +1 -0
- package/dist/hooks.wip/useKnowledgeGraph.js +229 -0
- package/dist/hooks.wip/useKnowledgeGraph.js.map +1 -0
- package/dist/hooks.wip/useMemoryChat.d.ts +106 -0
- package/dist/hooks.wip/useMemoryChat.d.ts.map +1 -0
- package/dist/hooks.wip/useMemoryChat.js +284 -0
- package/dist/hooks.wip/useMemoryChat.js.map +1 -0
- package/dist/hooks.wip/useMemoryIndex.d.ts +90 -0
- package/dist/hooks.wip/useMemoryIndex.d.ts.map +1 -0
- package/dist/hooks.wip/useMemoryIndex.js +218 -0
- package/dist/hooks.wip/useMemoryIndex.js.map +1 -0
- package/dist/hooks.wip/useMemoryManager.d.ts +35 -0
- package/dist/hooks.wip/useMemoryManager.d.ts.map +1 -0
- package/dist/hooks.wip/useMemoryManager.js +86 -0
- package/dist/hooks.wip/useMemoryManager.js.map +1 -0
- package/dist/hooks.wip/useMemorySearch.d.ts +100 -0
- package/dist/hooks.wip/useMemorySearch.d.ts.map +1 -0
- package/dist/hooks.wip/useMemorySearch.js +278 -0
- package/dist/hooks.wip/useMemorySearch.js.map +1 -0
- package/dist/hooks.wip/useMemoryServices.d.ts +80 -0
- package/dist/hooks.wip/useMemoryServices.d.ts.map +1 -0
- package/dist/hooks.wip/useMemoryServices.js +264 -0
- package/dist/hooks.wip/useMemoryServices.js.map +1 -0
- package/dist/hooks.wip/usePDWRAG.d.ts +112 -0
- package/dist/hooks.wip/usePDWRAG.d.ts.map +1 -0
- package/dist/hooks.wip/usePDWRAG.js +121 -0
- package/dist/hooks.wip/usePDWRAG.js.map +1 -0
- package/dist/hooks.wip/usePDWVectorStore.d.ts +68 -0
- package/dist/hooks.wip/usePDWVectorStore.d.ts.map +1 -0
- package/dist/hooks.wip/usePDWVectorStore.js +102 -0
- package/dist/hooks.wip/usePDWVectorStore.js.map +1 -0
- package/dist/hooks.wip/useRetrieveEmbedding.d.ts +138 -0
- package/dist/hooks.wip/useRetrieveEmbedding.d.ts.map +1 -0
- package/dist/hooks.wip/useRetrieveEmbedding.js +121 -0
- package/dist/hooks.wip/useRetrieveEmbedding.js.map +1 -0
- package/dist/hooks.wip/useSearchMemories.d.ts +103 -0
- package/dist/hooks.wip/useSearchMemories.d.ts.map +1 -0
- package/dist/hooks.wip/useSearchMemories.js +146 -0
- package/dist/hooks.wip/useSearchMemories.js.map +1 -0
- package/dist/hooks.wip/useStoreEmbedding.d.ts +174 -0
- package/dist/hooks.wip/useStoreEmbedding.d.ts.map +1 -0
- package/dist/hooks.wip/useStoreEmbedding.js +167 -0
- package/dist/hooks.wip/useStoreEmbedding.js.map +1 -0
- package/dist/hooks.wip/useWalletMemories.d.ts +119 -0
- package/dist/hooks.wip/useWalletMemories.d.ts.map +1 -0
- package/dist/hooks.wip/useWalletMemories.js +166 -0
- package/dist/hooks.wip/useWalletMemories.js.map +1 -0
- package/dist/hooks.wip/utils/cache.d.ts +25 -0
- package/dist/hooks.wip/utils/cache.d.ts.map +1 -0
- package/dist/hooks.wip/utils/cache.js +38 -0
- package/dist/hooks.wip/utils/cache.js.map +1 -0
- package/dist/hooks.wip/utils/types.d.ts +138 -0
- package/dist/hooks.wip/utils/types.d.ts.map +1 -0
- package/dist/hooks.wip/utils/types.js +5 -0
- package/dist/hooks.wip/utils/types.js.map +1 -0
- package/dist/index.d.ts +190 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +298 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/ai/EmbeddingService.d.ts +101 -0
- package/dist/infrastructure/ai/EmbeddingService.d.ts.map +1 -0
- package/dist/infrastructure/ai/EmbeddingService.js +242 -0
- package/dist/infrastructure/ai/EmbeddingService.js.map +1 -0
- package/dist/infrastructure/ai/GeminiAIService.d.ts +84 -0
- package/dist/infrastructure/ai/GeminiAIService.d.ts.map +1 -0
- package/dist/infrastructure/ai/GeminiAIService.js +300 -0
- package/dist/infrastructure/ai/GeminiAIService.js.map +1 -0
- package/dist/infrastructure/ai/index.d.ts +8 -0
- package/dist/infrastructure/ai/index.d.ts.map +1 -0
- package/dist/infrastructure/ai/index.js +8 -0
- package/dist/infrastructure/ai/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +16 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +19 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/seal/EncryptionService.d.ts +162 -0
- package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -0
- package/dist/infrastructure/seal/EncryptionService.js +466 -0
- package/dist/infrastructure/seal/EncryptionService.js.map +1 -0
- package/dist/infrastructure/seal/SealService.d.ts +132 -0
- package/dist/infrastructure/seal/SealService.d.ts.map +1 -0
- package/dist/infrastructure/seal/SealService.js +473 -0
- package/dist/infrastructure/seal/SealService.js.map +1 -0
- package/dist/infrastructure/seal/index.d.ts +8 -0
- package/dist/infrastructure/seal/index.d.ts.map +1 -0
- package/dist/infrastructure/seal/index.js +8 -0
- package/dist/infrastructure/seal/index.js.map +1 -0
- package/dist/infrastructure/sui/BlockchainManager.d.ts +161 -0
- package/dist/infrastructure/sui/BlockchainManager.d.ts.map +1 -0
- package/dist/infrastructure/sui/BlockchainManager.js +421 -0
- package/dist/infrastructure/sui/BlockchainManager.js.map +1 -0
- package/dist/infrastructure/sui/SuiService.d.ts +179 -0
- package/dist/infrastructure/sui/SuiService.d.ts.map +1 -0
- package/dist/infrastructure/sui/SuiService.js +658 -0
- package/dist/infrastructure/sui/SuiService.js.map +1 -0
- package/dist/infrastructure/sui/index.d.ts +8 -0
- package/dist/infrastructure/sui/index.d.ts.map +1 -0
- package/dist/infrastructure/sui/index.js +8 -0
- package/dist/infrastructure/sui/index.js.map +1 -0
- package/dist/infrastructure/walrus/StorageManager.d.ts +207 -0
- package/dist/infrastructure/walrus/StorageManager.d.ts.map +1 -0
- package/dist/infrastructure/walrus/StorageManager.js +413 -0
- package/dist/infrastructure/walrus/StorageManager.js.map +1 -0
- package/dist/infrastructure/walrus/WalrusStorageService.d.ts +177 -0
- package/dist/infrastructure/walrus/WalrusStorageService.d.ts.map +1 -0
- package/dist/infrastructure/walrus/WalrusStorageService.js +403 -0
- package/dist/infrastructure/walrus/WalrusStorageService.js.map +1 -0
- package/dist/infrastructure/walrus/index.d.ts +8 -0
- package/dist/infrastructure/walrus/index.d.ts.map +1 -0
- package/dist/infrastructure/walrus/index.js +8 -0
- package/dist/infrastructure/walrus/index.js.map +1 -0
- package/dist/langchain/PDWEmbeddings.d.ts +77 -0
- package/dist/langchain/PDWEmbeddings.d.ts.map +1 -0
- package/dist/langchain/PDWEmbeddings.js +96 -0
- package/dist/langchain/PDWEmbeddings.js.map +1 -0
- package/dist/langchain/PDWVectorStore.d.ts +173 -0
- package/dist/langchain/PDWVectorStore.d.ts.map +1 -0
- package/dist/langchain/PDWVectorStore.js +304 -0
- package/dist/langchain/PDWVectorStore.js.map +1 -0
- package/dist/langchain/createPDWRAG.d.ts +115 -0
- package/dist/langchain/createPDWRAG.d.ts.map +1 -0
- package/dist/langchain/createPDWRAG.js +181 -0
- package/dist/langchain/createPDWRAG.js.map +1 -0
- package/dist/langchain/index.d.ts +35 -0
- package/dist/langchain/index.d.ts.map +1 -0
- package/dist/langchain/index.js +35 -0
- package/dist/langchain/index.js.map +1 -0
- package/dist/memory/index.d.ts +13 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +14 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/permissions/ConsentRepository.d.ts +71 -0
- package/dist/permissions/ConsentRepository.d.ts.map +1 -0
- package/dist/permissions/ConsentRepository.js +297 -0
- package/dist/permissions/ConsentRepository.js.map +1 -0
- package/dist/permissions/index.d.ts +9 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +8 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/pipeline/MemoryPipeline.d.ts +191 -0
- package/dist/pipeline/MemoryPipeline.d.ts.map +1 -0
- package/dist/pipeline/MemoryPipeline.js +588 -0
- package/dist/pipeline/MemoryPipeline.js.map +1 -0
- package/dist/pipeline/PipelineManager.d.ts +178 -0
- package/dist/pipeline/PipelineManager.d.ts.map +1 -0
- package/dist/pipeline/PipelineManager.js +485 -0
- package/dist/pipeline/PipelineManager.js.map +1 -0
- package/dist/pipeline/index.d.ts +13 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +11 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/retrieval/AdvancedSearchService.d.ts +231 -0
- package/dist/retrieval/AdvancedSearchService.d.ts.map +1 -0
- package/dist/retrieval/AdvancedSearchService.js +384 -0
- package/dist/retrieval/AdvancedSearchService.js.map +1 -0
- package/dist/retrieval/MemoryAnalyticsService.d.ts +227 -0
- package/dist/retrieval/MemoryAnalyticsService.d.ts.map +1 -0
- package/dist/retrieval/MemoryAnalyticsService.js +417 -0
- package/dist/retrieval/MemoryAnalyticsService.js.map +1 -0
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts +191 -0
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -0
- package/dist/retrieval/MemoryDecryptionPipeline.js +623 -0
- package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts +248 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -0
- package/dist/retrieval/MemoryRetrievalService.js +519 -0
- package/dist/retrieval/MemoryRetrievalService.js.map +1 -0
- package/dist/retrieval/index.d.ts +14 -0
- package/dist/retrieval/index.d.ts.map +1 -0
- package/dist/retrieval/index.js +10 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/services/BatchService.d.ts +109 -0
- package/dist/services/BatchService.d.ts.map +1 -0
- package/dist/services/BatchService.js +259 -0
- package/dist/services/BatchService.js.map +1 -0
- package/dist/services/CapabilityService.d.ts +141 -0
- package/dist/services/CapabilityService.d.ts.map +1 -0
- package/dist/services/CapabilityService.js +361 -0
- package/dist/services/CapabilityService.js.map +1 -0
- package/dist/services/ChatService.d.ts +89 -0
- package/dist/services/ChatService.d.ts.map +1 -0
- package/dist/services/ChatService.js +319 -0
- package/dist/services/ChatService.js.map +1 -0
- package/dist/services/ClassifierService.d.ts +104 -0
- package/dist/services/ClassifierService.d.ts.map +1 -0
- package/dist/services/ClassifierService.js +374 -0
- package/dist/services/ClassifierService.js.map +1 -0
- package/dist/services/CrossContextPermissionService.d.ts +149 -0
- package/dist/services/CrossContextPermissionService.d.ts.map +1 -0
- package/dist/services/CrossContextPermissionService.js +337 -0
- package/dist/services/CrossContextPermissionService.js.map +1 -0
- package/dist/services/EmbeddingService.d.ts +206 -0
- package/dist/services/EmbeddingService.d.ts.map +1 -0
- package/dist/services/EmbeddingService.js +504 -0
- package/dist/services/EmbeddingService.js.map +1 -0
- package/dist/services/EncryptionService.d.ts +201 -0
- package/dist/services/EncryptionService.d.ts.map +1 -0
- package/dist/services/EncryptionService.js +558 -0
- package/dist/services/EncryptionService.js.map +1 -0
- package/dist/services/GeminiAIService.d.ts +112 -0
- package/dist/services/GeminiAIService.d.ts.map +1 -0
- package/dist/services/GeminiAIService.js +389 -0
- package/dist/services/GeminiAIService.js.map +1 -0
- package/dist/services/IndexManager.d.ts +238 -0
- package/dist/services/IndexManager.d.ts.map +1 -0
- package/dist/services/IndexManager.js +691 -0
- package/dist/services/IndexManager.js.map +1 -0
- package/dist/services/MemoryIndexService.d.ts +222 -0
- package/dist/services/MemoryIndexService.d.ts.map +1 -0
- package/dist/services/MemoryIndexService.js +695 -0
- package/dist/services/MemoryIndexService.js.map +1 -0
- package/dist/services/MemoryService.d.ts +156 -0
- package/dist/services/MemoryService.d.ts.map +1 -0
- package/dist/services/MemoryService.js +273 -0
- package/dist/services/MemoryService.js.map +1 -0
- package/dist/services/QueryService.d.ts +182 -0
- package/dist/services/QueryService.d.ts.map +1 -0
- package/dist/services/QueryService.js +631 -0
- package/dist/services/QueryService.js.map +1 -0
- package/dist/services/StorageService.d.ts +523 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/StorageService.js +627 -0
- package/dist/services/StorageService.js.map +1 -0
- package/dist/services/TransactionService.d.ts +179 -0
- package/dist/services/TransactionService.d.ts.map +1 -0
- package/dist/services/TransactionService.js +639 -0
- package/dist/services/TransactionService.js.map +1 -0
- package/dist/services/VectorService.d.ts +122 -0
- package/dist/services/VectorService.d.ts.map +1 -0
- package/dist/services/VectorService.js +371 -0
- package/dist/services/VectorService.js.map +1 -0
- package/dist/services/ViewService.d.ts +126 -0
- package/dist/services/ViewService.d.ts.map +1 -0
- package/dist/services/ViewService.js +356 -0
- package/dist/services/ViewService.js.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +11 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/storage/BlobAttributesManager.d.ts +60 -0
- package/dist/services/storage/BlobAttributesManager.d.ts.map +1 -0
- package/dist/services/storage/BlobAttributesManager.js +265 -0
- package/dist/services/storage/BlobAttributesManager.js.map +1 -0
- package/dist/services/storage/KnowledgeGraphManager.d.ts +162 -0
- package/dist/services/storage/KnowledgeGraphManager.d.ts.map +1 -0
- package/dist/services/storage/KnowledgeGraphManager.js +303 -0
- package/dist/services/storage/KnowledgeGraphManager.js.map +1 -0
- package/dist/services/storage/MemorySearchManager.d.ts +154 -0
- package/dist/services/storage/MemorySearchManager.d.ts.map +1 -0
- package/dist/services/storage/MemorySearchManager.js +260 -0
- package/dist/services/storage/MemorySearchManager.js.map +1 -0
- package/dist/services/storage/QuiltBatchManager.d.ts +185 -0
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -0
- package/dist/services/storage/QuiltBatchManager.js +385 -0
- package/dist/services/storage/QuiltBatchManager.js.map +1 -0
- package/dist/services/storage/WalrusMetadataManager.d.ts +89 -0
- package/dist/services/storage/WalrusMetadataManager.d.ts.map +1 -0
- package/dist/services/storage/WalrusMetadataManager.js +177 -0
- package/dist/services/storage/WalrusMetadataManager.js.map +1 -0
- package/dist/services/storage/WalrusStorageManager.d.ts +113 -0
- package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -0
- package/dist/services/storage/WalrusStorageManager.js +211 -0
- package/dist/services/storage/WalrusStorageManager.js.map +1 -0
- package/dist/services/storage/index.d.ts +24 -0
- package/dist/services/storage/index.d.ts.map +1 -0
- package/dist/services/storage/index.js +18 -0
- package/dist/services/storage/index.js.map +1 -0
- package/dist/transactions/index.d.ts +13 -0
- package/dist/transactions/index.d.ts.map +1 -0
- package/dist/transactions/index.js +14 -0
- package/dist/transactions/index.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/wallet.d.ts +12 -0
- package/dist/types/wallet.d.ts.map +1 -0
- package/dist/types/wallet.js +13 -0
- package/dist/types/wallet.js.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +30 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/rebuildIndex.d.ts +79 -0
- package/dist/utils/rebuildIndex.d.ts.map +1 -0
- package/dist/utils/rebuildIndex.js +211 -0
- package/dist/utils/rebuildIndex.js.map +1 -0
- package/dist/utils/rebuildIndexNode.d.ts +70 -0
- package/dist/utils/rebuildIndexNode.d.ts.map +1 -0
- package/dist/utils/rebuildIndexNode.js +236 -0
- package/dist/utils/rebuildIndexNode.js.map +1 -0
- package/dist/vector/BrowserHnswIndexService.d.ts +93 -0
- package/dist/vector/BrowserHnswIndexService.d.ts.map +1 -0
- package/dist/vector/BrowserHnswIndexService.js +581 -0
- package/dist/vector/BrowserHnswIndexService.js.map +1 -0
- package/dist/vector/HnswWasmService.d.ts +97 -0
- package/dist/vector/HnswWasmService.d.ts.map +1 -0
- package/dist/vector/HnswWasmService.js +518 -0
- package/dist/vector/HnswWasmService.js.map +1 -0
- package/dist/vector/IHnswService.d.ts +179 -0
- package/dist/vector/IHnswService.d.ts.map +1 -0
- package/dist/vector/IHnswService.js +25 -0
- package/dist/vector/IHnswService.js.map +1 -0
- package/dist/vector/NodeHnswService.d.ts +80 -0
- package/dist/vector/NodeHnswService.d.ts.map +1 -0
- package/dist/vector/NodeHnswService.js +589 -0
- package/dist/vector/NodeHnswService.js.map +1 -0
- package/dist/vector/VectorManager.d.ts +142 -0
- package/dist/vector/VectorManager.d.ts.map +1 -0
- package/dist/vector/VectorManager.js +339 -0
- package/dist/vector/VectorManager.js.map +1 -0
- package/dist/vector/createHnswService.d.ts +51 -0
- package/dist/vector/createHnswService.d.ts.map +1 -0
- package/dist/vector/createHnswService.js +120 -0
- package/dist/vector/createHnswService.js.map +1 -0
- package/dist/vector/index.d.ts +24 -0
- package/dist/vector/index.d.ts.map +1 -0
- package/dist/vector/index.js +24 -0
- package/dist/vector/index.js.map +1 -0
- package/dist/view/ViewService.d.ts +136 -0
- package/dist/view/ViewService.d.ts.map +1 -0
- package/dist/view/ViewService.js +325 -0
- package/dist/view/ViewService.js.map +1 -0
- package/dist/view/index.d.ts +7 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +7 -0
- package/dist/view/index.js.map +1 -0
- package/dist/wallet/ContextWalletService.d.ts +172 -0
- package/dist/wallet/ContextWalletService.d.ts.map +1 -0
- package/dist/wallet/ContextWalletService.js +510 -0
- package/dist/wallet/ContextWalletService.js.map +1 -0
- package/dist/wallet/MainWalletService.d.ts +114 -0
- package/dist/wallet/MainWalletService.d.ts.map +1 -0
- package/dist/wallet/MainWalletService.js +259 -0
- package/dist/wallet/MainWalletService.js.map +1 -0
- package/dist/wallet/index.d.ts +16 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +14 -0
- package/dist/wallet/index.js.map +1 -0
- package/package.json +150 -0
- package/src/access/PermissionService.ts +636 -0
- package/src/access/index.ts +8 -0
- package/src/aggregation/AggregationService.ts +390 -0
- package/src/aggregation/index.ts +8 -0
- package/src/ai-sdk/PDWVectorStore.ts +712 -0
- package/src/ai-sdk/index.ts +65 -0
- package/src/ai-sdk/tools.ts +460 -0
- package/src/ai-sdk/types.ts +404 -0
- package/src/batch/BatchManager.ts +598 -0
- package/src/batch/BatchingService.ts +430 -0
- package/src/batch/MemoryProcessingCache.ts +493 -0
- package/src/batch/index.ts +31 -0
- package/src/browser.ts +196 -0
- package/src/client/ClientMemoryManager.ts +982 -0
- package/src/client/PersonalDataWallet.ts +346 -0
- package/src/client/SimplePDWClient.ts +1180 -0
- package/src/client/factory.ts +155 -0
- package/src/client/namespaces/AnalyticsNamespace.ts +377 -0
- package/src/client/namespaces/BatchNamespace.ts +356 -0
- package/src/client/namespaces/CacheNamespace.ts +123 -0
- package/src/client/namespaces/CapabilityNamespace.ts +217 -0
- package/src/client/namespaces/ClassifyNamespace.ts +169 -0
- package/src/client/namespaces/ContextNamespace.ts +297 -0
- package/src/client/namespaces/EmbeddingsNamespace.ts +99 -0
- package/src/client/namespaces/EncryptionNamespace.ts +221 -0
- package/src/client/namespaces/GraphNamespace.ts +468 -0
- package/src/client/namespaces/IndexNamespace.ts +283 -0
- package/src/client/namespaces/MemoryNamespace.ts +1135 -0
- package/src/client/namespaces/PermissionsNamespace.ts +254 -0
- package/src/client/namespaces/PipelineNamespace.ts +220 -0
- package/src/client/namespaces/SearchNamespace.ts +1036 -0
- package/src/client/namespaces/StorageNamespace.ts +458 -0
- package/src/client/namespaces/TxNamespace.ts +260 -0
- package/src/client/namespaces/WalletNamespace.ts +243 -0
- package/src/client/namespaces/consolidated/AINamespace.ts +449 -0
- package/src/client/namespaces/consolidated/BlockchainNamespace.ts +492 -0
- package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -0
- package/src/client/namespaces/consolidated/StorageNamespace.ts +440 -0
- package/src/client/namespaces/consolidated/index.ts +39 -0
- package/src/client/signers/KeypairSigner.ts +101 -0
- package/src/client/signers/UnifiedSigner.ts +99 -0
- package/src/client/signers/WalletAdapterSigner.ts +149 -0
- package/src/client/signers/index.ts +19 -0
- package/src/config/ConfigurationHelper.ts +413 -0
- package/src/config/defaults.ts +52 -0
- package/src/config/index.ts +9 -0
- package/src/config/validation.ts +71 -0
- package/src/core/index.ts +14 -0
- package/src/core/interfaces/IService.ts +307 -0
- package/src/core/interfaces/index.ts +8 -0
- package/src/core/types/capability.ts +297 -0
- package/src/core/types/index.ts +871 -0
- package/src/core/types/wallet.ts +271 -0
- package/src/core/types.ts +9 -0
- package/src/core/wallet.ts +223 -0
- package/src/embedding/index.ts +20 -0
- package/src/embedding/types.ts +358 -0
- package/src/errors/index.ts +603 -0
- package/src/errors/recovery.ts +462 -0
- package/src/errors/validation.ts +568 -0
- package/src/generated/pdw/capability.ts +319 -0
- package/src/generated/pdw/deps/sui/object.ts +13 -0
- package/src/generated/pdw/deps/sui/vec_map.ts +33 -0
- package/src/generated/pdw/memory.ts +1088 -0
- package/src/generated/pdw/wallet.ts +124 -0
- package/src/generated/utils/index.ts +159 -0
- package/src/graph/GraphService.ts +888 -0
- package/src/graph/KnowledgeGraphManager.ts +729 -0
- package/src/graph/index.ts +26 -0
- package/src/index.ts +458 -0
- package/src/infrastructure/index.ts +22 -0
- package/src/infrastructure/seal/EncryptionService.ts +604 -0
- package/src/infrastructure/seal/SealService.ts +616 -0
- package/src/infrastructure/seal/index.ts +9 -0
- package/src/infrastructure/sui/BlockchainManager.ts +628 -0
- package/src/infrastructure/sui/SuiService.ts +888 -0
- package/src/infrastructure/sui/index.ts +9 -0
- package/src/infrastructure/walrus/StorageManager.ts +605 -0
- package/src/infrastructure/walrus/WalrusStorageService.ts +613 -0
- package/src/infrastructure/walrus/index.ts +9 -0
- package/src/langchain/PDWEmbeddings.ts +145 -0
- package/src/langchain/PDWVectorStore.ts +456 -0
- package/src/langchain/README.md +116 -0
- package/src/langchain/createPDWRAG.ts +303 -0
- package/src/langchain/index.ts +47 -0
- package/src/permissions/ConsentRepository.ts +364 -0
- package/src/permissions/index.ts +9 -0
- package/src/pipeline/MemoryPipeline.ts +863 -0
- package/src/pipeline/PipelineManager.ts +684 -0
- package/src/pipeline/index.ts +27 -0
- package/src/retrieval/AdvancedSearchService.ts +630 -0
- package/src/retrieval/MemoryAnalyticsService.ts +712 -0
- package/src/retrieval/MemoryDecryptionPipeline.ts +825 -0
- package/src/retrieval/MemoryRetrievalService.ts +831 -0
- package/src/retrieval/index.ts +43 -0
- package/src/services/BatchService.ts +353 -0
- package/src/services/CapabilityService.ts +448 -0
- package/src/services/ClassifierService.ts +466 -0
- package/src/services/CrossContextPermissionService.ts +484 -0
- package/src/services/EmbeddingService.ts +706 -0
- package/src/services/EncryptionService.ts +712 -0
- package/src/services/GeminiAIService.ts +497 -0
- package/src/services/IndexManager.ts +1004 -0
- package/src/services/MemoryIndexService.ts +922 -0
- package/src/services/MemoryService.ts +370 -0
- package/src/services/QueryService.ts +891 -0
- package/src/services/StorageService.ts +1111 -0
- package/src/services/TransactionService.ts +791 -0
- package/src/services/VectorService.ts +462 -0
- package/src/services/ViewService.ts +485 -0
- package/src/services/index.ts +25 -0
- package/src/services/storage/BlobAttributesManager.ts +342 -0
- package/src/services/storage/KnowledgeGraphManager.ts +425 -0
- package/src/services/storage/MemorySearchManager.ts +387 -0
- package/src/services/storage/QuiltBatchManager.ts +532 -0
- package/src/services/storage/WalrusMetadataManager.ts +271 -0
- package/src/services/storage/WalrusStorageManager.ts +290 -0
- package/src/services/storage/index.ts +52 -0
- package/src/types/index.ts +13 -0
- package/src/utils/index.ts +68 -0
- package/src/utils/rebuildIndex.ts +290 -0
- package/src/utils/rebuildIndexNode.ts +341 -0
- package/src/vector/BrowserHnswIndexService.ts +758 -0
- package/src/vector/HnswWasmService.ts +679 -0
- package/src/vector/IHnswService.ts +224 -0
- package/src/vector/NodeHnswService.ts +713 -0
- package/src/vector/VectorManager.ts +479 -0
- package/src/vector/createHnswService.ts +135 -0
- package/src/vector/index.ts +57 -0
- package/src/wallet/ContextWalletService.ts +657 -0
- package/src/wallet/MainWalletService.ts +318 -0
- package/src/wallet/index.ts +17 -0
|
@@ -0,0 +1,1004 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexManager - Hybrid Index Persistence Manager
|
|
3
|
+
*
|
|
4
|
+
* Provides intelligent index management with:
|
|
5
|
+
* - Option 1: Full rebuild from Blockchain + Walrus (fallback)
|
|
6
|
+
* - Option 2: Binary serialization to/from Walrus (fast)
|
|
7
|
+
* - Hybrid: Combines both with incremental sync
|
|
8
|
+
* - On-chain MemoryIndex object for versioned index tracking
|
|
9
|
+
*
|
|
10
|
+
* Flow:
|
|
11
|
+
* 1. Initialize: Check for MemoryIndex on-chain → Load blob from Walrus
|
|
12
|
+
* 2. Save: Upload to Walrus → Create/Update MemoryIndex on-chain
|
|
13
|
+
*
|
|
14
|
+
* @module services/IndexManager
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type { VectorService } from './VectorService';
|
|
18
|
+
import type { StorageService } from './StorageService';
|
|
19
|
+
import type { EmbeddingService } from './EmbeddingService';
|
|
20
|
+
import type { TransactionService } from './TransactionService';
|
|
21
|
+
import type { MemoryIndex } from './ViewService';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Index state stored in localStorage/persistent storage
|
|
25
|
+
*/
|
|
26
|
+
export interface IndexState {
|
|
27
|
+
/** Blob ID of the saved index on Walrus */
|
|
28
|
+
blobId: string;
|
|
29
|
+
/** Graph blob ID on Walrus (for knowledge graph) */
|
|
30
|
+
graphBlobId?: string;
|
|
31
|
+
/** Timestamp when index was last saved */
|
|
32
|
+
lastSyncTimestamp: number;
|
|
33
|
+
/** Number of vectors in the index at save time */
|
|
34
|
+
vectorCount: number;
|
|
35
|
+
/** Index version for optimistic locking (matches on-chain version) */
|
|
36
|
+
version: number;
|
|
37
|
+
/** Dimension of vectors in the index */
|
|
38
|
+
dimension: number;
|
|
39
|
+
/** On-chain MemoryIndex object ID (if created) */
|
|
40
|
+
onChainIndexId?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Serialized index package stored on Walrus
|
|
45
|
+
*/
|
|
46
|
+
export interface SerializedIndexPackage {
|
|
47
|
+
/** Package format version */
|
|
48
|
+
formatVersion: '1.0';
|
|
49
|
+
/** Space ID (user address) */
|
|
50
|
+
spaceId: string;
|
|
51
|
+
/** Index version */
|
|
52
|
+
version: number;
|
|
53
|
+
/** Vector dimension */
|
|
54
|
+
dimension: number;
|
|
55
|
+
/** Timestamp of serialization */
|
|
56
|
+
timestamp: number;
|
|
57
|
+
/** Serialized HNSW index as base64 (if supported) */
|
|
58
|
+
indexBinary?: string;
|
|
59
|
+
/** All vectors with their IDs for reconstruction */
|
|
60
|
+
vectors: Array<{
|
|
61
|
+
vectorId: number;
|
|
62
|
+
vector: number[];
|
|
63
|
+
}>;
|
|
64
|
+
/** Metadata for each vector */
|
|
65
|
+
metadata: Array<[number, any]>;
|
|
66
|
+
/** HNSW config used */
|
|
67
|
+
hnswConfig: {
|
|
68
|
+
maxElements: number;
|
|
69
|
+
m: number;
|
|
70
|
+
efConstruction: number;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Progress callback for long operations
|
|
76
|
+
*/
|
|
77
|
+
export type IndexProgressCallback = (
|
|
78
|
+
stage: 'loading' | 'rebuilding' | 'syncing' | 'saving' | 'complete',
|
|
79
|
+
progress: number,
|
|
80
|
+
message: string
|
|
81
|
+
) => void;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Options for IndexManager initialization
|
|
85
|
+
*/
|
|
86
|
+
export interface IndexManagerOptions {
|
|
87
|
+
/** Auto-save interval in ms (default: 5 minutes) */
|
|
88
|
+
autoSaveInterval?: number;
|
|
89
|
+
/** Enable auto-save (default: true) */
|
|
90
|
+
enableAutoSave?: boolean;
|
|
91
|
+
/** Storage key prefix for localStorage */
|
|
92
|
+
storageKeyPrefix?: string;
|
|
93
|
+
/** Progress callback */
|
|
94
|
+
onProgress?: IndexProgressCallback;
|
|
95
|
+
/** TransactionService for on-chain operations (optional) */
|
|
96
|
+
transactionService?: TransactionService;
|
|
97
|
+
/** Callback to get MemoryIndex from blockchain */
|
|
98
|
+
getMemoryIndexFromChain?: (userAddress: string) => Promise<MemoryIndex | null>;
|
|
99
|
+
/** Callback to execute transaction (for create/update MemoryIndex) */
|
|
100
|
+
executeTransaction?: (tx: any, signer: any) => Promise<{ digest: string; effects?: any; error?: string }>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* IndexManager - Manages HNSW index persistence with hybrid restore strategy
|
|
105
|
+
*
|
|
106
|
+
* Strategy:
|
|
107
|
+
* 1. Try to load from Walrus cache (fast, ~500ms)
|
|
108
|
+
* 2. If failed, rebuild from blockchain + Walrus (slow but complete)
|
|
109
|
+
* 3. Sync any new memories since last save
|
|
110
|
+
* 4. Auto-save periodically
|
|
111
|
+
*/
|
|
112
|
+
export class IndexManager {
|
|
113
|
+
private vectorService: VectorService;
|
|
114
|
+
private storageService: StorageService;
|
|
115
|
+
private embeddingService: EmbeddingService;
|
|
116
|
+
private options: Required<Omit<IndexManagerOptions, 'transactionService' | 'getMemoryIndexFromChain' | 'executeTransaction'>> & {
|
|
117
|
+
transactionService?: TransactionService;
|
|
118
|
+
getMemoryIndexFromChain?: (userAddress: string) => Promise<MemoryIndex | null>;
|
|
119
|
+
executeTransaction?: (tx: any, signer: any) => Promise<{ digest: string; effects?: any; error?: string }>;
|
|
120
|
+
};
|
|
121
|
+
private autoSaveTimer?: ReturnType<typeof setInterval>;
|
|
122
|
+
private indexStates: Map<string, IndexState> = new Map();
|
|
123
|
+
private vectorCache: Map<string, Map<number, number[]>> = new Map();
|
|
124
|
+
|
|
125
|
+
// Storage adapter (can be replaced for non-browser environments)
|
|
126
|
+
private storage: {
|
|
127
|
+
getItem: (key: string) => string | null;
|
|
128
|
+
setItem: (key: string, value: string) => void;
|
|
129
|
+
removeItem: (key: string) => void;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
constructor(
|
|
133
|
+
vectorService: VectorService,
|
|
134
|
+
storageService: StorageService,
|
|
135
|
+
embeddingService: EmbeddingService,
|
|
136
|
+
options: IndexManagerOptions = {}
|
|
137
|
+
) {
|
|
138
|
+
this.vectorService = vectorService;
|
|
139
|
+
this.storageService = storageService;
|
|
140
|
+
this.embeddingService = embeddingService;
|
|
141
|
+
|
|
142
|
+
this.options = {
|
|
143
|
+
autoSaveInterval: options.autoSaveInterval ?? 5 * 60 * 1000, // 5 minutes
|
|
144
|
+
enableAutoSave: options.enableAutoSave ?? true,
|
|
145
|
+
storageKeyPrefix: options.storageKeyPrefix ?? 'pdw_index_',
|
|
146
|
+
onProgress: options.onProgress ?? (() => {}),
|
|
147
|
+
transactionService: options.transactionService,
|
|
148
|
+
getMemoryIndexFromChain: options.getMemoryIndexFromChain,
|
|
149
|
+
executeTransaction: options.executeTransaction,
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// Default to localStorage in browser, no-op in Node
|
|
153
|
+
this.storage = typeof localStorage !== 'undefined'
|
|
154
|
+
? localStorage
|
|
155
|
+
: {
|
|
156
|
+
getItem: () => null,
|
|
157
|
+
setItem: () => {},
|
|
158
|
+
removeItem: () => {},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Set custom storage adapter (for React Native, Node.js, etc.)
|
|
164
|
+
*/
|
|
165
|
+
setStorageAdapter(adapter: {
|
|
166
|
+
getItem: (key: string) => string | null;
|
|
167
|
+
setItem: (key: string, value: string) => void;
|
|
168
|
+
removeItem: (key: string) => void;
|
|
169
|
+
}): void {
|
|
170
|
+
this.storage = adapter;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Initialize index for a user with hybrid restore strategy
|
|
175
|
+
*
|
|
176
|
+
* @param spaceId - User address / space identifier
|
|
177
|
+
* @param getMemoriesFromChain - Function to fetch memories from blockchain
|
|
178
|
+
* @param getMemoryContent - Function to fetch memory content from Walrus
|
|
179
|
+
*/
|
|
180
|
+
async initialize(
|
|
181
|
+
spaceId: string,
|
|
182
|
+
getMemoriesFromChain: () => Promise<Array<{
|
|
183
|
+
id: string;
|
|
184
|
+
blobId: string;
|
|
185
|
+
vectorId?: number;
|
|
186
|
+
category?: string;
|
|
187
|
+
importance?: number;
|
|
188
|
+
topic?: string;
|
|
189
|
+
createdAt?: number;
|
|
190
|
+
}>>,
|
|
191
|
+
getMemoryContent: (blobId: string) => Promise<{
|
|
192
|
+
content: string;
|
|
193
|
+
embedding?: number[];
|
|
194
|
+
metadata?: any;
|
|
195
|
+
}>
|
|
196
|
+
): Promise<{
|
|
197
|
+
restored: boolean;
|
|
198
|
+
method: 'cache' | 'rebuild' | 'empty';
|
|
199
|
+
vectorCount: number;
|
|
200
|
+
syncedCount: number;
|
|
201
|
+
timeMs: number;
|
|
202
|
+
}> {
|
|
203
|
+
const startTime = Date.now();
|
|
204
|
+
let method: 'cache' | 'rebuild' | 'empty' = 'empty';
|
|
205
|
+
let vectorCount = 0;
|
|
206
|
+
let syncedCount = 0;
|
|
207
|
+
|
|
208
|
+
this.options.onProgress('loading', 0, 'Starting index initialization...');
|
|
209
|
+
|
|
210
|
+
// Step 0: Check for on-chain MemoryIndex first (source of truth)
|
|
211
|
+
let onChainIndex: MemoryIndex | null = null;
|
|
212
|
+
if (this.options.getMemoryIndexFromChain) {
|
|
213
|
+
try {
|
|
214
|
+
this.options.onProgress('loading', 5, 'Checking on-chain MemoryIndex...');
|
|
215
|
+
onChainIndex = await this.options.getMemoryIndexFromChain(spaceId);
|
|
216
|
+
|
|
217
|
+
if (onChainIndex) {
|
|
218
|
+
console.log(`📍 Found on-chain MemoryIndex: ${onChainIndex.id} (v${onChainIndex.version})`);
|
|
219
|
+
console.log(` Index blob: ${onChainIndex.indexBlobId}`);
|
|
220
|
+
console.log(` Graph blob: ${onChainIndex.graphBlobId}`);
|
|
221
|
+
}
|
|
222
|
+
} catch (error) {
|
|
223
|
+
console.warn('⚠️ Failed to fetch on-chain MemoryIndex:', error);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Step 1: Try to load from on-chain index or localStorage cache
|
|
228
|
+
// Priority: on-chain index > localStorage cache
|
|
229
|
+
let cachedState = this.loadIndexState(spaceId);
|
|
230
|
+
|
|
231
|
+
// If on-chain index is newer, use it instead of localStorage
|
|
232
|
+
if (onChainIndex && onChainIndex.indexBlobId) {
|
|
233
|
+
const onChainVersion = onChainIndex.version;
|
|
234
|
+
const localVersion = cachedState?.version || 0;
|
|
235
|
+
|
|
236
|
+
if (onChainVersion > localVersion || !cachedState) {
|
|
237
|
+
console.log(`🔄 On-chain index (v${onChainVersion}) is newer than local (v${localVersion}), using on-chain`);
|
|
238
|
+
cachedState = {
|
|
239
|
+
blobId: onChainIndex.indexBlobId,
|
|
240
|
+
graphBlobId: onChainIndex.graphBlobId,
|
|
241
|
+
lastSyncTimestamp: 0, // Will sync all memories
|
|
242
|
+
vectorCount: 0,
|
|
243
|
+
version: onChainVersion,
|
|
244
|
+
dimension: 3072,
|
|
245
|
+
onChainIndexId: onChainIndex.id,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
if (cachedState) {
|
|
251
|
+
try {
|
|
252
|
+
this.options.onProgress('loading', 10, 'Found cached index, loading from Walrus...');
|
|
253
|
+
await this.loadFromWalrus(spaceId, cachedState.blobId);
|
|
254
|
+
|
|
255
|
+
// Restore on-chain index ID if available
|
|
256
|
+
if (onChainIndex) {
|
|
257
|
+
const state = this.indexStates.get(spaceId);
|
|
258
|
+
if (state) {
|
|
259
|
+
state.onChainIndexId = onChainIndex.id;
|
|
260
|
+
this.indexStates.set(spaceId, state);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
method = 'cache';
|
|
265
|
+
vectorCount = this.vectorService.getIndexStats(spaceId)?.currentElements || 0;
|
|
266
|
+
|
|
267
|
+
this.options.onProgress('loading', 50, `Loaded ${vectorCount} vectors from cache`);
|
|
268
|
+
|
|
269
|
+
// Step 2: Sync new memories since last save (with timeout)
|
|
270
|
+
this.options.onProgress('syncing', 60, 'Checking for new memories...');
|
|
271
|
+
try {
|
|
272
|
+
// Add 30 second timeout for sync operation
|
|
273
|
+
const syncPromise = this.syncNewMemories(
|
|
274
|
+
spaceId,
|
|
275
|
+
cachedState.lastSyncTimestamp,
|
|
276
|
+
getMemoriesFromChain,
|
|
277
|
+
getMemoryContent
|
|
278
|
+
);
|
|
279
|
+
const timeoutPromise = new Promise<number>((_, reject) =>
|
|
280
|
+
setTimeout(() => reject(new Error('Sync timeout after 30s')), 30000)
|
|
281
|
+
);
|
|
282
|
+
syncedCount = await Promise.race([syncPromise, timeoutPromise]);
|
|
283
|
+
|
|
284
|
+
if (syncedCount > 0) {
|
|
285
|
+
vectorCount += syncedCount;
|
|
286
|
+
this.options.onProgress('syncing', 90, `Synced ${syncedCount} new memories`);
|
|
287
|
+
}
|
|
288
|
+
} catch (syncError: any) {
|
|
289
|
+
console.warn('⚠️ Sync skipped:', syncError.message);
|
|
290
|
+
// Continue without sync - index is still usable from cache
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
this.options.onProgress('complete', 100, 'Index ready');
|
|
294
|
+
} catch (error) {
|
|
295
|
+
console.warn('⚠️ Failed to load cached index, falling back to rebuild:', error);
|
|
296
|
+
// Fall through to rebuild
|
|
297
|
+
method = 'rebuild';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Step 3: Full rebuild if no cache or cache failed (Option 1 - slow but complete)
|
|
302
|
+
if (method !== 'cache') {
|
|
303
|
+
this.options.onProgress('rebuilding', 10, 'No cache found, rebuilding from blockchain...');
|
|
304
|
+
|
|
305
|
+
try {
|
|
306
|
+
// Add 60 second timeout for full rebuild
|
|
307
|
+
const rebuildPromise = this.fullRebuild(
|
|
308
|
+
spaceId,
|
|
309
|
+
getMemoriesFromChain,
|
|
310
|
+
getMemoryContent
|
|
311
|
+
);
|
|
312
|
+
const timeoutPromise = new Promise<{ memoriesCount: number }>((_, reject) =>
|
|
313
|
+
setTimeout(() => reject(new Error('Rebuild timeout after 60s')), 60000)
|
|
314
|
+
);
|
|
315
|
+
const result = await Promise.race([rebuildPromise, timeoutPromise]);
|
|
316
|
+
|
|
317
|
+
method = result.memoriesCount > 0 ? 'rebuild' : 'empty';
|
|
318
|
+
vectorCount = result.memoriesCount;
|
|
319
|
+
} catch (rebuildError: any) {
|
|
320
|
+
console.warn('⚠️ Rebuild failed or timed out:', rebuildError.message);
|
|
321
|
+
method = 'empty';
|
|
322
|
+
vectorCount = 0;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Step 4: Mark as dirty if vectors were synced or rebuilt (save will happen when saveIndex is called)
|
|
327
|
+
// Note: We don't auto-save here because we don't have a signer
|
|
328
|
+
// The caller should call saveIndexWithSigner() when ready to persist
|
|
329
|
+
|
|
330
|
+
// Step 5: Start auto-save if enabled
|
|
331
|
+
if (this.options.enableAutoSave) {
|
|
332
|
+
this.startAutoSave(spaceId);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
this.options.onProgress('complete', 100, 'Index initialization complete');
|
|
336
|
+
|
|
337
|
+
return {
|
|
338
|
+
restored: method === 'cache',
|
|
339
|
+
method,
|
|
340
|
+
vectorCount,
|
|
341
|
+
syncedCount,
|
|
342
|
+
timeMs: Date.now() - startTime,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Load index from Walrus (Option 2)
|
|
348
|
+
*/
|
|
349
|
+
private async loadFromWalrus(spaceId: string, blobId: string): Promise<void> {
|
|
350
|
+
// Download serialized index from Walrus
|
|
351
|
+
const result = await this.storageService.retrieveMemoryPackage(blobId);
|
|
352
|
+
|
|
353
|
+
// Parse the index package - it may be in memoryPackage or need to be extracted from content
|
|
354
|
+
let pkg: SerializedIndexPackage;
|
|
355
|
+
|
|
356
|
+
console.log('📥 Loading index from Walrus, parsing format...');
|
|
357
|
+
console.log(' memoryPackage keys:', result.memoryPackage ? Object.keys(result.memoryPackage) : 'null');
|
|
358
|
+
|
|
359
|
+
if (result.memoryPackage?.formatVersion === '1.0') {
|
|
360
|
+
// Direct format match - SerializedIndexPackage at top level
|
|
361
|
+
console.log(' Format: Direct SerializedIndexPackage');
|
|
362
|
+
pkg = result.memoryPackage;
|
|
363
|
+
} else if (result.memoryPackage?.content) {
|
|
364
|
+
// Index was wrapped in memory package format
|
|
365
|
+
// content could be a string (JSON) or already parsed object
|
|
366
|
+
const content = result.memoryPackage.content;
|
|
367
|
+
console.log(' Content type:', typeof content);
|
|
368
|
+
|
|
369
|
+
if (typeof content === 'string') {
|
|
370
|
+
// Parse JSON string
|
|
371
|
+
try {
|
|
372
|
+
pkg = JSON.parse(content);
|
|
373
|
+
console.log(' Parsed content from JSON string');
|
|
374
|
+
} catch (parseErr) {
|
|
375
|
+
console.error(' Failed to parse content string:', parseErr);
|
|
376
|
+
throw new Error('Failed to parse index package from memory package content');
|
|
377
|
+
}
|
|
378
|
+
} else if (typeof content === 'object' && content !== null) {
|
|
379
|
+
// Already parsed object
|
|
380
|
+
pkg = content as SerializedIndexPackage;
|
|
381
|
+
console.log(' Content is already an object');
|
|
382
|
+
} else {
|
|
383
|
+
throw new Error('Invalid content type in memory package');
|
|
384
|
+
}
|
|
385
|
+
} else {
|
|
386
|
+
// Try to parse raw content
|
|
387
|
+
console.log(' Trying raw content parse...');
|
|
388
|
+
try {
|
|
389
|
+
const contentString = new TextDecoder().decode(result.content);
|
|
390
|
+
const parsed = JSON.parse(contentString);
|
|
391
|
+
|
|
392
|
+
// Check if it's wrapped in memory package format
|
|
393
|
+
if (parsed.content && typeof parsed.content === 'string') {
|
|
394
|
+
pkg = JSON.parse(parsed.content);
|
|
395
|
+
} else if (parsed.formatVersion === '1.0') {
|
|
396
|
+
pkg = parsed;
|
|
397
|
+
} else {
|
|
398
|
+
throw new Error('Unknown format');
|
|
399
|
+
}
|
|
400
|
+
} catch (err) {
|
|
401
|
+
console.error(' Raw parse failed:', err);
|
|
402
|
+
throw new Error('Invalid index package format - could not parse content');
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Validate format version
|
|
407
|
+
if (pkg.formatVersion !== '1.0') {
|
|
408
|
+
throw new Error(`Unsupported index format version: ${pkg.formatVersion}`);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
console.log(`✅ Parsed index package: ${pkg.vectors?.length || 0} vectors, version ${pkg.version}`);
|
|
412
|
+
|
|
413
|
+
// Create new index with same config
|
|
414
|
+
await this.vectorService.createIndex(spaceId, pkg.dimension, {
|
|
415
|
+
maxElements: pkg.hnswConfig.maxElements,
|
|
416
|
+
m: pkg.hnswConfig.m,
|
|
417
|
+
efConstruction: pkg.hnswConfig.efConstruction,
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
// Initialize vector cache for this space
|
|
421
|
+
const vectorMap = new Map<number, number[]>();
|
|
422
|
+
this.vectorCache.set(spaceId, vectorMap);
|
|
423
|
+
|
|
424
|
+
// Restore vectors and metadata
|
|
425
|
+
const metadataMap = new Map<number, any>(pkg.metadata);
|
|
426
|
+
|
|
427
|
+
for (const { vectorId, vector } of pkg.vectors) {
|
|
428
|
+
await this.vectorService.addVector(spaceId, vectorId, vector, metadataMap.get(vectorId));
|
|
429
|
+
vectorMap.set(vectorId, vector);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// Update index state
|
|
433
|
+
this.indexStates.set(spaceId, {
|
|
434
|
+
blobId,
|
|
435
|
+
lastSyncTimestamp: pkg.timestamp,
|
|
436
|
+
vectorCount: pkg.vectors.length,
|
|
437
|
+
version: pkg.version,
|
|
438
|
+
dimension: pkg.dimension,
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
console.log(`✅ Loaded index from Walrus: ${pkg.vectors.length} vectors`);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Full rebuild from blockchain + Walrus (Option 1)
|
|
446
|
+
*/
|
|
447
|
+
private async fullRebuild(
|
|
448
|
+
spaceId: string,
|
|
449
|
+
getMemoriesFromChain: () => Promise<Array<{
|
|
450
|
+
id: string;
|
|
451
|
+
blobId: string;
|
|
452
|
+
vectorId?: number;
|
|
453
|
+
category?: string;
|
|
454
|
+
importance?: number;
|
|
455
|
+
topic?: string;
|
|
456
|
+
createdAt?: number;
|
|
457
|
+
}>>,
|
|
458
|
+
getMemoryContent: (blobId: string) => Promise<{
|
|
459
|
+
content: string;
|
|
460
|
+
embedding?: number[];
|
|
461
|
+
metadata?: any;
|
|
462
|
+
}>
|
|
463
|
+
): Promise<{ memoriesCount: number }> {
|
|
464
|
+
// Get all memories from blockchain
|
|
465
|
+
this.options.onProgress('rebuilding', 15, 'Fetching memories from blockchain...');
|
|
466
|
+
const memories = await getMemoriesFromChain();
|
|
467
|
+
|
|
468
|
+
if (memories.length === 0) {
|
|
469
|
+
console.log('No memories found on blockchain');
|
|
470
|
+
return { memoriesCount: 0 };
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
this.options.onProgress('rebuilding', 20, `Found ${memories.length} memories, rebuilding index...`);
|
|
474
|
+
|
|
475
|
+
// Determine dimension from first memory with embedding
|
|
476
|
+
let dimension = 3072; // Default
|
|
477
|
+
|
|
478
|
+
// Create index
|
|
479
|
+
await this.vectorService.createIndex(spaceId, dimension, {
|
|
480
|
+
maxElements: Math.max(10000, memories.length * 2),
|
|
481
|
+
m: 16,
|
|
482
|
+
efConstruction: 200,
|
|
483
|
+
});
|
|
484
|
+
|
|
485
|
+
// Initialize vector cache
|
|
486
|
+
const vectorMap = new Map<number, number[]>();
|
|
487
|
+
this.vectorCache.set(spaceId, vectorMap);
|
|
488
|
+
|
|
489
|
+
// Process each memory
|
|
490
|
+
let processed = 0;
|
|
491
|
+
const batchSize = 10;
|
|
492
|
+
|
|
493
|
+
for (let i = 0; i < memories.length; i += batchSize) {
|
|
494
|
+
const batch = memories.slice(i, i + batchSize);
|
|
495
|
+
|
|
496
|
+
await Promise.all(
|
|
497
|
+
batch.map(async (memory) => {
|
|
498
|
+
try {
|
|
499
|
+
// Fetch content from Walrus
|
|
500
|
+
const content = await getMemoryContent(memory.blobId);
|
|
501
|
+
|
|
502
|
+
let embedding = content.embedding;
|
|
503
|
+
|
|
504
|
+
// Generate embedding if not stored
|
|
505
|
+
if (!embedding || embedding.length === 0) {
|
|
506
|
+
const result = await this.embeddingService.embedText({ text: content.content });
|
|
507
|
+
embedding = result.vector;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
// Update dimension if needed
|
|
511
|
+
if (processed === 0 && embedding.length !== dimension) {
|
|
512
|
+
dimension = embedding.length;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
const vectorId = memory.vectorId ?? Date.now() % 4294967295;
|
|
516
|
+
|
|
517
|
+
// Add to index
|
|
518
|
+
await this.vectorService.addVector(spaceId, vectorId, embedding, {
|
|
519
|
+
blobId: memory.blobId,
|
|
520
|
+
memoryId: memory.id,
|
|
521
|
+
category: memory.category,
|
|
522
|
+
importance: memory.importance,
|
|
523
|
+
topic: memory.topic,
|
|
524
|
+
timestamp: memory.createdAt || Date.now(),
|
|
525
|
+
});
|
|
526
|
+
|
|
527
|
+
// Cache vector for serialization
|
|
528
|
+
vectorMap.set(vectorId, embedding);
|
|
529
|
+
|
|
530
|
+
processed++;
|
|
531
|
+
} catch (error) {
|
|
532
|
+
console.warn(`Failed to rebuild memory ${memory.id}:`, error);
|
|
533
|
+
}
|
|
534
|
+
})
|
|
535
|
+
);
|
|
536
|
+
|
|
537
|
+
const progress = 20 + Math.floor((processed / memories.length) * 70);
|
|
538
|
+
this.options.onProgress('rebuilding', progress, `Processed ${processed}/${memories.length} memories`);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
console.log(`✅ Rebuilt index: ${processed} vectors`);
|
|
542
|
+
|
|
543
|
+
return { memoriesCount: processed };
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Sync new memories since last save (incremental update)
|
|
548
|
+
*/
|
|
549
|
+
private async syncNewMemories(
|
|
550
|
+
spaceId: string,
|
|
551
|
+
lastSyncTimestamp: number,
|
|
552
|
+
getMemoriesFromChain: () => Promise<Array<{
|
|
553
|
+
id: string;
|
|
554
|
+
blobId: string;
|
|
555
|
+
vectorId?: number;
|
|
556
|
+
category?: string;
|
|
557
|
+
importance?: number;
|
|
558
|
+
topic?: string;
|
|
559
|
+
createdAt?: number;
|
|
560
|
+
}>>,
|
|
561
|
+
getMemoryContent: (blobId: string) => Promise<{
|
|
562
|
+
content: string;
|
|
563
|
+
embedding?: number[];
|
|
564
|
+
metadata?: any;
|
|
565
|
+
}>
|
|
566
|
+
): Promise<number> {
|
|
567
|
+
// Get all memories
|
|
568
|
+
const allMemories = await getMemoriesFromChain();
|
|
569
|
+
|
|
570
|
+
// Filter to only new memories
|
|
571
|
+
const newMemories = allMemories.filter(
|
|
572
|
+
(m) => (m.createdAt || 0) > lastSyncTimestamp
|
|
573
|
+
);
|
|
574
|
+
|
|
575
|
+
if (newMemories.length === 0) {
|
|
576
|
+
console.log('✅ Index is up to date');
|
|
577
|
+
return 0;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
console.log(`🔄 Syncing ${newMemories.length} new memories...`);
|
|
581
|
+
|
|
582
|
+
// Get or create vector cache
|
|
583
|
+
let vectorMap = this.vectorCache.get(spaceId);
|
|
584
|
+
if (!vectorMap) {
|
|
585
|
+
vectorMap = new Map();
|
|
586
|
+
this.vectorCache.set(spaceId, vectorMap);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
let synced = 0;
|
|
590
|
+
|
|
591
|
+
for (const memory of newMemories) {
|
|
592
|
+
try {
|
|
593
|
+
const content = await getMemoryContent(memory.blobId);
|
|
594
|
+
|
|
595
|
+
let embedding = content.embedding;
|
|
596
|
+
|
|
597
|
+
if (!embedding || embedding.length === 0) {
|
|
598
|
+
const result = await this.embeddingService.embedText({ text: content.content });
|
|
599
|
+
embedding = result.vector;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
const vectorId = memory.vectorId ?? Date.now() % 4294967295;
|
|
603
|
+
|
|
604
|
+
await this.vectorService.addVector(spaceId, vectorId, embedding, {
|
|
605
|
+
blobId: memory.blobId,
|
|
606
|
+
memoryId: memory.id,
|
|
607
|
+
category: memory.category,
|
|
608
|
+
importance: memory.importance,
|
|
609
|
+
topic: memory.topic,
|
|
610
|
+
timestamp: memory.createdAt || Date.now(),
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
vectorMap.set(vectorId, embedding);
|
|
614
|
+
synced++;
|
|
615
|
+
} catch (error) {
|
|
616
|
+
console.warn(`Failed to sync memory ${memory.id}:`, error);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
return synced;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Save index to Walrus
|
|
625
|
+
*/
|
|
626
|
+
async saveIndex(spaceId: string): Promise<string | null> {
|
|
627
|
+
const stats = this.vectorService.getIndexStats(spaceId);
|
|
628
|
+
if (!stats || stats.currentElements === 0) {
|
|
629
|
+
console.log('No vectors to save');
|
|
630
|
+
return null;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// Get all vectors and metadata
|
|
634
|
+
const allVectors = this.vectorService.getAllVectors(spaceId);
|
|
635
|
+
|
|
636
|
+
// Try to get vectors from VectorService cache first, then fallback to local cache
|
|
637
|
+
let vectorMap = this.vectorService.getAllCachedVectors(spaceId);
|
|
638
|
+
if (vectorMap.size === 0) {
|
|
639
|
+
vectorMap = this.vectorCache.get(spaceId) || new Map();
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
if (vectorMap.size === 0) {
|
|
643
|
+
console.warn('Vector cache is empty, cannot save index');
|
|
644
|
+
return null;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// Build serialized package
|
|
648
|
+
const currentState = this.indexStates.get(spaceId);
|
|
649
|
+
const pkg: SerializedIndexPackage = {
|
|
650
|
+
formatVersion: '1.0',
|
|
651
|
+
spaceId,
|
|
652
|
+
version: (currentState?.version || 0) + 1,
|
|
653
|
+
dimension: currentState?.dimension || 3072,
|
|
654
|
+
timestamp: Date.now(),
|
|
655
|
+
vectors: allVectors
|
|
656
|
+
.filter(({ vectorId }) => vectorMap.has(vectorId))
|
|
657
|
+
.map(({ vectorId }) => ({
|
|
658
|
+
vectorId,
|
|
659
|
+
vector: vectorMap.get(vectorId)!,
|
|
660
|
+
})),
|
|
661
|
+
metadata: allVectors.map(({ vectorId, metadata }) => [vectorId, metadata]),
|
|
662
|
+
hnswConfig: {
|
|
663
|
+
maxElements: stats.maxElements || 10000,
|
|
664
|
+
m: 16,
|
|
665
|
+
efConstruction: 200,
|
|
666
|
+
},
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
// Upload to Walrus as JSON package
|
|
670
|
+
const result = await this.storageService.uploadMemoryPackage(
|
|
671
|
+
{
|
|
672
|
+
content: JSON.stringify(pkg),
|
|
673
|
+
embedding: [],
|
|
674
|
+
metadata: {
|
|
675
|
+
category: 'vector-index',
|
|
676
|
+
type: 'hnsw-index-package',
|
|
677
|
+
spaceId,
|
|
678
|
+
version: pkg.version,
|
|
679
|
+
},
|
|
680
|
+
identity: spaceId,
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
signer: null as any, // Will be provided by caller
|
|
684
|
+
epochs: 5, // Longer retention for index
|
|
685
|
+
deletable: true,
|
|
686
|
+
}
|
|
687
|
+
);
|
|
688
|
+
|
|
689
|
+
// Update state
|
|
690
|
+
const state: IndexState = {
|
|
691
|
+
blobId: result.blobId,
|
|
692
|
+
lastSyncTimestamp: pkg.timestamp,
|
|
693
|
+
vectorCount: pkg.vectors.length,
|
|
694
|
+
version: pkg.version,
|
|
695
|
+
dimension: pkg.dimension,
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
this.indexStates.set(spaceId, state);
|
|
699
|
+
this.saveIndexState(spaceId, state);
|
|
700
|
+
|
|
701
|
+
console.log(`💾 Index saved to Walrus: ${result.blobId} (${pkg.vectors.length} vectors)`);
|
|
702
|
+
|
|
703
|
+
return result.blobId;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/**
|
|
707
|
+
* Save index with signer (public API)
|
|
708
|
+
*
|
|
709
|
+
* This method:
|
|
710
|
+
* 1. Uploads index to Walrus
|
|
711
|
+
* 2. Creates or updates MemoryIndex on-chain (if transactionService is available)
|
|
712
|
+
* 3. Updates local state
|
|
713
|
+
*
|
|
714
|
+
* @param spaceId - User address
|
|
715
|
+
* @param signer - Wallet signer for transactions
|
|
716
|
+
* @returns Blob ID of saved index
|
|
717
|
+
*/
|
|
718
|
+
async saveIndexWithSigner(
|
|
719
|
+
spaceId: string,
|
|
720
|
+
signer: any
|
|
721
|
+
): Promise<string | null> {
|
|
722
|
+
const stats = this.vectorService.getIndexStats(spaceId);
|
|
723
|
+
if (!stats || stats.currentElements === 0) {
|
|
724
|
+
console.log('No vectors to save');
|
|
725
|
+
return null;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
const allVectors = this.vectorService.getAllVectors(spaceId);
|
|
729
|
+
|
|
730
|
+
// Try to get vectors from VectorService cache first, then fallback to local cache
|
|
731
|
+
let vectorMap = this.vectorService.getAllCachedVectors(spaceId);
|
|
732
|
+
if (vectorMap.size === 0) {
|
|
733
|
+
vectorMap = this.vectorCache.get(spaceId) || new Map();
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
if (vectorMap.size === 0) {
|
|
737
|
+
console.warn('Vector cache is empty, cannot save index');
|
|
738
|
+
return null;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
const currentState = this.indexStates.get(spaceId);
|
|
742
|
+
const newVersion = (currentState?.version || 0) + 1;
|
|
743
|
+
|
|
744
|
+
const pkg: SerializedIndexPackage = {
|
|
745
|
+
formatVersion: '1.0',
|
|
746
|
+
spaceId,
|
|
747
|
+
version: newVersion,
|
|
748
|
+
dimension: currentState?.dimension || 3072,
|
|
749
|
+
timestamp: Date.now(),
|
|
750
|
+
vectors: allVectors
|
|
751
|
+
.filter(({ vectorId }) => vectorMap.has(vectorId))
|
|
752
|
+
.map(({ vectorId }) => ({
|
|
753
|
+
vectorId,
|
|
754
|
+
vector: vectorMap.get(vectorId)!,
|
|
755
|
+
})),
|
|
756
|
+
metadata: allVectors.map(({ vectorId, metadata }) => [vectorId, metadata]),
|
|
757
|
+
hnswConfig: {
|
|
758
|
+
maxElements: stats.maxElements || 10000,
|
|
759
|
+
m: 16,
|
|
760
|
+
efConstruction: 200,
|
|
761
|
+
},
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
// Step 1: Upload index to Walrus
|
|
765
|
+
const result = await this.storageService.uploadMemoryPackage(
|
|
766
|
+
{
|
|
767
|
+
content: JSON.stringify(pkg),
|
|
768
|
+
embedding: [],
|
|
769
|
+
metadata: {
|
|
770
|
+
category: 'vector-index',
|
|
771
|
+
type: 'hnsw-index-package',
|
|
772
|
+
spaceId,
|
|
773
|
+
version: pkg.version,
|
|
774
|
+
},
|
|
775
|
+
identity: spaceId,
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
signer,
|
|
779
|
+
epochs: 5,
|
|
780
|
+
deletable: true,
|
|
781
|
+
}
|
|
782
|
+
);
|
|
783
|
+
|
|
784
|
+
console.log(`💾 Index uploaded to Walrus: ${result.blobId} (${pkg.vectors.length} vectors)`);
|
|
785
|
+
|
|
786
|
+
// Step 2: Create or update MemoryIndex on-chain
|
|
787
|
+
// SerialTransactionExecutor handles gas coin management and prevents equivocation
|
|
788
|
+
let onChainIndexId = currentState?.onChainIndexId;
|
|
789
|
+
const graphBlobId = currentState?.graphBlobId || ''; // Empty for now, could be knowledge graph
|
|
790
|
+
|
|
791
|
+
if (this.options.transactionService && this.options.executeTransaction) {
|
|
792
|
+
try {
|
|
793
|
+
if (!onChainIndexId) {
|
|
794
|
+
// Create new MemoryIndex on-chain
|
|
795
|
+
console.log('📝 Creating new MemoryIndex on-chain...');
|
|
796
|
+
const tx = this.options.transactionService.buildCreateMemoryIndex({
|
|
797
|
+
indexBlobId: result.blobId,
|
|
798
|
+
graphBlobId: graphBlobId,
|
|
799
|
+
});
|
|
800
|
+
|
|
801
|
+
const txResult = await this.options.executeTransaction(tx, signer);
|
|
802
|
+
|
|
803
|
+
if (txResult.digest && !txResult.error) {
|
|
804
|
+
console.log(`✅ MemoryIndex created on-chain: ${txResult.digest}`);
|
|
805
|
+
|
|
806
|
+
// Extract created object ID from transaction effects
|
|
807
|
+
if (txResult.effects?.created?.[0]?.reference?.objectId) {
|
|
808
|
+
onChainIndexId = txResult.effects.created[0].reference.objectId;
|
|
809
|
+
console.log(` Object ID: ${onChainIndexId}`);
|
|
810
|
+
}
|
|
811
|
+
} else {
|
|
812
|
+
console.warn('⚠️ Failed to create on-chain MemoryIndex:', txResult.error);
|
|
813
|
+
}
|
|
814
|
+
} else {
|
|
815
|
+
// Update existing MemoryIndex on-chain
|
|
816
|
+
console.log(`📝 Updating MemoryIndex on-chain (v${currentState?.version} → v${newVersion})...`);
|
|
817
|
+
const tx = this.options.transactionService.buildUpdateMemoryIndex({
|
|
818
|
+
indexId: onChainIndexId,
|
|
819
|
+
expectedVersion: currentState?.version || 1,
|
|
820
|
+
newIndexBlobId: result.blobId,
|
|
821
|
+
newGraphBlobId: graphBlobId,
|
|
822
|
+
});
|
|
823
|
+
|
|
824
|
+
const txResult = await this.options.executeTransaction(tx, signer);
|
|
825
|
+
|
|
826
|
+
if (txResult.digest && !txResult.error) {
|
|
827
|
+
console.log(`✅ MemoryIndex updated on-chain: ${txResult.digest}`);
|
|
828
|
+
} else {
|
|
829
|
+
console.warn('⚠️ Failed to update on-chain MemoryIndex:', txResult.error);
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
} catch (error: any) {
|
|
833
|
+
console.warn('⚠️ Failed to sync MemoryIndex on-chain:', error.message);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
// Step 3: Update local state
|
|
838
|
+
const state: IndexState = {
|
|
839
|
+
blobId: result.blobId,
|
|
840
|
+
graphBlobId: graphBlobId,
|
|
841
|
+
lastSyncTimestamp: pkg.timestamp,
|
|
842
|
+
vectorCount: pkg.vectors.length,
|
|
843
|
+
version: newVersion,
|
|
844
|
+
dimension: pkg.dimension,
|
|
845
|
+
onChainIndexId: onChainIndexId,
|
|
846
|
+
};
|
|
847
|
+
|
|
848
|
+
this.indexStates.set(spaceId, state);
|
|
849
|
+
this.saveIndexState(spaceId, state);
|
|
850
|
+
|
|
851
|
+
console.log(`💾 Index saved: ${result.blobId} (${pkg.vectors.length} vectors, v${newVersion})`);
|
|
852
|
+
|
|
853
|
+
return result.blobId;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Add vector and cache it for serialization
|
|
858
|
+
*/
|
|
859
|
+
async addVectorWithCache(
|
|
860
|
+
spaceId: string,
|
|
861
|
+
vectorId: number,
|
|
862
|
+
vector: number[],
|
|
863
|
+
metadata?: any
|
|
864
|
+
): Promise<void> {
|
|
865
|
+
await this.vectorService.addVector(spaceId, vectorId, vector, metadata);
|
|
866
|
+
|
|
867
|
+
// Cache vector for later serialization
|
|
868
|
+
let vectorMap = this.vectorCache.get(spaceId);
|
|
869
|
+
if (!vectorMap) {
|
|
870
|
+
vectorMap = new Map();
|
|
871
|
+
this.vectorCache.set(spaceId, vectorMap);
|
|
872
|
+
}
|
|
873
|
+
vectorMap.set(vectorId, vector);
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
/**
|
|
877
|
+
* Start auto-save interval
|
|
878
|
+
*/
|
|
879
|
+
private startAutoSave(spaceId: string): void {
|
|
880
|
+
if (this.autoSaveTimer) {
|
|
881
|
+
clearInterval(this.autoSaveTimer);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
this.autoSaveTimer = setInterval(async () => {
|
|
885
|
+
const stats = this.vectorService.getIndexStats(spaceId);
|
|
886
|
+
if (stats?.isDirty) {
|
|
887
|
+
try {
|
|
888
|
+
console.log('🔄 Auto-saving index...');
|
|
889
|
+
await this.saveIndex(spaceId);
|
|
890
|
+
} catch (error) {
|
|
891
|
+
console.error('Auto-save failed:', error);
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
}, this.options.autoSaveInterval);
|
|
895
|
+
|
|
896
|
+
console.log(`🔄 Auto-save enabled (every ${this.options.autoSaveInterval / 1000}s)`);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
/**
|
|
900
|
+
* Stop auto-save
|
|
901
|
+
*/
|
|
902
|
+
stopAutoSave(): void {
|
|
903
|
+
if (this.autoSaveTimer) {
|
|
904
|
+
clearInterval(this.autoSaveTimer);
|
|
905
|
+
this.autoSaveTimer = undefined;
|
|
906
|
+
console.log('Auto-save disabled');
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Load index state from localStorage
|
|
912
|
+
*/
|
|
913
|
+
private loadIndexState(spaceId: string): IndexState | null {
|
|
914
|
+
const key = `${this.options.storageKeyPrefix}${spaceId}`;
|
|
915
|
+
const data = this.storage.getItem(key);
|
|
916
|
+
|
|
917
|
+
if (!data) {
|
|
918
|
+
return null;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
try {
|
|
922
|
+
return JSON.parse(data) as IndexState;
|
|
923
|
+
} catch {
|
|
924
|
+
return null;
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
/**
|
|
929
|
+
* Save index state to localStorage
|
|
930
|
+
*/
|
|
931
|
+
private saveIndexState(spaceId: string, state: IndexState): void {
|
|
932
|
+
const key = `${this.options.storageKeyPrefix}${spaceId}`;
|
|
933
|
+
this.storage.setItem(key, JSON.stringify(state));
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* Clear cached index state
|
|
938
|
+
*/
|
|
939
|
+
clearIndexState(spaceId: string): void {
|
|
940
|
+
const key = `${this.options.storageKeyPrefix}${spaceId}`;
|
|
941
|
+
this.storage.removeItem(key);
|
|
942
|
+
this.indexStates.delete(spaceId);
|
|
943
|
+
this.vectorCache.delete(spaceId);
|
|
944
|
+
console.log(`Cleared index state for ${spaceId}`);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/**
|
|
948
|
+
* Get current index state
|
|
949
|
+
*/
|
|
950
|
+
getIndexState(spaceId: string): IndexState | null {
|
|
951
|
+
return this.indexStates.get(spaceId) || this.loadIndexState(spaceId);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
/**
|
|
955
|
+
* Force a full rebuild (useful for troubleshooting)
|
|
956
|
+
*/
|
|
957
|
+
async forceRebuild(
|
|
958
|
+
spaceId: string,
|
|
959
|
+
getMemoriesFromChain: () => Promise<Array<{
|
|
960
|
+
id: string;
|
|
961
|
+
blobId: string;
|
|
962
|
+
vectorId?: number;
|
|
963
|
+
category?: string;
|
|
964
|
+
importance?: number;
|
|
965
|
+
topic?: string;
|
|
966
|
+
createdAt?: number;
|
|
967
|
+
}>>,
|
|
968
|
+
getMemoryContent: (blobId: string) => Promise<{
|
|
969
|
+
content: string;
|
|
970
|
+
embedding?: number[];
|
|
971
|
+
metadata?: any;
|
|
972
|
+
}>
|
|
973
|
+
): Promise<{ memoriesCount: number }> {
|
|
974
|
+
// Clear existing state
|
|
975
|
+
this.clearIndexState(spaceId);
|
|
976
|
+
|
|
977
|
+
// Full rebuild
|
|
978
|
+
return this.fullRebuild(spaceId, getMemoriesFromChain, getMemoryContent);
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
/**
|
|
982
|
+
* Get statistics
|
|
983
|
+
*/
|
|
984
|
+
getStats(spaceId: string): {
|
|
985
|
+
indexState: IndexState | null;
|
|
986
|
+
vectorCacheSize: number;
|
|
987
|
+
isAutoSaveEnabled: boolean;
|
|
988
|
+
} {
|
|
989
|
+
return {
|
|
990
|
+
indexState: this.getIndexState(spaceId),
|
|
991
|
+
vectorCacheSize: this.vectorCache.get(spaceId)?.size || 0,
|
|
992
|
+
isAutoSaveEnabled: !!this.autoSaveTimer,
|
|
993
|
+
};
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
/**
|
|
997
|
+
* Cleanup resources
|
|
998
|
+
*/
|
|
999
|
+
async cleanup(): Promise<void> {
|
|
1000
|
+
this.stopAutoSave();
|
|
1001
|
+
this.indexStates.clear();
|
|
1002
|
+
this.vectorCache.clear();
|
|
1003
|
+
}
|
|
1004
|
+
}
|