@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.
Files changed (247) hide show
  1. package/ARCHITECTURE.md +547 -547
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +310 -181
  4. package/dist/ai-sdk/tools.d.ts +2 -2
  5. package/dist/ai-sdk/tools.js +2 -2
  6. package/dist/client/ClientMemoryManager.js +2 -2
  7. package/dist/client/ClientMemoryManager.js.map +1 -1
  8. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  9. package/dist/client/SimplePDWClient.d.ts +29 -1
  10. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  11. package/dist/client/SimplePDWClient.js +45 -13
  12. package/dist/client/SimplePDWClient.js.map +1 -1
  13. package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
  14. package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
  15. package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
  16. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  17. package/dist/client/namespaces/MemoryNamespace.js +272 -39
  18. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  19. package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
  20. package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
  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 +62 -4
  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/config/ConfigurationHelper.js +61 -61
  30. package/dist/config/defaults.js +2 -2
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/graph/GraphService.js +21 -21
  33. package/dist/graph/GraphService.js.map +1 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
  39. package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
  40. package/dist/infrastructure/seal/EncryptionService.js +37 -15
  41. package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
  42. package/dist/infrastructure/seal/SealService.d.ts +13 -5
  43. package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
  44. package/dist/infrastructure/seal/SealService.js +36 -34
  45. package/dist/infrastructure/seal/SealService.js.map +1 -1
  46. package/dist/langchain/createPDWRAG.js +30 -30
  47. package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
  48. package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
  49. package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
  50. package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
  51. package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
  52. package/dist/retrieval/MemoryRetrievalService.js +44 -4
  53. package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
  54. package/dist/services/CapabilityService.d.ts.map +1 -1
  55. package/dist/services/CapabilityService.js +30 -14
  56. package/dist/services/CapabilityService.js.map +1 -1
  57. package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
  58. package/dist/services/CrossContextPermissionService.js +9 -7
  59. package/dist/services/CrossContextPermissionService.js.map +1 -1
  60. package/dist/services/EmbeddingService.d.ts +28 -1
  61. package/dist/services/EmbeddingService.d.ts.map +1 -1
  62. package/dist/services/EmbeddingService.js +54 -0
  63. package/dist/services/EmbeddingService.js.map +1 -1
  64. package/dist/services/EncryptionService.d.ts.map +1 -1
  65. package/dist/services/EncryptionService.js +6 -5
  66. package/dist/services/EncryptionService.js.map +1 -1
  67. package/dist/services/GeminiAIService.js +309 -309
  68. package/dist/services/IndexManager.d.ts +5 -1
  69. package/dist/services/IndexManager.d.ts.map +1 -1
  70. package/dist/services/IndexManager.js +17 -40
  71. package/dist/services/IndexManager.js.map +1 -1
  72. package/dist/services/QueryService.js +1 -1
  73. package/dist/services/QueryService.js.map +1 -1
  74. package/dist/services/StorageService.d.ts +11 -0
  75. package/dist/services/StorageService.d.ts.map +1 -1
  76. package/dist/services/StorageService.js +73 -10
  77. package/dist/services/StorageService.js.map +1 -1
  78. package/dist/services/TransactionService.d.ts +20 -0
  79. package/dist/services/TransactionService.d.ts.map +1 -1
  80. package/dist/services/TransactionService.js +43 -0
  81. package/dist/services/TransactionService.js.map +1 -1
  82. package/dist/services/ViewService.js +2 -2
  83. package/dist/services/ViewService.js.map +1 -1
  84. package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
  85. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  86. package/dist/services/storage/QuiltBatchManager.js +410 -20
  87. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  88. package/dist/services/storage/index.d.ts +1 -1
  89. package/dist/services/storage/index.d.ts.map +1 -1
  90. package/dist/services/storage/index.js.map +1 -1
  91. package/dist/utils/LRUCache.d.ts +106 -0
  92. package/dist/utils/LRUCache.d.ts.map +1 -0
  93. package/dist/utils/LRUCache.js +281 -0
  94. package/dist/utils/LRUCache.js.map +1 -0
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.d.ts.map +1 -1
  97. package/dist/utils/index.js +2 -0
  98. package/dist/utils/index.js.map +1 -1
  99. package/dist/utils/memoryIndexOnChain.d.ts +212 -0
  100. package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
  101. package/dist/utils/memoryIndexOnChain.js +312 -0
  102. package/dist/utils/memoryIndexOnChain.js.map +1 -0
  103. package/dist/utils/rebuildIndexNode.d.ts +29 -0
  104. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  105. package/dist/utils/rebuildIndexNode.js +366 -98
  106. package/dist/utils/rebuildIndexNode.js.map +1 -1
  107. package/dist/vector/HnswWasmService.d.ts +20 -5
  108. package/dist/vector/HnswWasmService.d.ts.map +1 -1
  109. package/dist/vector/HnswWasmService.js +73 -40
  110. package/dist/vector/HnswWasmService.js.map +1 -1
  111. package/dist/vector/IHnswService.d.ts +10 -1
  112. package/dist/vector/IHnswService.d.ts.map +1 -1
  113. package/dist/vector/IHnswService.js.map +1 -1
  114. package/dist/vector/NodeHnswService.d.ts +16 -0
  115. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  116. package/dist/vector/NodeHnswService.js +84 -5
  117. package/dist/vector/NodeHnswService.js.map +1 -1
  118. package/dist/vector/createHnswService.d.ts +1 -1
  119. package/dist/vector/createHnswService.js +1 -1
  120. package/dist/vector/index.d.ts +1 -1
  121. package/dist/vector/index.js +1 -1
  122. package/package.json +157 -157
  123. package/src/access/PermissionService.ts +635 -635
  124. package/src/aggregation/AggregationService.ts +389 -389
  125. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  126. package/src/ai-sdk/index.ts +65 -65
  127. package/src/ai-sdk/tools.ts +460 -460
  128. package/src/ai-sdk/types.ts +404 -404
  129. package/src/batch/BatchManager.ts +597 -597
  130. package/src/batch/BatchingService.ts +429 -429
  131. package/src/batch/MemoryProcessingCache.ts +492 -492
  132. package/src/batch/index.ts +30 -30
  133. package/src/browser.ts +200 -200
  134. package/src/client/ClientMemoryManager.ts +987 -987
  135. package/src/client/PersonalDataWallet.ts +345 -345
  136. package/src/client/SimplePDWClient.ts +1289 -1222
  137. package/src/client/factory.ts +154 -154
  138. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  139. package/src/client/namespaces/BatchNamespace.ts +356 -356
  140. package/src/client/namespaces/CacheNamespace.ts +123 -123
  141. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  142. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  143. package/src/client/namespaces/ContextNamespace.ts +297 -297
  144. package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
  145. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  146. package/src/client/namespaces/GraphNamespace.ts +468 -468
  147. package/src/client/namespaces/IndexNamespace.ts +361 -361
  148. package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
  149. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  150. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  151. package/src/client/namespaces/SearchNamespace.ts +1049 -1049
  152. package/src/client/namespaces/StorageNamespace.ts +458 -458
  153. package/src/client/namespaces/TxNamespace.ts +260 -260
  154. package/src/client/namespaces/WalletNamespace.ts +243 -243
  155. package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
  156. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
  157. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  158. package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
  159. package/src/client/namespaces/consolidated/index.ts +39 -39
  160. package/src/client/signers/KeypairSigner.ts +108 -108
  161. package/src/client/signers/UnifiedSigner.ts +110 -110
  162. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  163. package/src/client/signers/index.ts +26 -26
  164. package/src/config/ConfigurationHelper.ts +412 -412
  165. package/src/config/defaults.ts +51 -51
  166. package/src/config/index.ts +8 -8
  167. package/src/config/validation.ts +70 -70
  168. package/src/core/index.ts +14 -14
  169. package/src/core/interfaces/IService.ts +307 -307
  170. package/src/core/interfaces/index.ts +8 -8
  171. package/src/core/types/capability.ts +297 -297
  172. package/src/core/types/index.ts +870 -870
  173. package/src/core/types/wallet.ts +270 -270
  174. package/src/core/types.ts +9 -9
  175. package/src/core/wallet.ts +222 -222
  176. package/src/embedding/index.ts +19 -19
  177. package/src/embedding/types.ts +357 -357
  178. package/src/errors/index.ts +602 -602
  179. package/src/errors/recovery.ts +461 -461
  180. package/src/errors/validation.ts +567 -567
  181. package/src/generated/pdw/capability.ts +319 -319
  182. package/src/graph/GraphService.ts +887 -887
  183. package/src/graph/KnowledgeGraphManager.ts +728 -728
  184. package/src/graph/index.ts +25 -25
  185. package/src/index.ts +498 -474
  186. package/src/infrastructure/index.ts +22 -22
  187. package/src/infrastructure/seal/EncryptionService.ts +628 -603
  188. package/src/infrastructure/seal/SealService.ts +613 -615
  189. package/src/infrastructure/seal/index.ts +9 -9
  190. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  191. package/src/infrastructure/sui/SuiService.ts +888 -888
  192. package/src/infrastructure/sui/index.ts +9 -9
  193. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  194. package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
  195. package/src/infrastructure/walrus/index.ts +9 -9
  196. package/src/langchain/PDWEmbeddings.ts +145 -145
  197. package/src/langchain/PDWVectorStore.ts +456 -456
  198. package/src/langchain/createPDWRAG.ts +303 -303
  199. package/src/langchain/index.ts +47 -47
  200. package/src/permissions/ConsentRepository.browser.ts +249 -249
  201. package/src/permissions/ConsentRepository.ts +364 -364
  202. package/src/pipeline/MemoryPipeline.ts +862 -862
  203. package/src/pipeline/PipelineManager.ts +683 -683
  204. package/src/pipeline/index.ts +26 -26
  205. package/src/retrieval/AdvancedSearchService.ts +629 -629
  206. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  207. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
  208. package/src/retrieval/MemoryRetrievalService.ts +904 -830
  209. package/src/retrieval/index.ts +42 -42
  210. package/src/services/BatchService.ts +352 -352
  211. package/src/services/CapabilityService.ts +464 -448
  212. package/src/services/ClassifierService.ts +465 -465
  213. package/src/services/CrossContextPermissionService.ts +486 -484
  214. package/src/services/EmbeddingService.ts +771 -706
  215. package/src/services/EncryptionService.ts +712 -711
  216. package/src/services/GeminiAIService.ts +753 -753
  217. package/src/services/IndexManager.ts +977 -1004
  218. package/src/services/MemoryIndexService.ts +1003 -1003
  219. package/src/services/MemoryService.ts +369 -369
  220. package/src/services/QueryService.ts +890 -890
  221. package/src/services/StorageService.ts +1182 -1111
  222. package/src/services/TransactionService.ts +838 -790
  223. package/src/services/VectorService.ts +462 -462
  224. package/src/services/ViewService.ts +484 -484
  225. package/src/services/index.ts +25 -25
  226. package/src/services/storage/BlobAttributesManager.ts +333 -333
  227. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  228. package/src/services/storage/MemorySearchManager.ts +387 -387
  229. package/src/services/storage/QuiltBatchManager.ts +1130 -660
  230. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  231. package/src/services/storage/WalrusStorageManager.ts +287 -287
  232. package/src/services/storage/index.ts +57 -52
  233. package/src/types/index.ts +13 -13
  234. package/src/utils/LRUCache.ts +378 -0
  235. package/src/utils/index.ts +76 -68
  236. package/src/utils/memoryIndexOnChain.ts +507 -0
  237. package/src/utils/rebuildIndex.ts +290 -290
  238. package/src/utils/rebuildIndexNode.ts +771 -424
  239. package/src/vector/BrowserHnswIndexService.ts +758 -758
  240. package/src/vector/HnswWasmService.ts +731 -679
  241. package/src/vector/IHnswService.ts +233 -224
  242. package/src/vector/NodeHnswService.ts +833 -735
  243. package/src/vector/VectorManager.ts +478 -478
  244. package/src/vector/createHnswService.ts +135 -135
  245. package/src/vector/index.ts +56 -56
  246. package/src/wallet/ContextWalletService.ts +656 -656
  247. package/src/wallet/MainWalletService.ts +317 -317
@@ -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
+ }