@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,123 +1,123 @@
1
- /**
2
- * Cache Namespace - LRU Cache Operations
3
- *
4
- * Pure delegation to BatchService cache methods.
5
- * Provides fast in-memory caching with TTL support.
6
- *
7
- * @module client/namespaces
8
- */
9
-
10
- import type { ServiceContainer } from '../SimplePDWClient';
11
-
12
- /**
13
- * Cache statistics
14
- */
15
- export interface CacheStats {
16
- size: number;
17
- totalAccess: number;
18
- hitRate: number;
19
- oldestItem?: Date;
20
- newestItem?: Date;
21
- }
22
-
23
- /**
24
- * Cache Namespace
25
- *
26
- * Handles in-memory caching operations with TTL and LRU eviction
27
- */
28
- export class CacheNamespace {
29
- constructor(private services: ServiceContainer) {}
30
-
31
- /**
32
- * Get cached value
33
- *
34
- * Delegates to: BatchService.getCache()
35
- *
36
- * @param key - Cache key
37
- * @returns Cached value or null if not found/expired
38
- */
39
- get<T = any>(key: string): T | null {
40
- if (!this.services.batchService) {
41
- throw new Error('Batch service (cache) not configured.');
42
- }
43
-
44
- return this.services.batchService.getCache<T>(key);
45
- }
46
-
47
- /**
48
- * Set cache value
49
- *
50
- * Delegates to: BatchService.setCache()
51
- *
52
- * @param key - Cache key
53
- * @param value - Value to cache
54
- * @param ttl - Time-to-live in milliseconds (optional)
55
- */
56
- set<T = any>(key: string, value: T, ttl?: number): void {
57
- if (!this.services.batchService) {
58
- throw new Error('Batch service (cache) not configured.');
59
- }
60
-
61
- this.services.batchService.setCache(key, value, ttl);
62
- }
63
-
64
- /**
65
- * Check if key exists in cache
66
- *
67
- * Delegates to: BatchService.hasCache()
68
- *
69
- * @param key - Cache key
70
- * @returns True if key exists and not expired
71
- */
72
- has(key: string): boolean {
73
- if (!this.services.batchService) {
74
- throw new Error('Batch service (cache) not configured.');
75
- }
76
-
77
- return this.services.batchService.hasCache(key);
78
- }
79
-
80
- /**
81
- * Delete cache entry
82
- *
83
- * Delegates to: BatchService.deleteCache()
84
- *
85
- * @param key - Cache key
86
- * @returns True if deleted, false if not found
87
- */
88
- delete(key: string): boolean {
89
- if (!this.services.batchService) {
90
- throw new Error('Batch service (cache) not configured.');
91
- }
92
-
93
- return this.services.batchService.deleteCache(key);
94
- }
95
-
96
- /**
97
- * Clear all cache entries
98
- *
99
- * Delegates to: BatchService.clearCache()
100
- */
101
- clear(): void {
102
- if (!this.services.batchService) {
103
- throw new Error('Batch service (cache) not configured.');
104
- }
105
-
106
- this.services.batchService.clearCache();
107
- }
108
-
109
- /**
110
- * Get cache statistics
111
- *
112
- * Delegates to: BatchService.getCacheStats()
113
- *
114
- * @returns Cache statistics
115
- */
116
- stats(): CacheStats {
117
- if (!this.services.batchService) {
118
- throw new Error('Batch service (cache) not configured.');
119
- }
120
-
121
- return this.services.batchService.getCacheStats();
122
- }
123
- }
1
+ /**
2
+ * Cache Namespace - LRU Cache Operations
3
+ *
4
+ * Pure delegation to BatchService cache methods.
5
+ * Provides fast in-memory caching with TTL support.
6
+ *
7
+ * @module client/namespaces
8
+ */
9
+
10
+ import type { ServiceContainer } from '../SimplePDWClient';
11
+
12
+ /**
13
+ * Cache statistics
14
+ */
15
+ export interface CacheStats {
16
+ size: number;
17
+ totalAccess: number;
18
+ hitRate: number;
19
+ oldestItem?: Date;
20
+ newestItem?: Date;
21
+ }
22
+
23
+ /**
24
+ * Cache Namespace
25
+ *
26
+ * Handles in-memory caching operations with TTL and LRU eviction
27
+ */
28
+ export class CacheNamespace {
29
+ constructor(private services: ServiceContainer) {}
30
+
31
+ /**
32
+ * Get cached value
33
+ *
34
+ * Delegates to: BatchService.getCache()
35
+ *
36
+ * @param key - Cache key
37
+ * @returns Cached value or null if not found/expired
38
+ */
39
+ get<T = any>(key: string): T | null {
40
+ if (!this.services.batchService) {
41
+ throw new Error('Batch service (cache) not configured.');
42
+ }
43
+
44
+ return this.services.batchService.getCache<T>(key);
45
+ }
46
+
47
+ /**
48
+ * Set cache value
49
+ *
50
+ * Delegates to: BatchService.setCache()
51
+ *
52
+ * @param key - Cache key
53
+ * @param value - Value to cache
54
+ * @param ttl - Time-to-live in milliseconds (optional)
55
+ */
56
+ set<T = any>(key: string, value: T, ttl?: number): void {
57
+ if (!this.services.batchService) {
58
+ throw new Error('Batch service (cache) not configured.');
59
+ }
60
+
61
+ this.services.batchService.setCache(key, value, ttl);
62
+ }
63
+
64
+ /**
65
+ * Check if key exists in cache
66
+ *
67
+ * Delegates to: BatchService.hasCache()
68
+ *
69
+ * @param key - Cache key
70
+ * @returns True if key exists and not expired
71
+ */
72
+ has(key: string): boolean {
73
+ if (!this.services.batchService) {
74
+ throw new Error('Batch service (cache) not configured.');
75
+ }
76
+
77
+ return this.services.batchService.hasCache(key);
78
+ }
79
+
80
+ /**
81
+ * Delete cache entry
82
+ *
83
+ * Delegates to: BatchService.deleteCache()
84
+ *
85
+ * @param key - Cache key
86
+ * @returns True if deleted, false if not found
87
+ */
88
+ delete(key: string): boolean {
89
+ if (!this.services.batchService) {
90
+ throw new Error('Batch service (cache) not configured.');
91
+ }
92
+
93
+ return this.services.batchService.deleteCache(key);
94
+ }
95
+
96
+ /**
97
+ * Clear all cache entries
98
+ *
99
+ * Delegates to: BatchService.clearCache()
100
+ */
101
+ clear(): void {
102
+ if (!this.services.batchService) {
103
+ throw new Error('Batch service (cache) not configured.');
104
+ }
105
+
106
+ this.services.batchService.clearCache();
107
+ }
108
+
109
+ /**
110
+ * Get cache statistics
111
+ *
112
+ * Delegates to: BatchService.getCacheStats()
113
+ *
114
+ * @returns Cache statistics
115
+ */
116
+ stats(): CacheStats {
117
+ if (!this.services.batchService) {
118
+ throw new Error('Batch service (cache) not configured.');
119
+ }
120
+
121
+ return this.services.batchService.getCacheStats();
122
+ }
123
+ }
@@ -1,217 +1,217 @@
1
- /**
2
- * Capability Namespace - MemoryCap Object Operations
3
- *
4
- * Provides API for managing MemoryCap capability objects using
5
- * the SEAL PrivateData pattern.
6
- *
7
- * Key concepts:
8
- * - MemoryCap: Capability object for app context access
9
- * - Object ownership = access permission (SEAL idiomatic)
10
- * - Transfer capability = share access
11
- * - Burn capability = revoke access
12
- *
13
- * @module client/namespaces
14
- */
15
-
16
- import type { ServiceContainer } from '../SimplePDWClient';
17
- import type { MemoryCap } from '../../core/types/capability';
18
- import { CapabilityService } from '../../services/CapabilityService';
19
-
20
- /**
21
- * Options for creating a capability
22
- */
23
- export interface CreateCapabilityOptions {
24
- appId: string;
25
- }
26
-
27
- /**
28
- * Options for listing capabilities
29
- */
30
- export interface ListCapabilityOptions {
31
- appId?: string;
32
- }
33
-
34
- /**
35
- * Capability Namespace
36
- *
37
- * Handles MemoryCap CRUD operations
38
- */
39
- export class CapabilityNamespace {
40
- private capService: CapabilityService | null = null;
41
-
42
- constructor(private services: ServiceContainer) {
43
- // Initialize CapabilityService if SuiClient and packageId available
44
- const suiClient = this.services.config.sui?.client;
45
- const packageId = this.services.config.sui?.packageId;
46
-
47
- if (suiClient && packageId) {
48
- this.capService = new CapabilityService({
49
- suiClient,
50
- packageId,
51
- });
52
- }
53
- }
54
-
55
- /**
56
- * Ensure CapabilityService is initialized
57
- */
58
- private ensureService(): CapabilityService {
59
- if (!this.capService) {
60
- throw new Error('CapabilityService not initialized. Check Sui configuration.');
61
- }
62
- return this.capService;
63
- }
64
-
65
- /**
66
- * Create a new MemoryCap for an app context
67
- *
68
- * @param appId - Application identifier (e.g., "MEMO", "HEALTH")
69
- * @returns Created MemoryCap
70
- *
71
- * @example
72
- * ```typescript
73
- * const cap = await pdw.capability.create('MEMO');
74
- * console.log(cap.id, cap.appId, cap.nonce);
75
- * ```
76
- */
77
- async create(appId: string): Promise<MemoryCap> {
78
- const service = this.ensureService();
79
- const signer = this.services.config.signer.getSigner();
80
-
81
- return await service.create({ appId }, signer);
82
- }
83
-
84
- /**
85
- * Get an existing capability by app ID
86
- *
87
- * @param appId - Application identifier
88
- * @returns MemoryCap or null if not found
89
- */
90
- async get(appId: string): Promise<MemoryCap | null> {
91
- const service = this.ensureService();
92
- return await service.get(this.services.config.userAddress, appId);
93
- }
94
-
95
- /**
96
- * Get or create a capability for an app context
97
- *
98
- * Convenience method that returns existing capability if found,
99
- * otherwise creates a new one.
100
- *
101
- * @param appId - Application identifier
102
- * @returns Existing or newly created MemoryCap
103
- */
104
- async getOrCreate(appId: string): Promise<MemoryCap> {
105
- const service = this.ensureService();
106
- const signer = this.services.config.signer.getSigner();
107
-
108
- return await service.getOrCreate(
109
- { appId, userAddress: this.services.config.userAddress },
110
- signer
111
- );
112
- }
113
-
114
- /**
115
- * List all capabilities owned by the current user
116
- *
117
- * @param options - Optional filter by appId
118
- * @returns Array of MemoryCaps
119
- *
120
- * @example
121
- * ```typescript
122
- * // List all capabilities
123
- * const allCaps = await pdw.capability.list();
124
- *
125
- * // Filter by app ID
126
- * const memoCaps = await pdw.capability.list({ appId: 'MEMO' });
127
- * ```
128
- */
129
- async list(options?: ListCapabilityOptions): Promise<MemoryCap[]> {
130
- const service = this.ensureService();
131
-
132
- return await service.list({
133
- userAddress: this.services.config.userAddress,
134
- appId: options?.appId,
135
- });
136
- }
137
-
138
- /**
139
- * Transfer a capability to another address
140
- *
141
- * After transfer:
142
- * - New owner can decrypt memories for this context
143
- * - Original owner loses access
144
- *
145
- * @param capId - Capability object ID to transfer
146
- * @param recipient - Recipient's Sui address
147
- *
148
- * @example
149
- * ```typescript
150
- * await pdw.capability.transfer(cap.id, '0x1234...');
151
- * ```
152
- */
153
- async transfer(capId: string, recipient: string): Promise<void> {
154
- const service = this.ensureService();
155
- const signer = this.services.config.signer.getSigner();
156
-
157
- await service.transfer({ capId, recipient }, signer);
158
- }
159
-
160
- /**
161
- * Burn (revoke) a capability
162
- *
163
- * This permanently revokes the capability.
164
- * After burning:
165
- * - No one can decrypt memories for this context
166
- * - Object is permanently deleted
167
- *
168
- * @param capId - Capability object ID to burn
169
- *
170
- * @example
171
- * ```typescript
172
- * await pdw.capability.burn(cap.id);
173
- * ```
174
- */
175
- async burn(capId: string): Promise<void> {
176
- const service = this.ensureService();
177
- const signer = this.services.config.signer.getSigner();
178
-
179
- await service.burn({ capId }, signer);
180
- }
181
-
182
- /**
183
- * Check if user has capability for an app context
184
- *
185
- * @param appId - Application identifier
186
- * @returns True if capability exists
187
- */
188
- async has(appId: string): Promise<boolean> {
189
- const service = this.ensureService();
190
- return await service.hasCapability(this.services.config.userAddress, appId);
191
- }
192
-
193
- /**
194
- * Get capability by object ID
195
- *
196
- * @param capId - Capability object ID
197
- * @returns MemoryCap or null
198
- */
199
- async getById(capId: string): Promise<MemoryCap | null> {
200
- const service = this.ensureService();
201
- return await service.getById(capId);
202
- }
203
-
204
- /**
205
- * Compute SEAL key ID for a capability
206
- *
207
- * Used for SEAL encryption/decryption key derivation.
208
- * key_id = keccak256(owner || nonce)
209
- *
210
- * @param cap - MemoryCap object
211
- * @returns Key ID as hex string
212
- */
213
- computeKeyId(cap: MemoryCap): string {
214
- const service = this.ensureService();
215
- return service.computeKeyId(cap);
216
- }
217
- }
1
+ /**
2
+ * Capability Namespace - MemoryCap Object Operations
3
+ *
4
+ * Provides API for managing MemoryCap capability objects using
5
+ * the SEAL PrivateData pattern.
6
+ *
7
+ * Key concepts:
8
+ * - MemoryCap: Capability object for app context access
9
+ * - Object ownership = access permission (SEAL idiomatic)
10
+ * - Transfer capability = share access
11
+ * - Burn capability = revoke access
12
+ *
13
+ * @module client/namespaces
14
+ */
15
+
16
+ import type { ServiceContainer } from '../SimplePDWClient';
17
+ import type { MemoryCap } from '../../core/types/capability';
18
+ import { CapabilityService } from '../../services/CapabilityService';
19
+
20
+ /**
21
+ * Options for creating a capability
22
+ */
23
+ export interface CreateCapabilityOptions {
24
+ appId: string;
25
+ }
26
+
27
+ /**
28
+ * Options for listing capabilities
29
+ */
30
+ export interface ListCapabilityOptions {
31
+ appId?: string;
32
+ }
33
+
34
+ /**
35
+ * Capability Namespace
36
+ *
37
+ * Handles MemoryCap CRUD operations
38
+ */
39
+ export class CapabilityNamespace {
40
+ private capService: CapabilityService | null = null;
41
+
42
+ constructor(private services: ServiceContainer) {
43
+ // Initialize CapabilityService if SuiClient and packageId available
44
+ const suiClient = this.services.config.sui?.client;
45
+ const packageId = this.services.config.sui?.packageId;
46
+
47
+ if (suiClient && packageId) {
48
+ this.capService = new CapabilityService({
49
+ suiClient,
50
+ packageId,
51
+ });
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Ensure CapabilityService is initialized
57
+ */
58
+ private ensureService(): CapabilityService {
59
+ if (!this.capService) {
60
+ throw new Error('CapabilityService not initialized. Check Sui configuration.');
61
+ }
62
+ return this.capService;
63
+ }
64
+
65
+ /**
66
+ * Create a new MemoryCap for an app context
67
+ *
68
+ * @param appId - Application identifier (e.g., "MEMO", "HEALTH")
69
+ * @returns Created MemoryCap
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const cap = await pdw.capability.create('MEMO');
74
+ * console.log(cap.id, cap.appId, cap.nonce);
75
+ * ```
76
+ */
77
+ async create(appId: string): Promise<MemoryCap> {
78
+ const service = this.ensureService();
79
+ const signer = this.services.config.signer.getSigner();
80
+
81
+ return await service.create({ appId }, signer);
82
+ }
83
+
84
+ /**
85
+ * Get an existing capability by app ID
86
+ *
87
+ * @param appId - Application identifier
88
+ * @returns MemoryCap or null if not found
89
+ */
90
+ async get(appId: string): Promise<MemoryCap | null> {
91
+ const service = this.ensureService();
92
+ return await service.get(this.services.config.userAddress, appId);
93
+ }
94
+
95
+ /**
96
+ * Get or create a capability for an app context
97
+ *
98
+ * Convenience method that returns existing capability if found,
99
+ * otherwise creates a new one.
100
+ *
101
+ * @param appId - Application identifier
102
+ * @returns Existing or newly created MemoryCap
103
+ */
104
+ async getOrCreate(appId: string): Promise<MemoryCap> {
105
+ const service = this.ensureService();
106
+ const signer = this.services.config.signer.getSigner();
107
+
108
+ return await service.getOrCreate(
109
+ { appId, userAddress: this.services.config.userAddress },
110
+ signer
111
+ );
112
+ }
113
+
114
+ /**
115
+ * List all capabilities owned by the current user
116
+ *
117
+ * @param options - Optional filter by appId
118
+ * @returns Array of MemoryCaps
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * // List all capabilities
123
+ * const allCaps = await pdw.capability.list();
124
+ *
125
+ * // Filter by app ID
126
+ * const memoCaps = await pdw.capability.list({ appId: 'MEMO' });
127
+ * ```
128
+ */
129
+ async list(options?: ListCapabilityOptions): Promise<MemoryCap[]> {
130
+ const service = this.ensureService();
131
+
132
+ return await service.list({
133
+ userAddress: this.services.config.userAddress,
134
+ appId: options?.appId,
135
+ });
136
+ }
137
+
138
+ /**
139
+ * Transfer a capability to another address
140
+ *
141
+ * After transfer:
142
+ * - New owner can decrypt memories for this context
143
+ * - Original owner loses access
144
+ *
145
+ * @param capId - Capability object ID to transfer
146
+ * @param recipient - Recipient's Sui address
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * await pdw.capability.transfer(cap.id, '0x1234...');
151
+ * ```
152
+ */
153
+ async transfer(capId: string, recipient: string): Promise<void> {
154
+ const service = this.ensureService();
155
+ const signer = this.services.config.signer.getSigner();
156
+
157
+ await service.transfer({ capId, recipient }, signer);
158
+ }
159
+
160
+ /**
161
+ * Burn (revoke) a capability
162
+ *
163
+ * This permanently revokes the capability.
164
+ * After burning:
165
+ * - No one can decrypt memories for this context
166
+ * - Object is permanently deleted
167
+ *
168
+ * @param capId - Capability object ID to burn
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * await pdw.capability.burn(cap.id);
173
+ * ```
174
+ */
175
+ async burn(capId: string): Promise<void> {
176
+ const service = this.ensureService();
177
+ const signer = this.services.config.signer.getSigner();
178
+
179
+ await service.burn({ capId }, signer);
180
+ }
181
+
182
+ /**
183
+ * Check if user has capability for an app context
184
+ *
185
+ * @param appId - Application identifier
186
+ * @returns True if capability exists
187
+ */
188
+ async has(appId: string): Promise<boolean> {
189
+ const service = this.ensureService();
190
+ return await service.hasCapability(this.services.config.userAddress, appId);
191
+ }
192
+
193
+ /**
194
+ * Get capability by object ID
195
+ *
196
+ * @param capId - Capability object ID
197
+ * @returns MemoryCap or null
198
+ */
199
+ async getById(capId: string): Promise<MemoryCap | null> {
200
+ const service = this.ensureService();
201
+ return await service.getById(capId);
202
+ }
203
+
204
+ /**
205
+ * Compute SEAL key ID for a capability
206
+ *
207
+ * Used for SEAL encryption/decryption key derivation.
208
+ * key_id = keccak256(owner || nonce)
209
+ *
210
+ * @param cap - MemoryCap object
211
+ * @returns Key ID as hex string
212
+ */
213
+ computeKeyId(cap: MemoryCap): string {
214
+ const service = this.ensureService();
215
+ return service.computeKeyId(cap);
216
+ }
217
+ }