@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,758 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrowserHnswIndexService - Client-Side HNSW Vector Indexing
|
|
3
|
+
*
|
|
4
|
+
* Browser-compatible HNSW vector indexing with IndexedDB persistence.
|
|
5
|
+
* Uses hnswlib-wasm for WASM-based vector search (10-50x faster than pure JS).
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - WASM-powered HNSW algorithm for fast vector search
|
|
9
|
+
* - IndexedDB persistence (survives page refresh)
|
|
10
|
+
* - Intelligent batching and caching
|
|
11
|
+
* - Metadata filtering support
|
|
12
|
+
* - Zero backend dependencies
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type {
|
|
16
|
+
HNSWIndexConfig,
|
|
17
|
+
HNSWSearchResult,
|
|
18
|
+
HNSWSearchOptions,
|
|
19
|
+
BatchConfig,
|
|
20
|
+
BatchStats,
|
|
21
|
+
VectorError
|
|
22
|
+
} from '../embedding/types';
|
|
23
|
+
|
|
24
|
+
interface IndexCacheEntry {
|
|
25
|
+
index: any; // hnswlib-wasm HierarchicalNSW instance
|
|
26
|
+
lastModified: Date;
|
|
27
|
+
pendingVectors: Map<number, number[]>;
|
|
28
|
+
isDirty: boolean;
|
|
29
|
+
version: number;
|
|
30
|
+
metadata: Map<number, any>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface IndexedDBSchema {
|
|
34
|
+
indices: {
|
|
35
|
+
key: string; // userAddress
|
|
36
|
+
value: {
|
|
37
|
+
userAddress: string;
|
|
38
|
+
indexData: ArrayBuffer; // Serialized HNSW index
|
|
39
|
+
metadata: Record<string, any>;
|
|
40
|
+
version: number;
|
|
41
|
+
lastUpdated: number;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
vectors: {
|
|
45
|
+
key: [string, number]; // [userAddress, vectorId]
|
|
46
|
+
value: {
|
|
47
|
+
userAddress: string;
|
|
48
|
+
vectorId: number;
|
|
49
|
+
vector: number[];
|
|
50
|
+
metadata: any;
|
|
51
|
+
timestamp: number;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Browser-compatible HNSW vector indexing service with IndexedDB persistence
|
|
58
|
+
*/
|
|
59
|
+
export class BrowserHnswIndexService {
|
|
60
|
+
private readonly indexCache = new Map<string, IndexCacheEntry>();
|
|
61
|
+
private readonly batchJobs = new Map<string, any>();
|
|
62
|
+
private readonly config: Required<BatchConfig>;
|
|
63
|
+
private readonly indexConfig: Required<HNSWIndexConfig>;
|
|
64
|
+
private batchProcessor?: number;
|
|
65
|
+
private cacheCleanup?: number;
|
|
66
|
+
private db?: IDBDatabase;
|
|
67
|
+
private hnswLib?: any; // Will be loaded dynamically
|
|
68
|
+
|
|
69
|
+
// Debug mode - enable with DEBUG_HNSW=true in environment
|
|
70
|
+
private readonly debug = typeof process !== 'undefined' && process.env?.DEBUG_HNSW === 'true';
|
|
71
|
+
|
|
72
|
+
constructor(
|
|
73
|
+
indexConfig: Partial<HNSWIndexConfig> = {},
|
|
74
|
+
batchConfig: Partial<BatchConfig> = {}
|
|
75
|
+
) {
|
|
76
|
+
// Default HNSW configuration
|
|
77
|
+
this.indexConfig = {
|
|
78
|
+
dimension: indexConfig.dimension || 3072,
|
|
79
|
+
maxElements: indexConfig.maxElements || 10000,
|
|
80
|
+
efConstruction: indexConfig.efConstruction || 200,
|
|
81
|
+
m: indexConfig.m || 16,
|
|
82
|
+
randomSeed: indexConfig.randomSeed || 42,
|
|
83
|
+
spaceType: indexConfig.spaceType || 'cosine'
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Default batch configuration
|
|
87
|
+
this.config = {
|
|
88
|
+
maxBatchSize: batchConfig.maxBatchSize || 50,
|
|
89
|
+
batchDelayMs: batchConfig.batchDelayMs || 5000,
|
|
90
|
+
maxCacheSize: batchConfig.maxCacheSize || 100,
|
|
91
|
+
cacheTtlMs: batchConfig.cacheTtlMs || 30 * 60 * 1000 // 30 minutes
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
this.initializeIndexedDB();
|
|
95
|
+
this.startBatchProcessor();
|
|
96
|
+
this.startCacheCleanup();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Debug logging helper
|
|
101
|
+
*/
|
|
102
|
+
private debugLog(message: string, ...args: any[]): void {
|
|
103
|
+
if (this.debug) {
|
|
104
|
+
console.log(`[HNSW DEBUG] ${message}`, ...args);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Initialize IndexedDB for persistence
|
|
110
|
+
*/
|
|
111
|
+
private async initializeIndexedDB(): Promise<void> {
|
|
112
|
+
this.debugLog('Initializing IndexedDB...');
|
|
113
|
+
return new Promise((resolve, reject) => {
|
|
114
|
+
const request = indexedDB.open('HnswIndexDB', 1);
|
|
115
|
+
|
|
116
|
+
request.onerror = () => {
|
|
117
|
+
console.error('❌ Failed to open IndexedDB');
|
|
118
|
+
reject(new Error('Failed to open IndexedDB'));
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
request.onsuccess = () => {
|
|
122
|
+
this.db = request.result;
|
|
123
|
+
console.log('✅ IndexedDB initialized for HNSW indices');
|
|
124
|
+
this.debugLog('IndexedDB instance:', this.db);
|
|
125
|
+
resolve();
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
request.onupgradeneeded = (event) => {
|
|
129
|
+
const db = (event.target as IDBOpenDBRequest).result;
|
|
130
|
+
this.debugLog('IndexedDB upgrade needed, creating object stores');
|
|
131
|
+
|
|
132
|
+
// Indices store
|
|
133
|
+
if (!db.objectStoreNames.contains('indices')) {
|
|
134
|
+
const indicesStore = db.createObjectStore('indices', { keyPath: 'userAddress' });
|
|
135
|
+
indicesStore.createIndex('lastUpdated', 'lastUpdated', { unique: false });
|
|
136
|
+
this.debugLog('Created "indices" object store');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Vectors store
|
|
140
|
+
if (!db.objectStoreNames.contains('vectors')) {
|
|
141
|
+
const vectorsStore = db.createObjectStore('vectors', { keyPath: ['userAddress', 'vectorId'] });
|
|
142
|
+
vectorsStore.createIndex('userAddress', 'userAddress', { unique: false });
|
|
143
|
+
vectorsStore.createIndex('timestamp', 'timestamp', { unique: false });
|
|
144
|
+
this.debugLog('Created "vectors" object store');
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Load hnswlib-wasm dynamically (only when needed)
|
|
152
|
+
* CRITICAL: Must await WASM initialization before using HierarchicalNSW constructor
|
|
153
|
+
*/
|
|
154
|
+
private async loadHnswLib(): Promise<any> {
|
|
155
|
+
if (this.hnswLib) {
|
|
156
|
+
this.debugLog('hnswlib-wasm already loaded, returning cached instance');
|
|
157
|
+
return this.hnswLib;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
this.debugLog('Loading hnswlib-wasm...');
|
|
162
|
+
// Dynamic import for hnswlib-wasm
|
|
163
|
+
const { loadHnswlib } = await import('hnswlib-wasm');
|
|
164
|
+
this.debugLog('hnswlib-wasm module imported, initializing WASM...');
|
|
165
|
+
|
|
166
|
+
// CRITICAL: Wait for WASM module initialization
|
|
167
|
+
// Without this, HierarchicalNSW constructor will not be available
|
|
168
|
+
this.hnswLib = await loadHnswlib();
|
|
169
|
+
|
|
170
|
+
console.log('✅ hnswlib-wasm loaded and initialized successfully');
|
|
171
|
+
this.debugLog('hnswlib-wasm instance:', this.hnswLib);
|
|
172
|
+
this.debugLog('Available constructors:', Object.keys(this.hnswLib));
|
|
173
|
+
return this.hnswLib;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
console.error('❌ Failed to load hnswlib-wasm:', error);
|
|
176
|
+
throw new Error('hnswlib-wasm is required but not available. Install it with: npm install hnswlib-wasm');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Create a new HNSW index
|
|
182
|
+
*/
|
|
183
|
+
async createIndex(
|
|
184
|
+
userAddress: string,
|
|
185
|
+
options: Partial<HNSWIndexConfig> = {}
|
|
186
|
+
): Promise<{ index: any; serialized: ArrayBuffer }> {
|
|
187
|
+
try {
|
|
188
|
+
this.debugLog(`Creating index for user: ${userAddress}`);
|
|
189
|
+
const hnswLib = await this.loadHnswLib();
|
|
190
|
+
const config = { ...this.indexConfig, ...options };
|
|
191
|
+
|
|
192
|
+
console.log(`Creating new HNSW index for user ${userAddress} with dimensions ${config.dimension}`);
|
|
193
|
+
this.debugLog('Index config:', config);
|
|
194
|
+
|
|
195
|
+
// Create a new index (hnswlib-wasm API)
|
|
196
|
+
// Note: hnswlib-wasm requires 3 parameters: spaceName, numDimensions, autoSaveFilename
|
|
197
|
+
this.debugLog('Calling HierarchicalNSW constructor...');
|
|
198
|
+
const indexFilename = `hnsw_${userAddress.substring(0, 10)}.dat`;
|
|
199
|
+
const index = new hnswLib.HierarchicalNSW(config.spaceType, config.dimension, indexFilename);
|
|
200
|
+
this.debugLog('Index created, calling initIndex...');
|
|
201
|
+
index.initIndex(config.maxElements, config.m, config.efConstruction, config.randomSeed);
|
|
202
|
+
this.debugLog('Index initialized successfully');
|
|
203
|
+
|
|
204
|
+
// Create cache entry
|
|
205
|
+
this.indexCache.set(userAddress, {
|
|
206
|
+
index,
|
|
207
|
+
lastModified: new Date(),
|
|
208
|
+
pendingVectors: new Map(),
|
|
209
|
+
isDirty: false,
|
|
210
|
+
version: 1,
|
|
211
|
+
metadata: new Map()
|
|
212
|
+
});
|
|
213
|
+
this.debugLog(`Index cached for user: ${userAddress}`);
|
|
214
|
+
|
|
215
|
+
// Write index to Emscripten FS (hnswlib-wasm uses writeIndex, not serializeIndex)
|
|
216
|
+
await index.writeIndex(indexFilename);
|
|
217
|
+
this.debugLog(`Index written to Emscripten FS: ${indexFilename}`);
|
|
218
|
+
|
|
219
|
+
// Return empty buffer for compatibility (actual data is in Emscripten FS)
|
|
220
|
+
return { index, serialized: new ArrayBuffer(0) };
|
|
221
|
+
} catch (error) {
|
|
222
|
+
console.error(`❌ Failed to create index for ${userAddress}:`, error);
|
|
223
|
+
throw this.createVectorError('INDEX_ERROR', `Failed to create index: ${error}`, error);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Add vector to index with batching (main entry point)
|
|
229
|
+
*/
|
|
230
|
+
addVectorToIndexBatched(
|
|
231
|
+
userAddress: string,
|
|
232
|
+
vectorId: number,
|
|
233
|
+
vector: number[],
|
|
234
|
+
metadata?: any
|
|
235
|
+
): void {
|
|
236
|
+
try {
|
|
237
|
+
// Validate input
|
|
238
|
+
this.validateVector(vector);
|
|
239
|
+
|
|
240
|
+
// Get or create cache entry
|
|
241
|
+
let cacheEntry = this.indexCache.get(userAddress);
|
|
242
|
+
if (!cacheEntry) {
|
|
243
|
+
console.warn(`No cached index found for user ${userAddress}, will create on flush`);
|
|
244
|
+
// Create empty cache entry
|
|
245
|
+
cacheEntry = {
|
|
246
|
+
index: null,
|
|
247
|
+
lastModified: new Date(),
|
|
248
|
+
pendingVectors: new Map(),
|
|
249
|
+
isDirty: true,
|
|
250
|
+
version: 1,
|
|
251
|
+
metadata: new Map()
|
|
252
|
+
};
|
|
253
|
+
this.indexCache.set(userAddress, cacheEntry);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// Add to pending queue
|
|
257
|
+
cacheEntry.pendingVectors.set(vectorId, vector);
|
|
258
|
+
if (metadata) {
|
|
259
|
+
cacheEntry.metadata.set(vectorId, metadata);
|
|
260
|
+
}
|
|
261
|
+
cacheEntry.isDirty = true;
|
|
262
|
+
cacheEntry.lastModified = new Date();
|
|
263
|
+
|
|
264
|
+
// Schedule batch job
|
|
265
|
+
this.scheduleBatchJob(userAddress, vectorId, vector);
|
|
266
|
+
|
|
267
|
+
console.debug(`Vector ${vectorId} queued for batch processing for user ${userAddress}. Pending: ${cacheEntry.pendingVectors.size}`);
|
|
268
|
+
|
|
269
|
+
// Process immediately if batch size limit reached
|
|
270
|
+
if (cacheEntry.pendingVectors.size >= this.config.maxBatchSize) {
|
|
271
|
+
console.log(`Batch size limit reached for user ${userAddress}, processing immediately`);
|
|
272
|
+
setTimeout(() => this.flushPendingVectors(userAddress), 0);
|
|
273
|
+
}
|
|
274
|
+
} catch (error) {
|
|
275
|
+
throw this.createVectorError('INDEX_ERROR', `Failed to queue vector: ${error}`, error);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Search vectors in the index (including pending vectors)
|
|
281
|
+
*/
|
|
282
|
+
async searchVectors(
|
|
283
|
+
userAddress: string,
|
|
284
|
+
queryVector: number[],
|
|
285
|
+
options: HNSWSearchOptions = {}
|
|
286
|
+
): Promise<HNSWSearchResult> {
|
|
287
|
+
try {
|
|
288
|
+
this.debugLog(`🔍 searchVectors called for user: ${userAddress}`);
|
|
289
|
+
this.debugLog(`Query vector length: ${queryVector.length}, k: ${options.k || 10}`);
|
|
290
|
+
|
|
291
|
+
this.validateVector(queryVector);
|
|
292
|
+
|
|
293
|
+
let cacheEntry = this.indexCache.get(userAddress);
|
|
294
|
+
this.debugLog(`Cache entry exists: ${!!cacheEntry}, has index: ${!!cacheEntry?.index}`);
|
|
295
|
+
this.debugLog(`Pending vectors: ${cacheEntry?.pendingVectors?.size || 0}`);
|
|
296
|
+
|
|
297
|
+
// If no index exists, check if we have pending vectors that need flushing
|
|
298
|
+
if (!cacheEntry?.index && cacheEntry?.pendingVectors && cacheEntry.pendingVectors.size > 0) {
|
|
299
|
+
console.log(`🔍 No index but ${cacheEntry.pendingVectors.size} pending vectors - flushing first...`);
|
|
300
|
+
await this.flushPendingVectors(userAddress);
|
|
301
|
+
cacheEntry = this.indexCache.get(userAddress); // Refresh after flush
|
|
302
|
+
this.debugLog(`After flush - cache entry: ${!!cacheEntry}, has index: ${!!cacheEntry?.index}`);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (!cacheEntry?.index) {
|
|
306
|
+
this.debugLog('No index in cache, attempting to load from IndexedDB...');
|
|
307
|
+
// Try to load from IndexedDB
|
|
308
|
+
const loaded = await this.loadIndexFromDB(userAddress);
|
|
309
|
+
this.debugLog(`loadIndexFromDB result: ${loaded}`);
|
|
310
|
+
|
|
311
|
+
if (!loaded) {
|
|
312
|
+
// Check one more time for pending vectors (edge case)
|
|
313
|
+
const entry = this.indexCache.get(userAddress);
|
|
314
|
+
if (entry?.pendingVectors && entry.pendingVectors.size > 0) {
|
|
315
|
+
console.log(`🔍 Found ${entry.pendingVectors.size} pending vectors - flushing before search...`);
|
|
316
|
+
await this.flushPendingVectors(userAddress);
|
|
317
|
+
// Reload after flush
|
|
318
|
+
cacheEntry = this.indexCache.get(userAddress);
|
|
319
|
+
this.debugLog(`After second flush - has index: ${!!cacheEntry?.index}`);
|
|
320
|
+
} else {
|
|
321
|
+
// No index exists yet - this is normal for new users with no memories
|
|
322
|
+
console.info(`No index found for user ${userAddress} - returning empty results`);
|
|
323
|
+
this.debugLog('Returning empty search results');
|
|
324
|
+
return {
|
|
325
|
+
ids: [],
|
|
326
|
+
distances: [],
|
|
327
|
+
similarities: []
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
} else {
|
|
331
|
+
cacheEntry = this.indexCache.get(userAddress);
|
|
332
|
+
this.debugLog(`Loaded from DB - has index: ${!!cacheEntry?.index}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const { k = 10, efSearch = 50, filter } = options;
|
|
337
|
+
this.debugLog(`Search parameters - k: ${k}, efSearch: ${efSearch}`);
|
|
338
|
+
|
|
339
|
+
const entry = this.indexCache.get(userAddress)!;
|
|
340
|
+
|
|
341
|
+
// Get index stats before search
|
|
342
|
+
if (entry.index && entry.index.getCurrentCount) {
|
|
343
|
+
const count = entry.index.getCurrentCount();
|
|
344
|
+
console.log(`📊 Index stats - Current count: ${count}, Pending: ${entry.pendingVectors.size}`);
|
|
345
|
+
this.debugLog(`Index current count: ${count}`);
|
|
346
|
+
|
|
347
|
+
if (count === 0) {
|
|
348
|
+
console.warn(`⚠️ Index exists but has 0 vectors! This may indicate an indexing problem.`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Set search parameters
|
|
353
|
+
if (entry.index.setEfSearch) {
|
|
354
|
+
entry.index.setEfSearch(efSearch);
|
|
355
|
+
this.debugLog(`Set efSearch to ${efSearch}`);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
let searchIndex = entry.index;
|
|
359
|
+
|
|
360
|
+
// If there are pending vectors, create a temporary index for search
|
|
361
|
+
if (entry.pendingVectors.size > 0) {
|
|
362
|
+
this.debugLog(`Creating temporary index with ${entry.pendingVectors.size} pending vectors`);
|
|
363
|
+
searchIndex = await this.cloneIndexWithPending(entry, queryVector.length);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Perform search
|
|
367
|
+
this.debugLog('Calling searchKnn...');
|
|
368
|
+
const result = searchIndex.searchKnn(queryVector, k, undefined);
|
|
369
|
+
this.debugLog(`searchKnn returned - neighbors: ${result?.neighbors?.length || 0}`);
|
|
370
|
+
|
|
371
|
+
// Apply metadata filter if provided
|
|
372
|
+
let filteredIds = result.neighbors || result.indices || [];
|
|
373
|
+
let filteredDistances = result.distances;
|
|
374
|
+
|
|
375
|
+
if (filter && entry.metadata.size > 0) {
|
|
376
|
+
const filtered = this.applyMetadataFilter(filteredIds, filteredDistances, entry.metadata, filter);
|
|
377
|
+
filteredIds = filtered.ids;
|
|
378
|
+
filteredDistances = filtered.distances;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Convert distances to similarities (for cosine distance)
|
|
382
|
+
const similarities = this.indexConfig.spaceType === 'cosine'
|
|
383
|
+
? filteredDistances.map((dist: number) => 1 - dist)
|
|
384
|
+
: filteredDistances.map((dist: number) => 1 / (1 + dist));
|
|
385
|
+
|
|
386
|
+
return {
|
|
387
|
+
ids: filteredIds,
|
|
388
|
+
distances: filteredDistances,
|
|
389
|
+
similarities
|
|
390
|
+
};
|
|
391
|
+
} catch (error) {
|
|
392
|
+
throw this.createVectorError('SEARCH_ERROR', `Search failed: ${error}`, error);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Load index from IndexedDB via Emscripten FS
|
|
398
|
+
*/
|
|
399
|
+
async loadIndexFromDB(userAddress: string): Promise<boolean> {
|
|
400
|
+
if (!this.db) {
|
|
401
|
+
await this.initializeIndexedDB();
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return new Promise((resolve, reject) => {
|
|
405
|
+
const transaction = this.db!.transaction(['indices'], 'readonly');
|
|
406
|
+
const store = transaction.objectStore('indices');
|
|
407
|
+
const request = store.get(userAddress);
|
|
408
|
+
|
|
409
|
+
request.onsuccess = async () => {
|
|
410
|
+
const result = request.result;
|
|
411
|
+
if (!result) {
|
|
412
|
+
resolve(false);
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
try {
|
|
417
|
+
const hnswLib = await this.loadHnswLib();
|
|
418
|
+
const indexFilename = `hnsw_${userAddress.substring(0, 10)}.dat`;
|
|
419
|
+
|
|
420
|
+
// Sync from IndexedDB to Emscripten FS
|
|
421
|
+
await hnswLib.EmscriptenFileSystemManager.syncFS(true, () => {
|
|
422
|
+
// Callback when sync completes
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
// Check if file exists
|
|
426
|
+
if (!hnswLib.EmscriptenFileSystemManager.checkFileExists(indexFilename)) {
|
|
427
|
+
console.log(`Index file ${indexFilename} not found in Emscripten FS`);
|
|
428
|
+
resolve(false);
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// Create index and load from file
|
|
433
|
+
const index = new hnswLib.HierarchicalNSW(
|
|
434
|
+
this.indexConfig.spaceType,
|
|
435
|
+
this.indexConfig.dimension,
|
|
436
|
+
indexFilename
|
|
437
|
+
);
|
|
438
|
+
|
|
439
|
+
// Read the index from file
|
|
440
|
+
await index.readIndex(indexFilename, this.indexConfig.maxElements);
|
|
441
|
+
|
|
442
|
+
// Convert metadata string keys back to numbers (vectorId)
|
|
443
|
+
const metadataEntries = Object.entries(result.metadata || {})
|
|
444
|
+
.map(([k, v]) => [Number(k), v] as [number, any]);
|
|
445
|
+
|
|
446
|
+
// Cache the loaded index
|
|
447
|
+
this.indexCache.set(userAddress, {
|
|
448
|
+
index,
|
|
449
|
+
lastModified: new Date(result.lastUpdated),
|
|
450
|
+
pendingVectors: new Map(),
|
|
451
|
+
isDirty: false,
|
|
452
|
+
version: result.version,
|
|
453
|
+
metadata: new Map(metadataEntries)
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
console.log(`✅ Successfully loaded index for user ${userAddress} from IndexedDB`);
|
|
457
|
+
resolve(true);
|
|
458
|
+
} catch (error) {
|
|
459
|
+
console.error('Failed to load index:', error);
|
|
460
|
+
reject(error);
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
request.onerror = () => reject(new Error('Failed to load index from IndexedDB'));
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Save index to IndexedDB via Emscripten FS
|
|
470
|
+
*/
|
|
471
|
+
async saveIndexToDB(userAddress: string): Promise<void> {
|
|
472
|
+
const cacheEntry = this.indexCache.get(userAddress);
|
|
473
|
+
if (!cacheEntry?.index) {
|
|
474
|
+
throw new Error(`No index found for user ${userAddress}`);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
if (!this.db) {
|
|
478
|
+
await this.initializeIndexedDB();
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
try {
|
|
482
|
+
const hnswLib = await this.loadHnswLib();
|
|
483
|
+
const indexFilename = `hnsw_${userAddress.substring(0, 10)}.dat`;
|
|
484
|
+
|
|
485
|
+
// Write index to Emscripten FS
|
|
486
|
+
await cacheEntry.index.writeIndex(indexFilename);
|
|
487
|
+
|
|
488
|
+
// Sync from Emscripten FS to IndexedDB
|
|
489
|
+
await hnswLib.EmscriptenFileSystemManager.syncFS(false, () => {
|
|
490
|
+
// Callback when sync completes
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
// Store metadata in our IndexedDB (separate from Emscripten's IDBFS)
|
|
494
|
+
return new Promise((resolve, reject) => {
|
|
495
|
+
const transaction = this.db!.transaction(['indices'], 'readwrite');
|
|
496
|
+
const store = transaction.objectStore('indices');
|
|
497
|
+
|
|
498
|
+
const data = {
|
|
499
|
+
userAddress,
|
|
500
|
+
indexData: new ArrayBuffer(0), // Actual data is in Emscripten FS/IDBFS
|
|
501
|
+
metadata: Object.fromEntries(cacheEntry.metadata),
|
|
502
|
+
version: cacheEntry.version,
|
|
503
|
+
lastUpdated: Date.now()
|
|
504
|
+
};
|
|
505
|
+
|
|
506
|
+
const request = store.put(data);
|
|
507
|
+
|
|
508
|
+
request.onsuccess = () => {
|
|
509
|
+
console.log(`✅ Index saved to IndexedDB for user ${userAddress}`);
|
|
510
|
+
resolve();
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
request.onerror = () => reject(new Error('Failed to save index metadata to IndexedDB'));
|
|
514
|
+
});
|
|
515
|
+
} catch (error) {
|
|
516
|
+
console.error(`Failed to save index for user ${userAddress}:`, error);
|
|
517
|
+
throw error;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Force flush all pending vectors for a user
|
|
523
|
+
*/
|
|
524
|
+
async forceFlush(userAddress: string): Promise<void> {
|
|
525
|
+
await this.flushPendingVectors(userAddress);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Get cache statistics
|
|
530
|
+
*/
|
|
531
|
+
getCacheStats(): BatchStats {
|
|
532
|
+
const cacheEntries: any[] = [];
|
|
533
|
+
let totalPendingVectors = 0;
|
|
534
|
+
|
|
535
|
+
for (const [userAddress, entry] of this.indexCache.entries()) {
|
|
536
|
+
const pendingCount = entry.pendingVectors.size;
|
|
537
|
+
totalPendingVectors += pendingCount;
|
|
538
|
+
|
|
539
|
+
cacheEntries.push({
|
|
540
|
+
userAddress,
|
|
541
|
+
pendingVectors: pendingCount,
|
|
542
|
+
lastModified: entry.lastModified,
|
|
543
|
+
isDirty: entry.isDirty,
|
|
544
|
+
hasIndex: !!entry.index
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
return {
|
|
549
|
+
totalUsers: this.indexCache.size,
|
|
550
|
+
totalPendingVectors,
|
|
551
|
+
activeBatchJobs: this.batchJobs.size,
|
|
552
|
+
cacheHitRate: 0, // TODO: Implement hit rate tracking
|
|
553
|
+
averageBatchSize: totalPendingVectors / Math.max(1, this.indexCache.size),
|
|
554
|
+
averageProcessingTime: 0 // TODO: Implement timing tracking
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Clear user index and cache
|
|
560
|
+
*/
|
|
561
|
+
clearUserIndex(userAddress: string): void {
|
|
562
|
+
this.indexCache.delete(userAddress);
|
|
563
|
+
this.batchJobs.delete(userAddress);
|
|
564
|
+
console.log(`Cleared index cache for user ${userAddress}`);
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Cleanup resources
|
|
569
|
+
*/
|
|
570
|
+
destroy(): void {
|
|
571
|
+
if (this.batchProcessor) {
|
|
572
|
+
clearInterval(this.batchProcessor);
|
|
573
|
+
}
|
|
574
|
+
if (this.cacheCleanup) {
|
|
575
|
+
clearInterval(this.cacheCleanup);
|
|
576
|
+
}
|
|
577
|
+
this.indexCache.clear();
|
|
578
|
+
this.batchJobs.clear();
|
|
579
|
+
|
|
580
|
+
if (this.db) {
|
|
581
|
+
this.db.close();
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// ==================== PRIVATE METHODS ====================
|
|
586
|
+
|
|
587
|
+
private scheduleBatchJob(userAddress: string, vectorId: number, vector: number[]): void {
|
|
588
|
+
let batchJob = this.batchJobs.get(userAddress);
|
|
589
|
+
if (!batchJob) {
|
|
590
|
+
batchJob = {
|
|
591
|
+
userAddress,
|
|
592
|
+
vectors: new Map(),
|
|
593
|
+
scheduledAt: new Date()
|
|
594
|
+
};
|
|
595
|
+
this.batchJobs.set(userAddress, batchJob);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
batchJob.vectors.set(vectorId, vector);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
private startBatchProcessor(): void {
|
|
602
|
+
this.batchProcessor = window.setInterval(async () => {
|
|
603
|
+
await this.processBatchJobs();
|
|
604
|
+
}, this.config.batchDelayMs);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
private startCacheCleanup(): void {
|
|
608
|
+
this.cacheCleanup = window.setInterval(() => {
|
|
609
|
+
this.cleanupCache();
|
|
610
|
+
}, 5 * 60 * 1000); // Every 5 minutes
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
private async processBatchJobs(): Promise<void> {
|
|
614
|
+
const now = Date.now();
|
|
615
|
+
const jobsToProcess: string[] = [];
|
|
616
|
+
|
|
617
|
+
for (const [userAddress, job] of this.batchJobs.entries()) {
|
|
618
|
+
const timeSinceScheduled = now - job.scheduledAt.getTime();
|
|
619
|
+
const cacheEntry = this.indexCache.get(userAddress);
|
|
620
|
+
|
|
621
|
+
if (timeSinceScheduled >= this.config.batchDelayMs ||
|
|
622
|
+
(cacheEntry && cacheEntry.pendingVectors.size >= this.config.maxBatchSize)) {
|
|
623
|
+
jobsToProcess.push(userAddress);
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
for (const userAddress of jobsToProcess) {
|
|
628
|
+
try {
|
|
629
|
+
await this.flushPendingVectors(userAddress);
|
|
630
|
+
} catch (error) {
|
|
631
|
+
console.error(`Error processing batch job for user ${userAddress}:`, error);
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
private async flushPendingVectors(userAddress: string): Promise<void> {
|
|
637
|
+
const cacheEntry = this.indexCache.get(userAddress);
|
|
638
|
+
if (!cacheEntry || cacheEntry.pendingVectors.size === 0) {
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
console.log(`Flushing ${cacheEntry.pendingVectors.size} pending vectors for user ${userAddress}`);
|
|
643
|
+
|
|
644
|
+
try {
|
|
645
|
+
// Create index if it doesn't exist
|
|
646
|
+
if (!cacheEntry.index) {
|
|
647
|
+
const { index } = await this.createIndex(userAddress);
|
|
648
|
+
cacheEntry.index = index;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
// Add all pending vectors to the index
|
|
652
|
+
for (const [vectorId, vector] of cacheEntry.pendingVectors.entries()) {
|
|
653
|
+
cacheEntry.index.addPoint(vector, vectorId, false);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
// Save to IndexedDB
|
|
657
|
+
await this.saveIndexToDB(userAddress);
|
|
658
|
+
|
|
659
|
+
// Clear pending vectors
|
|
660
|
+
cacheEntry.pendingVectors.clear();
|
|
661
|
+
cacheEntry.isDirty = false;
|
|
662
|
+
cacheEntry.lastModified = new Date();
|
|
663
|
+
cacheEntry.version++;
|
|
664
|
+
|
|
665
|
+
// Remove batch job
|
|
666
|
+
this.batchJobs.delete(userAddress);
|
|
667
|
+
|
|
668
|
+
console.log(`Successfully flushed vectors for user ${userAddress}`);
|
|
669
|
+
} catch (error) {
|
|
670
|
+
console.error(`Error flushing vectors for user ${userAddress}:`, error);
|
|
671
|
+
throw error;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
private async cloneIndexWithPending(cacheEntry: IndexCacheEntry, dimensions: number): Promise<any> {
|
|
676
|
+
const hnswLib = await this.loadHnswLib();
|
|
677
|
+
const tempFilename = `temp_clone_${Date.now()}.dat`;
|
|
678
|
+
|
|
679
|
+
// Save original index to temp file
|
|
680
|
+
await cacheEntry.index.writeIndex(tempFilename);
|
|
681
|
+
|
|
682
|
+
// Create clone and load from temp file
|
|
683
|
+
const clonedIndex = new hnswLib.HierarchicalNSW(
|
|
684
|
+
this.indexConfig.spaceType,
|
|
685
|
+
dimensions,
|
|
686
|
+
tempFilename
|
|
687
|
+
);
|
|
688
|
+
clonedIndex.initIndex(
|
|
689
|
+
this.indexConfig.maxElements,
|
|
690
|
+
this.indexConfig.m,
|
|
691
|
+
this.indexConfig.efConstruction,
|
|
692
|
+
this.indexConfig.randomSeed
|
|
693
|
+
);
|
|
694
|
+
await clonedIndex.readIndex(tempFilename, this.indexConfig.maxElements);
|
|
695
|
+
|
|
696
|
+
// Add pending vectors
|
|
697
|
+
for (const [vectorId, vector] of cacheEntry.pendingVectors.entries()) {
|
|
698
|
+
clonedIndex.addPoint(vector, vectorId, false);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
return clonedIndex;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
private applyMetadataFilter(
|
|
705
|
+
ids: number[],
|
|
706
|
+
distances: number[],
|
|
707
|
+
metadata: Map<number, any>,
|
|
708
|
+
filter: (metadata: any) => boolean
|
|
709
|
+
): { ids: number[]; distances: number[] } {
|
|
710
|
+
const filteredIds: number[] = [];
|
|
711
|
+
const filteredDistances: number[] = [];
|
|
712
|
+
|
|
713
|
+
for (let i = 0; i < ids.length; i++) {
|
|
714
|
+
const vectorId = ids[i];
|
|
715
|
+
const vectorMetadata = metadata.get(vectorId);
|
|
716
|
+
|
|
717
|
+
if (!vectorMetadata || filter(vectorMetadata)) {
|
|
718
|
+
filteredIds.push(vectorId);
|
|
719
|
+
filteredDistances.push(distances[i]);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
return { ids: filteredIds, distances: filteredDistances };
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
private cleanupCache(): void {
|
|
727
|
+
const now = Date.now();
|
|
728
|
+
for (const [userAddress, entry] of this.indexCache.entries()) {
|
|
729
|
+
if (now - entry.lastModified.getTime() > this.config.cacheTtlMs) {
|
|
730
|
+
console.debug(`Removing stale cache entry for user ${userAddress}`);
|
|
731
|
+
this.indexCache.delete(userAddress);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
private validateVector(vector: number[]): void {
|
|
737
|
+
if (!Array.isArray(vector) || vector.length === 0) {
|
|
738
|
+
throw new Error('Vector must be a non-empty array');
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
if (vector.some(v => typeof v !== 'number' || !isFinite(v))) {
|
|
742
|
+
throw new Error('Vector must contain only finite numbers');
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
if (vector.length !== this.indexConfig.dimension) {
|
|
746
|
+
throw new Error(`Vector dimension mismatch: expected ${this.indexConfig.dimension}, got ${vector.length}`);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
private createVectorError(code: VectorError['code'], message: string, details?: any): VectorError {
|
|
751
|
+
const error = new Error(message) as VectorError;
|
|
752
|
+
error.code = code;
|
|
753
|
+
error.details = details;
|
|
754
|
+
return error;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
export default BrowserHnswIndexService;
|