@cmdoss/memwal-sdk 0.6.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +547 -547
- package/BENCHMARKS.md +238 -238
- package/README.md +310 -181
- package/dist/ai-sdk/tools.d.ts +2 -2
- package/dist/ai-sdk/tools.js +2 -2
- package/dist/client/ClientMemoryManager.js +2 -2
- package/dist/client/ClientMemoryManager.js.map +1 -1
- package/dist/client/PersonalDataWallet.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.d.ts +29 -1
- package/dist/client/SimplePDWClient.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.js +45 -13
- package/dist/client/SimplePDWClient.js.map +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
- package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/MemoryNamespace.js +272 -39
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
- package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
- package/dist/config/ConfigurationHelper.js +61 -61
- package/dist/config/defaults.js +2 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/graph/GraphService.js +21 -21
- package/dist/graph/GraphService.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
- package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.js +37 -15
- package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
- package/dist/infrastructure/seal/SealService.d.ts +13 -5
- package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
- package/dist/infrastructure/seal/SealService.js +36 -34
- package/dist/infrastructure/seal/SealService.js.map +1 -1
- package/dist/langchain/createPDWRAG.js +30 -30
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.js +44 -4
- package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
- package/dist/services/CapabilityService.d.ts.map +1 -1
- package/dist/services/CapabilityService.js +30 -14
- package/dist/services/CapabilityService.js.map +1 -1
- package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
- package/dist/services/CrossContextPermissionService.js +9 -7
- package/dist/services/CrossContextPermissionService.js.map +1 -1
- package/dist/services/EmbeddingService.d.ts +28 -1
- package/dist/services/EmbeddingService.d.ts.map +1 -1
- package/dist/services/EmbeddingService.js +54 -0
- package/dist/services/EmbeddingService.js.map +1 -1
- package/dist/services/EncryptionService.d.ts.map +1 -1
- package/dist/services/EncryptionService.js +6 -5
- package/dist/services/EncryptionService.js.map +1 -1
- package/dist/services/GeminiAIService.js +309 -309
- package/dist/services/IndexManager.d.ts +5 -1
- package/dist/services/IndexManager.d.ts.map +1 -1
- package/dist/services/IndexManager.js +17 -40
- package/dist/services/IndexManager.js.map +1 -1
- package/dist/services/QueryService.js +1 -1
- package/dist/services/QueryService.js.map +1 -1
- package/dist/services/StorageService.d.ts +11 -0
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js +73 -10
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/TransactionService.d.ts +20 -0
- package/dist/services/TransactionService.d.ts.map +1 -1
- package/dist/services/TransactionService.js +43 -0
- package/dist/services/TransactionService.js.map +1 -1
- package/dist/services/ViewService.js +2 -2
- package/dist/services/ViewService.js.map +1 -1
- package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
- package/dist/services/storage/QuiltBatchManager.js +410 -20
- package/dist/services/storage/QuiltBatchManager.js.map +1 -1
- package/dist/services/storage/index.d.ts +1 -1
- package/dist/services/storage/index.d.ts.map +1 -1
- package/dist/services/storage/index.js.map +1 -1
- package/dist/utils/LRUCache.d.ts +106 -0
- package/dist/utils/LRUCache.d.ts.map +1 -0
- package/dist/utils/LRUCache.js +281 -0
- package/dist/utils/LRUCache.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/memoryIndexOnChain.d.ts +212 -0
- package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
- package/dist/utils/memoryIndexOnChain.js +312 -0
- package/dist/utils/memoryIndexOnChain.js.map +1 -0
- package/dist/utils/rebuildIndexNode.d.ts +29 -0
- package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
- package/dist/utils/rebuildIndexNode.js +366 -98
- package/dist/utils/rebuildIndexNode.js.map +1 -1
- package/dist/vector/HnswWasmService.d.ts +20 -5
- package/dist/vector/HnswWasmService.d.ts.map +1 -1
- package/dist/vector/HnswWasmService.js +73 -40
- package/dist/vector/HnswWasmService.js.map +1 -1
- package/dist/vector/IHnswService.d.ts +10 -1
- package/dist/vector/IHnswService.d.ts.map +1 -1
- package/dist/vector/IHnswService.js.map +1 -1
- package/dist/vector/NodeHnswService.d.ts +16 -0
- package/dist/vector/NodeHnswService.d.ts.map +1 -1
- package/dist/vector/NodeHnswService.js +84 -5
- package/dist/vector/NodeHnswService.js.map +1 -1
- package/dist/vector/createHnswService.d.ts +1 -1
- package/dist/vector/createHnswService.js +1 -1
- package/dist/vector/index.d.ts +1 -1
- package/dist/vector/index.js +1 -1
- package/package.json +157 -157
- package/src/access/PermissionService.ts +635 -635
- package/src/aggregation/AggregationService.ts +389 -389
- package/src/ai-sdk/PDWVectorStore.ts +715 -715
- package/src/ai-sdk/index.ts +65 -65
- package/src/ai-sdk/tools.ts +460 -460
- package/src/ai-sdk/types.ts +404 -404
- package/src/batch/BatchManager.ts +597 -597
- package/src/batch/BatchingService.ts +429 -429
- package/src/batch/MemoryProcessingCache.ts +492 -492
- package/src/batch/index.ts +30 -30
- package/src/browser.ts +200 -200
- package/src/client/ClientMemoryManager.ts +987 -987
- package/src/client/PersonalDataWallet.ts +345 -345
- package/src/client/SimplePDWClient.ts +1289 -1222
- package/src/client/factory.ts +154 -154
- package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
- package/src/client/namespaces/BatchNamespace.ts +356 -356
- package/src/client/namespaces/CacheNamespace.ts +123 -123
- package/src/client/namespaces/CapabilityNamespace.ts +217 -217
- package/src/client/namespaces/ClassifyNamespace.ts +169 -169
- package/src/client/namespaces/ContextNamespace.ts +297 -297
- package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
- package/src/client/namespaces/EncryptionNamespace.ts +221 -221
- package/src/client/namespaces/GraphNamespace.ts +468 -468
- package/src/client/namespaces/IndexNamespace.ts +361 -361
- package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
- package/src/client/namespaces/PermissionsNamespace.ts +254 -254
- package/src/client/namespaces/PipelineNamespace.ts +220 -220
- package/src/client/namespaces/SearchNamespace.ts +1049 -1049
- package/src/client/namespaces/StorageNamespace.ts +458 -458
- package/src/client/namespaces/TxNamespace.ts +260 -260
- package/src/client/namespaces/WalletNamespace.ts +243 -243
- package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
- package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
- package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
- package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
- package/src/client/namespaces/consolidated/index.ts +39 -39
- package/src/client/signers/KeypairSigner.ts +108 -108
- package/src/client/signers/UnifiedSigner.ts +110 -110
- package/src/client/signers/WalletAdapterSigner.ts +159 -159
- package/src/client/signers/index.ts +26 -26
- package/src/config/ConfigurationHelper.ts +412 -412
- package/src/config/defaults.ts +51 -51
- package/src/config/index.ts +8 -8
- package/src/config/validation.ts +70 -70
- package/src/core/index.ts +14 -14
- package/src/core/interfaces/IService.ts +307 -307
- package/src/core/interfaces/index.ts +8 -8
- package/src/core/types/capability.ts +297 -297
- package/src/core/types/index.ts +870 -870
- package/src/core/types/wallet.ts +270 -270
- package/src/core/types.ts +9 -9
- package/src/core/wallet.ts +222 -222
- package/src/embedding/index.ts +19 -19
- package/src/embedding/types.ts +357 -357
- package/src/errors/index.ts +602 -602
- package/src/errors/recovery.ts +461 -461
- package/src/errors/validation.ts +567 -567
- package/src/generated/pdw/capability.ts +319 -319
- package/src/graph/GraphService.ts +887 -887
- package/src/graph/KnowledgeGraphManager.ts +728 -728
- package/src/graph/index.ts +25 -25
- package/src/index.ts +498 -474
- package/src/infrastructure/index.ts +22 -22
- package/src/infrastructure/seal/EncryptionService.ts +628 -603
- package/src/infrastructure/seal/SealService.ts +613 -615
- package/src/infrastructure/seal/index.ts +9 -9
- package/src/infrastructure/sui/BlockchainManager.ts +627 -627
- package/src/infrastructure/sui/SuiService.ts +888 -888
- package/src/infrastructure/sui/index.ts +9 -9
- package/src/infrastructure/walrus/StorageManager.ts +604 -604
- package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
- package/src/infrastructure/walrus/index.ts +9 -9
- package/src/langchain/PDWEmbeddings.ts +145 -145
- package/src/langchain/PDWVectorStore.ts +456 -456
- package/src/langchain/createPDWRAG.ts +303 -303
- package/src/langchain/index.ts +47 -47
- package/src/permissions/ConsentRepository.browser.ts +249 -249
- package/src/permissions/ConsentRepository.ts +364 -364
- package/src/pipeline/MemoryPipeline.ts +862 -862
- package/src/pipeline/PipelineManager.ts +683 -683
- package/src/pipeline/index.ts +26 -26
- package/src/retrieval/AdvancedSearchService.ts +629 -629
- package/src/retrieval/MemoryAnalyticsService.ts +711 -711
- package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
- package/src/retrieval/MemoryRetrievalService.ts +904 -830
- package/src/retrieval/index.ts +42 -42
- package/src/services/BatchService.ts +352 -352
- package/src/services/CapabilityService.ts +464 -448
- package/src/services/ClassifierService.ts +465 -465
- package/src/services/CrossContextPermissionService.ts +486 -484
- package/src/services/EmbeddingService.ts +771 -706
- package/src/services/EncryptionService.ts +712 -711
- package/src/services/GeminiAIService.ts +753 -753
- package/src/services/IndexManager.ts +977 -1004
- package/src/services/MemoryIndexService.ts +1003 -1003
- package/src/services/MemoryService.ts +369 -369
- package/src/services/QueryService.ts +890 -890
- package/src/services/StorageService.ts +1182 -1111
- package/src/services/TransactionService.ts +838 -790
- package/src/services/VectorService.ts +462 -462
- package/src/services/ViewService.ts +484 -484
- package/src/services/index.ts +25 -25
- package/src/services/storage/BlobAttributesManager.ts +333 -333
- package/src/services/storage/KnowledgeGraphManager.ts +425 -425
- package/src/services/storage/MemorySearchManager.ts +387 -387
- package/src/services/storage/QuiltBatchManager.ts +1130 -660
- package/src/services/storage/WalrusMetadataManager.ts +268 -268
- package/src/services/storage/WalrusStorageManager.ts +287 -287
- package/src/services/storage/index.ts +57 -52
- package/src/types/index.ts +13 -13
- package/src/utils/LRUCache.ts +378 -0
- package/src/utils/index.ts +76 -68
- package/src/utils/memoryIndexOnChain.ts +507 -0
- package/src/utils/rebuildIndex.ts +290 -290
- package/src/utils/rebuildIndexNode.ts +771 -424
- package/src/vector/BrowserHnswIndexService.ts +758 -758
- package/src/vector/HnswWasmService.ts +731 -679
- package/src/vector/IHnswService.ts +233 -224
- package/src/vector/NodeHnswService.ts +833 -735
- package/src/vector/VectorManager.ts +478 -478
- package/src/vector/createHnswService.ts +135 -135
- package/src/vector/index.ts +56 -56
- package/src/wallet/ContextWalletService.ts +656 -656
- package/src/wallet/MainWalletService.ts +317 -317
|
@@ -1,260 +1,260 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tx Namespace - Transaction Utilities
|
|
3
|
-
*
|
|
4
|
-
* Pure delegation to TransactionService for PTB building and execution.
|
|
5
|
-
* Provides convenient methods for common blockchain operations.
|
|
6
|
-
*
|
|
7
|
-
* @module client/namespaces
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { ServiceContainer } from '../SimplePDWClient';
|
|
11
|
-
import { Transaction } from '@mysten/sui/transactions';
|
|
12
|
-
import type { TransactionResult } from '../../types';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Memory transaction options
|
|
16
|
-
*/
|
|
17
|
-
export interface MemoryTxOptions {
|
|
18
|
-
category: string;
|
|
19
|
-
vectorId: number;
|
|
20
|
-
blobId: string;
|
|
21
|
-
importance: number;
|
|
22
|
-
gasBudget?: number;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Batch operation types supported by PTB
|
|
27
|
-
*/
|
|
28
|
-
export type BatchOperationType = 'createMemory' | 'updateMemory' | 'deleteMemory' | 'createCap' | 'transferCap' | 'burnCap';
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Batch operation definition
|
|
32
|
-
*/
|
|
33
|
-
export interface BatchOperation {
|
|
34
|
-
type: BatchOperationType;
|
|
35
|
-
options: any;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Tx Namespace
|
|
40
|
-
*
|
|
41
|
-
* Handles transaction building and execution utilities
|
|
42
|
-
*/
|
|
43
|
-
export class TxNamespace {
|
|
44
|
-
constructor(private services: ServiceContainer) {}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Build transaction for creating memory record
|
|
48
|
-
*
|
|
49
|
-
* Delegates to: TransactionService.buildCreateMemoryRecordLightweight()
|
|
50
|
-
*
|
|
51
|
-
* @param options - Memory creation options
|
|
52
|
-
* @returns Transaction object
|
|
53
|
-
*/
|
|
54
|
-
buildCreate(options: MemoryTxOptions): Transaction {
|
|
55
|
-
if (!this.services.tx) {
|
|
56
|
-
throw new Error('Transaction service not configured.');
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return this.services.tx.buildCreateMemoryRecordLightweight({
|
|
60
|
-
category: options.category,
|
|
61
|
-
vectorId: options.vectorId,
|
|
62
|
-
blobId: options.blobId,
|
|
63
|
-
importance: options.importance,
|
|
64
|
-
gasBudget: options.gasBudget
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Build transaction for updating memory metadata
|
|
70
|
-
*
|
|
71
|
-
* Delegates to: TransactionService.buildUpdateMemoryMetadata()
|
|
72
|
-
*
|
|
73
|
-
* @param memoryId - Memory ID to update
|
|
74
|
-
* @param metadataBlobId - New metadata blob ID
|
|
75
|
-
* @returns Transaction object
|
|
76
|
-
*/
|
|
77
|
-
buildUpdate(memoryId: string, metadataBlobId: string): Transaction {
|
|
78
|
-
if (!this.services.tx) {
|
|
79
|
-
throw new Error('Transaction service not configured.');
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return this.services.tx.buildUpdateMemoryMetadata({
|
|
83
|
-
memoryId,
|
|
84
|
-
metadataBlobId,
|
|
85
|
-
embeddingDimension: 3072 // Default for Gemini
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Build transaction for deleting memory record
|
|
91
|
-
*
|
|
92
|
-
* Delegates to: TransactionService.buildDeleteMemoryRecord()
|
|
93
|
-
*
|
|
94
|
-
* @param memoryId - Memory ID to delete
|
|
95
|
-
* @returns Transaction object
|
|
96
|
-
*/
|
|
97
|
-
buildDelete(memoryId: string): Transaction {
|
|
98
|
-
if (!this.services.tx) {
|
|
99
|
-
throw new Error('Transaction service not configured.');
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return this.services.tx.buildDeleteMemoryRecord({
|
|
103
|
-
memoryId
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Execute a transaction
|
|
109
|
-
*
|
|
110
|
-
* Delegates to: TransactionService.executeTransaction()
|
|
111
|
-
*
|
|
112
|
-
* @param tx - Transaction to execute
|
|
113
|
-
* @returns Transaction result with digest and status
|
|
114
|
-
*/
|
|
115
|
-
async execute(tx: Transaction): Promise<TransactionResult> {
|
|
116
|
-
if (!this.services.tx) {
|
|
117
|
-
throw new Error('Transaction service not configured.');
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return await this.services.tx.executeTransaction(
|
|
121
|
-
tx,
|
|
122
|
-
this.services.config.signer.getSigner()
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Build and execute in one call
|
|
128
|
-
*
|
|
129
|
-
* Convenience method combining build + execute
|
|
130
|
-
*
|
|
131
|
-
* @param options - Memory creation options
|
|
132
|
-
* @returns Transaction result
|
|
133
|
-
*/
|
|
134
|
-
async createMemory(options: MemoryTxOptions): Promise<TransactionResult> {
|
|
135
|
-
const tx = this.buildCreate(options);
|
|
136
|
-
return await this.execute(tx);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Build batch transaction (combine multiple operations into single PTB)
|
|
141
|
-
*
|
|
142
|
-
* Delegates to TransactionService.buildBatchTransaction() for proper PTB composition.
|
|
143
|
-
* All operations are executed atomically in a single transaction.
|
|
144
|
-
*
|
|
145
|
-
* @param operations - Array of typed operations to batch
|
|
146
|
-
* @returns Combined transaction with all move calls
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* ```typescript
|
|
150
|
-
* const tx = pdw.tx.buildBatch([
|
|
151
|
-
* { type: 'createMemory', options: { category: 'note', vectorId: 1, blobId: 'abc', importance: 5 } },
|
|
152
|
-
* { type: 'createMemory', options: { category: 'task', vectorId: 2, blobId: 'def', importance: 7 } },
|
|
153
|
-
* ]);
|
|
154
|
-
* const result = await pdw.tx.execute(tx);
|
|
155
|
-
* ```
|
|
156
|
-
*/
|
|
157
|
-
buildBatch(operations: BatchOperation[]): Transaction {
|
|
158
|
-
if (!this.services.tx) {
|
|
159
|
-
throw new Error('Transaction service not configured.');
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
return this.services.tx.buildBatchTransaction(operations);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Build and execute batch transaction in one call
|
|
167
|
-
*
|
|
168
|
-
* Convenience method combining buildBatch + execute
|
|
169
|
-
*
|
|
170
|
-
* @param operations - Array of typed operations to batch
|
|
171
|
-
* @param gasBudget - Optional gas budget override
|
|
172
|
-
* @returns Transaction result with digest and status
|
|
173
|
-
*
|
|
174
|
-
* @example
|
|
175
|
-
* ```typescript
|
|
176
|
-
* const result = await pdw.tx.executeBatch([
|
|
177
|
-
* { type: 'createMemory', options: { ... } },
|
|
178
|
-
* { type: 'deleteMemory', options: { memoryId: '0x123' } },
|
|
179
|
-
* ]);
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
async executeBatch(operations: BatchOperation[], gasBudget?: number): Promise<TransactionResult> {
|
|
183
|
-
if (!this.services.tx) {
|
|
184
|
-
throw new Error('Transaction service not configured.');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return await this.services.tx.executeBatch(
|
|
188
|
-
operations,
|
|
189
|
-
this.services.config.signer.getSigner(),
|
|
190
|
-
{ gasBudget }
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Estimate gas cost for transaction
|
|
196
|
-
*
|
|
197
|
-
* Dry-runs transaction to estimate gas
|
|
198
|
-
*
|
|
199
|
-
* @param tx - Transaction to estimate
|
|
200
|
-
* @returns Estimated gas cost
|
|
201
|
-
*/
|
|
202
|
-
async estimateGas(tx: Transaction): Promise<number> {
|
|
203
|
-
if (!this.services.tx) {
|
|
204
|
-
throw new Error('Transaction service not configured.');
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
try {
|
|
208
|
-
// Use Sui client to dry-run
|
|
209
|
-
const dryRun = await this.services.config.sui.client.dryRunTransactionBlock({
|
|
210
|
-
transactionBlock: await tx.build({ client: this.services.config.sui.client })
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
const gasUsed = dryRun.effects.gasUsed;
|
|
214
|
-
const totalGas =
|
|
215
|
-
Number(gasUsed.computationCost) +
|
|
216
|
-
Number(gasUsed.storageCost) -
|
|
217
|
-
Number(gasUsed.storageRebate);
|
|
218
|
-
|
|
219
|
-
return totalGas;
|
|
220
|
-
} catch (error) {
|
|
221
|
-
throw new Error(`Gas estimation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Wait for transaction confirmation
|
|
227
|
-
*
|
|
228
|
-
* Waits for transaction to be confirmed on-chain
|
|
229
|
-
*
|
|
230
|
-
* @param digest - Transaction digest
|
|
231
|
-
* @returns Transaction effects
|
|
232
|
-
*/
|
|
233
|
-
async waitForConfirmation(digest: string): Promise<TransactionResult> {
|
|
234
|
-
if (!this.services.tx) {
|
|
235
|
-
throw new Error('Transaction service not configured.');
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
try {
|
|
239
|
-
const result = await this.services.config.sui.client.waitForTransaction({
|
|
240
|
-
digest,
|
|
241
|
-
options: {
|
|
242
|
-
showEffects: true,
|
|
243
|
-
showObjectChanges: true,
|
|
244
|
-
showEvents: true
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
return {
|
|
249
|
-
digest: result.digest,
|
|
250
|
-
status: result.effects?.status?.status === 'success' ? 'success' : 'failure',
|
|
251
|
-
effects: result.effects,
|
|
252
|
-
gasUsed: result.effects?.gasUsed?.computationCost
|
|
253
|
-
? Number(result.effects.gasUsed.computationCost)
|
|
254
|
-
: undefined
|
|
255
|
-
};
|
|
256
|
-
} catch (error) {
|
|
257
|
-
throw new Error(`Wait for confirmation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Tx Namespace - Transaction Utilities
|
|
3
|
+
*
|
|
4
|
+
* Pure delegation to TransactionService for PTB building and execution.
|
|
5
|
+
* Provides convenient methods for common blockchain operations.
|
|
6
|
+
*
|
|
7
|
+
* @module client/namespaces
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ServiceContainer } from '../SimplePDWClient';
|
|
11
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
12
|
+
import type { TransactionResult } from '../../types';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Memory transaction options
|
|
16
|
+
*/
|
|
17
|
+
export interface MemoryTxOptions {
|
|
18
|
+
category: string;
|
|
19
|
+
vectorId: number;
|
|
20
|
+
blobId: string;
|
|
21
|
+
importance: number;
|
|
22
|
+
gasBudget?: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Batch operation types supported by PTB
|
|
27
|
+
*/
|
|
28
|
+
export type BatchOperationType = 'createMemory' | 'updateMemory' | 'deleteMemory' | 'createCap' | 'transferCap' | 'burnCap';
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Batch operation definition
|
|
32
|
+
*/
|
|
33
|
+
export interface BatchOperation {
|
|
34
|
+
type: BatchOperationType;
|
|
35
|
+
options: any;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Tx Namespace
|
|
40
|
+
*
|
|
41
|
+
* Handles transaction building and execution utilities
|
|
42
|
+
*/
|
|
43
|
+
export class TxNamespace {
|
|
44
|
+
constructor(private services: ServiceContainer) {}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Build transaction for creating memory record
|
|
48
|
+
*
|
|
49
|
+
* Delegates to: TransactionService.buildCreateMemoryRecordLightweight()
|
|
50
|
+
*
|
|
51
|
+
* @param options - Memory creation options
|
|
52
|
+
* @returns Transaction object
|
|
53
|
+
*/
|
|
54
|
+
buildCreate(options: MemoryTxOptions): Transaction {
|
|
55
|
+
if (!this.services.tx) {
|
|
56
|
+
throw new Error('Transaction service not configured.');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return this.services.tx.buildCreateMemoryRecordLightweight({
|
|
60
|
+
category: options.category,
|
|
61
|
+
vectorId: options.vectorId,
|
|
62
|
+
blobId: options.blobId,
|
|
63
|
+
importance: options.importance,
|
|
64
|
+
gasBudget: options.gasBudget
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Build transaction for updating memory metadata
|
|
70
|
+
*
|
|
71
|
+
* Delegates to: TransactionService.buildUpdateMemoryMetadata()
|
|
72
|
+
*
|
|
73
|
+
* @param memoryId - Memory ID to update
|
|
74
|
+
* @param metadataBlobId - New metadata blob ID
|
|
75
|
+
* @returns Transaction object
|
|
76
|
+
*/
|
|
77
|
+
buildUpdate(memoryId: string, metadataBlobId: string): Transaction {
|
|
78
|
+
if (!this.services.tx) {
|
|
79
|
+
throw new Error('Transaction service not configured.');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return this.services.tx.buildUpdateMemoryMetadata({
|
|
83
|
+
memoryId,
|
|
84
|
+
metadataBlobId,
|
|
85
|
+
embeddingDimension: 3072 // Default for Gemini
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Build transaction for deleting memory record
|
|
91
|
+
*
|
|
92
|
+
* Delegates to: TransactionService.buildDeleteMemoryRecord()
|
|
93
|
+
*
|
|
94
|
+
* @param memoryId - Memory ID to delete
|
|
95
|
+
* @returns Transaction object
|
|
96
|
+
*/
|
|
97
|
+
buildDelete(memoryId: string): Transaction {
|
|
98
|
+
if (!this.services.tx) {
|
|
99
|
+
throw new Error('Transaction service not configured.');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return this.services.tx.buildDeleteMemoryRecord({
|
|
103
|
+
memoryId
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Execute a transaction
|
|
109
|
+
*
|
|
110
|
+
* Delegates to: TransactionService.executeTransaction()
|
|
111
|
+
*
|
|
112
|
+
* @param tx - Transaction to execute
|
|
113
|
+
* @returns Transaction result with digest and status
|
|
114
|
+
*/
|
|
115
|
+
async execute(tx: Transaction): Promise<TransactionResult> {
|
|
116
|
+
if (!this.services.tx) {
|
|
117
|
+
throw new Error('Transaction service not configured.');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return await this.services.tx.executeTransaction(
|
|
121
|
+
tx,
|
|
122
|
+
this.services.config.signer.getSigner()
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Build and execute in one call
|
|
128
|
+
*
|
|
129
|
+
* Convenience method combining build + execute
|
|
130
|
+
*
|
|
131
|
+
* @param options - Memory creation options
|
|
132
|
+
* @returns Transaction result
|
|
133
|
+
*/
|
|
134
|
+
async createMemory(options: MemoryTxOptions): Promise<TransactionResult> {
|
|
135
|
+
const tx = this.buildCreate(options);
|
|
136
|
+
return await this.execute(tx);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Build batch transaction (combine multiple operations into single PTB)
|
|
141
|
+
*
|
|
142
|
+
* Delegates to TransactionService.buildBatchTransaction() for proper PTB composition.
|
|
143
|
+
* All operations are executed atomically in a single transaction.
|
|
144
|
+
*
|
|
145
|
+
* @param operations - Array of typed operations to batch
|
|
146
|
+
* @returns Combined transaction with all move calls
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const tx = pdw.tx.buildBatch([
|
|
151
|
+
* { type: 'createMemory', options: { category: 'note', vectorId: 1, blobId: 'abc', importance: 5 } },
|
|
152
|
+
* { type: 'createMemory', options: { category: 'task', vectorId: 2, blobId: 'def', importance: 7 } },
|
|
153
|
+
* ]);
|
|
154
|
+
* const result = await pdw.tx.execute(tx);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
buildBatch(operations: BatchOperation[]): Transaction {
|
|
158
|
+
if (!this.services.tx) {
|
|
159
|
+
throw new Error('Transaction service not configured.');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return this.services.tx.buildBatchTransaction(operations);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Build and execute batch transaction in one call
|
|
167
|
+
*
|
|
168
|
+
* Convenience method combining buildBatch + execute
|
|
169
|
+
*
|
|
170
|
+
* @param operations - Array of typed operations to batch
|
|
171
|
+
* @param gasBudget - Optional gas budget override
|
|
172
|
+
* @returns Transaction result with digest and status
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* const result = await pdw.tx.executeBatch([
|
|
177
|
+
* { type: 'createMemory', options: { ... } },
|
|
178
|
+
* { type: 'deleteMemory', options: { memoryId: '0x123' } },
|
|
179
|
+
* ]);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
async executeBatch(operations: BatchOperation[], gasBudget?: number): Promise<TransactionResult> {
|
|
183
|
+
if (!this.services.tx) {
|
|
184
|
+
throw new Error('Transaction service not configured.');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return await this.services.tx.executeBatch(
|
|
188
|
+
operations,
|
|
189
|
+
this.services.config.signer.getSigner(),
|
|
190
|
+
{ gasBudget }
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Estimate gas cost for transaction
|
|
196
|
+
*
|
|
197
|
+
* Dry-runs transaction to estimate gas
|
|
198
|
+
*
|
|
199
|
+
* @param tx - Transaction to estimate
|
|
200
|
+
* @returns Estimated gas cost
|
|
201
|
+
*/
|
|
202
|
+
async estimateGas(tx: Transaction): Promise<number> {
|
|
203
|
+
if (!this.services.tx) {
|
|
204
|
+
throw new Error('Transaction service not configured.');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
try {
|
|
208
|
+
// Use Sui client to dry-run
|
|
209
|
+
const dryRun = await this.services.config.sui.client.dryRunTransactionBlock({
|
|
210
|
+
transactionBlock: await tx.build({ client: this.services.config.sui.client })
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
const gasUsed = dryRun.effects.gasUsed;
|
|
214
|
+
const totalGas =
|
|
215
|
+
Number(gasUsed.computationCost) +
|
|
216
|
+
Number(gasUsed.storageCost) -
|
|
217
|
+
Number(gasUsed.storageRebate);
|
|
218
|
+
|
|
219
|
+
return totalGas;
|
|
220
|
+
} catch (error) {
|
|
221
|
+
throw new Error(`Gas estimation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Wait for transaction confirmation
|
|
227
|
+
*
|
|
228
|
+
* Waits for transaction to be confirmed on-chain
|
|
229
|
+
*
|
|
230
|
+
* @param digest - Transaction digest
|
|
231
|
+
* @returns Transaction effects
|
|
232
|
+
*/
|
|
233
|
+
async waitForConfirmation(digest: string): Promise<TransactionResult> {
|
|
234
|
+
if (!this.services.tx) {
|
|
235
|
+
throw new Error('Transaction service not configured.');
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
try {
|
|
239
|
+
const result = await this.services.config.sui.client.waitForTransaction({
|
|
240
|
+
digest,
|
|
241
|
+
options: {
|
|
242
|
+
showEffects: true,
|
|
243
|
+
showObjectChanges: true,
|
|
244
|
+
showEvents: true
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
return {
|
|
249
|
+
digest: result.digest,
|
|
250
|
+
status: result.effects?.status?.status === 'success' ? 'success' : 'failure',
|
|
251
|
+
effects: result.effects,
|
|
252
|
+
gasUsed: result.effects?.gasUsed?.computationCost
|
|
253
|
+
? Number(result.effects.gasUsed.computationCost)
|
|
254
|
+
: undefined
|
|
255
|
+
};
|
|
256
|
+
} catch (error) {
|
|
257
|
+
throw new Error(`Wait for confirmation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|