@cmdoss/memwal-sdk 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/README.md +522 -160
  2. package/dist/client/ClientMemoryManager.d.ts.map +1 -1
  3. package/dist/client/ClientMemoryManager.js +25 -8
  4. package/dist/client/ClientMemoryManager.js.map +1 -1
  5. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  6. package/dist/client/SimplePDWClient.d.ts +62 -2
  7. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  8. package/dist/client/SimplePDWClient.js +96 -11
  9. package/dist/client/SimplePDWClient.js.map +1 -1
  10. package/dist/client/namespaces/IndexNamespace.d.ts +1 -1
  11. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  12. package/dist/client/namespaces/IndexNamespace.js +7 -4
  13. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  14. package/dist/client/namespaces/MemoryNamespace.d.ts +47 -0
  15. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  16. package/dist/client/namespaces/MemoryNamespace.js +257 -27
  17. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  18. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts +215 -0
  19. package/dist/client/namespaces/consolidated/AdvancedNamespace.d.ts.map +1 -0
  20. package/dist/client/namespaces/consolidated/AdvancedNamespace.js +214 -0
  21. package/dist/client/namespaces/consolidated/AdvancedNamespace.js.map +1 -0
  22. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +3 -1
  23. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  24. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  25. package/dist/client/namespaces/consolidated/index.d.ts +1 -0
  26. package/dist/client/namespaces/consolidated/index.d.ts.map +1 -1
  27. package/dist/client/namespaces/consolidated/index.js +1 -0
  28. package/dist/client/namespaces/consolidated/index.js.map +1 -1
  29. package/dist/config/ConfigurationHelper.js +61 -61
  30. package/dist/config/defaults.d.ts.map +1 -1
  31. package/dist/config/defaults.js +9 -4
  32. package/dist/config/defaults.js.map +1 -1
  33. package/dist/config/index.d.ts +1 -0
  34. package/dist/config/index.d.ts.map +1 -1
  35. package/dist/config/index.js +2 -0
  36. package/dist/config/index.js.map +1 -1
  37. package/dist/config/modelDefaults.d.ts +67 -0
  38. package/dist/config/modelDefaults.d.ts.map +1 -0
  39. package/dist/config/modelDefaults.js +91 -0
  40. package/dist/config/modelDefaults.js.map +1 -0
  41. package/dist/core/types/index.d.ts +4 -0
  42. package/dist/core/types/index.d.ts.map +1 -1
  43. package/dist/core/types/index.js.map +1 -1
  44. package/dist/graph/GraphService.d.ts.map +1 -1
  45. package/dist/graph/GraphService.js +22 -21
  46. package/dist/graph/GraphService.js.map +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/infrastructure/walrus/WalrusStorageService.d.ts +6 -0
  52. package/dist/infrastructure/walrus/WalrusStorageService.d.ts.map +1 -1
  53. package/dist/infrastructure/walrus/WalrusStorageService.js +23 -4
  54. package/dist/infrastructure/walrus/WalrusStorageService.js.map +1 -1
  55. package/dist/langchain/createPDWRAG.js +30 -30
  56. package/dist/pipeline/MemoryPipeline.d.ts.map +1 -1
  57. package/dist/pipeline/MemoryPipeline.js +2 -1
  58. package/dist/pipeline/MemoryPipeline.js.map +1 -1
  59. package/dist/services/EmbeddingService.d.ts +9 -0
  60. package/dist/services/EmbeddingService.d.ts.map +1 -1
  61. package/dist/services/EmbeddingService.js +31 -10
  62. package/dist/services/EmbeddingService.js.map +1 -1
  63. package/dist/services/GeminiAIService.d.ts.map +1 -1
  64. package/dist/services/GeminiAIService.js +311 -310
  65. package/dist/services/GeminiAIService.js.map +1 -1
  66. package/dist/services/MemoryIndexService.d.ts +2 -0
  67. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  68. package/dist/services/MemoryIndexService.js +11 -4
  69. package/dist/services/MemoryIndexService.js.map +1 -1
  70. package/dist/services/StorageService.d.ts +4 -1
  71. package/dist/services/StorageService.d.ts.map +1 -1
  72. package/dist/services/StorageService.js.map +1 -1
  73. package/dist/services/VectorService.js +1 -1
  74. package/dist/services/VectorService.js.map +1 -1
  75. package/dist/services/storage/QuiltBatchManager.d.ts +7 -0
  76. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  77. package/dist/services/storage/QuiltBatchManager.js +24 -5
  78. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  79. package/dist/services/storage/WalrusStorageManager.d.ts +10 -1
  80. package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -1
  81. package/dist/services/storage/WalrusStorageManager.js +53 -12
  82. package/dist/services/storage/WalrusStorageManager.js.map +1 -1
  83. package/dist/vector/BrowserHnswIndexService.js +3 -3
  84. package/dist/vector/BrowserHnswIndexService.js.map +1 -1
  85. package/dist/vector/HnswWasmService.js +1 -1
  86. package/dist/vector/HnswWasmService.js.map +1 -1
  87. package/dist/vector/NodeHnswService.js +5 -5
  88. package/dist/vector/NodeHnswService.js.map +1 -1
  89. package/dist/vector/createHnswService.d.ts +4 -0
  90. package/dist/vector/createHnswService.d.ts.map +1 -1
  91. package/dist/vector/createHnswService.js +15 -3
  92. package/dist/vector/createHnswService.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/access/PermissionService.ts +635 -635
  95. package/src/aggregation/AggregationService.ts +389 -389
  96. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  97. package/src/ai-sdk/index.ts +65 -65
  98. package/src/ai-sdk/tools.ts +460 -460
  99. package/src/ai-sdk/types.ts +404 -404
  100. package/src/batch/BatchManager.ts +597 -597
  101. package/src/batch/BatchingService.ts +429 -429
  102. package/src/batch/MemoryProcessingCache.ts +492 -492
  103. package/src/batch/index.ts +30 -30
  104. package/src/browser.ts +200 -200
  105. package/src/client/ClientMemoryManager.ts +1004 -987
  106. package/src/client/PersonalDataWallet.ts +345 -345
  107. package/src/client/SimplePDWClient.ts +1387 -1289
  108. package/src/client/factory.ts +154 -154
  109. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  110. package/src/client/namespaces/BatchNamespace.ts +356 -356
  111. package/src/client/namespaces/CacheNamespace.ts +123 -123
  112. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  113. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  114. package/src/client/namespaces/ContextNamespace.ts +297 -297
  115. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  116. package/src/client/namespaces/GraphNamespace.ts +468 -468
  117. package/src/client/namespaces/IndexNamespace.ts +364 -361
  118. package/src/client/namespaces/MemoryNamespace.ts +1704 -1422
  119. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  120. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  121. package/src/client/namespaces/StorageNamespace.ts +458 -458
  122. package/src/client/namespaces/TxNamespace.ts +260 -260
  123. package/src/client/namespaces/WalletNamespace.ts +243 -243
  124. package/src/client/namespaces/consolidated/AdvancedNamespace.ts +264 -0
  125. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -607
  126. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  127. package/src/client/namespaces/consolidated/StorageNamespace.ts +1143 -1141
  128. package/src/client/namespaces/consolidated/index.ts +41 -39
  129. package/src/client/signers/KeypairSigner.ts +108 -108
  130. package/src/client/signers/UnifiedSigner.ts +110 -110
  131. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  132. package/src/client/signers/index.ts +26 -26
  133. package/src/config/ConfigurationHelper.ts +412 -412
  134. package/src/config/defaults.ts +56 -51
  135. package/src/config/index.ts +16 -9
  136. package/src/config/modelDefaults.ts +103 -0
  137. package/src/config/validation.ts +70 -70
  138. package/src/core/index.ts +14 -14
  139. package/src/core/interfaces/IService.ts +307 -307
  140. package/src/core/interfaces/index.ts +8 -8
  141. package/src/core/types/capability.ts +297 -297
  142. package/src/core/types/index.ts +874 -870
  143. package/src/core/types/wallet.ts +270 -270
  144. package/src/core/types.ts +9 -9
  145. package/src/core/wallet.ts +222 -222
  146. package/src/embedding/index.ts +19 -19
  147. package/src/embedding/types.ts +357 -357
  148. package/src/errors/index.ts +602 -602
  149. package/src/errors/recovery.ts +461 -461
  150. package/src/errors/validation.ts +567 -567
  151. package/src/generated/pdw/capability.ts +319 -319
  152. package/src/graph/GraphService.ts +888 -887
  153. package/src/graph/KnowledgeGraphManager.ts +728 -728
  154. package/src/graph/index.ts +25 -25
  155. package/src/index.ts +498 -498
  156. package/src/infrastructure/index.ts +22 -22
  157. package/src/infrastructure/seal/EncryptionService.ts +628 -628
  158. package/src/infrastructure/seal/SealService.ts +613 -613
  159. package/src/infrastructure/seal/index.ts +9 -9
  160. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  161. package/src/infrastructure/sui/SuiService.ts +888 -888
  162. package/src/infrastructure/sui/index.ts +9 -9
  163. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  164. package/src/infrastructure/walrus/WalrusStorageService.ts +637 -612
  165. package/src/infrastructure/walrus/index.ts +9 -9
  166. package/src/langchain/createPDWRAG.ts +303 -303
  167. package/src/langchain/index.ts +47 -47
  168. package/src/permissions/ConsentRepository.browser.ts +249 -249
  169. package/src/permissions/ConsentRepository.ts +364 -364
  170. package/src/pipeline/MemoryPipeline.ts +863 -862
  171. package/src/pipeline/PipelineManager.ts +683 -683
  172. package/src/pipeline/index.ts +26 -26
  173. package/src/retrieval/AdvancedSearchService.ts +629 -629
  174. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  175. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -825
  176. package/src/retrieval/index.ts +42 -42
  177. package/src/services/BatchService.ts +352 -352
  178. package/src/services/CapabilityService.ts +464 -464
  179. package/src/services/ClassifierService.ts +465 -465
  180. package/src/services/CrossContextPermissionService.ts +486 -486
  181. package/src/services/EmbeddingService.ts +796 -771
  182. package/src/services/EncryptionService.ts +712 -712
  183. package/src/services/GeminiAIService.ts +754 -753
  184. package/src/services/MemoryIndexService.ts +1009 -1003
  185. package/src/services/MemoryService.ts +369 -369
  186. package/src/services/QueryService.ts +890 -890
  187. package/src/services/StorageService.ts +1185 -1182
  188. package/src/services/TransactionService.ts +838 -838
  189. package/src/services/VectorService.ts +462 -462
  190. package/src/services/ViewService.ts +484 -484
  191. package/src/services/index.ts +25 -25
  192. package/src/services/storage/BlobAttributesManager.ts +333 -333
  193. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  194. package/src/services/storage/MemorySearchManager.ts +387 -387
  195. package/src/services/storage/QuiltBatchManager.ts +1157 -1130
  196. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  197. package/src/services/storage/WalrusStorageManager.ts +333 -287
  198. package/src/services/storage/index.ts +57 -57
  199. package/src/types/index.ts +13 -13
  200. package/src/utils/index.ts +76 -76
  201. package/src/utils/memoryIndexOnChain.ts +507 -507
  202. package/src/vector/BrowserHnswIndexService.ts +758 -758
  203. package/src/vector/HnswWasmService.ts +731 -731
  204. package/src/vector/IHnswService.ts +233 -233
  205. package/src/vector/NodeHnswService.ts +833 -833
  206. package/src/vector/createHnswService.ts +147 -135
  207. package/src/vector/index.ts +56 -56
  208. package/src/wallet/ContextWalletService.ts +656 -656
  209. package/src/wallet/MainWalletService.ts +317 -317
@@ -1,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
+ }