@cmdoss/memwal-sdk 0.7.0 → 0.9.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 (229) hide show
  1. package/README.md +427 -41
  2. package/dist/client/ClientMemoryManager.js +2 -2
  3. package/dist/client/ClientMemoryManager.js.map +1 -1
  4. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  5. package/dist/client/SimplePDWClient.d.ts +88 -1
  6. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  7. package/dist/client/SimplePDWClient.js +102 -11
  8. package/dist/client/SimplePDWClient.js.map +1 -1
  9. package/dist/client/namespaces/IndexNamespace.d.ts +1 -1
  10. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  11. package/dist/client/namespaces/IndexNamespace.js +7 -4
  12. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  13. package/dist/client/namespaces/MemoryNamespace.d.ts +45 -0
  14. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  15. package/dist/client/namespaces/MemoryNamespace.js +292 -46
  16. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  17. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts +215 -0
  18. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts.map +1 -0
  19. package/dist/client/namespaces/consolidated/AdvancedNamespace.js +214 -0
  20. package/dist/client/namespaces/consolidated/AdvancedNamespace.js.map +1 -0
  21. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
  22. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  23. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +40 -2
  24. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  25. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
  26. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  27. package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
  28. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  29. package/dist/client/namespaces/consolidated/index.d.ts +1 -0
  30. package/dist/client/namespaces/consolidated/index.d.ts.map +1 -1
  31. package/dist/client/namespaces/consolidated/index.js +1 -0
  32. package/dist/client/namespaces/consolidated/index.js.map +1 -1
  33. package/dist/config/ConfigurationHelper.js +61 -61
  34. package/dist/config/defaults.d.ts.map +1 -1
  35. package/dist/config/defaults.js +11 -6
  36. package/dist/config/defaults.js.map +1 -1
  37. package/dist/core/types/index.d.ts +4 -0
  38. package/dist/core/types/index.d.ts.map +1 -1
  39. package/dist/core/types/index.js.map +1 -1
  40. package/dist/graph/GraphService.js +20 -20
  41. package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
  42. package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
  43. package/dist/infrastructure/seal/EncryptionService.js +37 -15
  44. package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
  45. package/dist/infrastructure/seal/SealService.d.ts +13 -5
  46. package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
  47. package/dist/infrastructure/seal/SealService.js +36 -34
  48. package/dist/infrastructure/seal/SealService.js.map +1 -1
  49. package/dist/infrastructure/walrus/WalrusStorageService.d.ts +6 -0
  50. package/dist/infrastructure/walrus/WalrusStorageService.d.ts.map +1 -1
  51. package/dist/infrastructure/walrus/WalrusStorageService.js +23 -4
  52. package/dist/infrastructure/walrus/WalrusStorageService.js.map +1 -1
  53. package/dist/langchain/createPDWRAG.js +30 -30
  54. package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
  55. package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
  56. package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
  57. package/dist/services/CapabilityService.d.ts.map +1 -1
  58. package/dist/services/CapabilityService.js +30 -14
  59. package/dist/services/CapabilityService.js.map +1 -1
  60. package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
  61. package/dist/services/CrossContextPermissionService.js +9 -7
  62. package/dist/services/CrossContextPermissionService.js.map +1 -1
  63. package/dist/services/EmbeddingService.d.ts +9 -0
  64. package/dist/services/EmbeddingService.d.ts.map +1 -1
  65. package/dist/services/EmbeddingService.js +31 -10
  66. package/dist/services/EmbeddingService.js.map +1 -1
  67. package/dist/services/EncryptionService.d.ts.map +1 -1
  68. package/dist/services/EncryptionService.js +6 -5
  69. package/dist/services/EncryptionService.js.map +1 -1
  70. package/dist/services/GeminiAIService.js +309 -309
  71. package/dist/services/MemoryIndexService.d.ts +2 -0
  72. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  73. package/dist/services/MemoryIndexService.js +11 -4
  74. package/dist/services/MemoryIndexService.js.map +1 -1
  75. package/dist/services/StorageService.d.ts +1 -0
  76. package/dist/services/StorageService.d.ts.map +1 -1
  77. package/dist/services/StorageService.js +60 -10
  78. package/dist/services/StorageService.js.map +1 -1
  79. package/dist/services/TransactionService.d.ts +20 -0
  80. package/dist/services/TransactionService.d.ts.map +1 -1
  81. package/dist/services/TransactionService.js +43 -0
  82. package/dist/services/TransactionService.js.map +1 -1
  83. package/dist/services/VectorService.js +1 -1
  84. package/dist/services/VectorService.js.map +1 -1
  85. package/dist/services/ViewService.js +2 -2
  86. package/dist/services/ViewService.js.map +1 -1
  87. package/dist/vector/BrowserHnswIndexService.js +1 -1
  88. package/dist/vector/BrowserHnswIndexService.js.map +1 -1
  89. package/dist/vector/HnswWasmService.js +1 -1
  90. package/dist/vector/HnswWasmService.js.map +1 -1
  91. package/dist/vector/NodeHnswService.js +1 -1
  92. package/dist/vector/NodeHnswService.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/access/PermissionService.ts +635 -635
  95. package/src/access/index.ts +8 -8
  96. package/src/aggregation/AggregationService.ts +389 -389
  97. package/src/aggregation/index.ts +8 -8
  98. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  99. package/src/ai-sdk/index.ts +65 -65
  100. package/src/ai-sdk/tools.ts +460 -460
  101. package/src/ai-sdk/types.ts +404 -404
  102. package/src/batch/BatchManager.ts +597 -597
  103. package/src/batch/BatchingService.ts +429 -429
  104. package/src/batch/MemoryProcessingCache.ts +492 -492
  105. package/src/batch/index.ts +30 -30
  106. package/src/browser.ts +200 -200
  107. package/src/client/ClientMemoryManager.ts +987 -987
  108. package/src/client/PersonalDataWallet.ts +345 -345
  109. package/src/client/SimplePDWClient.ts +1369 -1237
  110. package/src/client/factory.ts +154 -154
  111. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  112. package/src/client/namespaces/BatchNamespace.ts +356 -356
  113. package/src/client/namespaces/CacheNamespace.ts +123 -123
  114. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  115. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  116. package/src/client/namespaces/ContextNamespace.ts +297 -297
  117. package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
  118. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  119. package/src/client/namespaces/GraphNamespace.ts +468 -468
  120. package/src/client/namespaces/IndexNamespace.ts +364 -361
  121. package/src/client/namespaces/MemoryNamespace.ts +1569 -1272
  122. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  123. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  124. package/src/client/namespaces/SearchNamespace.ts +1049 -1049
  125. package/src/client/namespaces/StorageNamespace.ts +458 -458
  126. package/src/client/namespaces/TxNamespace.ts +260 -260
  127. package/src/client/namespaces/WalletNamespace.ts +243 -243
  128. package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
  129. package/src/client/namespaces/consolidated/AdvancedNamespace.ts +264 -0
  130. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -564
  131. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  132. package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
  133. package/src/client/namespaces/consolidated/index.ts +41 -39
  134. package/src/client/signers/DappKitSigner.ts +207 -207
  135. package/src/client/signers/KeypairSigner.ts +108 -108
  136. package/src/client/signers/UnifiedSigner.ts +110 -110
  137. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  138. package/src/client/signers/index.ts +26 -26
  139. package/src/config/ConfigurationHelper.ts +412 -412
  140. package/src/config/defaults.ts +56 -51
  141. package/src/config/index.ts +8 -8
  142. package/src/config/validation.ts +70 -70
  143. package/src/core/index.ts +14 -14
  144. package/src/core/interfaces/IService.ts +307 -307
  145. package/src/core/interfaces/index.ts +8 -8
  146. package/src/core/types/capability.ts +297 -297
  147. package/src/core/types/index.ts +874 -870
  148. package/src/core/types/wallet.ts +270 -270
  149. package/src/core/types.ts +9 -9
  150. package/src/core/wallet.ts +222 -222
  151. package/src/embedding/index.ts +19 -19
  152. package/src/embedding/types.ts +357 -357
  153. package/src/errors/index.ts +602 -602
  154. package/src/errors/recovery.ts +461 -461
  155. package/src/errors/validation.ts +567 -567
  156. package/src/generated/pdw/capability.ts +319 -319
  157. package/src/generated/pdw/deps/sui/object.ts +12 -12
  158. package/src/generated/pdw/deps/sui/vec_map.ts +32 -32
  159. package/src/generated/pdw/memory.ts +1087 -1087
  160. package/src/generated/pdw/wallet.ts +123 -123
  161. package/src/generated/utils/index.ts +159 -159
  162. package/src/graph/GraphService.ts +887 -887
  163. package/src/graph/KnowledgeGraphManager.ts +728 -728
  164. package/src/graph/index.ts +25 -25
  165. package/src/index.ts +498 -498
  166. package/src/infrastructure/index.ts +22 -22
  167. package/src/infrastructure/seal/EncryptionService.ts +628 -603
  168. package/src/infrastructure/seal/SealService.ts +613 -615
  169. package/src/infrastructure/seal/index.ts +9 -9
  170. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  171. package/src/infrastructure/sui/SuiService.ts +888 -888
  172. package/src/infrastructure/sui/index.ts +9 -9
  173. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  174. package/src/infrastructure/walrus/WalrusStorageService.ts +637 -612
  175. package/src/infrastructure/walrus/index.ts +9 -9
  176. package/src/langchain/PDWEmbeddings.ts +145 -145
  177. package/src/langchain/PDWVectorStore.ts +456 -456
  178. package/src/langchain/createPDWRAG.ts +303 -303
  179. package/src/langchain/index.ts +47 -47
  180. package/src/permissions/ConsentRepository.browser.ts +249 -249
  181. package/src/permissions/ConsentRepository.ts +364 -364
  182. package/src/permissions/index.ts +9 -9
  183. package/src/pipeline/MemoryPipeline.ts +862 -862
  184. package/src/pipeline/PipelineManager.ts +683 -683
  185. package/src/pipeline/index.ts +26 -26
  186. package/src/retrieval/AdvancedSearchService.ts +629 -629
  187. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  188. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
  189. package/src/retrieval/MemoryRetrievalService.ts +904 -904
  190. package/src/retrieval/index.ts +42 -42
  191. package/src/services/BatchService.ts +352 -352
  192. package/src/services/CapabilityService.ts +464 -448
  193. package/src/services/ClassifierService.ts +465 -465
  194. package/src/services/CrossContextPermissionService.ts +486 -484
  195. package/src/services/EmbeddingService.ts +796 -771
  196. package/src/services/EncryptionService.ts +712 -711
  197. package/src/services/GeminiAIService.ts +753 -753
  198. package/src/services/IndexManager.ts +977 -977
  199. package/src/services/MemoryIndexService.ts +1009 -1003
  200. package/src/services/MemoryService.ts +369 -369
  201. package/src/services/QueryService.ts +890 -890
  202. package/src/services/StorageService.ts +1182 -1126
  203. package/src/services/TransactionService.ts +838 -790
  204. package/src/services/VectorService.ts +462 -462
  205. package/src/services/ViewService.ts +484 -484
  206. package/src/services/index.ts +25 -25
  207. package/src/services/storage/BlobAttributesManager.ts +333 -333
  208. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  209. package/src/services/storage/MemorySearchManager.ts +387 -387
  210. package/src/services/storage/QuiltBatchManager.ts +1130 -1130
  211. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  212. package/src/services/storage/WalrusStorageManager.ts +287 -287
  213. package/src/services/storage/index.ts +57 -57
  214. package/src/types/index.ts +13 -13
  215. package/src/utils/LRUCache.ts +378 -378
  216. package/src/utils/index.ts +76 -76
  217. package/src/utils/memoryIndexOnChain.ts +507 -507
  218. package/src/utils/rebuildIndex.ts +290 -290
  219. package/src/utils/rebuildIndexNode.ts +771 -771
  220. package/src/vector/BrowserHnswIndexService.ts +758 -758
  221. package/src/vector/HnswWasmService.ts +731 -731
  222. package/src/vector/IHnswService.ts +233 -233
  223. package/src/vector/NodeHnswService.ts +833 -833
  224. package/src/vector/VectorManager.ts +478 -478
  225. package/src/vector/createHnswService.ts +135 -135
  226. package/src/vector/index.ts +56 -56
  227. package/src/wallet/ContextWalletService.ts +656 -656
  228. package/src/wallet/MainWalletService.ts +317 -317
  229. package/src/wallet/index.ts +17 -17
