@cmdoss/memwal-sdk 0.6.0 → 0.6.1
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 +86 -2
- package/BENCHMARKS.md +2 -2
- package/README.md +43 -4
- package/dist/ai-sdk/types.d.ts +2 -2
- package/dist/ai-sdk/types.d.ts.map +1 -1
- package/dist/browser.d.ts +9 -9
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +16 -11
- package/dist/browser.js.map +1 -1
- package/dist/client/PersonalDataWallet.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.js +4 -4
- package/dist/client/SimplePDWClient.js.map +1 -1
- package/dist/client/namespaces/BatchNamespace.js +2 -2
- package/dist/client/namespaces/BatchNamespace.js.map +1 -1
- package/dist/client/namespaces/MemoryNamespace.js +3 -3
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
- package/dist/client/namespaces/StorageNamespace.js +4 -4
- package/dist/client/namespaces/StorageNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.js +2 -2
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
- package/dist/client/signers/DappKitSigner.d.ts +136 -0
- package/dist/client/signers/DappKitSigner.d.ts.map +1 -0
- package/dist/client/signers/DappKitSigner.js +128 -0
- package/dist/client/signers/DappKitSigner.js.map +1 -0
- package/dist/client/signers/KeypairSigner.d.ts +4 -0
- package/dist/client/signers/KeypairSigner.d.ts.map +1 -1
- package/dist/client/signers/KeypairSigner.js +6 -0
- package/dist/client/signers/KeypairSigner.js.map +1 -1
- package/dist/client/signers/UnifiedSigner.d.ts +10 -0
- package/dist/client/signers/UnifiedSigner.d.ts.map +1 -1
- package/dist/client/signers/WalletAdapterSigner.d.ts +7 -0
- package/dist/client/signers/WalletAdapterSigner.d.ts.map +1 -1
- package/dist/client/signers/WalletAdapterSigner.js +9 -0
- package/dist/client/signers/WalletAdapterSigner.js.map +1 -1
- package/dist/client/signers/index.d.ts +3 -0
- package/dist/client/signers/index.d.ts.map +1 -1
- package/dist/client/signers/index.js +2 -0
- package/dist/client/signers/index.js.map +1 -1
- package/dist/generated/utils/index.js +1 -1
- package/dist/generated/utils/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/services/CapabilityService.js +1 -1
- package/dist/services/CapabilityService.js.map +1 -1
- package/dist/services/EncryptionService.js +1 -1
- package/dist/services/EncryptionService.js.map +1 -1
- package/dist/services/StorageService.d.ts +8 -8
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/VectorService.js +2 -2
- package/dist/services/VectorService.js.map +1 -1
- package/dist/services/storage/BlobAttributesManager.d.ts +4 -4
- package/dist/services/storage/BlobAttributesManager.d.ts.map +1 -1
- package/dist/services/storage/BlobAttributesManager.js +6 -15
- package/dist/services/storage/BlobAttributesManager.js.map +1 -1
- package/dist/services/storage/QuiltBatchManager.d.ts +23 -5
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
- package/dist/services/storage/QuiltBatchManager.js +118 -35
- package/dist/services/storage/QuiltBatchManager.js.map +1 -1
- package/dist/services/storage/WalrusMetadataManager.d.ts +2 -2
- package/dist/services/storage/WalrusMetadataManager.d.ts.map +1 -1
- package/dist/services/storage/WalrusMetadataManager.js +2 -5
- package/dist/services/storage/WalrusMetadataManager.js.map +1 -1
- package/dist/services/storage/WalrusStorageManager.d.ts +2 -2
- package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -1
- package/dist/services/storage/WalrusStorageManager.js +7 -11
- package/dist/services/storage/WalrusStorageManager.js.map +1 -1
- package/dist/wallet/MainWalletService.js +1 -1
- package/dist/wallet/MainWalletService.js.map +1 -1
- package/package.json +10 -3
- package/src/ai-sdk/types.ts +2 -2
- package/src/browser.ts +19 -20
- package/src/client/SimplePDWClient.ts +18 -14
- package/src/client/namespaces/BatchNamespace.ts +2 -2
- package/src/client/namespaces/MemoryNamespace.ts +3 -3
- package/src/client/namespaces/StorageNamespace.ts +4 -4
- package/src/client/namespaces/consolidated/StorageNamespace.ts +2 -2
- package/src/client/signers/DappKitSigner.ts +207 -0
- package/src/client/signers/KeypairSigner.ts +7 -0
- package/src/client/signers/UnifiedSigner.ts +11 -0
- package/src/client/signers/WalletAdapterSigner.ts +10 -0
- package/src/client/signers/index.ts +7 -0
- package/src/generated/pdw/deps/sui/object.ts +12 -12
- package/src/generated/pdw/deps/sui/vec_map.ts +32 -32
- package/src/generated/pdw/memory.ts +1087 -1087
- package/src/generated/pdw/wallet.ts +123 -123
- package/src/generated/utils/index.ts +159 -159
- package/src/index.ts +16 -0
- package/src/services/CapabilityService.ts +1 -1
- package/src/services/EncryptionService.ts +1 -1
- package/src/services/StorageService.ts +8 -8
- package/src/services/VectorService.ts +2 -2
- package/src/services/storage/BlobAttributesManager.ts +10 -19
- package/src/services/storage/QuiltBatchManager.ts +139 -37
- package/src/services/storage/WalrusMetadataManager.ts +4 -7
- package/src/services/storage/WalrusStorageManager.ts +10 -13
- package/src/wallet/MainWalletService.ts +1 -1
- package/dist/api/client.d.ts +0 -43
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -136
- package/dist/api/client.js.map +0 -1
- package/dist/chat/index.d.ts +0 -13
- package/dist/chat/index.d.ts.map +0 -1
- package/dist/chat/index.js +0 -14
- package/dist/chat/index.js.map +0 -1
- package/dist/client/namespaces/ChatNamespace.d.ts +0 -110
- package/dist/client/namespaces/ChatNamespace.d.ts.map +0 -1
- package/dist/client/namespaces/ChatNamespace.js +0 -123
- package/dist/client/namespaces/ChatNamespace.js.map +0 -1
- package/dist/encryption/index.d.ts +0 -14
- package/dist/encryption/index.d.ts.map +0 -1
- package/dist/encryption/index.js +0 -14
- package/dist/encryption/index.js.map +0 -1
- package/dist/graph/BrowserKnowledgeGraphManager.d.ts +0 -101
- package/dist/graph/BrowserKnowledgeGraphManager.d.ts.map +0 -1
- package/dist/graph/BrowserKnowledgeGraphManager.js +0 -411
- package/dist/graph/BrowserKnowledgeGraphManager.js.map +0 -1
- package/dist/hooks.wip/index.d.ts +0 -55
- package/dist/hooks.wip/index.d.ts.map +0 -1
- package/dist/hooks.wip/index.js +0 -58
- package/dist/hooks.wip/index.js.map +0 -1
- package/dist/hooks.wip/useCreateMemory.d.ts +0 -111
- package/dist/hooks.wip/useCreateMemory.d.ts.map +0 -1
- package/dist/hooks.wip/useCreateMemory.js +0 -149
- package/dist/hooks.wip/useCreateMemory.js.map +0 -1
- package/dist/hooks.wip/useCreateMemoryBatch.d.ts +0 -122
- package/dist/hooks.wip/useCreateMemoryBatch.d.ts.map +0 -1
- package/dist/hooks.wip/useCreateMemoryBatch.js +0 -221
- package/dist/hooks.wip/useCreateMemoryBatch.js.map +0 -1
- package/dist/hooks.wip/useKnowledgeGraph.d.ts +0 -66
- package/dist/hooks.wip/useKnowledgeGraph.d.ts.map +0 -1
- package/dist/hooks.wip/useKnowledgeGraph.js +0 -229
- package/dist/hooks.wip/useKnowledgeGraph.js.map +0 -1
- package/dist/hooks.wip/useMemoryChat.d.ts +0 -106
- package/dist/hooks.wip/useMemoryChat.d.ts.map +0 -1
- package/dist/hooks.wip/useMemoryChat.js +0 -284
- package/dist/hooks.wip/useMemoryChat.js.map +0 -1
- package/dist/hooks.wip/useMemoryIndex.d.ts +0 -90
- package/dist/hooks.wip/useMemoryIndex.d.ts.map +0 -1
- package/dist/hooks.wip/useMemoryIndex.js +0 -218
- package/dist/hooks.wip/useMemoryIndex.js.map +0 -1
- package/dist/hooks.wip/useMemoryManager.d.ts +0 -35
- package/dist/hooks.wip/useMemoryManager.d.ts.map +0 -1
- package/dist/hooks.wip/useMemoryManager.js +0 -86
- package/dist/hooks.wip/useMemoryManager.js.map +0 -1
- package/dist/hooks.wip/useMemorySearch.d.ts +0 -100
- package/dist/hooks.wip/useMemorySearch.d.ts.map +0 -1
- package/dist/hooks.wip/useMemorySearch.js +0 -278
- package/dist/hooks.wip/useMemorySearch.js.map +0 -1
- package/dist/hooks.wip/useMemoryServices.d.ts +0 -80
- package/dist/hooks.wip/useMemoryServices.d.ts.map +0 -1
- package/dist/hooks.wip/useMemoryServices.js +0 -264
- package/dist/hooks.wip/useMemoryServices.js.map +0 -1
- package/dist/hooks.wip/usePDWRAG.d.ts +0 -112
- package/dist/hooks.wip/usePDWRAG.d.ts.map +0 -1
- package/dist/hooks.wip/usePDWRAG.js +0 -121
- package/dist/hooks.wip/usePDWRAG.js.map +0 -1
- package/dist/hooks.wip/usePDWVectorStore.d.ts +0 -68
- package/dist/hooks.wip/usePDWVectorStore.d.ts.map +0 -1
- package/dist/hooks.wip/usePDWVectorStore.js +0 -102
- package/dist/hooks.wip/usePDWVectorStore.js.map +0 -1
- package/dist/hooks.wip/useRetrieveEmbedding.d.ts +0 -138
- package/dist/hooks.wip/useRetrieveEmbedding.d.ts.map +0 -1
- package/dist/hooks.wip/useRetrieveEmbedding.js +0 -121
- package/dist/hooks.wip/useRetrieveEmbedding.js.map +0 -1
- package/dist/hooks.wip/useSearchMemories.d.ts +0 -103
- package/dist/hooks.wip/useSearchMemories.d.ts.map +0 -1
- package/dist/hooks.wip/useSearchMemories.js +0 -146
- package/dist/hooks.wip/useSearchMemories.js.map +0 -1
- package/dist/hooks.wip/useStoreEmbedding.d.ts +0 -174
- package/dist/hooks.wip/useStoreEmbedding.d.ts.map +0 -1
- package/dist/hooks.wip/useStoreEmbedding.js +0 -167
- package/dist/hooks.wip/useStoreEmbedding.js.map +0 -1
- package/dist/hooks.wip/useWalletMemories.d.ts +0 -119
- package/dist/hooks.wip/useWalletMemories.d.ts.map +0 -1
- package/dist/hooks.wip/useWalletMemories.js +0 -166
- package/dist/hooks.wip/useWalletMemories.js.map +0 -1
- package/dist/hooks.wip/utils/cache.d.ts +0 -25
- package/dist/hooks.wip/utils/cache.d.ts.map +0 -1
- package/dist/hooks.wip/utils/cache.js +0 -38
- package/dist/hooks.wip/utils/cache.js.map +0 -1
- package/dist/hooks.wip/utils/types.d.ts +0 -138
- package/dist/hooks.wip/utils/types.d.ts.map +0 -1
- package/dist/hooks.wip/utils/types.js +0 -5
- package/dist/hooks.wip/utils/types.js.map +0 -1
- package/dist/infrastructure/ai/EmbeddingService.d.ts +0 -101
- package/dist/infrastructure/ai/EmbeddingService.d.ts.map +0 -1
- package/dist/infrastructure/ai/EmbeddingService.js +0 -242
- package/dist/infrastructure/ai/EmbeddingService.js.map +0 -1
- package/dist/infrastructure/ai/GeminiAIService.d.ts +0 -84
- package/dist/infrastructure/ai/GeminiAIService.d.ts.map +0 -1
- package/dist/infrastructure/ai/GeminiAIService.js +0 -300
- package/dist/infrastructure/ai/GeminiAIService.js.map +0 -1
- package/dist/infrastructure/ai/index.d.ts +0 -8
- package/dist/infrastructure/ai/index.d.ts.map +0 -1
- package/dist/infrastructure/ai/index.js +0 -8
- package/dist/infrastructure/ai/index.js.map +0 -1
- package/dist/memory/index.d.ts +0 -13
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -14
- package/dist/memory/index.js.map +0 -1
- package/dist/services/ChatService.d.ts +0 -89
- package/dist/services/ChatService.d.ts.map +0 -1
- package/dist/services/ChatService.js +0 -319
- package/dist/services/ChatService.js.map +0 -1
- package/dist/transactions/index.d.ts +0 -13
- package/dist/transactions/index.d.ts.map +0 -1
- package/dist/transactions/index.js +0 -14
- package/dist/transactions/index.js.map +0 -1
- package/dist/types/wallet.d.ts +0 -12
- package/dist/types/wallet.d.ts.map +0 -1
- package/dist/types/wallet.js +0 -13
- package/dist/types/wallet.js.map +0 -1
- package/dist/view/ViewService.d.ts +0 -136
- package/dist/view/ViewService.d.ts.map +0 -1
- package/dist/view/ViewService.js +0 -325
- package/dist/view/ViewService.js.map +0 -1
- package/dist/view/index.d.ts +0 -7
- package/dist/view/index.d.ts.map +0 -1
- package/dist/view/index.js +0 -7
- package/dist/view/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRetrieveEmbedding.js","sourceRoot":"","sources":["../../src/hooks.wip/useRetrieveEmbedding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useSearchMemories - Hook for searching memories with automatic caching
|
|
3
|
-
*
|
|
4
|
-
* Vector search with intelligent caching and real-time updates.
|
|
5
|
-
* Uses the browser-compatible useMemorySearch hook internally.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```tsx
|
|
9
|
-
* import { useSearchMemories } from 'personal-data-wallet-sdk/hooks';
|
|
10
|
-
* import { useCurrentAccount } from '@mysten/dapp-kit';
|
|
11
|
-
* import { useState } from 'react';
|
|
12
|
-
*
|
|
13
|
-
* function MemorySearch() {
|
|
14
|
-
* const account = useCurrentAccount();
|
|
15
|
-
* const [query, setQuery] = useState('');
|
|
16
|
-
*
|
|
17
|
-
* const { data: results, isLoading, error, refetch } = useSearchMemories(
|
|
18
|
-
* account?.address,
|
|
19
|
-
* query,
|
|
20
|
-
* {
|
|
21
|
-
* k: 5,
|
|
22
|
-
* minSimilarity: 0.7,
|
|
23
|
-
* enabled: query.length > 0, // Only search when query exists
|
|
24
|
-
* staleTime: 5 * 60 * 1000 // Cache for 5 minutes
|
|
25
|
-
* }
|
|
26
|
-
* );
|
|
27
|
-
*
|
|
28
|
-
* return (
|
|
29
|
-
* <div>
|
|
30
|
-
* <input value={query} onChange={(e) => setQuery(e.target.value)} />
|
|
31
|
-
* {isLoading && <span>Searching...</span>}
|
|
32
|
-
* {results?.map((memory) => (
|
|
33
|
-
* <div key={memory.blobId}>
|
|
34
|
-
* {memory.content} (similarity: {memory.similarity.toFixed(2)})
|
|
35
|
-
* </div>
|
|
36
|
-
* ))}
|
|
37
|
-
* </div>
|
|
38
|
-
* );
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
import type { SearchMemoryOptions, SearchMemoryResult } from './utils/types';
|
|
43
|
-
export interface UseSearchMemoriesOptions extends SearchMemoryOptions {
|
|
44
|
-
/**
|
|
45
|
-
* Whether to enable the query
|
|
46
|
-
* @default true
|
|
47
|
-
*/
|
|
48
|
-
enabled?: boolean;
|
|
49
|
-
/**
|
|
50
|
-
* How long to consider data fresh (in milliseconds)
|
|
51
|
-
* @default 5 minutes
|
|
52
|
-
*/
|
|
53
|
-
staleTime?: number;
|
|
54
|
-
/**
|
|
55
|
-
* Debounce delay in milliseconds
|
|
56
|
-
* @default 500
|
|
57
|
-
*/
|
|
58
|
-
debounceMs?: number;
|
|
59
|
-
/**
|
|
60
|
-
* Gemini API key for embeddings
|
|
61
|
-
*/
|
|
62
|
-
geminiApiKey?: string;
|
|
63
|
-
}
|
|
64
|
-
export interface UseSearchMemoriesReturn {
|
|
65
|
-
/**
|
|
66
|
-
* Search results
|
|
67
|
-
*/
|
|
68
|
-
data?: SearchMemoryResult[];
|
|
69
|
-
/**
|
|
70
|
-
* Whether the query is loading
|
|
71
|
-
*/
|
|
72
|
-
isLoading: boolean;
|
|
73
|
-
/**
|
|
74
|
-
* Whether the query succeeded
|
|
75
|
-
*/
|
|
76
|
-
isSuccess: boolean;
|
|
77
|
-
/**
|
|
78
|
-
* Whether the query failed
|
|
79
|
-
*/
|
|
80
|
-
isError: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* The error if failed
|
|
83
|
-
*/
|
|
84
|
-
error: Error | null;
|
|
85
|
-
/**
|
|
86
|
-
* Refetch the search results
|
|
87
|
-
*/
|
|
88
|
-
refetch: () => void;
|
|
89
|
-
/**
|
|
90
|
-
* Whether there are more results to load
|
|
91
|
-
*/
|
|
92
|
-
hasNextPage: boolean;
|
|
93
|
-
/**
|
|
94
|
-
* Load the next page of results
|
|
95
|
-
*/
|
|
96
|
-
fetchNextPage: () => void;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Hook for searching memories with automatic caching and debouncing
|
|
100
|
-
*/
|
|
101
|
-
export declare function useSearchMemories(userAddress: string | undefined, query: string, options?: UseSearchMemoriesOptions): UseSearchMemoriesReturn;
|
|
102
|
-
export default useSearchMemories;
|
|
103
|
-
//# sourceMappingURL=useSearchMemories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSearchMemories.d.ts","sourceRoot":"","sources":["../../src/hooks.wip/useSearchMemories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA0C7E,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAgGzB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useSearchMemories - Hook for searching memories with automatic caching
|
|
3
|
-
*
|
|
4
|
-
* Vector search with intelligent caching and real-time updates.
|
|
5
|
-
* Uses the browser-compatible useMemorySearch hook internally.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```tsx
|
|
9
|
-
* import { useSearchMemories } from 'personal-data-wallet-sdk/hooks';
|
|
10
|
-
* import { useCurrentAccount } from '@mysten/dapp-kit';
|
|
11
|
-
* import { useState } from 'react';
|
|
12
|
-
*
|
|
13
|
-
* function MemorySearch() {
|
|
14
|
-
* const account = useCurrentAccount();
|
|
15
|
-
* const [query, setQuery] = useState('');
|
|
16
|
-
*
|
|
17
|
-
* const { data: results, isLoading, error, refetch } = useSearchMemories(
|
|
18
|
-
* account?.address,
|
|
19
|
-
* query,
|
|
20
|
-
* {
|
|
21
|
-
* k: 5,
|
|
22
|
-
* minSimilarity: 0.7,
|
|
23
|
-
* enabled: query.length > 0, // Only search when query exists
|
|
24
|
-
* staleTime: 5 * 60 * 1000 // Cache for 5 minutes
|
|
25
|
-
* }
|
|
26
|
-
* );
|
|
27
|
-
*
|
|
28
|
-
* return (
|
|
29
|
-
* <div>
|
|
30
|
-
* <input value={query} onChange={(e) => setQuery(e.target.value)} />
|
|
31
|
-
* {isLoading && <span>Searching...</span>}
|
|
32
|
-
* {results?.map((memory) => (
|
|
33
|
-
* <div key={memory.blobId}>
|
|
34
|
-
* {memory.content} (similarity: {memory.similarity.toFixed(2)})
|
|
35
|
-
* </div>
|
|
36
|
-
* ))}
|
|
37
|
-
* </div>
|
|
38
|
-
* );
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
import { useQuery } from '@tanstack/react-query';
|
|
43
|
-
import { useEffect, useState } from 'react';
|
|
44
|
-
import { useMemorySearch } from './useMemorySearch.js';
|
|
45
|
-
import { useMemoryServices } from './useMemoryServices.js';
|
|
46
|
-
import { cacheKeys, defaultStaleTimes } from './utils/cache.js';
|
|
47
|
-
/**
|
|
48
|
-
* Helper: Retrieve memory metadata from HNSW cache
|
|
49
|
-
*/
|
|
50
|
-
function getMemoryMetadataFromCache(hnswService, userAddress, vectorIds, similarities) {
|
|
51
|
-
if (!hnswService) {
|
|
52
|
-
console.warn('🔍 getMemoryMetadataFromCache - No HNSW service');
|
|
53
|
-
return [];
|
|
54
|
-
}
|
|
55
|
-
const cacheEntry = hnswService.indexCache?.get(userAddress);
|
|
56
|
-
if (!cacheEntry) {
|
|
57
|
-
console.warn('🔍 getMemoryMetadataFromCache - No cache entry found for user');
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
const results = vectorIds.map((vectorId, i) => {
|
|
61
|
-
const metadata = cacheEntry.metadata.get(vectorId) || {};
|
|
62
|
-
return {
|
|
63
|
-
blobId: metadata.blobId || '',
|
|
64
|
-
content: metadata.content || '',
|
|
65
|
-
category: metadata.category || 'uncategorized',
|
|
66
|
-
topic: metadata.topic || '',
|
|
67
|
-
importance: metadata.importance || 5,
|
|
68
|
-
summary: metadata.summary || '',
|
|
69
|
-
embeddingType: metadata.embeddingType || 'vector',
|
|
70
|
-
similarity: similarities[i] || 0,
|
|
71
|
-
timestamp: metadata.createdTimestamp ? new Date(metadata.createdTimestamp) : new Date(),
|
|
72
|
-
embedding: undefined,
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
return results;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Hook for searching memories with automatic caching and debouncing
|
|
79
|
-
*/
|
|
80
|
-
export function useSearchMemories(userAddress, query, options = {}) {
|
|
81
|
-
const { k = 10, minSimilarity = 0.5, enabled = true, staleTime = defaultStaleTimes.searchMemories, debounceMs = 500, geminiApiKey, } = options;
|
|
82
|
-
// Debounce the query
|
|
83
|
-
const [debouncedQuery, setDebouncedQuery] = useState(query);
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
const timer = setTimeout(() => {
|
|
86
|
-
setDebouncedQuery(query);
|
|
87
|
-
}, debounceMs);
|
|
88
|
-
return () => clearTimeout(timer);
|
|
89
|
-
}, [query, debounceMs]);
|
|
90
|
-
// DEBUG: Log API key status
|
|
91
|
-
console.log('🔍 useSearchMemories - Config:', {
|
|
92
|
-
hasApiKey: !!geminiApiKey,
|
|
93
|
-
apiKeyPreview: geminiApiKey ? `${geminiApiKey.substring(0, 10)}...` : 'UNDEFINED',
|
|
94
|
-
userAddress: userAddress ? `${userAddress.substring(0, 10)}...` : 'UNDEFINED'
|
|
95
|
-
});
|
|
96
|
-
// Get services to access HNSW cache
|
|
97
|
-
const { hnswService } = useMemoryServices(userAddress, geminiApiKey ? { geminiApiKey } : undefined);
|
|
98
|
-
// Use the browser-compatible memory search hook with API key config
|
|
99
|
-
const { search, results, isSearching, error: searchError, isReady } = useMemorySearch(userAddress, geminiApiKey ? { geminiApiKey } : undefined);
|
|
100
|
-
// React Query for caching and state management
|
|
101
|
-
const queryResult = useQuery({
|
|
102
|
-
queryKey: cacheKeys.searchMemories(userAddress, debouncedQuery),
|
|
103
|
-
queryFn: async () => {
|
|
104
|
-
if (!userAddress) {
|
|
105
|
-
throw new Error('No user address provided');
|
|
106
|
-
}
|
|
107
|
-
if (!debouncedQuery || debouncedQuery.trim().length === 0) {
|
|
108
|
-
return [];
|
|
109
|
-
}
|
|
110
|
-
// Perform the search (capture return value instead of reading stale state)
|
|
111
|
-
const searchResult = await search(debouncedQuery, { k, threshold: minSimilarity });
|
|
112
|
-
// Convert results to expected format
|
|
113
|
-
if (!searchResult?.vectorResults || searchResult.vectorResults.ids.length === 0) {
|
|
114
|
-
console.log('🔍 useSearchMemories - No results found');
|
|
115
|
-
return [];
|
|
116
|
-
}
|
|
117
|
-
console.log('🔍 useSearchMemories - Got results:', {
|
|
118
|
-
numResults: searchResult.vectorResults.ids.length,
|
|
119
|
-
ids: searchResult.vectorResults.ids,
|
|
120
|
-
similarities: searchResult.vectorResults.similarities
|
|
121
|
-
});
|
|
122
|
-
// Retrieve memory metadata from HNSW cache
|
|
123
|
-
const results = getMemoryMetadataFromCache(hnswService, userAddress, searchResult.vectorResults.ids, searchResult.vectorResults.similarities);
|
|
124
|
-
console.log('🔍 useSearchMemories - Returning formatted results:', results.length);
|
|
125
|
-
return results;
|
|
126
|
-
},
|
|
127
|
-
enabled: enabled && !!userAddress && debouncedQuery.trim().length > 0 && isReady,
|
|
128
|
-
staleTime,
|
|
129
|
-
retry: 1,
|
|
130
|
-
});
|
|
131
|
-
return {
|
|
132
|
-
data: queryResult.data,
|
|
133
|
-
isLoading: queryResult.isLoading || isSearching,
|
|
134
|
-
isSuccess: queryResult.isSuccess,
|
|
135
|
-
isError: queryResult.isError,
|
|
136
|
-
error: queryResult.error || searchError,
|
|
137
|
-
refetch: queryResult.refetch,
|
|
138
|
-
hasNextPage: false, // Pagination not implemented yet
|
|
139
|
-
fetchNextPage: () => {
|
|
140
|
-
// TODO: Implement pagination
|
|
141
|
-
console.warn('Pagination not yet implemented');
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
export default useSearchMemories;
|
|
146
|
-
//# sourceMappingURL=useSearchMemories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSearchMemories.js","sourceRoot":"","sources":["../../src/hooks.wip/useSearchMemories.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useStoreEmbedding - Hook for generating and storing vector embeddings
|
|
3
|
-
*
|
|
4
|
-
* Simplifies embedding storage with automatic:
|
|
5
|
-
* - Text to vector embedding conversion (768 dimensions)
|
|
6
|
-
* - Walrus storage upload
|
|
7
|
-
* - Loading states and error handling
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```tsx
|
|
11
|
-
* import { useStoreEmbedding } from 'personal-data-wallet-sdk/hooks';
|
|
12
|
-
* import { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit';
|
|
13
|
-
*
|
|
14
|
-
* function EmbeddingUploader() {
|
|
15
|
-
* const account = useCurrentAccount();
|
|
16
|
-
* const { mutateAsync: signAndExecute } = useSignAndExecuteTransaction();
|
|
17
|
-
* const { mutate: storeEmbedding, isPending, data } = useStoreEmbedding({
|
|
18
|
-
* onSuccess: (result) => {
|
|
19
|
-
* console.log('Embedding stored:', result.blobId);
|
|
20
|
-
* }
|
|
21
|
-
* });
|
|
22
|
-
*
|
|
23
|
-
* const handleStore = async () => {
|
|
24
|
-
* if (!account) return;
|
|
25
|
-
*
|
|
26
|
-
* storeEmbedding({
|
|
27
|
-
* content: 'The quick brown fox jumps over the lazy dog',
|
|
28
|
-
* type: 'document',
|
|
29
|
-
* signer: {
|
|
30
|
-
* signAndExecuteTransaction: signAndExecute
|
|
31
|
-
* }
|
|
32
|
-
* });
|
|
33
|
-
* };
|
|
34
|
-
*
|
|
35
|
-
* return (
|
|
36
|
-
* <div>
|
|
37
|
-
* <button onClick={handleStore} disabled={isPending || !account}>
|
|
38
|
-
* {isPending ? 'Storing...' : 'Store Embedding'}
|
|
39
|
-
* </button>
|
|
40
|
-
* {data && <div>Blob ID: {data.blobId}</div>}
|
|
41
|
-
* </div>
|
|
42
|
-
* );
|
|
43
|
-
* }
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
import type { Signer } from '@mysten/sui/cryptography';
|
|
47
|
-
export interface StoreEmbeddingInput {
|
|
48
|
-
/**
|
|
49
|
-
* Text content to convert to embedding
|
|
50
|
-
*/
|
|
51
|
-
content: string;
|
|
52
|
-
/**
|
|
53
|
-
* Signer for Walrus transaction (required for writing blobs)
|
|
54
|
-
*/
|
|
55
|
-
signer: Signer;
|
|
56
|
-
/**
|
|
57
|
-
* Type of embedding (affects the model's behavior)
|
|
58
|
-
* - 'document': For storing documents/content
|
|
59
|
-
* - 'query': For search queries
|
|
60
|
-
* - 'metadata': For metadata-based embeddings
|
|
61
|
-
*/
|
|
62
|
-
type?: 'document' | 'query' | 'metadata';
|
|
63
|
-
/**
|
|
64
|
-
* Optional metadata to store alongside the embedding
|
|
65
|
-
*/
|
|
66
|
-
metadata?: Record<string, any>;
|
|
67
|
-
/**
|
|
68
|
-
* Whether the blob should be deletable (default: false)
|
|
69
|
-
*/
|
|
70
|
-
deletable?: boolean;
|
|
71
|
-
}
|
|
72
|
-
export interface StoreEmbeddingResult {
|
|
73
|
-
/**
|
|
74
|
-
* Walrus blob ID where embedding is stored
|
|
75
|
-
*/
|
|
76
|
-
blobId: string;
|
|
77
|
-
/**
|
|
78
|
-
* The generated vector embedding (768 dimensions)
|
|
79
|
-
*/
|
|
80
|
-
vector: number[];
|
|
81
|
-
/**
|
|
82
|
-
* Embedding dimension
|
|
83
|
-
*/
|
|
84
|
-
dimension: number;
|
|
85
|
-
/**
|
|
86
|
-
* Model used for embedding generation
|
|
87
|
-
*/
|
|
88
|
-
model: string;
|
|
89
|
-
/**
|
|
90
|
-
* Time taken to generate embedding (ms)
|
|
91
|
-
*/
|
|
92
|
-
embeddingTime: number;
|
|
93
|
-
/**
|
|
94
|
-
* Time taken to upload to Walrus (ms)
|
|
95
|
-
*/
|
|
96
|
-
uploadTime: number;
|
|
97
|
-
}
|
|
98
|
-
export interface UseStoreEmbeddingOptions {
|
|
99
|
-
/**
|
|
100
|
-
* Gemini API key for embedding generation
|
|
101
|
-
*/
|
|
102
|
-
geminiApiKey?: string;
|
|
103
|
-
/**
|
|
104
|
-
* PDW package ID for StorageService
|
|
105
|
-
*/
|
|
106
|
-
packageId?: string;
|
|
107
|
-
/**
|
|
108
|
-
* Sui RPC URL for StorageService
|
|
109
|
-
*/
|
|
110
|
-
suiRpcUrl?: string;
|
|
111
|
-
/**
|
|
112
|
-
* Walrus network ('mainnet' | 'testnet')
|
|
113
|
-
*/
|
|
114
|
-
network?: 'mainnet' | 'testnet';
|
|
115
|
-
/**
|
|
116
|
-
* Number of epochs to store on Walrus (default: 5)
|
|
117
|
-
*/
|
|
118
|
-
epochs?: number;
|
|
119
|
-
/**
|
|
120
|
-
* Use upload relay (default: true)
|
|
121
|
-
*/
|
|
122
|
-
useUploadRelay?: boolean;
|
|
123
|
-
/**
|
|
124
|
-
* Callback when embedding is successfully stored
|
|
125
|
-
*/
|
|
126
|
-
onSuccess?: (result: StoreEmbeddingResult) => void;
|
|
127
|
-
/**
|
|
128
|
-
* Callback when an error occurs
|
|
129
|
-
*/
|
|
130
|
-
onError?: (error: Error) => void;
|
|
131
|
-
}
|
|
132
|
-
export interface UseStoreEmbeddingReturn {
|
|
133
|
-
/**
|
|
134
|
-
* Function to store embedding
|
|
135
|
-
*/
|
|
136
|
-
mutate: (input: StoreEmbeddingInput) => void;
|
|
137
|
-
/**
|
|
138
|
-
* Async version of mutate
|
|
139
|
-
*/
|
|
140
|
-
mutateAsync: (input: StoreEmbeddingInput) => Promise<StoreEmbeddingResult>;
|
|
141
|
-
/**
|
|
142
|
-
* Whether the operation is in progress
|
|
143
|
-
*/
|
|
144
|
-
isPending: boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Whether the operation succeeded
|
|
147
|
-
*/
|
|
148
|
-
isSuccess: boolean;
|
|
149
|
-
/**
|
|
150
|
-
* Whether the operation failed
|
|
151
|
-
*/
|
|
152
|
-
isError: boolean;
|
|
153
|
-
/**
|
|
154
|
-
* Result data if successful
|
|
155
|
-
*/
|
|
156
|
-
data?: StoreEmbeddingResult;
|
|
157
|
-
/**
|
|
158
|
-
* Error if operation failed
|
|
159
|
-
*/
|
|
160
|
-
error: Error | null;
|
|
161
|
-
/**
|
|
162
|
-
* Current progress message
|
|
163
|
-
*/
|
|
164
|
-
progress?: string;
|
|
165
|
-
/**
|
|
166
|
-
* Reset the mutation state
|
|
167
|
-
*/
|
|
168
|
-
reset: () => void;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Hook for storing vector embeddings
|
|
172
|
-
*/
|
|
173
|
-
export declare function useStoreEmbedding(options?: UseStoreEmbeddingOptions): UseStoreEmbeddingReturn;
|
|
174
|
-
//# sourceMappingURL=useStoreEmbedding.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStoreEmbedding.d.ts","sourceRoot":"","sources":["../../src/hooks.wip/useStoreEmbedding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC7C;;OAEG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3E;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CA6IzB"}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useStoreEmbedding - Hook for generating and storing vector embeddings
|
|
3
|
-
*
|
|
4
|
-
* Simplifies embedding storage with automatic:
|
|
5
|
-
* - Text to vector embedding conversion (768 dimensions)
|
|
6
|
-
* - Walrus storage upload
|
|
7
|
-
* - Loading states and error handling
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```tsx
|
|
11
|
-
* import { useStoreEmbedding } from 'personal-data-wallet-sdk/hooks';
|
|
12
|
-
* import { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit';
|
|
13
|
-
*
|
|
14
|
-
* function EmbeddingUploader() {
|
|
15
|
-
* const account = useCurrentAccount();
|
|
16
|
-
* const { mutateAsync: signAndExecute } = useSignAndExecuteTransaction();
|
|
17
|
-
* const { mutate: storeEmbedding, isPending, data } = useStoreEmbedding({
|
|
18
|
-
* onSuccess: (result) => {
|
|
19
|
-
* console.log('Embedding stored:', result.blobId);
|
|
20
|
-
* }
|
|
21
|
-
* });
|
|
22
|
-
*
|
|
23
|
-
* const handleStore = async () => {
|
|
24
|
-
* if (!account) return;
|
|
25
|
-
*
|
|
26
|
-
* storeEmbedding({
|
|
27
|
-
* content: 'The quick brown fox jumps over the lazy dog',
|
|
28
|
-
* type: 'document',
|
|
29
|
-
* signer: {
|
|
30
|
-
* signAndExecuteTransaction: signAndExecute
|
|
31
|
-
* }
|
|
32
|
-
* });
|
|
33
|
-
* };
|
|
34
|
-
*
|
|
35
|
-
* return (
|
|
36
|
-
* <div>
|
|
37
|
-
* <button onClick={handleStore} disabled={isPending || !account}>
|
|
38
|
-
* {isPending ? 'Storing...' : 'Store Embedding'}
|
|
39
|
-
* </button>
|
|
40
|
-
* {data && <div>Blob ID: {data.blobId}</div>}
|
|
41
|
-
* </div>
|
|
42
|
-
* );
|
|
43
|
-
* }
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
import { useMutation } from '@tanstack/react-query';
|
|
47
|
-
import { useState } from 'react';
|
|
48
|
-
import { EmbeddingService } from '../services/EmbeddingService.js';
|
|
49
|
-
import { StorageService } from '../services/StorageService.js';
|
|
50
|
-
import { SuiClient } from '@mysten/sui/client';
|
|
51
|
-
/**
|
|
52
|
-
* Hook for storing vector embeddings
|
|
53
|
-
*/
|
|
54
|
-
export function useStoreEmbedding(options = {}) {
|
|
55
|
-
const [progress, setProgress] = useState();
|
|
56
|
-
const mutation = useMutation({
|
|
57
|
-
mutationFn: async (input) => {
|
|
58
|
-
const { content, signer, type = 'document', metadata = {}, deletable = false } = input;
|
|
59
|
-
// Validate content
|
|
60
|
-
if (!content || content.trim().length === 0) {
|
|
61
|
-
throw new Error('Content cannot be empty');
|
|
62
|
-
}
|
|
63
|
-
if (!signer) {
|
|
64
|
-
throw new Error('Signer is required for storing embeddings on Walrus');
|
|
65
|
-
}
|
|
66
|
-
// Initialize services
|
|
67
|
-
const geminiApiKey = options.geminiApiKey || process.env.NEXT_PUBLIC_GEMINI_API_KEY;
|
|
68
|
-
if (!geminiApiKey) {
|
|
69
|
-
throw new Error('Gemini API key is required. Provide via options.geminiApiKey or NEXT_PUBLIC_GEMINI_API_KEY env variable');
|
|
70
|
-
}
|
|
71
|
-
const packageId = options.packageId || process.env.NEXT_PUBLIC_PACKAGE_ID;
|
|
72
|
-
if (!packageId) {
|
|
73
|
-
throw new Error('Package ID is required. Provide via options.packageId or NEXT_PUBLIC_PACKAGE_ID env variable');
|
|
74
|
-
}
|
|
75
|
-
const suiRpcUrl = options.suiRpcUrl ||
|
|
76
|
-
process.env.NEXT_PUBLIC_SUI_RPC_URL ||
|
|
77
|
-
'https://fullnode.testnet.sui.io:443';
|
|
78
|
-
const network = options.network || 'testnet';
|
|
79
|
-
// Step 1: Generate embedding
|
|
80
|
-
setProgress('Generating embedding...');
|
|
81
|
-
const embeddingService = new EmbeddingService({
|
|
82
|
-
apiKey: geminiApiKey,
|
|
83
|
-
model: 'text-embedding-004',
|
|
84
|
-
dimensions: 3072
|
|
85
|
-
});
|
|
86
|
-
const embeddingStartTime = Date.now();
|
|
87
|
-
const embeddingResult = await embeddingService.embedText({
|
|
88
|
-
text: content,
|
|
89
|
-
type: type === 'document' ? 'content' : type,
|
|
90
|
-
taskType: type === 'document' ? 'RETRIEVAL_DOCUMENT' :
|
|
91
|
-
type === 'query' ? 'RETRIEVAL_QUERY' :
|
|
92
|
-
'SEMANTIC_SIMILARITY'
|
|
93
|
-
});
|
|
94
|
-
const embeddingTime = Date.now() - embeddingStartTime;
|
|
95
|
-
console.log('✅ Embedding generated:', {
|
|
96
|
-
dimension: embeddingResult.dimension,
|
|
97
|
-
model: embeddingResult.model,
|
|
98
|
-
time: embeddingTime + 'ms'
|
|
99
|
-
});
|
|
100
|
-
// Step 2: Prepare data for storage
|
|
101
|
-
setProgress('Preparing data for storage...');
|
|
102
|
-
const storageData = {
|
|
103
|
-
vector: embeddingResult.vector,
|
|
104
|
-
dimension: embeddingResult.dimension,
|
|
105
|
-
model: embeddingResult.model,
|
|
106
|
-
contentPreview: content.substring(0, 200), // Store preview
|
|
107
|
-
contentLength: content.length,
|
|
108
|
-
embeddingType: type,
|
|
109
|
-
metadata,
|
|
110
|
-
timestamp: Date.now()
|
|
111
|
-
};
|
|
112
|
-
const dataBytes = new TextEncoder().encode(JSON.stringify(storageData));
|
|
113
|
-
console.log('📦 Data prepared:', dataBytes.length, 'bytes');
|
|
114
|
-
// Step 3: Upload to Walrus using StorageService
|
|
115
|
-
setProgress('Uploading to Walrus...');
|
|
116
|
-
const suiClient = new SuiClient({ url: suiRpcUrl });
|
|
117
|
-
const storageService = new StorageService({
|
|
118
|
-
packageId,
|
|
119
|
-
suiClient,
|
|
120
|
-
network,
|
|
121
|
-
useUploadRelay: options.useUploadRelay ?? true,
|
|
122
|
-
epochs: options.epochs || 5
|
|
123
|
-
});
|
|
124
|
-
const uploadStartTime = Date.now();
|
|
125
|
-
const result = await storageService.uploadBlob(dataBytes, {
|
|
126
|
-
signer,
|
|
127
|
-
deletable,
|
|
128
|
-
epochs: options.epochs || 5,
|
|
129
|
-
useUploadRelay: options.useUploadRelay ?? true
|
|
130
|
-
});
|
|
131
|
-
const uploadTime = Date.now() - uploadStartTime;
|
|
132
|
-
console.log('✅ Uploaded to Walrus:', {
|
|
133
|
-
blobId: result.blobId,
|
|
134
|
-
time: uploadTime + 'ms',
|
|
135
|
-
storageEpochs: result.storageEpochs
|
|
136
|
-
});
|
|
137
|
-
setProgress(undefined);
|
|
138
|
-
return {
|
|
139
|
-
blobId: result.blobId,
|
|
140
|
-
vector: embeddingResult.vector,
|
|
141
|
-
dimension: embeddingResult.dimension,
|
|
142
|
-
model: embeddingResult.model,
|
|
143
|
-
embeddingTime,
|
|
144
|
-
uploadTime
|
|
145
|
-
};
|
|
146
|
-
},
|
|
147
|
-
onSuccess: (data) => {
|
|
148
|
-
options.onSuccess?.(data);
|
|
149
|
-
},
|
|
150
|
-
onError: (error) => {
|
|
151
|
-
setProgress(undefined);
|
|
152
|
-
options.onError?.(error);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
return {
|
|
156
|
-
mutate: mutation.mutate,
|
|
157
|
-
mutateAsync: mutation.mutateAsync,
|
|
158
|
-
isPending: mutation.isPending,
|
|
159
|
-
isSuccess: mutation.isSuccess,
|
|
160
|
-
isError: mutation.isError,
|
|
161
|
-
data: mutation.data,
|
|
162
|
-
error: mutation.error,
|
|
163
|
-
progress,
|
|
164
|
-
reset: mutation.reset
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=useStoreEmbedding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStoreEmbedding.js","sourceRoot":"","sources":["../../src/hooks.wip/useStoreEmbedding.ts"],"names":[],"mappings":"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"}
|