@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,982 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClientMemoryManager - Client-side Memory Operations for React dApps
|
|
3
|
+
*
|
|
4
|
+
* Provides a simplified API for creating and retrieving memories in React dApps
|
|
5
|
+
* using @mysten/dapp-kit. Handles the complete flow:
|
|
6
|
+
* - Memory creation: embedding → encryption → Walrus upload → on-chain registration
|
|
7
|
+
* - Memory retrieval: Walrus fetch → SEAL decryption → content extraction
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const manager = new ClientMemoryManager({
|
|
12
|
+
* packageId: '0x...',
|
|
13
|
+
* accessRegistryId: '0x...',
|
|
14
|
+
* walrusAggregator: 'https://...',
|
|
15
|
+
* geminiApiKey: 'your-key'
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Create memory
|
|
19
|
+
* const blobId = await manager.createMemory({
|
|
20
|
+
* content: 'My memory',
|
|
21
|
+
* account,
|
|
22
|
+
* signAndExecute,
|
|
23
|
+
* client,
|
|
24
|
+
* onProgress: (status) => console.log(status)
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Retrieve memory
|
|
28
|
+
* const content = await manager.retrieveMemory({
|
|
29
|
+
* blobId: '...',
|
|
30
|
+
* account,
|
|
31
|
+
* signPersonalMessage,
|
|
32
|
+
* client
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
import { SealClient, SessionKey } from '@mysten/seal';
|
|
38
|
+
import { WalrusClient } from '@mysten/walrus';
|
|
39
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
40
|
+
import { fromHex } from '@mysten/sui/utils';
|
|
41
|
+
import type { SuiClient } from '@mysten/sui/client';
|
|
42
|
+
import { createHnswService, isBrowser, isNode } from '../vector/createHnswService';
|
|
43
|
+
import type { IHnswService } from '../vector/IHnswService';
|
|
44
|
+
import { EmbeddingService } from '../services/EmbeddingService';
|
|
45
|
+
import { GeminiAIService } from '../services/GeminiAIService';
|
|
46
|
+
|
|
47
|
+
export interface ClientMemoryManagerConfig {
|
|
48
|
+
packageId: string;
|
|
49
|
+
accessRegistryId: string;
|
|
50
|
+
walrusAggregator: string;
|
|
51
|
+
geminiApiKey: string;
|
|
52
|
+
sealServerObjectIds?: string[];
|
|
53
|
+
walrusNetwork?: 'testnet' | 'mainnet';
|
|
54
|
+
categories?: string[];
|
|
55
|
+
/** Enable local browser indexing for vector search (default: true) */
|
|
56
|
+
enableLocalIndexing?: boolean;
|
|
57
|
+
/** Pre-initialized HNSW service instance (shared singleton) */
|
|
58
|
+
hnswService?: IHnswService;
|
|
59
|
+
/** Enable SEAL encryption for memory content (default: true) */
|
|
60
|
+
enableEncryption?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface CreateMemoryOptions {
|
|
64
|
+
content: string;
|
|
65
|
+
category?: string;
|
|
66
|
+
account: { address: string };
|
|
67
|
+
signAndExecute: (params: { transaction: Transaction }, callbacks: {
|
|
68
|
+
onSuccess: (result: any) => void;
|
|
69
|
+
onError: (error: Error) => void;
|
|
70
|
+
}) => void;
|
|
71
|
+
client: SuiClient;
|
|
72
|
+
onProgress?: (status: string) => void;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface RetrieveMemoryOptions {
|
|
76
|
+
blobId: string;
|
|
77
|
+
account: { address: string };
|
|
78
|
+
signPersonalMessage: (params: { message: Uint8Array }) => Promise<{ signature: string }>;
|
|
79
|
+
client: SuiClient;
|
|
80
|
+
onProgress?: (status: string) => void;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface BatchRetrieveMemoriesOptions {
|
|
84
|
+
blobIds: string[];
|
|
85
|
+
account: { address: string };
|
|
86
|
+
signPersonalMessage: (params: { message: Uint8Array }) => Promise<{ signature: string }>;
|
|
87
|
+
client: SuiClient;
|
|
88
|
+
onProgress?: (status: string, current: number, total: number) => void;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface BatchRetrieveResult {
|
|
92
|
+
blobId: string;
|
|
93
|
+
content?: string;
|
|
94
|
+
error?: string;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
interface DecryptionSession {
|
|
98
|
+
sealClient: SealClient;
|
|
99
|
+
sessionKey: SessionKey;
|
|
100
|
+
txBytes: Uint8Array;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface ClientMemoryMetadata {
|
|
104
|
+
content: string;
|
|
105
|
+
embedding: number[];
|
|
106
|
+
timestamp: number;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Rich metadata structure aligned with on-chain MemoryMetadata
|
|
111
|
+
* This is extracted during AI analysis and used for:
|
|
112
|
+
* 1. Metadata-based vector embeddings
|
|
113
|
+
* 2. On-chain registration
|
|
114
|
+
* 3. Display in UI
|
|
115
|
+
*/
|
|
116
|
+
export interface RichMetadataAnalysis {
|
|
117
|
+
category: string; // e.g., "work"
|
|
118
|
+
topic: string; // e.g., "Q4 project deadline meeting"
|
|
119
|
+
importance: number; // 1-10 scale
|
|
120
|
+
summary: string; // e.g., "Team discussion about Q4 deadlines..."
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Client-side memory manager for React dApps
|
|
125
|
+
*/
|
|
126
|
+
export class ClientMemoryManager {
|
|
127
|
+
private readonly config: Omit<Required<ClientMemoryManagerConfig>, 'hnswService'> & { enableLocalIndexing: boolean; enableEncryption: boolean; hnswService?: IHnswService };
|
|
128
|
+
private readonly defaultCategories = [
|
|
129
|
+
'personal', 'work', 'education', 'health', 'finance',
|
|
130
|
+
'travel', 'family', 'hobbies', 'goals', 'ideas'
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
// Local indexing services (optional)
|
|
134
|
+
private embeddingService?: EmbeddingService;
|
|
135
|
+
private geminiAIService?: GeminiAIService;
|
|
136
|
+
private hnswService: IHnswService | null = null;
|
|
137
|
+
private hnswServicePromise: Promise<IHnswService> | null = null;
|
|
138
|
+
|
|
139
|
+
constructor(config: ClientMemoryManagerConfig) {
|
|
140
|
+
this.config = {
|
|
141
|
+
...config,
|
|
142
|
+
sealServerObjectIds: config.sealServerObjectIds || [
|
|
143
|
+
'0x73d05d62c18d9374e3ea529e8e0ed6161da1a141a94d3f76ae3fe4e99356db75',
|
|
144
|
+
'0xf5d14a81a982144ae441cd7d64b09027f116a468bd36e7eca494f750591623c8'
|
|
145
|
+
],
|
|
146
|
+
walrusNetwork: config.walrusNetwork || 'testnet',
|
|
147
|
+
categories: config.categories || this.defaultCategories,
|
|
148
|
+
enableLocalIndexing: config.enableLocalIndexing !== false, // Default: true
|
|
149
|
+
enableEncryption: config.enableEncryption !== false // Default: true (SEAL encryption)
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// Initialize AI services if Gemini API key is provided
|
|
153
|
+
if (this.config.geminiApiKey) {
|
|
154
|
+
this.embeddingService = new EmbeddingService({
|
|
155
|
+
apiKey: this.config.geminiApiKey,
|
|
156
|
+
model: 'text-embedding-004',
|
|
157
|
+
dimensions: 3072
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
this.geminiAIService = new GeminiAIService({
|
|
161
|
+
apiKey: this.config.geminiApiKey,
|
|
162
|
+
model: process.env.AI_CHAT_MODEL || 'google/gemini-2.5-flash',
|
|
163
|
+
temperature: 0.1
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
console.log('✅ AI services initialized (Embedding + Metadata Extraction)');
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Initialize local indexing service if enabled
|
|
170
|
+
if (this.config.enableLocalIndexing) {
|
|
171
|
+
// Use pre-initialized HNSW service if provided (shared singleton pattern)
|
|
172
|
+
if (config.hnswService) {
|
|
173
|
+
this.hnswService = config.hnswService;
|
|
174
|
+
console.log('✅ ClientMemoryManager using shared HNSW service instance');
|
|
175
|
+
} else {
|
|
176
|
+
// Create own HNSW service (async via factory)
|
|
177
|
+
const envType = isBrowser() ? 'browser (hnswlib-wasm)' : isNode() ? 'Node.js (hnswlib-node)' : 'unknown';
|
|
178
|
+
console.log(`✅ ClientMemoryManager initializing local indexing (${envType})`);
|
|
179
|
+
this.hnswServicePromise = this.initializeHnswService();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Initialize HNSW service using factory (async)
|
|
186
|
+
*/
|
|
187
|
+
private async initializeHnswService(): Promise<IHnswService> {
|
|
188
|
+
try {
|
|
189
|
+
const service = await createHnswService({
|
|
190
|
+
indexConfig: {
|
|
191
|
+
dimension: 3072,
|
|
192
|
+
maxElements: 10000,
|
|
193
|
+
m: 16,
|
|
194
|
+
efConstruction: 200
|
|
195
|
+
},
|
|
196
|
+
batchConfig: {
|
|
197
|
+
maxBatchSize: 50,
|
|
198
|
+
batchDelayMs: 5000
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
this.hnswService = service;
|
|
203
|
+
console.log('✅ ClientMemoryManager HNSW service initialized');
|
|
204
|
+
return service;
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error('❌ ClientMemoryManager failed to initialize HNSW service:', error);
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Get HNSW service (waits for initialization if needed)
|
|
213
|
+
*/
|
|
214
|
+
private async getHnswService(): Promise<IHnswService | null> {
|
|
215
|
+
if (this.hnswService) {
|
|
216
|
+
return this.hnswService;
|
|
217
|
+
}
|
|
218
|
+
if (this.hnswServicePromise) {
|
|
219
|
+
try {
|
|
220
|
+
return await this.hnswServicePromise;
|
|
221
|
+
} catch (error) {
|
|
222
|
+
console.warn('HNSW service initialization failed:', error);
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// In-memory counter for Node.js environment
|
|
230
|
+
private vectorIdCounters = new Map<string, number>();
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Get next sequential vector ID for a user (fits in 32-bit unsigned int)
|
|
234
|
+
* Uses IndexedDB in browser, in-memory counter in Node.js
|
|
235
|
+
*/
|
|
236
|
+
private async getNextVectorId(userAddress: string): Promise<number> {
|
|
237
|
+
// Check if IndexedDB is available (browser environment)
|
|
238
|
+
if (typeof indexedDB !== 'undefined') {
|
|
239
|
+
try {
|
|
240
|
+
// Use separate database for counters to avoid version conflicts
|
|
241
|
+
const db = await new Promise<IDBDatabase>((resolve, reject) => {
|
|
242
|
+
const request = indexedDB.open('PDW_VectorCounters', 1);
|
|
243
|
+
request.onsuccess = () => resolve(request.result);
|
|
244
|
+
request.onerror = () => reject(request.error);
|
|
245
|
+
request.onupgradeneeded = (event) => {
|
|
246
|
+
const db = (event.target as IDBOpenDBRequest).result;
|
|
247
|
+
if (!db.objectStoreNames.contains('counters')) {
|
|
248
|
+
db.createObjectStore('counters', { keyPath: 'userAddress' });
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
const transaction = db.transaction(['counters'], 'readwrite');
|
|
254
|
+
const store = transaction.objectStore('counters');
|
|
255
|
+
|
|
256
|
+
// Get current counter
|
|
257
|
+
const getRequest = store.get(userAddress);
|
|
258
|
+
const currentData = await new Promise<{ userAddress: string; counter: number } | undefined>((resolve) => {
|
|
259
|
+
getRequest.onsuccess = () => resolve(getRequest.result);
|
|
260
|
+
getRequest.onerror = () => resolve(undefined);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
const nextId = (currentData?.counter || 0) + 1;
|
|
264
|
+
|
|
265
|
+
// Update counter
|
|
266
|
+
store.put({ userAddress, counter: nextId });
|
|
267
|
+
|
|
268
|
+
await new Promise<void>((resolve, reject) => {
|
|
269
|
+
transaction.oncomplete = () => resolve();
|
|
270
|
+
transaction.onerror = () => reject(transaction.error);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
db.close();
|
|
274
|
+
console.log(`✅ Sequential vector ID generated: ${nextId} (from IndexedDB)`);
|
|
275
|
+
return nextId;
|
|
276
|
+
} catch (error) {
|
|
277
|
+
console.warn('⚠️ IndexedDB failed, using in-memory counter:', error);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Node.js or IndexedDB failure: use in-memory counter
|
|
282
|
+
const current = this.vectorIdCounters.get(userAddress) || 0;
|
|
283
|
+
const nextId = current + 1;
|
|
284
|
+
this.vectorIdCounters.set(userAddress, nextId);
|
|
285
|
+
console.log(`✅ Sequential vector ID generated: ${nextId} (in-memory)`);
|
|
286
|
+
return nextId;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Create a new memory (3 signatures: Walrus register, certify, on-chain)
|
|
291
|
+
*/
|
|
292
|
+
async createMemory(options: CreateMemoryOptions): Promise<string> {
|
|
293
|
+
const { content, category, account, signAndExecute, client, onProgress } = options;
|
|
294
|
+
|
|
295
|
+
console.log('🚀 Starting memory creation...');
|
|
296
|
+
onProgress?.('Starting memory creation...');
|
|
297
|
+
|
|
298
|
+
try {
|
|
299
|
+
// Step 1: Analyze content (category + importance)
|
|
300
|
+
console.log('🏷️ Step 1: Analyzing content...');
|
|
301
|
+
onProgress?.('Analyzing content with AI...');
|
|
302
|
+
const analysis = await this.analyzeContent(content, category);
|
|
303
|
+
console.log('✅ Analysis:', analysis);
|
|
304
|
+
|
|
305
|
+
// Step 2: Build metadata text and generate embedding
|
|
306
|
+
console.log('🔮 Step 2: Building metadata and generating embedding...');
|
|
307
|
+
onProgress?.('Generating metadata embedding...');
|
|
308
|
+
|
|
309
|
+
// Build embeddable metadata text
|
|
310
|
+
const metadataText = this.buildMetadataText(analysis);
|
|
311
|
+
console.log('📝 Metadata text for embedding:');
|
|
312
|
+
console.log(metadataText);
|
|
313
|
+
console.log('📊 Metadata fields:', {
|
|
314
|
+
category: analysis.category,
|
|
315
|
+
topic: analysis.topic,
|
|
316
|
+
importance: analysis.importance,
|
|
317
|
+
summaryLength: analysis.summary.length
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// Generate embedding from METADATA (not content)
|
|
321
|
+
const embedding = await this.generateEmbedding(metadataText);
|
|
322
|
+
console.log('✅ Metadata embedding generated:', embedding.length, 'dimensions');
|
|
323
|
+
console.log(' Source: metadata text (not full content)');
|
|
324
|
+
console.log(' Privacy: Only metadata semantics embedded, content stays encrypted');
|
|
325
|
+
|
|
326
|
+
// Step 3: Prepare combined data (content + embedding)
|
|
327
|
+
console.log('📦 Step 3: Preparing data...');
|
|
328
|
+
const memoryData: ClientMemoryMetadata = {
|
|
329
|
+
content,
|
|
330
|
+
embedding,
|
|
331
|
+
timestamp: Date.now(),
|
|
332
|
+
};
|
|
333
|
+
const dataBytes = new TextEncoder().encode(JSON.stringify(memoryData));
|
|
334
|
+
console.log('✅ Data prepared:', dataBytes.length, 'bytes');
|
|
335
|
+
|
|
336
|
+
// Step 4: Conditionally encrypt with SEAL
|
|
337
|
+
let uploadData: Uint8Array;
|
|
338
|
+
const isEncrypted = this.config.enableEncryption;
|
|
339
|
+
|
|
340
|
+
if (isEncrypted) {
|
|
341
|
+
console.log('🔒 Step 4: Encrypting with SEAL...');
|
|
342
|
+
onProgress?.('Encrypting with SEAL...');
|
|
343
|
+
uploadData = await this.encryptWithSEAL(dataBytes, account.address, client);
|
|
344
|
+
console.log('✅ Encrypted:', uploadData.length, 'bytes');
|
|
345
|
+
} else {
|
|
346
|
+
console.log('📝 Step 4: Skipping encryption (enableEncryption=false)');
|
|
347
|
+
onProgress?.('Preparing data (no encryption)...');
|
|
348
|
+
uploadData = dataBytes;
|
|
349
|
+
console.log('✅ Data ready (unencrypted):', uploadData.length, 'bytes');
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Step 5: Upload to Walrus (2 signatures)
|
|
353
|
+
console.log('🐳 Step 5: Uploading to Walrus...');
|
|
354
|
+
onProgress?.('Uploading to Walrus (2 signatures)...');
|
|
355
|
+
const blobId = await this.uploadToWalrus(uploadData, account, signAndExecute, client);
|
|
356
|
+
console.log('✅ Uploaded to Walrus:', blobId);
|
|
357
|
+
|
|
358
|
+
// Generate sequential vector ID (fits in 32-bit for WASM)
|
|
359
|
+
const vectorId = await this.getNextVectorId(account.address);
|
|
360
|
+
console.log('🔢 Generated sequential vector ID:', vectorId);
|
|
361
|
+
|
|
362
|
+
// Step 6: Register on-chain with rich metadata (1 signature)
|
|
363
|
+
console.log('⛓️ Step 6: Registering on-chain with rich metadata...');
|
|
364
|
+
onProgress?.('Registering on-chain (1 signature)...');
|
|
365
|
+
await this.registerOnChain({
|
|
366
|
+
blobId,
|
|
367
|
+
category: analysis.category,
|
|
368
|
+
topic: analysis.topic, // ✅ Pass AI-extracted topic to blockchain
|
|
369
|
+
importance: analysis.importance,
|
|
370
|
+
contentLength: content.length,
|
|
371
|
+
vectorId, // ✅ Use sequential ID
|
|
372
|
+
account,
|
|
373
|
+
signAndExecute,
|
|
374
|
+
client
|
|
375
|
+
});
|
|
376
|
+
console.log('✅ Memory registered on-chain with metadata:', {
|
|
377
|
+
category: analysis.category,
|
|
378
|
+
topic: analysis.topic,
|
|
379
|
+
importance: analysis.importance,
|
|
380
|
+
vectorId
|
|
381
|
+
});
|
|
382
|
+
onProgress?.('Memory created successfully!');
|
|
383
|
+
|
|
384
|
+
// Step 7: Index locally for search (if enabled)
|
|
385
|
+
console.log('\n📊 === Step 7: Local Vector Indexing ===');
|
|
386
|
+
console.log(' enableLocalIndexing:', this.config.enableLocalIndexing);
|
|
387
|
+
console.log(' account address:', account.address);
|
|
388
|
+
console.log(' embedding length:', embedding?.length || 0);
|
|
389
|
+
|
|
390
|
+
if (this.config.enableLocalIndexing && account.address) {
|
|
391
|
+
try {
|
|
392
|
+
// Get HNSW service (wait for async initialization)
|
|
393
|
+
const hnswService = await this.getHnswService();
|
|
394
|
+
console.log(' hnswService available:', !!hnswService);
|
|
395
|
+
|
|
396
|
+
if (hnswService) {
|
|
397
|
+
console.log('✅ Local indexing conditions met - proceeding...');
|
|
398
|
+
onProgress?.('Indexing for local search...');
|
|
399
|
+
console.log(' Using vector ID:', vectorId);
|
|
400
|
+
|
|
401
|
+
// Prepare rich metadata (aligned with on-chain structure)
|
|
402
|
+
// Option A+: Content storage is controlled by isEncrypted flag.
|
|
403
|
+
// When encryption is OFF, content is stored in local index for fast retrieval.
|
|
404
|
+
// When encryption is ON, only metadata is stored (security).
|
|
405
|
+
const metadata = {
|
|
406
|
+
blobId,
|
|
407
|
+
category: analysis.category,
|
|
408
|
+
topic: analysis.topic, // ✅ Rich metadata field
|
|
409
|
+
importance: analysis.importance,
|
|
410
|
+
summary: analysis.summary, // ✅ Rich metadata field
|
|
411
|
+
createdTimestamp: Date.now(),
|
|
412
|
+
contentType: 'text/plain',
|
|
413
|
+
contentSize: content.length,
|
|
414
|
+
source: 'client_memory_manager',
|
|
415
|
+
embeddingType: 'metadata', // ✅ Mark as metadata-based embedding
|
|
416
|
+
isEncrypted, // ✅ Dynamic based on config.enableEncryption
|
|
417
|
+
// Option A+: Store content in index when NOT encrypted (for fast local search)
|
|
418
|
+
...(isEncrypted ? {} : { content })
|
|
419
|
+
};
|
|
420
|
+
console.log(' Rich metadata prepared:', metadata);
|
|
421
|
+
|
|
422
|
+
// Add to local index using IHnswService interface
|
|
423
|
+
console.log('📝 Adding vector to index...');
|
|
424
|
+
await hnswService.addVector(
|
|
425
|
+
account.address,
|
|
426
|
+
vectorId,
|
|
427
|
+
embedding, // ← Metadata embedding from Step 2 (not content embedding!)
|
|
428
|
+
metadata
|
|
429
|
+
);
|
|
430
|
+
console.log('✅ Vector added to index');
|
|
431
|
+
console.log(' Embedding represents: metadata semantics (category, topic, summary)');
|
|
432
|
+
console.log(' NOT content semantics - privacy preserved!');
|
|
433
|
+
|
|
434
|
+
// Flush to make searchable
|
|
435
|
+
console.log('🔄 Flushing index to make memory immediately searchable...');
|
|
436
|
+
await hnswService.flushBatch(account.address);
|
|
437
|
+
console.log('✅ Index flushed - vectors now searchable');
|
|
438
|
+
|
|
439
|
+
// Save index for persistence
|
|
440
|
+
console.log('💾 Saving index for persistence...');
|
|
441
|
+
await hnswService.saveIndex(account.address);
|
|
442
|
+
console.log('✅ Index saved - will persist after refresh');
|
|
443
|
+
|
|
444
|
+
console.log('🎉 Memory indexed, flushed, and persisted!');
|
|
445
|
+
console.log(' Vector ID:', vectorId);
|
|
446
|
+
console.log(' User:', account.address.substring(0, 10) + '...');
|
|
447
|
+
console.log(' Embedding dimensions:', embedding.length);
|
|
448
|
+
onProgress?.('Memory indexed and saved!');
|
|
449
|
+
} else {
|
|
450
|
+
console.warn('⚠️ HNSW service not available - skipping local indexing');
|
|
451
|
+
}
|
|
452
|
+
} catch (indexError: any) {
|
|
453
|
+
// Non-fatal: memory is still created on-chain
|
|
454
|
+
console.error('❌ Local indexing failed:', indexError);
|
|
455
|
+
console.error(' Error details:', indexError.message);
|
|
456
|
+
console.error(' Stack:', indexError.stack);
|
|
457
|
+
console.warn('⚠️ Memory still created on-chain, but not indexed locally');
|
|
458
|
+
}
|
|
459
|
+
} else {
|
|
460
|
+
console.warn('⚠️ Local indexing skipped - conditions not met:');
|
|
461
|
+
if (!this.config.enableLocalIndexing) console.warn(' - Local indexing disabled');
|
|
462
|
+
if (!account.address) console.warn(' - No account address');
|
|
463
|
+
if (!embedding || embedding.length === 0) console.warn(' - No embedding generated');
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
console.log('🎉 Memory creation complete!');
|
|
467
|
+
return blobId;
|
|
468
|
+
} catch (error: any) {
|
|
469
|
+
console.error('❌ Memory creation failed:', error);
|
|
470
|
+
throw new Error(`Failed to create memory: ${error.message}`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Retrieve and decrypt a memory
|
|
476
|
+
*/
|
|
477
|
+
async retrieveMemory(options: RetrieveMemoryOptions): Promise<ClientMemoryMetadata> {
|
|
478
|
+
const { blobId, account, signPersonalMessage, client, onProgress } = options;
|
|
479
|
+
|
|
480
|
+
console.log('🔍 Starting memory retrieval...');
|
|
481
|
+
onProgress?.('Starting retrieval...');
|
|
482
|
+
|
|
483
|
+
try {
|
|
484
|
+
// Step 1: Fetch from Walrus
|
|
485
|
+
console.log('🐳 Step 1: Fetching from Walrus...');
|
|
486
|
+
onProgress?.('Fetching from Walrus...');
|
|
487
|
+
const encryptedData = await this.fetchFromWalrus(blobId, client);
|
|
488
|
+
console.log('✅ Retrieved:', encryptedData.length, 'bytes');
|
|
489
|
+
|
|
490
|
+
// Step 2: Decrypt with SEAL
|
|
491
|
+
console.log('🔓 Step 2: Decrypting with SEAL...');
|
|
492
|
+
onProgress?.('Decrypting with SEAL...');
|
|
493
|
+
const decryptedData = await this.decryptWithSEAL({
|
|
494
|
+
encryptedData,
|
|
495
|
+
account,
|
|
496
|
+
signPersonalMessage,
|
|
497
|
+
client
|
|
498
|
+
});
|
|
499
|
+
console.log('✅ Decrypted:', decryptedData.length, 'bytes');
|
|
500
|
+
|
|
501
|
+
// Step 3: Parse JSON
|
|
502
|
+
const decryptedString = new TextDecoder().decode(decryptedData);
|
|
503
|
+
const parsed: ClientMemoryMetadata = JSON.parse(decryptedString);
|
|
504
|
+
|
|
505
|
+
console.log('🎉 Memory retrieval complete!');
|
|
506
|
+
onProgress?.('Memory retrieved successfully!');
|
|
507
|
+
|
|
508
|
+
return parsed;
|
|
509
|
+
} catch (error: any) {
|
|
510
|
+
console.error('❌ Memory retrieval failed:', error);
|
|
511
|
+
throw new Error(`Failed to retrieve memory: ${error.message}`);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* Batch retrieve and decrypt multiple memories with a single signature
|
|
517
|
+
* This is much more efficient than calling retrieveMemory multiple times
|
|
518
|
+
*/
|
|
519
|
+
async batchRetrieveMemories(options: BatchRetrieveMemoriesOptions): Promise<BatchRetrieveResult[]> {
|
|
520
|
+
const { blobIds, account, signPersonalMessage, client, onProgress } = options;
|
|
521
|
+
|
|
522
|
+
console.log('🔍 Starting batch memory retrieval for', blobIds.length, 'memories...');
|
|
523
|
+
onProgress?.('Initializing decryption session...', 0, blobIds.length);
|
|
524
|
+
|
|
525
|
+
try {
|
|
526
|
+
// Step 1: Create reusable decryption session (SINGLE SIGNATURE!)
|
|
527
|
+
const session = await this.createDecryptionSession({
|
|
528
|
+
account,
|
|
529
|
+
signPersonalMessage,
|
|
530
|
+
client
|
|
531
|
+
});
|
|
532
|
+
console.log('✅ Decryption session created - will decrypt all memories without additional signatures');
|
|
533
|
+
|
|
534
|
+
const results: BatchRetrieveResult[] = [];
|
|
535
|
+
|
|
536
|
+
// Step 2: Decrypt all memories using the same session
|
|
537
|
+
for (let i = 0; i < blobIds.length; i++) {
|
|
538
|
+
const blobId = blobIds[i];
|
|
539
|
+
console.log(`🔓 Decrypting memory ${i + 1}/${blobIds.length}: ${blobId}`);
|
|
540
|
+
onProgress?.(`Decrypting memory ${i + 1}/${blobIds.length}...`, i + 1, blobIds.length);
|
|
541
|
+
|
|
542
|
+
try {
|
|
543
|
+
// Fetch from Walrus
|
|
544
|
+
const encryptedData = await this.fetchFromWalrus(blobId, client);
|
|
545
|
+
|
|
546
|
+
// Decrypt using shared session (NO SIGNING!)
|
|
547
|
+
const decryptedData = await session.sealClient.decrypt({
|
|
548
|
+
data: encryptedData,
|
|
549
|
+
sessionKey: session.sessionKey,
|
|
550
|
+
txBytes: session.txBytes,
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
// Parse JSON
|
|
554
|
+
const decryptedString = new TextDecoder().decode(decryptedData);
|
|
555
|
+
const parsed: ClientMemoryMetadata = JSON.parse(decryptedString);
|
|
556
|
+
|
|
557
|
+
results.push({
|
|
558
|
+
blobId,
|
|
559
|
+
content: parsed.content
|
|
560
|
+
});
|
|
561
|
+
|
|
562
|
+
console.log(`✅ Memory ${i + 1} decrypted successfully`);
|
|
563
|
+
} catch (error: any) {
|
|
564
|
+
console.error(`❌ Failed to decrypt memory ${blobId}:`, error);
|
|
565
|
+
|
|
566
|
+
// Handle old format (binary embedding data)
|
|
567
|
+
if (error.message?.includes('not valid JSON') || error.message?.includes('Unexpected token')) {
|
|
568
|
+
results.push({
|
|
569
|
+
blobId,
|
|
570
|
+
content: '[Old format - cannot display content]'
|
|
571
|
+
});
|
|
572
|
+
} else {
|
|
573
|
+
results.push({
|
|
574
|
+
blobId,
|
|
575
|
+
error: error.message || 'Decryption failed'
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
console.log('🎉 Batch retrieval complete!');
|
|
582
|
+
onProgress?.('All memories decrypted!', blobIds.length, blobIds.length);
|
|
583
|
+
|
|
584
|
+
return results;
|
|
585
|
+
} catch (error: any) {
|
|
586
|
+
console.error('❌ Batch retrieval failed:', error);
|
|
587
|
+
throw new Error(`Failed to batch retrieve memories: ${error.message}`);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// ==================== PRIVATE METHODS ====================
|
|
592
|
+
|
|
593
|
+
private async analyzeContent(text: string, categoryOverride?: string): Promise<RichMetadataAnalysis> {
|
|
594
|
+
// Use client-side Gemini AI for rich metadata extraction
|
|
595
|
+
try {
|
|
596
|
+
if (this.geminiAIService) {
|
|
597
|
+
console.log('🤖 Using Gemini AI for metadata extraction...');
|
|
598
|
+
const metadata = await this.geminiAIService.extractRichMetadata(text, categoryOverride);
|
|
599
|
+
console.log('✅ AI metadata extracted:', metadata);
|
|
600
|
+
return metadata;
|
|
601
|
+
} else {
|
|
602
|
+
console.warn('⚠️ Gemini AI service not initialized, using fallback extraction');
|
|
603
|
+
return this.getFallbackAnalysis(text, categoryOverride);
|
|
604
|
+
}
|
|
605
|
+
} catch (error) {
|
|
606
|
+
console.warn('⚠️ AI analysis failed, using fallback:', error);
|
|
607
|
+
return this.getFallbackAnalysis(text, categoryOverride);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
private getFallbackAnalysis(text: string, categoryOverride?: string): RichMetadataAnalysis {
|
|
612
|
+
return {
|
|
613
|
+
category: categoryOverride || 'personal',
|
|
614
|
+
topic: this.extractTopicFromContent(text),
|
|
615
|
+
importance: 5,
|
|
616
|
+
summary: text.substring(0, 200) + (text.length > 200 ? '...' : '')
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Extract topic from content as fallback (when AI fails)
|
|
622
|
+
* Tries to get first sentence, or first 50 characters
|
|
623
|
+
*
|
|
624
|
+
* @param text - Content text to extract topic from
|
|
625
|
+
* @returns Topic string (max 100 characters)
|
|
626
|
+
*/
|
|
627
|
+
private extractTopicFromContent(text: string): string {
|
|
628
|
+
// Try to get first sentence
|
|
629
|
+
const firstSentence = text.match(/^[^.!?]+[.!?]/);
|
|
630
|
+
if (firstSentence) {
|
|
631
|
+
const topic = firstSentence[0].trim();
|
|
632
|
+
return topic.length > 100 ? topic.substring(0, 97) + '...' : topic;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// Fallback: first 50 characters
|
|
636
|
+
return text.substring(0, 50) + (text.length > 50 ? '...' : '');
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Build embeddable metadata text from rich metadata
|
|
641
|
+
* Format optimized for semantic embedding and alignment with on-chain metadata
|
|
642
|
+
*
|
|
643
|
+
* @param metadata - Rich metadata extracted from AI analysis
|
|
644
|
+
* @returns Formatted text string ready for embedding
|
|
645
|
+
*
|
|
646
|
+
* @example
|
|
647
|
+
* ```typescript
|
|
648
|
+
* const metadataText = buildMetadataText({
|
|
649
|
+
* category: 'work',
|
|
650
|
+
* topic: 'Q4 project deadline meeting',
|
|
651
|
+
* importance: 7,
|
|
652
|
+
* summary: 'Team discussion about Q4 deadlines'
|
|
653
|
+
* });
|
|
654
|
+
* // Returns:
|
|
655
|
+
* // "category: work
|
|
656
|
+
* // topic: Q4 project deadline meeting
|
|
657
|
+
* // importance: 7
|
|
658
|
+
* // summary: Team discussion about Q4 deadlines"
|
|
659
|
+
* ```
|
|
660
|
+
*/
|
|
661
|
+
private buildMetadataText(metadata: RichMetadataAnalysis): string {
|
|
662
|
+
const parts = [
|
|
663
|
+
`category: ${metadata.category}`,
|
|
664
|
+
`topic: ${metadata.topic}`,
|
|
665
|
+
`importance: ${metadata.importance}`
|
|
666
|
+
];
|
|
667
|
+
|
|
668
|
+
if (metadata.summary && metadata.summary.trim().length > 0) {
|
|
669
|
+
parts.push(`summary: ${metadata.summary}`);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
return parts.join('\n');
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
private async generateEmbedding(text: string): Promise<number[]> {
|
|
676
|
+
if (!this.embeddingService) {
|
|
677
|
+
throw new Error(
|
|
678
|
+
'EmbeddingService not configured. Please provide an API key for embedding generation ' +
|
|
679
|
+
'(e.g., GEMINI_API_KEY or OPENROUTER_API_KEY in environment variables).'
|
|
680
|
+
);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
try {
|
|
684
|
+
const result = await this.embeddingService.embedText({
|
|
685
|
+
text,
|
|
686
|
+
type: 'content'
|
|
687
|
+
});
|
|
688
|
+
return result.vector;
|
|
689
|
+
} catch (error) {
|
|
690
|
+
throw new Error(`Failed to generate embedding: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
private async encryptWithSEAL(
|
|
695
|
+
data: Uint8Array,
|
|
696
|
+
ownerAddress: string,
|
|
697
|
+
client: SuiClient
|
|
698
|
+
): Promise<Uint8Array> {
|
|
699
|
+
const sealClient = new SealClient({
|
|
700
|
+
suiClient: client as any,
|
|
701
|
+
serverConfigs: this.config.sealServerObjectIds.map((id) => ({
|
|
702
|
+
objectId: id,
|
|
703
|
+
weight: 1,
|
|
704
|
+
})),
|
|
705
|
+
verifyKeyServers: false,
|
|
706
|
+
});
|
|
707
|
+
|
|
708
|
+
const { encryptedObject: encryptedBytes } = await sealClient.encrypt({
|
|
709
|
+
threshold: 1,
|
|
710
|
+
packageId: this.config.packageId,
|
|
711
|
+
id: ownerAddress, // Use owner's address as ID for simple access control
|
|
712
|
+
data,
|
|
713
|
+
});
|
|
714
|
+
|
|
715
|
+
return encryptedBytes;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
private async uploadToWalrus(
|
|
719
|
+
data: Uint8Array,
|
|
720
|
+
account: { address: string },
|
|
721
|
+
signAndExecute: CreateMemoryOptions['signAndExecute'],
|
|
722
|
+
client: SuiClient
|
|
723
|
+
): Promise<string> {
|
|
724
|
+
const extendedClient = (client as any).$extend(
|
|
725
|
+
WalrusClient.experimental_asClientExtension({
|
|
726
|
+
network: this.config.walrusNetwork,
|
|
727
|
+
uploadRelay: {
|
|
728
|
+
host: `https://upload-relay.${this.config.walrusNetwork}.walrus.space`,
|
|
729
|
+
sendTip: { max: 1_000 },
|
|
730
|
+
timeout: 60_000,
|
|
731
|
+
},
|
|
732
|
+
storageNodeClientOptions: {
|
|
733
|
+
timeout: 60_000,
|
|
734
|
+
},
|
|
735
|
+
})
|
|
736
|
+
);
|
|
737
|
+
|
|
738
|
+
const walrusClient = extendedClient.walrus as any;
|
|
739
|
+
const flow = walrusClient.writeBlobFlow({ blob: data });
|
|
740
|
+
|
|
741
|
+
// Encode
|
|
742
|
+
await flow.encode();
|
|
743
|
+
|
|
744
|
+
// Register (signature 1)
|
|
745
|
+
const registerTx = flow.register({
|
|
746
|
+
epochs: 5,
|
|
747
|
+
deletable: true,
|
|
748
|
+
owner: account.address,
|
|
749
|
+
});
|
|
750
|
+
registerTx.setSender(account.address);
|
|
751
|
+
|
|
752
|
+
const registerDigest = await new Promise<string>((resolve, reject) => {
|
|
753
|
+
signAndExecute(
|
|
754
|
+
{ transaction: registerTx },
|
|
755
|
+
{
|
|
756
|
+
onSuccess: (result) => resolve(result.digest),
|
|
757
|
+
onError: (error) => reject(error),
|
|
758
|
+
}
|
|
759
|
+
);
|
|
760
|
+
});
|
|
761
|
+
|
|
762
|
+
// Upload
|
|
763
|
+
await flow.upload({ digest: registerDigest });
|
|
764
|
+
|
|
765
|
+
// Certify (signature 2)
|
|
766
|
+
const certifyTx = flow.certify();
|
|
767
|
+
certifyTx.setSender(account.address);
|
|
768
|
+
|
|
769
|
+
await new Promise<void>((resolve, reject) => {
|
|
770
|
+
signAndExecute(
|
|
771
|
+
{ transaction: certifyTx },
|
|
772
|
+
{
|
|
773
|
+
onSuccess: () => resolve(),
|
|
774
|
+
onError: (error) => reject(error),
|
|
775
|
+
}
|
|
776
|
+
);
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
const blob = await flow.getBlob();
|
|
780
|
+
return blob.blobId;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
private async registerOnChain(params: {
|
|
784
|
+
blobId: string;
|
|
785
|
+
category: string;
|
|
786
|
+
topic: string; // ✅ NEW: Real topic from AI analysis
|
|
787
|
+
importance: number;
|
|
788
|
+
contentLength: number;
|
|
789
|
+
vectorId: number; // ✅ Sequential ID (fits in 32-bit unsigned int)
|
|
790
|
+
account: { address: string };
|
|
791
|
+
signAndExecute: CreateMemoryOptions['signAndExecute'];
|
|
792
|
+
client: SuiClient;
|
|
793
|
+
}): Promise<void> {
|
|
794
|
+
const { blobId, category, topic, importance, contentLength, vectorId, account, signAndExecute, client } = params;
|
|
795
|
+
|
|
796
|
+
const tx = new Transaction();
|
|
797
|
+
const packageId = this.config.packageId.replace(/^0x/, '');
|
|
798
|
+
|
|
799
|
+
console.log('📝 Registering on-chain with rich metadata:', {
|
|
800
|
+
category,
|
|
801
|
+
topic,
|
|
802
|
+
importance,
|
|
803
|
+
vectorId,
|
|
804
|
+
blobId: blobId.substring(0, 20) + '...'
|
|
805
|
+
});
|
|
806
|
+
|
|
807
|
+
tx.moveCall({
|
|
808
|
+
target: `${packageId}::memory::create_memory_record`,
|
|
809
|
+
arguments: [
|
|
810
|
+
tx.pure.string(category),
|
|
811
|
+
tx.pure.u64(vectorId),
|
|
812
|
+
tx.pure.string(blobId),
|
|
813
|
+
tx.pure.string('text/plain'),
|
|
814
|
+
tx.pure.u64(contentLength),
|
|
815
|
+
tx.pure.string(blobId), // ✅ FIX: content_hash = blobId (content-addressed)
|
|
816
|
+
tx.pure.string(topic), // ✅ FIX: Real topic from AI (not hardcoded "memory")
|
|
817
|
+
tx.pure.u8(importance),
|
|
818
|
+
tx.pure.string(blobId), // embedding_blob_id (same as content for now)
|
|
819
|
+
],
|
|
820
|
+
});
|
|
821
|
+
|
|
822
|
+
return new Promise((resolve, reject) => {
|
|
823
|
+
signAndExecute(
|
|
824
|
+
{ transaction: tx },
|
|
825
|
+
{
|
|
826
|
+
onSuccess: (result) => {
|
|
827
|
+
console.log('✅ Transaction successful:', result.digest);
|
|
828
|
+
console.log('✅ On-chain Memory created with rich metadata:', {
|
|
829
|
+
category,
|
|
830
|
+
topic,
|
|
831
|
+
importance
|
|
832
|
+
});
|
|
833
|
+
resolve();
|
|
834
|
+
},
|
|
835
|
+
onError: (error) => {
|
|
836
|
+
console.error('❌ Transaction failed:', error);
|
|
837
|
+
reject(error);
|
|
838
|
+
},
|
|
839
|
+
}
|
|
840
|
+
);
|
|
841
|
+
});
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
private async fetchFromWalrus(blobId: string, client: SuiClient): Promise<Uint8Array> {
|
|
845
|
+
// Use Walrus SDK for reading blobs (consistent with uploadToWalrus)
|
|
846
|
+
const extendedClient = (client as any).$extend(
|
|
847
|
+
WalrusClient.experimental_asClientExtension({
|
|
848
|
+
network: this.config.walrusNetwork,
|
|
849
|
+
})
|
|
850
|
+
);
|
|
851
|
+
|
|
852
|
+
const walrusClient = extendedClient.walrus as any;
|
|
853
|
+
const blob = await walrusClient.readBlob({ blobId });
|
|
854
|
+
return blob;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* Create a reusable decryption session (requires one signature)
|
|
859
|
+
* This session can be used to decrypt multiple memories without additional signatures
|
|
860
|
+
*/
|
|
861
|
+
private async createDecryptionSession(params: {
|
|
862
|
+
account: { address: string };
|
|
863
|
+
signPersonalMessage: (params: { message: Uint8Array }) => Promise<{ signature: string }>;
|
|
864
|
+
client: SuiClient;
|
|
865
|
+
}): Promise<DecryptionSession> {
|
|
866
|
+
const { account, signPersonalMessage, client } = params;
|
|
867
|
+
|
|
868
|
+
console.log('🔑 Creating decryption session...');
|
|
869
|
+
|
|
870
|
+
// Create SEAL client (reusable)
|
|
871
|
+
const sealClient = new SealClient({
|
|
872
|
+
suiClient: client as any,
|
|
873
|
+
serverConfigs: this.config.sealServerObjectIds.map((id) => ({
|
|
874
|
+
objectId: id,
|
|
875
|
+
weight: 1,
|
|
876
|
+
})),
|
|
877
|
+
verifyKeyServers: false,
|
|
878
|
+
});
|
|
879
|
+
|
|
880
|
+
// Create session key (reusable)
|
|
881
|
+
const sessionKey = await SessionKey.create({
|
|
882
|
+
address: account.address,
|
|
883
|
+
packageId: this.config.packageId,
|
|
884
|
+
ttlMin: 10,
|
|
885
|
+
suiClient: client as any,
|
|
886
|
+
});
|
|
887
|
+
|
|
888
|
+
// Sign personal message ONCE
|
|
889
|
+
const personalMessage = sessionKey.getPersonalMessage();
|
|
890
|
+
const signatureResult = await signPersonalMessage({ message: personalMessage });
|
|
891
|
+
await sessionKey.setPersonalMessageSignature(signatureResult.signature);
|
|
892
|
+
console.log('✅ Personal message signed');
|
|
893
|
+
|
|
894
|
+
// Build seal_approve transaction ONCE
|
|
895
|
+
const tx = new Transaction();
|
|
896
|
+
const addressHex = account.address.startsWith('0x')
|
|
897
|
+
? account.address.slice(2)
|
|
898
|
+
: account.address;
|
|
899
|
+
const idBytes = fromHex(addressHex);
|
|
900
|
+
|
|
901
|
+
tx.moveCall({
|
|
902
|
+
target: `${this.config.packageId}::seal_access_control::seal_approve`,
|
|
903
|
+
arguments: [
|
|
904
|
+
tx.pure.vector('u8', Array.from(idBytes)),
|
|
905
|
+
tx.pure.address(account.address),
|
|
906
|
+
tx.object(this.config.accessRegistryId),
|
|
907
|
+
tx.object('0x6'),
|
|
908
|
+
],
|
|
909
|
+
});
|
|
910
|
+
|
|
911
|
+
const txBytes = await tx.build({ client, onlyTransactionKind: true });
|
|
912
|
+
console.log('✅ Session created - can now decrypt multiple memories');
|
|
913
|
+
|
|
914
|
+
return {
|
|
915
|
+
sealClient,
|
|
916
|
+
sessionKey,
|
|
917
|
+
txBytes
|
|
918
|
+
};
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
private async decryptWithSEAL(params: {
|
|
922
|
+
encryptedData: Uint8Array;
|
|
923
|
+
account: { address: string };
|
|
924
|
+
signPersonalMessage: RetrieveMemoryOptions['signPersonalMessage'];
|
|
925
|
+
client: SuiClient;
|
|
926
|
+
}): Promise<Uint8Array> {
|
|
927
|
+
const { encryptedData, account, signPersonalMessage, client } = params;
|
|
928
|
+
|
|
929
|
+
// Create SEAL client
|
|
930
|
+
const sealClient = new SealClient({
|
|
931
|
+
suiClient: client as any,
|
|
932
|
+
serverConfigs: this.config.sealServerObjectIds.map((id) => ({
|
|
933
|
+
objectId: id,
|
|
934
|
+
weight: 1,
|
|
935
|
+
})),
|
|
936
|
+
verifyKeyServers: false,
|
|
937
|
+
});
|
|
938
|
+
|
|
939
|
+
// Create session key
|
|
940
|
+
const sessionKey = await SessionKey.create({
|
|
941
|
+
address: account.address,
|
|
942
|
+
packageId: this.config.packageId,
|
|
943
|
+
ttlMin: 10,
|
|
944
|
+
suiClient: client as any,
|
|
945
|
+
});
|
|
946
|
+
|
|
947
|
+
// Sign personal message
|
|
948
|
+
const personalMessage = sessionKey.getPersonalMessage();
|
|
949
|
+
const signatureResult = await signPersonalMessage({ message: personalMessage });
|
|
950
|
+
await sessionKey.setPersonalMessageSignature(signatureResult.signature);
|
|
951
|
+
|
|
952
|
+
// Build seal_approve transaction
|
|
953
|
+
const tx = new Transaction();
|
|
954
|
+
const addressHex = account.address.startsWith('0x')
|
|
955
|
+
? account.address.slice(2)
|
|
956
|
+
: account.address;
|
|
957
|
+
const idBytes = fromHex(addressHex);
|
|
958
|
+
|
|
959
|
+
tx.moveCall({
|
|
960
|
+
target: `${this.config.packageId}::seal_access_control::seal_approve`,
|
|
961
|
+
arguments: [
|
|
962
|
+
tx.pure.vector('u8', Array.from(idBytes)),
|
|
963
|
+
tx.pure.address(account.address),
|
|
964
|
+
tx.object(this.config.accessRegistryId),
|
|
965
|
+
tx.object('0x6'),
|
|
966
|
+
],
|
|
967
|
+
});
|
|
968
|
+
|
|
969
|
+
const txBytes = await tx.build({ client, onlyTransactionKind: true });
|
|
970
|
+
|
|
971
|
+
// Decrypt
|
|
972
|
+
const decryptedData = await sealClient.decrypt({
|
|
973
|
+
data: encryptedData,
|
|
974
|
+
sessionKey,
|
|
975
|
+
txBytes,
|
|
976
|
+
});
|
|
977
|
+
|
|
978
|
+
return decryptedData;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
export default ClientMemoryManager;
|