@@ -1,319 +1,319 @@
1
- /**************************************************************
2
- * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
- **************************************************************/
4
-
5
-
6
- /**
7
- * Capability-based access control module for Personal Data Wallet
8
- *
9
- * This module implements the SEAL PrivateData pattern for simplified access
10
- * control using Move's capability pattern.
11
- *
12
- * Key benefits:
13
- *
14
- * - 1 user wallet instead of N HD wallets
15
- * - Object ownership = access permission (SEAL idiomatic)
16
- * - No global registry needed
17
- * - 60% gas savings vs allowlist pattern
18
- * - Type-safe access control
19
- *
20
- * Pattern combines:
21
- *
22
- * - Move Capability Pattern (object = proof of permission)
23
- * - SEAL PrivateData (nonce-based key derivation)
24
- * - PDW Requirements (app contexts)
25
- *
26
- * Reference:
27
- * https://github.com/MystenLabs/seal/blob/main/move/patterns/sources/private_data.move
28
- */
29
-
30
- import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
31
- import { bcs } from '@mysten/sui/bcs';
32
- import { type Transaction } from '@mysten/sui/transactions';
33
- import * as object from './deps/sui/object.js';
34
- const $moduleName = '@local-pkg/pdw::capability';
35
- export const MemoryCap = new MoveStruct({ name: `${$moduleName}::MemoryCap`, fields: {
36
- id: object.UID,
37
- /**
38
- * Random nonce for SEAL key derivation key_id = keccak256(package_id || owner ||
39
- * nonce)
40
- */
41
- nonce: bcs.vector(bcs.u8()),
42
- /** Application context (e.g., "MEMO", "HEALTH") */
43
- app_id: bcs.string()
44
- } });
45
- export const MemoryCapCreated = new MoveStruct({ name: `${$moduleName}::MemoryCapCreated`, fields: {
46
- cap_id: bcs.Address,
47
- owner: bcs.Address,
48
- app_id: bcs.string(),
49
- nonce: bcs.vector(bcs.u8()),
50
- created_at: bcs.u64()
51
- } });
52
- export const MemoryCapTransferred = new MoveStruct({ name: `${$moduleName}::MemoryCapTransferred`, fields: {
53
- cap_id: bcs.Address,
54
- from: bcs.Address,
55
- to: bcs.Address,
56
- app_id: bcs.string()
57
- } });
58
- export const MemoryCapBurned = new MoveStruct({ name: `${$moduleName}::MemoryCapBurned`, fields: {
59
- cap_id: bcs.Address,
60
- owner: bcs.Address,
61
- app_id: bcs.string()
62
- } });
63
- export const SealApproved = new MoveStruct({ name: `${$moduleName}::SealApproved`, fields: {
64
- cap_id: bcs.Address,
65
- owner: bcs.Address,
66
- app_id: bcs.string(),
67
- key_id: bcs.vector(bcs.u8())
68
- } });
69
- export interface CreateMemoryCapArguments {
70
- appId: RawTransactionArgument<string>;
71
- }
72
- export interface CreateMemoryCapOptions {
73
- package?: string;
74
- arguments: CreateMemoryCapArguments | [
75
- appId: RawTransactionArgument<string>
76
- ];
77
- }
78
- /**
79
- * Create a new memory capability for an app context
80
- *
81
- * This creates a MemoryCap object owned by the caller. The capability can be used
82
- * to:
83
- *
84
- * - Encrypt/decrypt memories for this app context
85
- * - Share access by transferring the capability
86
- *
87
- * @param app_id: Application identifier (e.g., "MEMO", "HEALTH") @param ctx:
88
- * Transaction context
89
- */
90
- export function createMemoryCap(options: CreateMemoryCapOptions) {
91
- const packageAddress = options.package ?? '@local-pkg/pdw';
92
- const argumentsTypes = [
93
- '0x0000000000000000000000000000000000000000000000000000000000000001::string::String'
94
- ] satisfies string[];
95
- const parameterNames = ["appId"];
96
- return (tx: Transaction) => tx.moveCall({
97
- package: packageAddress,
98
- module: 'capability',
99
- function: 'create_memory_cap',
100
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
101
- });
102
- }
103
- export interface SealApproveArguments {
104
- cap: RawTransactionArgument<string>;
105
- keyId: RawTransactionArgument<number[]>;
106
- }
107
- export interface SealApproveOptions {
108
- package?: string;
109
- arguments: SealApproveArguments | [
110
- cap: RawTransactionArgument<string>,
111
- keyId: RawTransactionArgument<number[]>
112
- ];
113
- }
114
- /**
115
- * SEAL-compliant approval function
116
- *
117
- * This function follows the SEAL PrivateData pattern:
118
- *
119
- * - Entry function that aborts on denial (SEAL requirement)
120
- * - Object holder can pass seal_approve
121
- * - Any dApp can call with user's connected wallet
122
- *
123
- * Flow:
124
- *
125
- * 1. Verify caller owns the capability (via object reference)
126
- * 2. Compute expected key_id from capability
127
- * 3. Validate provided key_id matches
128
- * 4. If valid, function returns (access granted)
129
- * 5. If invalid, function aborts (access denied)
130
- *
131
- * @param cap: Reference to the MemoryCap object @param key_id: SEAL key identifier
132
- * to validate @param ctx: Transaction context
133
- */
134
- export function sealApprove(options: SealApproveOptions) {
135
- const packageAddress = options.package ?? '@local-pkg/pdw';
136
- const argumentsTypes = [
137
- `${packageAddress}::capability::MemoryCap`,
138
- 'vector<u8>'
139
- ] satisfies string[];
140
- const parameterNames = ["cap", "keyId"];
141
- return (tx: Transaction) => tx.moveCall({
142
- package: packageAddress,
143
- module: 'capability',
144
- function: 'seal_approve',
145
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
146
- });
147
- }
148
- export interface TransferCapArguments {
149
- cap: RawTransactionArgument<string>;
150
- recipient: RawTransactionArgument<string>;
151
- }
152
- export interface TransferCapOptions {
153
- package?: string;
154
- arguments: TransferCapArguments | [
155
- cap: RawTransactionArgument<string>,
156
- recipient: RawTransactionArgument<string>
157
- ];
158
- }
159
- /**
160
- * Transfer capability to another address (for delegation/sharing)
161
- *
162
- * After transfer:
163
- *
164
- * - New owner can call seal_approve
165
- * - New owner can decrypt memories
166
- * - Original owner loses access
167
- *
168
- * @param cap: The capability to transfer (consumed) @param recipient: Address to
169
- * receive the capability
170
- */
171
- export function transferCap(options: TransferCapOptions) {
172
- const packageAddress = options.package ?? '@local-pkg/pdw';
173
- const argumentsTypes = [
174
- `${packageAddress}::capability::MemoryCap`,
175
- 'address'
176
- ] satisfies string[];
177
- const parameterNames = ["cap", "recipient"];
178
- return (tx: Transaction) => tx.moveCall({
179
- package: packageAddress,
180
- module: 'capability',
181
- function: 'transfer_cap',
182
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
183
- });
184
- }
185
- export interface BurnCapArguments {
186
- cap: RawTransactionArgument<string>;
187
- }
188
- export interface BurnCapOptions {
189
- package?: string;
190
- arguments: BurnCapArguments | [
191
- cap: RawTransactionArgument<string>
192
- ];
193
- }
194
- /**
195
- * Burn (delete) a capability
196
- *
197
- * This permanently revokes the capability. After burning:
198
- *
199
- * - No one can decrypt memories for this context
200
- * - Object is permanently deleted
201
- *
202
- * @param cap: The capability to burn (consumed)
203
- */
204
- export function burnCap(options: BurnCapOptions) {
205
- const packageAddress = options.package ?? '@local-pkg/pdw';
206
- const argumentsTypes = [
207
- `${packageAddress}::capability::MemoryCap`
208
- ] satisfies string[];
209
- const parameterNames = ["cap"];
210
- return (tx: Transaction) => tx.moveCall({
211
- package: packageAddress,
212
- module: 'capability',
213
- function: 'burn_cap',
214
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
215
- });
216
- }
217
- export interface GetAppIdArguments {
218
- cap: RawTransactionArgument<string>;
219
- }
220
- export interface GetAppIdOptions {
221
- package?: string;
222
- arguments: GetAppIdArguments | [
223
- cap: RawTransactionArgument<string>
224
- ];
225
- }
226
- /** Get the app_id from a capability */
227
- export function getAppId(options: GetAppIdOptions) {
228
- const packageAddress = options.package ?? '@local-pkg/pdw';
229
- const argumentsTypes = [
230
- `${packageAddress}::capability::MemoryCap`
231
- ] satisfies string[];
232
- const parameterNames = ["cap"];
233
- return (tx: Transaction) => tx.moveCall({
234
- package: packageAddress,
235
- module: 'capability',
236
- function: 'get_app_id',
237
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
238
- });
239
- }
240
- export interface GetNonceArguments {
241
- cap: RawTransactionArgument<string>;
242
- }
243
- export interface GetNonceOptions {
244
- package?: string;
245
- arguments: GetNonceArguments | [
246
- cap: RawTransactionArgument<string>
247
- ];
248
- }
249
- /** Get the nonce from a capability */
250
- export function getNonce(options: GetNonceOptions) {
251
- const packageAddress = options.package ?? '@local-pkg/pdw';
252
- const argumentsTypes = [
253
- `${packageAddress}::capability::MemoryCap`
254
- ] satisfies string[];
255
- const parameterNames = ["cap"];
256
- return (tx: Transaction) => tx.moveCall({
257
- package: packageAddress,
258
- module: 'capability',
259
- function: 'get_nonce',
260
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
261
- });
262
- }
263
- export interface GetCapIdArguments {
264
- cap: RawTransactionArgument<string>;
265
- }
266
- export interface GetCapIdOptions {
267
- package?: string;
268
- arguments: GetCapIdArguments | [
269
- cap: RawTransactionArgument<string>
270
- ];
271
- }
272
- /** Get the object ID of a capability */
273
- export function getCapId(options: GetCapIdOptions) {
274
- const packageAddress = options.package ?? '@local-pkg/pdw';
275
- const argumentsTypes = [
276
- `${packageAddress}::capability::MemoryCap`
277
- ] satisfies string[];
278
- const parameterNames = ["cap"];
279
- return (tx: Transaction) => tx.moveCall({
280
- package: packageAddress,
281
- module: 'capability',
282
- function: 'get_cap_id',
283
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
284
- });
285
- }
286
- export interface ComputeSealKeyIdArguments {
287
- cap: RawTransactionArgument<string>;
288
- owner: RawTransactionArgument<string>;
289
- }
290
- export interface ComputeSealKeyIdOptions {
291
- package?: string;
292
- arguments: ComputeSealKeyIdArguments | [
293
- cap: RawTransactionArgument<string>,
294
- owner: RawTransactionArgument<string>
295
- ];
296
- }
297
- /**
298
- * Compute the SEAL key_id for this capability
299
- *
300
- * This can be called off-chain to get the key_id needed for encryption. key_id =
301
- * keccak256(owner || nonce)
302
- *
303
- * @param cap: Reference to the capability @param owner: Owner address (needed for
304
- * key derivation) @return: The computed key_id bytes
305
- */
306
- export function computeSealKeyId(options: ComputeSealKeyIdOptions) {
307
- const packageAddress = options.package ?? '@local-pkg/pdw';
308
- const argumentsTypes = [
309
- `${packageAddress}::capability::MemoryCap`,
310
- 'address'
311
- ] satisfies string[];
312
- const parameterNames = ["cap", "owner"];
313
- return (tx: Transaction) => tx.moveCall({
314
- package: packageAddress,
315
- module: 'capability',
316
- function: 'compute_seal_key_id',
317
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
318
- });
319
- }
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /**
7
+ * Capability-based access control module for Personal Data Wallet
8
+ *
9
+ * This module implements the SEAL PrivateData pattern for simplified access
10
+ * control using Move's capability pattern.
11
+ *
12
+ * Key benefits:
13
+ *
14
+ * - 1 user wallet instead of N HD wallets
15
+ * - Object ownership = access permission (SEAL idiomatic)
16
+ * - No global registry needed
17
+ * - 60% gas savings vs allowlist pattern
18
+ * - Type-safe access control
19
+ *
20
+ * Pattern combines:
21
+ *
22
+ * - Move Capability Pattern (object = proof of permission)
23
+ * - SEAL PrivateData (nonce-based key derivation)
24
+ * - PDW Requirements (app contexts)
25
+ *
26
+ * Reference:
27
+ * https://github.com/MystenLabs/seal/blob/main/move/patterns/sources/private_data.move
28
+ */
29
+
30
+ import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
31
+ import { bcs } from '@mysten/sui/bcs';
32
+ import { type Transaction } from '@mysten/sui/transactions';
33
+ import * as object from './deps/sui/object.js';
34
+ const $moduleName = '@local-pkg/pdw::capability';
35
+ export const MemoryCap = new MoveStruct({ name: `${$moduleName}::MemoryCap`, fields: {
36
+ id: object.UID,
37
+ /**
38
+ * Random nonce for SEAL key derivation key_id = keccak256(package_id || owner ||
39
+ * nonce)
40
+ */
41
+ nonce: bcs.vector(bcs.u8()),
42
+ /** Application context (e.g., "MEMO", "HEALTH") */
43
+ app_id: bcs.string()
44
+ } });
45
+ export const MemoryCapCreated = new MoveStruct({ name: `${$moduleName}::MemoryCapCreated`, fields: {
46
+ cap_id: bcs.Address,
47
+ owner: bcs.Address,
48
+ app_id: bcs.string(),
49
+ nonce: bcs.vector(bcs.u8()),
50
+ created_at: bcs.u64()
51
+ } });
52
+ export const MemoryCapTransferred = new MoveStruct({ name: `${$moduleName}::MemoryCapTransferred`, fields: {
53
+ cap_id: bcs.Address,
54
+ from: bcs.Address,
55
+ to: bcs.Address,
56
+ app_id: bcs.string()
57
+ } });
58
+ export const MemoryCapBurned = new MoveStruct({ name: `${$moduleName}::MemoryCapBurned`, fields: {
59
+ cap_id: bcs.Address,
60
+ owner: bcs.Address,
61
+ app_id: bcs.string()
62
+ } });
63
+ export const SealApproved = new MoveStruct({ name: `${$moduleName}::SealApproved`, fields: {
64
+ cap_id: bcs.Address,
65
+ owner: bcs.Address,
66
+ app_id: bcs.string(),
67
+ key_id: bcs.vector(bcs.u8())
68
+ } });
69
+ export interface CreateMemoryCapArguments {
70
+ appId: RawTransactionArgument<string>;
71
+ }
72
+ export interface CreateMemoryCapOptions {
73
+ package?: string;
74
+ arguments: CreateMemoryCapArguments | [
75
+ appId: RawTransactionArgument<string>
76
+ ];
77
+ }
78
+ /**
79
+ * Create a new memory capability for an app context
80
+ *
81
+ * This creates a MemoryCap object owned by the caller. The capability can be used
82
+ * to:
83
+ *
84
+ * - Encrypt/decrypt memories for this app context
85
+ * - Share access by transferring the capability
86
+ *
87
+ * @param app_id: Application identifier (e.g., "MEMO", "HEALTH") @param ctx:
88
+ * Transaction context
89
+ */
90
+ export function createMemoryCap(options: CreateMemoryCapOptions) {
91
+ const packageAddress = options.package ?? '@local-pkg/pdw';
92
+ const argumentsTypes = [
93
+ '0x0000000000000000000000000000000000000000000000000000000000000001::string::String'
94
+ ] satisfies string[];
95
+ const parameterNames = ["appId"];
96
+ return (tx: Transaction) => tx.moveCall({
97
+ package: packageAddress,
98
+ module: 'capability',
99
+ function: 'create_memory_cap',
100
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
101
+ });
102
+ }
103
+ export interface SealApproveArguments {
104
+ cap: RawTransactionArgument<string>;
105
+ keyId: RawTransactionArgument<number[]>;
106
+ }
107
+ export interface SealApproveOptions {
108
+ package?: string;
109
+ arguments: SealApproveArguments | [
110
+ cap: RawTransactionArgument<string>,
111
+ keyId: RawTransactionArgument<number[]>
112
+ ];
113
+ }
114
+ /**
115
+ * SEAL-compliant approval function
116
+ *
117
+ * This function follows the SEAL PrivateData pattern:
118
+ *
119
+ * - Entry function that aborts on denial (SEAL requirement)
120
+ * - Object holder can pass seal_approve
121
+ * - Any dApp can call with user's connected wallet
122
+ *
123
+ * Flow:
124
+ *
125
+ * 1. Verify caller owns the capability (via object reference)
126
+ * 2. Compute expected key_id from capability
127
+ * 3. Validate provided key_id matches
128
+ * 4. If valid, function returns (access granted)
129
+ * 5. If invalid, function aborts (access denied)
130
+ *
131
+ * @param cap: Reference to the MemoryCap object @param key_id: SEAL key identifier
132
+ * to validate @param ctx: Transaction context
133
+ */
134
+ export function sealApprove(options: SealApproveOptions) {
135
+ const packageAddress = options.package ?? '@local-pkg/pdw';
136
+ const argumentsTypes = [
137
+ `${packageAddress}::capability::MemoryCap`,
138
+ 'vector<u8>'
139
+ ] satisfies string[];
140
+ const parameterNames = ["cap", "keyId"];
141
+ return (tx: Transaction) => tx.moveCall({
142
+ package: packageAddress,
143
+ module: 'capability',
144
+ function: 'seal_approve',
145
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
146
+ });
147
+ }
148
+ export interface TransferCapArguments {
149
+ cap: RawTransactionArgument<string>;
150
+ recipient: RawTransactionArgument<string>;
151
+ }
152
+ export interface TransferCapOptions {
153
+ package?: string;
154
+ arguments: TransferCapArguments | [
155
+ cap: RawTransactionArgument<string>,
156
+ recipient: RawTransactionArgument<string>
157
+ ];
158
+ }
159
+ /**
160
+ * Transfer capability to another address (for delegation/sharing)
161
+ *
162
+ * After transfer:
163
+ *
164
+ * - New owner can call seal_approve
165
+ * - New owner can decrypt memories
166
+ * - Original owner loses access
167
+ *
168
+ * @param cap: The capability to transfer (consumed) @param recipient: Address to
169
+ * receive the capability
170
+ */
171
+ export function transferCap(options: TransferCapOptions) {
172
+ const packageAddress = options.package ?? '@local-pkg/pdw';
173
+ const argumentsTypes = [
174
+ `${packageAddress}::capability::MemoryCap`,
175
+ 'address'
176
+ ] satisfies string[];
177
+ const parameterNames = ["cap", "recipient"];
178
+ return (tx: Transaction) => tx.moveCall({
179
+ package: packageAddress,
180
+ module: 'capability',
181
+ function: 'transfer_cap',
182
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
183
+ });
184
+ }
185
+ export interface BurnCapArguments {
186
+ cap: RawTransactionArgument<string>;
187
+ }
188
+ export interface BurnCapOptions {
189
+ package?: string;
190
+ arguments: BurnCapArguments | [
191
+ cap: RawTransactionArgument<string>
192
+ ];
193
+ }
194
+ /**
195
+ * Burn (delete) a capability
196
+ *
197
+ * This permanently revokes the capability. After burning:
198
+ *
199
+ * - No one can decrypt memories for this context
200
+ * - Object is permanently deleted
201
+ *
202
+ * @param cap: The capability to burn (consumed)
203
+ */
204
+ export function burnCap(options: BurnCapOptions) {
205
+ const packageAddress = options.package ?? '@local-pkg/pdw';
206
+ const argumentsTypes = [
207
+ `${packageAddress}::capability::MemoryCap`
208
+ ] satisfies string[];
209
+ const parameterNames = ["cap"];
210
+ return (tx: Transaction) => tx.moveCall({
211
+ package: packageAddress,
212
+ module: 'capability',
213
+ function: 'burn_cap',
214
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
215
+ });
216
+ }
217
+ export interface GetAppIdArguments {
218
+ cap: RawTransactionArgument<string>;
219
+ }
220
+ export interface GetAppIdOptions {
221
+ package?: string;
222
+ arguments: GetAppIdArguments | [
223
+ cap: RawTransactionArgument<string>
224
+ ];
225
+ }
226
+ /** Get the app_id from a capability */
227
+ export function getAppId(options: GetAppIdOptions) {
228
+ const packageAddress = options.package ?? '@local-pkg/pdw';
229
+ const argumentsTypes = [
230
+ `${packageAddress}::capability::MemoryCap`
231
+ ] satisfies string[];
232
+ const parameterNames = ["cap"];
233
+ return (tx: Transaction) => tx.moveCall({
234
+ package: packageAddress,
235
+ module: 'capability',
236
+ function: 'get_app_id',
237
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
238
+ });
239
+ }
240
+ export interface GetNonceArguments {
241
+ cap: RawTransactionArgument<string>;
242
+ }
243
+ export interface GetNonceOptions {
244
+ package?: string;
245
+ arguments: GetNonceArguments | [
246
+ cap: RawTransactionArgument<string>
247
+ ];
248
+ }
249
+ /** Get the nonce from a capability */
250
+ export function getNonce(options: GetNonceOptions) {
251
+ const packageAddress = options.package ?? '@local-pkg/pdw';
252
+ const argumentsTypes = [
253
+ `${packageAddress}::capability::MemoryCap`
254
+ ] satisfies string[];
255
+ const parameterNames = ["cap"];
256
+ return (tx: Transaction) => tx.moveCall({
257
+ package: packageAddress,
258
+ module: 'capability',
259
+ function: 'get_nonce',
260
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
261
+ });
262
+ }
263
+ export interface GetCapIdArguments {
264
+ cap: RawTransactionArgument<string>;
265
+ }
266
+ export interface GetCapIdOptions {
267
+ package?: string;
268
+ arguments: GetCapIdArguments | [
269
+ cap: RawTransactionArgument<string>
270
+ ];
271
+ }
272
+ /** Get the object ID of a capability */
273
+ export function getCapId(options: GetCapIdOptions) {
274
+ const packageAddress = options.package ?? '@local-pkg/pdw';
275
+ const argumentsTypes = [
276
+ `${packageAddress}::capability::MemoryCap`
277
+ ] satisfies string[];
278
+ const parameterNames = ["cap"];
279
+ return (tx: Transaction) => tx.moveCall({
280
+ package: packageAddress,
281
+ module: 'capability',
282
+ function: 'get_cap_id',
283
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
284
+ });
285
+ }
286
+ export interface ComputeSealKeyIdArguments {
287
+ cap: RawTransactionArgument<string>;
288
+ owner: RawTransactionArgument<string>;
289
+ }
290
+ export interface ComputeSealKeyIdOptions {
291
+ package?: string;
292
+ arguments: ComputeSealKeyIdArguments | [
293
+ cap: RawTransactionArgument<string>,
294
+ owner: RawTransactionArgument<string>
295
+ ];
296
+ }
297
+ /**
298
+ * Compute the SEAL key_id for this capability
299
+ *
300
+ * This can be called off-chain to get the key_id needed for encryption. key_id =
301
+ * keccak256(owner || nonce)
302
+ *
303
+ * @param cap: Reference to the capability @param owner: Owner address (needed for
304
+ * key derivation) @return: The computed key_id bytes
305
+ */
306
+ export function computeSealKeyId(options: ComputeSealKeyIdOptions) {
307
+ const packageAddress = options.package ?? '@local-pkg/pdw';
308
+ const argumentsTypes = [
309
+ `${packageAddress}::capability::MemoryCap`,
310
+ 'address'
311
+ ] satisfies string[];
312
+ const parameterNames = ["cap", "owner"];
313
+ return (tx: Transaction) => tx.moveCall({
314
+ package: packageAddress,
315
+ module: 'capability',
316
+ function: 'compute_seal_key_id',
317
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
318
+ });
319
+ }
@@ -1,13 +1,13 @@
1
- /**************************************************************
2
- * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
- **************************************************************/
4
-
5
-
6
- /** Sui object identifiers */
7
-
8
- import { MoveStruct } from '../../../utils/index.js';
9
- import { bcs } from '@mysten/sui/bcs';
10
- const $moduleName = '0x2::object';
11
- export const UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: {
12
- id: bcs.Address
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /** Sui object identifiers */
7
+
8
+ import { MoveStruct } from '../../../utils/index.js';
9
+ import { bcs } from '@mysten/sui/bcs';
10
+ const $moduleName = '0x2::object';
11
+ export const UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: {
12
+ id: bcs.Address
13
13
  } });