@cmdoss/memwal-sdk 0.8.0 → 1.0.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.
Files changed (209) hide show
  1. package/README.md +522 -160
  2. package/dist/client/ClientMemoryManager.d.ts.map +1 -1
  3. package/dist/client/ClientMemoryManager.js +25 -8
  4. package/dist/client/ClientMemoryManager.js.map +1 -1
  5. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  6. package/dist/client/SimplePDWClient.d.ts +62 -2
  7. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  8. package/dist/client/SimplePDWClient.js +96 -11
  9. package/dist/client/SimplePDWClient.js.map +1 -1
  10. package/dist/client/namespaces/IndexNamespace.d.ts +1 -1
  11. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  12. package/dist/client/namespaces/IndexNamespace.js +7 -4
  13. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  14. package/dist/client/namespaces/MemoryNamespace.d.ts +47 -0
  15. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  16. package/dist/client/namespaces/MemoryNamespace.js +257 -27
  17. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  18. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts +215 -0
  19. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts.map +1 -0
  20. package/dist/client/namespaces/consolidated/AdvancedNamespace.js +214 -0
  21. package/dist/client/namespaces/consolidated/AdvancedNamespace.js.map +1 -0
  22. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +3 -1
  23. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  24. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  25. package/dist/client/namespaces/consolidated/index.d.ts +1 -0
  26. package/dist/client/namespaces/consolidated/index.d.ts.map +1 -1
  27. package/dist/client/namespaces/consolidated/index.js +1 -0
  28. package/dist/client/namespaces/consolidated/index.js.map +1 -1
  29. package/dist/config/ConfigurationHelper.js +61 -61
  30. package/dist/config/defaults.d.ts.map +1 -1
  31. package/dist/config/defaults.js +9 -4
  32. package/dist/config/defaults.js.map +1 -1
  33. package/dist/config/index.d.ts +1 -0
  34. package/dist/config/index.d.ts.map +1 -1
  35. package/dist/config/index.js +2 -0
  36. package/dist/config/index.js.map +1 -1
  37. package/dist/config/modelDefaults.d.ts +67 -0
  38. package/dist/config/modelDefaults.d.ts.map +1 -0
  39. package/dist/config/modelDefaults.js +91 -0
  40. package/dist/config/modelDefaults.js.map +1 -0
  41. package/dist/core/types/index.d.ts +4 -0
  42. package/dist/core/types/index.d.ts.map +1 -1
  43. package/dist/core/types/index.js.map +1 -1
  44. package/dist/graph/GraphService.d.ts.map +1 -1
  45. package/dist/graph/GraphService.js +22 -21
  46. package/dist/graph/GraphService.js.map +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/infrastructure/walrus/WalrusStorageService.d.ts +6 -0
  52. package/dist/infrastructure/walrus/WalrusStorageService.d.ts.map +1 -1
  53. package/dist/infrastructure/walrus/WalrusStorageService.js +23 -4
  54. package/dist/infrastructure/walrus/WalrusStorageService.js.map +1 -1
  55. package/dist/langchain/createPDWRAG.js +30 -30
  56. package/dist/pipeline/MemoryPipeline.d.ts.map +1 -1
  57. package/dist/pipeline/MemoryPipeline.js +2 -1
  58. package/dist/pipeline/MemoryPipeline.js.map +1 -1
  59. package/dist/services/EmbeddingService.d.ts +9 -0
  60. package/dist/services/EmbeddingService.d.ts.map +1 -1
  61. package/dist/services/EmbeddingService.js +31 -10
  62. package/dist/services/EmbeddingService.js.map +1 -1
  63. package/dist/services/GeminiAIService.d.ts.map +1 -1
  64. package/dist/services/GeminiAIService.js +311 -310
  65. package/dist/services/GeminiAIService.js.map +1 -1
  66. package/dist/services/MemoryIndexService.d.ts +2 -0
  67. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  68. package/dist/services/MemoryIndexService.js +11 -4
  69. package/dist/services/MemoryIndexService.js.map +1 -1
  70. package/dist/services/StorageService.d.ts +4 -1
  71. package/dist/services/StorageService.d.ts.map +1 -1
  72. package/dist/services/StorageService.js.map +1 -1
  73. package/dist/services/VectorService.js +1 -1
  74. package/dist/services/VectorService.js.map +1 -1
  75. package/dist/services/storage/QuiltBatchManager.d.ts +7 -0
  76. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  77. package/dist/services/storage/QuiltBatchManager.js +24 -5
  78. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  79. package/dist/services/storage/WalrusStorageManager.d.ts +10 -1
  80. package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -1
  81. package/dist/services/storage/WalrusStorageManager.js +53 -12
  82. package/dist/services/storage/WalrusStorageManager.js.map +1 -1
  83. package/dist/vector/BrowserHnswIndexService.js +3 -3
  84. package/dist/vector/BrowserHnswIndexService.js.map +1 -1
  85. package/dist/vector/HnswWasmService.js +1 -1
  86. package/dist/vector/HnswWasmService.js.map +1 -1
  87. package/dist/vector/NodeHnswService.js +5 -5
  88. package/dist/vector/NodeHnswService.js.map +1 -1
  89. package/dist/vector/createHnswService.d.ts +4 -0
  90. package/dist/vector/createHnswService.d.ts.map +1 -1
  91. package/dist/vector/createHnswService.js +15 -3
  92. package/dist/vector/createHnswService.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/access/PermissionService.ts +635 -635
  95. package/src/aggregation/AggregationService.ts +389 -389
  96. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  97. package/src/ai-sdk/index.ts +65 -65
  98. package/src/ai-sdk/tools.ts +460 -460
  99. package/src/ai-sdk/types.ts +404 -404
  100. package/src/batch/BatchManager.ts +597 -597
  101. package/src/batch/BatchingService.ts +429 -429
  102. package/src/batch/MemoryProcessingCache.ts +492 -492
  103. package/src/batch/index.ts +30 -30
  104. package/src/browser.ts +200 -200
  105. package/src/client/ClientMemoryManager.ts +1004 -987
  106. package/src/client/PersonalDataWallet.ts +345 -345
  107. package/src/client/SimplePDWClient.ts +1387 -1289
  108. package/src/client/factory.ts +154 -154
  109. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  110. package/src/client/namespaces/BatchNamespace.ts +356 -356
  111. package/src/client/namespaces/CacheNamespace.ts +123 -123
  112. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  113. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  114. package/src/client/namespaces/ContextNamespace.ts +297 -297
  115. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  116. package/src/client/namespaces/GraphNamespace.ts +468 -468
  117. package/src/client/namespaces/IndexNamespace.ts +364 -361
  118. package/src/client/namespaces/MemoryNamespace.ts +1704 -1422
  119. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  120. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  121. package/src/client/namespaces/StorageNamespace.ts +458 -458
  122. package/src/client/namespaces/TxNamespace.ts +260 -260
  123. package/src/client/namespaces/WalletNamespace.ts +243 -243
  124. package/src/client/namespaces/consolidated/AdvancedNamespace.ts +264 -0
  125. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -607
  126. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  127. package/src/client/namespaces/consolidated/StorageNamespace.ts +1143 -1141
  128. package/src/client/namespaces/consolidated/index.ts +41 -39
  129. package/src/client/signers/KeypairSigner.ts +108 -108
  130. package/src/client/signers/UnifiedSigner.ts +110 -110
  131. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  132. package/src/client/signers/index.ts +26 -26
  133. package/src/config/ConfigurationHelper.ts +412 -412
  134. package/src/config/defaults.ts +56 -51
  135. package/src/config/index.ts +16 -9
  136. package/src/config/modelDefaults.ts +103 -0
  137. package/src/config/validation.ts +70 -70
  138. package/src/core/index.ts +14 -14
  139. package/src/core/interfaces/IService.ts +307 -307
  140. package/src/core/interfaces/index.ts +8 -8
  141. package/src/core/types/capability.ts +297 -297
  142. package/src/core/types/index.ts +874 -870
  143. package/src/core/types/wallet.ts +270 -270
  144. package/src/core/types.ts +9 -9
  145. package/src/core/wallet.ts +222 -222
  146. package/src/embedding/index.ts +19 -19
  147. package/src/embedding/types.ts +357 -357
  148. package/src/errors/index.ts +602 -602
  149. package/src/errors/recovery.ts +461 -461
  150. package/src/errors/validation.ts +567 -567
  151. package/src/generated/pdw/capability.ts +319 -319
  152. package/src/graph/GraphService.ts +888 -887
  153. package/src/graph/KnowledgeGraphManager.ts +728 -728
  154. package/src/graph/index.ts +25 -25
  155. package/src/index.ts +498 -498
  156. package/src/infrastructure/index.ts +22 -22
  157. package/src/infrastructure/seal/EncryptionService.ts +628 -628
  158. package/src/infrastructure/seal/SealService.ts +613 -613
  159. package/src/infrastructure/seal/index.ts +9 -9
  160. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  161. package/src/infrastructure/sui/SuiService.ts +888 -888
  162. package/src/infrastructure/sui/index.ts +9 -9
  163. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  164. package/src/infrastructure/walrus/WalrusStorageService.ts +637 -612
  165. package/src/infrastructure/walrus/index.ts +9 -9
  166. package/src/langchain/createPDWRAG.ts +303 -303
  167. package/src/langchain/index.ts +47 -47
  168. package/src/permissions/ConsentRepository.browser.ts +249 -249
  169. package/src/permissions/ConsentRepository.ts +364 -364
  170. package/src/pipeline/MemoryPipeline.ts +863 -862
  171. package/src/pipeline/PipelineManager.ts +683 -683
  172. package/src/pipeline/index.ts +26 -26
  173. package/src/retrieval/AdvancedSearchService.ts +629 -629
  174. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  175. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -825
  176. package/src/retrieval/index.ts +42 -42
  177. package/src/services/BatchService.ts +352 -352
  178. package/src/services/CapabilityService.ts +464 -464
  179. package/src/services/ClassifierService.ts +465 -465
  180. package/src/services/CrossContextPermissionService.ts +486 -486
  181. package/src/services/EmbeddingService.ts +796 -771
  182. package/src/services/EncryptionService.ts +712 -712
  183. package/src/services/GeminiAIService.ts +754 -753
  184. package/src/services/MemoryIndexService.ts +1009 -1003
  185. package/src/services/MemoryService.ts +369 -369
  186. package/src/services/QueryService.ts +890 -890
  187. package/src/services/StorageService.ts +1185 -1182
  188. package/src/services/TransactionService.ts +838 -838
  189. package/src/services/VectorService.ts +462 -462
  190. package/src/services/ViewService.ts +484 -484
  191. package/src/services/index.ts +25 -25
  192. package/src/services/storage/BlobAttributesManager.ts +333 -333
  193. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  194. package/src/services/storage/MemorySearchManager.ts +387 -387
  195. package/src/services/storage/QuiltBatchManager.ts +1157 -1130
  196. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  197. package/src/services/storage/WalrusStorageManager.ts +333 -287
  198. package/src/services/storage/index.ts +57 -57
  199. package/src/types/index.ts +13 -13
  200. package/src/utils/index.ts +76 -76
  201. package/src/utils/memoryIndexOnChain.ts +507 -507
  202. package/src/vector/BrowserHnswIndexService.ts +758 -758
  203. package/src/vector/HnswWasmService.ts +731 -731
  204. package/src/vector/IHnswService.ts +233 -233
  205. package/src/vector/NodeHnswService.ts +833 -833
  206. package/src/vector/createHnswService.ts +147 -135
  207. package/src/vector/index.ts +56 -56
  208. package/src/wallet/ContextWalletService.ts +656 -656
  209. package/src/wallet/MainWalletService.ts +317 -317
@@ -1,370 +1,370 @@
1
- /**
2
- * Memory Service
3
- *
4
- * Handles memory-related blockchain operations including transaction builders,
5
- * move calls, and view functions for on-chain memory data.
6
- *
7
- * Note: This service provides direct blockchain access. For high-level memory
8
- * operations (create, search), use SimplePDWClient's memory namespace instead.
9
- */
10
-
11
- import type {
12
- ClientWithCoreApi,
13
- PDWConfig,
14
- MemoryCreateOptions,
15
- MemorySearchOptions,
16
- MemorySearchResult,
17
- MemoryContext,
18
- MemoryContextOptions,
19
- MemoryStatsResponse,
20
- Thunk,
21
- AsyncThunk
22
- } from '../types';
23
- import { Transaction } from '@mysten/sui/transactions';
24
- import * as memoryContract from '../generated/pdw/memory';
25
-
26
- export class MemoryService {
27
- constructor(
28
- private client: ClientWithCoreApi,
29
- private config: PDWConfig
30
- ) {}
31
-
32
- // ==================== TRANSACTION BUILDERS ====================
33
-
34
- get tx() {
35
- return {
36
- /**
37
- * Create transaction for memory record on blockchain
38
- */
39
- createMemoryRecord: async (options: {
40
- category: string;
41
- vectorId: number | bigint;
42
- blobId: string;
43
- metadata: {
44
- contentType: string;
45
- contentSize: number | bigint;
46
- contentHash: string;
47
- category: string;
48
- topic: string;
49
- importance: number;
50
- embeddingBlobId: string;
51
- embeddingDimension: number | bigint;
52
- createdTimestamp: number | bigint;
53
- updatedTimestamp: number | bigint;
54
- customMetadata?: Record<string, string>;
55
- };
56
- }) => {
57
- const tx = new Transaction();
58
-
59
- // Create the memory record with inline metadata
60
- const memoryRecord = memoryContract.createMemoryRecord({
61
- package: this.config.packageId,
62
- arguments: {
63
- category: Array.from(new TextEncoder().encode(options.category)),
64
- vectorId: options.vectorId,
65
- blobId: Array.from(new TextEncoder().encode(options.blobId)),
66
- contentType: Array.from(new TextEncoder().encode(options.metadata.contentType)),
67
- contentSize: options.metadata.contentSize,
68
- contentHash: Array.from(new TextEncoder().encode(options.metadata.contentHash)),
69
- topic: Array.from(new TextEncoder().encode(options.metadata.topic)),
70
- importance: options.metadata.importance,
71
- embeddingBlobId: Array.from(new TextEncoder().encode(options.metadata.embeddingBlobId))
72
- }
73
- });
74
-
75
- tx.add(memoryRecord);
76
- return tx;
77
- },
78
-
79
- /**
80
- * Create transaction to delete memory
81
- */
82
- deleteMemory: async (memoryId: string) => {
83
- const tx = new Transaction();
84
-
85
- const deleteCall = memoryContract.deleteMemoryRecord({
86
- package: this.config.packageId,
87
- arguments: {
88
- memory: memoryId
89
- }
90
- });
91
-
92
- tx.add(deleteCall);
93
- return tx;
94
- },
95
-
96
- /**
97
- * Create transaction to update memory metadata
98
- */
99
- updateMemoryMetadata: async (memoryId: string, metadata: {
100
- newTopic: string;
101
- newImportance: number;
102
- }) => {
103
- const tx = new Transaction();
104
-
105
- const updateCall = memoryContract.updateMemoryMetadata({
106
- package: this.config.packageId,
107
- arguments: {
108
- memory: memoryId,
109
- newTopic: Array.from(new TextEncoder().encode(metadata.newTopic)),
110
- newImportance: metadata.newImportance
111
- }
112
- });
113
-
114
- tx.add(updateCall);
115
- return tx;
116
- },
117
-
118
- /**
119
- * Create memory index transaction
120
- */
121
- createMemoryIndex: async (options: {
122
- indexBlobId: string;
123
- graphBlobId: string;
124
- }) => {
125
- const tx = new Transaction();
126
-
127
- const indexCall = memoryContract.createMemoryIndex({
128
- package: this.config.packageId,
129
- arguments: {
130
- indexBlobId: Array.from(new TextEncoder().encode(options.indexBlobId)),
131
- graphBlobId: Array.from(new TextEncoder().encode(options.graphBlobId))
132
- }
133
- });
134
-
135
- tx.add(indexCall);
136
- return tx;
137
- },
138
-
139
- /**
140
- * Update memory index transaction
141
- */
142
- updateMemoryIndex: async (options: {
143
- memoryIndex: string;
144
- expectedVersion: number | bigint;
145
- newIndexBlobId: string;
146
- newGraphBlobId: string;
147
- }) => {
148
- const tx = new Transaction();
149
-
150
- const updateCall = memoryContract.updateMemoryIndex({
151
- package: this.config.packageId,
152
- arguments: {
153
- memoryIndex: options.memoryIndex,
154
- expectedVersion: options.expectedVersion,
155
- newIndexBlobId: Array.from(new TextEncoder().encode(options.newIndexBlobId)),
156
- newGraphBlobId: Array.from(new TextEncoder().encode(options.newGraphBlobId))
157
- }
158
- });
159
-
160
- tx.add(updateCall);
161
- return tx;
162
- },
163
- };
164
- }
165
-
166
- // ==================== MOVE CALL BUILDERS ====================
167
-
168
- get call() {
169
- return {
170
- /**
171
- * Move call for memory record creation
172
- */
173
- createMemoryRecord: (options: {
174
- category: string;
175
- vectorId: number | bigint;
176
- blobId: string;
177
- contentType: string;
178
- contentSize: number | bigint;
179
- contentHash: string;
180
- topic: string;
181
- importance: number;
182
- embeddingBlobId: string;
183
- }): Thunk => {
184
- return memoryContract.createMemoryRecord({
185
- package: this.config.packageId,
186
- arguments: {
187
- category: Array.from(new TextEncoder().encode(options.category)),
188
- vectorId: options.vectorId,
189
- blobId: Array.from(new TextEncoder().encode(options.blobId)),
190
- contentType: Array.from(new TextEncoder().encode(options.contentType)),
191
- contentSize: options.contentSize,
192
- contentHash: Array.from(new TextEncoder().encode(options.contentHash)),
193
- topic: Array.from(new TextEncoder().encode(options.topic)),
194
- importance: options.importance,
195
- embeddingBlobId: Array.from(new TextEncoder().encode(options.embeddingBlobId))
196
- }
197
- });
198
- },
199
-
200
- /**
201
- * Move call for memory deletion
202
- */
203
- deleteMemory: (memoryId: string): Thunk => {
204
- return memoryContract.deleteMemoryRecord({
205
- package: this.config.packageId,
206
- arguments: {
207
- memory: memoryId
208
- }
209
- });
210
- },
211
-
212
- /**
213
- * Move call for memory metadata updates
214
- */
215
- updateMemoryMetadata: (memoryId: string, options: {
216
- newTopic: string;
217
- newImportance: number;
218
- }): Thunk => {
219
- return memoryContract.updateMemoryMetadata({
220
- package: this.config.packageId,
221
- arguments: {
222
- memory: memoryId,
223
- newTopic: Array.from(new TextEncoder().encode(options.newTopic)),
224
- newImportance: options.newImportance
225
- }
226
- });
227
- },
228
-
229
- /**
230
- * Move call for memory index creation
231
- */
232
- createMemoryIndex: (options: {
233
- indexBlobId: string;
234
- graphBlobId: string;
235
- }): Thunk => {
236
- return memoryContract.createMemoryIndex({
237
- package: this.config.packageId,
238
- arguments: {
239
- indexBlobId: Array.from(new TextEncoder().encode(options.indexBlobId)),
240
- graphBlobId: Array.from(new TextEncoder().encode(options.graphBlobId))
241
- }
242
- });
243
- },
244
-
245
- /**
246
- * Move call for memory index updates
247
- */
248
- updateMemoryIndex: (options: {
249
- memoryIndex: string;
250
- expectedVersion: number | bigint;
251
- newIndexBlobId: string;
252
- newGraphBlobId: string;
253
- }): Thunk => {
254
- return memoryContract.updateMemoryIndex({
255
- package: this.config.packageId,
256
- arguments: {
257
- memoryIndex: options.memoryIndex,
258
- expectedVersion: options.expectedVersion,
259
- newIndexBlobId: Array.from(new TextEncoder().encode(options.newIndexBlobId)),
260
- newGraphBlobId: Array.from(new TextEncoder().encode(options.newGraphBlobId))
261
- }
262
- });
263
- },
264
-
265
- /**
266
- * Move call for adding custom metadata
267
- */
268
- addCustomMetadata: (options: {
269
- memory: string;
270
- key: string;
271
- value: string;
272
- }): Thunk => {
273
- return memoryContract.addCustomMetadata({
274
- package: this.config.packageId,
275
- arguments: {
276
- memory: options.memory,
277
- key: Array.from(new TextEncoder().encode(options.key)),
278
- value: Array.from(new TextEncoder().encode(options.value))
279
- }
280
- });
281
- },
282
- };
283
- }
284
-
285
- // ==================== VIEW METHODS ====================
286
-
287
- get view() {
288
- return {
289
- /**
290
- * Get memory object from blockchain
291
- */
292
- getMemory: async (memoryId: string) => {
293
- try {
294
- const memoryObject = await this.client.core.getObject(memoryId);
295
- return memoryObject;
296
- } catch (error) {
297
- throw new Error(`Failed to get memory ${memoryId}: ${error}`);
298
- }
299
- },
300
-
301
- /**
302
- * Get memory index information from blockchain
303
- */
304
- getMemoryIndex: async (indexId: string) => {
305
- try {
306
- const indexObject = await this.client.core.getObject(indexId);
307
- return indexObject;
308
- } catch (error) {
309
- throw new Error(`Failed to get memory index ${indexId}: ${error}`);
310
- }
311
- },
312
-
313
- /**
314
- * Get memory blob ID from blockchain
315
- */
316
- getMemoryBlobId: async (memoryId: string) => {
317
- const memoryObject = await this.view.getMemory(memoryId);
318
- return memoryObject?.data?.content?.fields?.blob_id;
319
- },
320
-
321
- /**
322
- * Get memory category from blockchain
323
- */
324
- getMemoryCategory: async (memoryId: string) => {
325
- const memoryObject = await this.view.getMemory(memoryId);
326
- return memoryObject?.data?.content?.fields?.category;
327
- },
328
-
329
- /**
330
- * Get memory vector ID from blockchain
331
- */
332
- getMemoryVectorId: async (memoryId: string) => {
333
- const memoryObject = await this.view.getMemory(memoryId);
334
- return memoryObject?.data?.content?.fields?.vector_id;
335
- },
336
-
337
- /**
338
- * Get memory metadata from blockchain
339
- */
340
- getMemoryMetadata: async (memoryId: string) => {
341
- const memoryObject = await this.view.getMemory(memoryId);
342
- return memoryObject?.data?.content?.fields?.metadata;
343
- },
344
-
345
- /**
346
- * Get index blob ID from memory index
347
- */
348
- getIndexBlobId: async (indexId: string) => {
349
- const indexObject = await this.view.getMemoryIndex(indexId);
350
- return indexObject?.data?.content?.fields?.index_blob_id;
351
- },
352
-
353
- /**
354
- * Get graph blob ID from memory index
355
- */
356
- getGraphBlobId: async (indexId: string) => {
357
- const indexObject = await this.view.getMemoryIndex(indexId);
358
- return indexObject?.data?.content?.fields?.graph_blob_id;
359
- },
360
-
361
- /**
362
- * Get memory index version
363
- */
364
- getIndexVersion: async (indexId: string) => {
365
- const indexObject = await this.view.getMemoryIndex(indexId);
366
- return indexObject?.data?.content?.fields?.version;
367
- },
368
- };
369
- }
1
+ /**
2
+ * Memory Service
3
+ *
4
+ * Handles memory-related blockchain operations including transaction builders,
5
+ * move calls, and view functions for on-chain memory data.
6
+ *
7
+ * Note: This service provides direct blockchain access. For high-level memory
8
+ * operations (create, search), use SimplePDWClient's memory namespace instead.
9
+ */
10
+
11
+ import type {
12
+ ClientWithCoreApi,
13
+ PDWConfig,
14
+ MemoryCreateOptions,
15
+ MemorySearchOptions,
16
+ MemorySearchResult,
17
+ MemoryContext,
18
+ MemoryContextOptions,
19
+ MemoryStatsResponse,
20
+ Thunk,
21
+ AsyncThunk
22
+ } from '../types';
23
+ import { Transaction } from '@mysten/sui/transactions';
24
+ import * as memoryContract from '../generated/pdw/memory';
25
+
26
+ export class MemoryService {
27
+ constructor(
28
+ private client: ClientWithCoreApi,
29
+ private config: PDWConfig
30
+ ) {}
31
+
32
+ // ==================== TRANSACTION BUILDERS ====================
33
+
34
+ get tx() {
35
+ return {
36
+ /**
37
+ * Create transaction for memory record on blockchain
38
+ */
39
+ createMemoryRecord: async (options: {
40
+ category: string;
41
+ vectorId: number | bigint;
42
+ blobId: string;
43
+ metadata: {
44
+ contentType: string;
45
+ contentSize: number | bigint;
46
+ contentHash: string;
47
+ category: string;
48
+ topic: string;
49
+ importance: number;
50
+ embeddingBlobId: string;
51
+ embeddingDimension: number | bigint;
52
+ createdTimestamp: number | bigint;
53
+ updatedTimestamp: number | bigint;
54
+ customMetadata?: Record<string, string>;
55
+ };
56
+ }) => {
57
+ const tx = new Transaction();
58
+
59
+ // Create the memory record with inline metadata
60
+ const memoryRecord = memoryContract.createMemoryRecord({
61
+ package: this.config.packageId,
62
+ arguments: {
63
+ category: Array.from(new TextEncoder().encode(options.category)),
64
+ vectorId: options.vectorId,
65
+ blobId: Array.from(new TextEncoder().encode(options.blobId)),
66
+ contentType: Array.from(new TextEncoder().encode(options.metadata.contentType)),
67
+ contentSize: options.metadata.contentSize,
68
+ contentHash: Array.from(new TextEncoder().encode(options.metadata.contentHash)),
69
+ topic: Array.from(new TextEncoder().encode(options.metadata.topic)),
70
+ importance: options.metadata.importance,
71
+ embeddingBlobId: Array.from(new TextEncoder().encode(options.metadata.embeddingBlobId))
72
+ }
73
+ });
74
+
75
+ tx.add(memoryRecord);
76
+ return tx;
77
+ },
78
+
79
+ /**
80
+ * Create transaction to delete memory
81
+ */
82
+ deleteMemory: async (memoryId: string) => {
83
+ const tx = new Transaction();
84
+
85
+ const deleteCall = memoryContract.deleteMemoryRecord({
86
+ package: this.config.packageId,
87
+ arguments: {
88
+ memory: memoryId
89
+ }
90
+ });
91
+
92
+ tx.add(deleteCall);
93
+ return tx;
94
+ },
95
+
96
+ /**
97
+ * Create transaction to update memory metadata
98
+ */
99
+ updateMemoryMetadata: async (memoryId: string, metadata: {
100
+ newTopic: string;
101
+ newImportance: number;
102
+ }) => {
103
+ const tx = new Transaction();
104
+
105
+ const updateCall = memoryContract.updateMemoryMetadata({
106
+ package: this.config.packageId,
107
+ arguments: {
108
+ memory: memoryId,
109
+ newTopic: Array.from(new TextEncoder().encode(metadata.newTopic)),
110
+ newImportance: metadata.newImportance
111
+ }
112
+ });
113
+
114
+ tx.add(updateCall);
115
+ return tx;
116
+ },
117
+
118
+ /**
119
+ * Create memory index transaction
120
+ */
121
+ createMemoryIndex: async (options: {
122
+ indexBlobId: string;
123
+ graphBlobId: string;
124
+ }) => {
125
+ const tx = new Transaction();
126
+
127
+ const indexCall = memoryContract.createMemoryIndex({
128
+ package: this.config.packageId,
129
+ arguments: {
130
+ indexBlobId: Array.from(new TextEncoder().encode(options.indexBlobId)),
131
+ graphBlobId: Array.from(new TextEncoder().encode(options.graphBlobId))
132
+ }
133
+ });
134
+
135
+ tx.add(indexCall);
136
+ return tx;
137
+ },
138
+
139
+ /**
140
+ * Update memory index transaction
141
+ */
142
+ updateMemoryIndex: async (options: {
143
+ memoryIndex: string;
144
+ expectedVersion: number | bigint;
145
+ newIndexBlobId: string;
146
+ newGraphBlobId: string;
147
+ }) => {
148
+ const tx = new Transaction();
149
+
150
+ const updateCall = memoryContract.updateMemoryIndex({
151
+ package: this.config.packageId,
152
+ arguments: {
153
+ memoryIndex: options.memoryIndex,
154
+ expectedVersion: options.expectedVersion,
155
+ newIndexBlobId: Array.from(new TextEncoder().encode(options.newIndexBlobId)),
156
+ newGraphBlobId: Array.from(new TextEncoder().encode(options.newGraphBlobId))
157
+ }
158
+ });
159
+
160
+ tx.add(updateCall);
161
+ return tx;
162
+ },
163
+ };
164
+ }
165
+
166
+ // ==================== MOVE CALL BUILDERS ====================
167
+
168
+ get call() {
169
+ return {
170
+ /**
171
+ * Move call for memory record creation
172
+ */
173
+ createMemoryRecord: (options: {
174
+ category: string;
175
+ vectorId: number | bigint;
176
+ blobId: string;
177
+ contentType: string;
178
+ contentSize: number | bigint;
179
+ contentHash: string;
180
+ topic: string;
181
+ importance: number;
182
+ embeddingBlobId: string;
183
+ }): Thunk => {
184
+ return memoryContract.createMemoryRecord({
185
+ package: this.config.packageId,
186
+ arguments: {
187
+ category: Array.from(new TextEncoder().encode(options.category)),
188
+ vectorId: options.vectorId,
189
+ blobId: Array.from(new TextEncoder().encode(options.blobId)),
190
+ contentType: Array.from(new TextEncoder().encode(options.contentType)),
191
+ contentSize: options.contentSize,
192
+ contentHash: Array.from(new TextEncoder().encode(options.contentHash)),
193
+ topic: Array.from(new TextEncoder().encode(options.topic)),
194
+ importance: options.importance,
195
+ embeddingBlobId: Array.from(new TextEncoder().encode(options.embeddingBlobId))
196
+ }
197
+ });
198
+ },
199
+
200
+ /**
201
+ * Move call for memory deletion
202
+ */
203
+ deleteMemory: (memoryId: string): Thunk => {
204
+ return memoryContract.deleteMemoryRecord({
205
+ package: this.config.packageId,
206
+ arguments: {
207
+ memory: memoryId
208
+ }
209
+ });
210
+ },
211
+
212
+ /**
213
+ * Move call for memory metadata updates
214
+ */
215
+ updateMemoryMetadata: (memoryId: string, options: {
216
+ newTopic: string;
217
+ newImportance: number;
218
+ }): Thunk => {
219
+ return memoryContract.updateMemoryMetadata({
220
+ package: this.config.packageId,
221
+ arguments: {
222
+ memory: memoryId,
223
+ newTopic: Array.from(new TextEncoder().encode(options.newTopic)),
224
+ newImportance: options.newImportance
225
+ }
226
+ });
227
+ },
228
+
229
+ /**
230
+ * Move call for memory index creation
231
+ */
232
+ createMemoryIndex: (options: {
233
+ indexBlobId: string;
234
+ graphBlobId: string;
235
+ }): Thunk => {
236
+ return memoryContract.createMemoryIndex({
237
+ package: this.config.packageId,
238
+ arguments: {
239
+ indexBlobId: Array.from(new TextEncoder().encode(options.indexBlobId)),
240
+ graphBlobId: Array.from(new TextEncoder().encode(options.graphBlobId))
241
+ }
242
+ });
243
+ },
244
+
245
+ /**
246
+ * Move call for memory index updates
247
+ */
248
+ updateMemoryIndex: (options: {
249
+ memoryIndex: string;
250
+ expectedVersion: number | bigint;
251
+ newIndexBlobId: string;
252
+ newGraphBlobId: string;
253
+ }): Thunk => {
254
+ return memoryContract.updateMemoryIndex({
255
+ package: this.config.packageId,
256
+ arguments: {
257
+ memoryIndex: options.memoryIndex,
258
+ expectedVersion: options.expectedVersion,
259
+ newIndexBlobId: Array.from(new TextEncoder().encode(options.newIndexBlobId)),
260
+ newGraphBlobId: Array.from(new TextEncoder().encode(options.newGraphBlobId))
261
+ }
262
+ });
263
+ },
264
+
265
+ /**
266
+ * Move call for adding custom metadata
267
+ */
268
+ addCustomMetadata: (options: {
269
+ memory: string;
270
+ key: string;
271
+ value: string;
272
+ }): Thunk => {
273
+ return memoryContract.addCustomMetadata({
274
+ package: this.config.packageId,
275
+ arguments: {
276
+ memory: options.memory,
277
+ key: Array.from(new TextEncoder().encode(options.key)),
278
+ value: Array.from(new TextEncoder().encode(options.value))
279
+ }
280
+ });
281
+ },
282
+ };
283
+ }
284
+
285
+ // ==================== VIEW METHODS ====================
286
+
287
+ get view() {
288
+ return {
289
+ /**
290
+ * Get memory object from blockchain
291
+ */
292
+ getMemory: async (memoryId: string) => {
293
+ try {
294
+ const memoryObject = await this.client.core.getObject(memoryId);
295
+ return memoryObject;
296
+ } catch (error) {
297
+ throw new Error(`Failed to get memory ${memoryId}: ${error}`);
298
+ }
299
+ },
300
+
301
+ /**
302
+ * Get memory index information from blockchain
303
+ */
304
+ getMemoryIndex: async (indexId: string) => {
305
+ try {
306
+ const indexObject = await this.client.core.getObject(indexId);
307
+ return indexObject;
308
+ } catch (error) {
309
+ throw new Error(`Failed to get memory index ${indexId}: ${error}`);
310
+ }
311
+ },
312
+
313
+ /**
314
+ * Get memory blob ID from blockchain
315
+ */
316
+ getMemoryBlobId: async (memoryId: string) => {
317
+ const memoryObject = await this.view.getMemory(memoryId);
318
+ return memoryObject?.data?.content?.fields?.blob_id;
319
+ },
320
+
321
+ /**
322
+ * Get memory category from blockchain
323
+ */
324
+ getMemoryCategory: async (memoryId: string) => {
325
+ const memoryObject = await this.view.getMemory(memoryId);
326
+ return memoryObject?.data?.content?.fields?.category;
327
+ },
328
+
329
+ /**
330
+ * Get memory vector ID from blockchain
331
+ */
332
+ getMemoryVectorId: async (memoryId: string) => {
333
+ const memoryObject = await this.view.getMemory(memoryId);
334
+ return memoryObject?.data?.content?.fields?.vector_id;
335
+ },
336
+
337
+ /**
338
+ * Get memory metadata from blockchain
339
+ */
340
+ getMemoryMetadata: async (memoryId: string) => {
341
+ const memoryObject = await this.view.getMemory(memoryId);
342
+ return memoryObject?.data?.content?.fields?.metadata;
343
+ },
344
+
345
+ /**
346
+ * Get index blob ID from memory index
347
+ */
348
+ getIndexBlobId: async (indexId: string) => {
349
+ const indexObject = await this.view.getMemoryIndex(indexId);
350
+ return indexObject?.data?.content?.fields?.index_blob_id;
351
+ },
352
+
353
+ /**
354
+ * Get graph blob ID from memory index
355
+ */
356
+ getGraphBlobId: async (indexId: string) => {
357
+ const indexObject = await this.view.getMemoryIndex(indexId);
358
+ return indexObject?.data?.content?.fields?.graph_blob_id;
359
+ },
360
+
361
+ /**
362
+ * Get memory index version
363
+ */
364
+ getIndexVersion: async (indexId: string) => {
365
+ const indexObject = await this.view.getMemoryIndex(indexId);
366
+ return indexObject?.data?.content?.fields?.version;
367
+ },
368
+ };
369
+ }
370
370
  }