agentvault 1.0.1 → 1.0.2

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 (292) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/dist/cli/commands/approve.js +5 -5
  3. package/dist/cli/commands/archive.js +5 -5
  4. package/dist/cli/commands/backup.js +5 -5
  5. package/dist/cli/commands/cloud-backup.js +12 -12
  6. package/dist/cli/commands/decrypt.js +2 -2
  7. package/dist/cli/commands/deploy.js +1 -1
  8. package/dist/cli/commands/exec.js +2 -2
  9. package/dist/cli/commands/fetch.js +4 -4
  10. package/dist/cli/commands/inference.js +5 -5
  11. package/dist/cli/commands/init.d.ts +1 -1
  12. package/dist/cli/commands/init.js +16 -16
  13. package/dist/cli/commands/list.js +4 -4
  14. package/dist/cli/commands/package.js +2 -2
  15. package/dist/cli/commands/profile.js +1 -1
  16. package/dist/cli/commands/rebuild.js +2 -2
  17. package/dist/cli/commands/show.js +1 -1
  18. package/dist/cli/commands/status.d.ts +1 -1
  19. package/dist/cli/commands/status.js +8 -8
  20. package/dist/cli/commands/trace.js +1 -1
  21. package/dist/cli/commands/wallet-export.js +1 -1
  22. package/dist/cli/commands/wallet-sign.js +1 -1
  23. package/dist/cli/commands/wallet.d.ts +1 -1
  24. package/dist/cli/commands/wallet.js +1 -1
  25. package/dist/cli/index.d.ts +2 -2
  26. package/dist/cli/index.js +3 -3
  27. package/dist/src/archival/archive-manager.d.ts +85 -0
  28. package/dist/src/archival/archive-manager.js +294 -0
  29. package/dist/src/archival/arweave-client.d.ts +88 -0
  30. package/dist/src/archival/arweave-client.js +223 -0
  31. package/dist/src/archival/index.d.ts +8 -0
  32. package/{src/archival/index.ts → dist/src/archival/index.js} +1 -1
  33. package/dist/src/backup/backup.d.ts +67 -0
  34. package/dist/src/backup/backup.js +231 -0
  35. package/dist/src/backup/index.d.ts +7 -0
  36. package/{src/backup/index.ts → dist/src/backup/index.js} +1 -1
  37. package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
  38. package/dist/src/cloud-storage/cloud-sync.js +372 -0
  39. package/dist/src/cloud-storage/index.d.ts +11 -0
  40. package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
  41. package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
  42. package/dist/src/cloud-storage/provider-detector.js +158 -0
  43. package/{src/cloud-storage/types.ts → dist/src/cloud-storage/types.d.ts} +40 -53
  44. package/dist/src/cloud-storage/types.js +10 -0
  45. package/dist/src/debugging/index.d.ts +6 -0
  46. package/{src/debugging/index.ts → dist/src/debugging/index.js} +1 -1
  47. package/dist/src/debugging/logs.d.ts +32 -0
  48. package/dist/src/debugging/logs.js +158 -0
  49. package/dist/src/debugging/types.d.ts +91 -0
  50. package/dist/src/debugging/types.js +5 -0
  51. package/dist/src/deployment/deployer.d.ts +52 -0
  52. package/dist/src/deployment/deployer.js +211 -0
  53. package/dist/src/deployment/icpClient.d.ts +144 -0
  54. package/dist/src/deployment/icpClient.js +545 -0
  55. package/dist/src/deployment/index.d.ts +11 -0
  56. package/dist/src/deployment/index.js +14 -0
  57. package/dist/src/deployment/promotion.d.ts +32 -0
  58. package/dist/src/deployment/promotion.js +114 -0
  59. package/dist/src/deployment/types.d.ts +101 -0
  60. package/dist/src/deployment/types.js +5 -0
  61. package/dist/src/icp/batch.d.ts +112 -0
  62. package/dist/src/icp/batch.js +273 -0
  63. package/dist/src/icp/cycles.d.ts +29 -0
  64. package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
  65. package/dist/src/icp/environment.d.ts +60 -0
  66. package/dist/src/icp/environment.js +183 -0
  67. package/dist/src/icp/icpcli.d.ts +204 -0
  68. package/dist/src/icp/icpcli.js +374 -0
  69. package/dist/src/icp/icwasm.d.ts +94 -0
  70. package/dist/src/icp/icwasm.js +197 -0
  71. package/dist/src/icp/identity.d.ts +50 -0
  72. package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
  73. package/dist/src/icp/index.d.ts +16 -0
  74. package/dist/src/icp/index.js +20 -0
  75. package/dist/src/icp/optimization.d.ts +16 -0
  76. package/dist/src/icp/optimization.js +225 -0
  77. package/dist/src/icp/tokens.d.ts +24 -0
  78. package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
  79. package/dist/src/icp/tool-detector.d.ts +31 -0
  80. package/dist/src/icp/tool-detector.js +104 -0
  81. package/dist/src/icp/types.d.ts +493 -0
  82. package/dist/src/icp/types.js +7 -0
  83. package/dist/src/index.d.ts +12 -0
  84. package/dist/src/index.js +18 -0
  85. package/dist/src/inference/bittensor-client.d.ts +108 -0
  86. package/dist/src/inference/bittensor-client.js +224 -0
  87. package/dist/src/inference/index.d.ts +8 -0
  88. package/{src/inference/index.ts → dist/src/inference/index.js} +1 -1
  89. package/dist/src/inference/inference-manager.d.ts +76 -0
  90. package/dist/src/inference/inference-manager.js +228 -0
  91. package/dist/src/metrics/index.d.ts +7 -0
  92. package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
  93. package/dist/src/metrics/metrics.d.ts +39 -0
  94. package/dist/src/metrics/metrics.js +129 -0
  95. package/dist/src/monitoring/alerting.d.ts +51 -0
  96. package/dist/src/monitoring/alerting.js +169 -0
  97. package/dist/src/monitoring/health.d.ts +40 -0
  98. package/dist/src/monitoring/health.js +164 -0
  99. package/dist/src/monitoring/index.d.ts +10 -0
  100. package/dist/src/monitoring/index.js +12 -0
  101. package/dist/src/monitoring/info.d.ts +15 -0
  102. package/dist/src/monitoring/info.js +109 -0
  103. package/dist/src/monitoring/types.d.ts +93 -0
  104. package/dist/src/monitoring/types.js +7 -0
  105. package/dist/src/network/index.d.ts +5 -0
  106. package/{src/network/index.ts → dist/src/network/index.js} +1 -1
  107. package/dist/src/network/network-config.d.ts +31 -0
  108. package/dist/src/network/network-config.js +109 -0
  109. package/dist/src/packaging/compiler.d.ts +61 -0
  110. package/dist/src/packaging/compiler.js +562 -0
  111. package/dist/src/packaging/config-persistence.d.ts +46 -0
  112. package/dist/src/packaging/config-persistence.js +108 -0
  113. package/dist/src/packaging/config-schemas.d.ts +115 -0
  114. package/dist/src/packaging/config-schemas.js +43 -0
  115. package/dist/src/packaging/detector.d.ts +26 -0
  116. package/dist/src/packaging/detector.js +193 -0
  117. package/dist/src/packaging/index.d.ts +16 -0
  118. package/dist/src/packaging/index.js +22 -0
  119. package/dist/src/packaging/packager.d.ts +31 -0
  120. package/dist/src/packaging/packager.js +90 -0
  121. package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
  122. package/dist/src/packaging/parsers/clawdbot.js +231 -0
  123. package/dist/src/packaging/parsers/cline.d.ts +26 -0
  124. package/dist/src/packaging/parsers/cline.js +185 -0
  125. package/dist/src/packaging/parsers/generic.d.ts +27 -0
  126. package/dist/src/packaging/parsers/generic.js +228 -0
  127. package/dist/src/packaging/parsers/goose.d.ts +26 -0
  128. package/dist/src/packaging/parsers/goose.js +175 -0
  129. package/dist/src/packaging/parsers/index.d.ts +11 -0
  130. package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +1 -1
  131. package/dist/src/packaging/serializer.d.ts +108 -0
  132. package/dist/src/packaging/serializer.js +153 -0
  133. package/dist/src/packaging/types.d.ts +131 -0
  134. package/dist/src/packaging/types.js +5 -0
  135. package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
  136. package/dist/src/packaging/wasmedge-compiler.js +349 -0
  137. package/dist/src/security/index.d.ts +11 -0
  138. package/{src/security/index.ts → dist/src/security/index.js} +1 -4
  139. package/dist/src/security/multisig.d.ts +102 -0
  140. package/dist/src/security/multisig.js +283 -0
  141. package/dist/src/security/types.d.ts +207 -0
  142. package/dist/src/security/types.js +217 -0
  143. package/dist/src/security/vetkeys.d.ts +179 -0
  144. package/dist/src/security/vetkeys.js +499 -0
  145. package/dist/src/testing/index.d.ts +6 -0
  146. package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
  147. package/dist/src/testing/local-runner.d.ts +23 -0
  148. package/dist/src/testing/local-runner.js +226 -0
  149. package/dist/src/testing/types.d.ts +98 -0
  150. package/dist/src/testing/types.js +5 -0
  151. package/dist/src/wallet/cbor-serializer.d.ts +82 -0
  152. package/dist/src/wallet/cbor-serializer.js +282 -0
  153. package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
  154. package/dist/src/wallet/chain-dispatcher.js +241 -0
  155. package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
  156. package/dist/src/wallet/cross-chain-aggregator.js +235 -0
  157. package/dist/src/wallet/index.d.ts +16 -0
  158. package/dist/src/wallet/index.js +22 -0
  159. package/dist/src/wallet/key-derivation.d.ts +117 -0
  160. package/dist/src/wallet/key-derivation.js +325 -0
  161. package/dist/src/wallet/providers/base-provider.d.ts +111 -0
  162. package/dist/src/wallet/providers/base-provider.js +58 -0
  163. package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
  164. package/dist/src/wallet/providers/cketh-provider.js +343 -0
  165. package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
  166. package/dist/src/wallet/providers/polkadot-provider.js +407 -0
  167. package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
  168. package/dist/src/wallet/providers/solana-provider.js +393 -0
  169. package/dist/src/wallet/transaction-queue.d.ts +133 -0
  170. package/dist/src/wallet/transaction-queue.js +195 -0
  171. package/dist/src/wallet/types.d.ts +167 -0
  172. package/dist/src/wallet/types.js +5 -0
  173. package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
  174. package/dist/src/wallet/vetkeys-adapter.js +313 -0
  175. package/dist/src/wallet/wallet-manager.d.ts +202 -0
  176. package/dist/src/wallet/wallet-manager.js +451 -0
  177. package/dist/src/wallet/wallet-storage.d.ts +131 -0
  178. package/dist/src/wallet/wallet-storage.js +274 -0
  179. package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +54 -0
  180. package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +102 -0
  181. package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +121 -0
  182. package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +98 -0
  183. package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +27 -0
  184. package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +69 -0
  185. package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +270 -0
  186. package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +367 -0
  187. package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +157 -0
  188. package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +120 -0
  189. package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +219 -0
  190. package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +44 -0
  191. package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +115 -0
  192. package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +237 -0
  193. package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +137 -0
  194. package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +179 -0
  195. package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +286 -0
  196. package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +235 -0
  197. package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +316 -0
  198. package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +438 -0
  199. package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +399 -0
  200. package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +134 -0
  201. package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +276 -0
  202. package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +133 -0
  203. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +233 -0
  204. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +281 -0
  205. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +280 -0
  206. package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +176 -0
  207. package/macos-wallet-app/Makefile +47 -0
  208. package/macos-wallet-app/project.yml +40 -0
  209. package/macos-wallet-app/setup.sh +73 -0
  210. package/package.json +10 -2
  211. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-28-967Z.json +0 -28
  212. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-29-032Z.backup +0 -1
  213. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-373Z.json +0 -28
  214. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-428Z.backup +0 -1
  215. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-132Z.json +0 -28
  216. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-247Z.backup +0 -1
  217. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-216Z.json +0 -28
  218. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-283Z.backup +0 -1
  219. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-772Z.backup +0 -1
  220. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-793Z.json +0 -28
  221. package/backups/test-backup.json +0 -28
  222. package/scripts/dev-dashboard.mjs +0 -84
  223. package/site/README.md +0 -63
  224. package/site/docusaurus.config.ts +0 -148
  225. package/site/package-lock.json +0 -18383
  226. package/site/package.json +0 -47
  227. package/site/sidebars.ts +0 -86
  228. package/site/static/.gitkeep +0 -0
  229. package/site/static/img/logo.svg +0 -28
  230. package/site/static/img/og-image.svg +0 -35
  231. package/src/archival/archive-manager.ts +0 -372
  232. package/src/archival/arweave-client.ts +0 -289
  233. package/src/backup/backup.ts +0 -315
  234. package/src/cloud-storage/cloud-sync.ts +0 -461
  235. package/src/cloud-storage/provider-detector.ts +0 -198
  236. package/src/debugging/logs.ts +0 -193
  237. package/src/debugging/types.ts +0 -100
  238. package/src/deployment/deployer.ts +0 -274
  239. package/src/deployment/icpClient.ts +0 -620
  240. package/src/deployment/index.ts +0 -46
  241. package/src/deployment/promotion.ts +0 -161
  242. package/src/deployment/types.ts +0 -111
  243. package/src/icp/batch.ts +0 -374
  244. package/src/icp/environment.ts +0 -215
  245. package/src/icp/icpcli.ts +0 -438
  246. package/src/icp/icwasm.ts +0 -222
  247. package/src/icp/index.ts +0 -94
  248. package/src/icp/optimization.ts +0 -242
  249. package/src/icp/tool-detector.ts +0 -110
  250. package/src/icp/types.ts +0 -574
  251. package/src/index.ts +0 -25
  252. package/src/inference/bittensor-client.ts +0 -304
  253. package/src/inference/inference-manager.ts +0 -327
  254. package/src/metrics/metrics.ts +0 -186
  255. package/src/monitoring/alerting.ts +0 -190
  256. package/src/monitoring/health.ts +0 -197
  257. package/src/monitoring/index.ts +0 -38
  258. package/src/monitoring/info.ts +0 -114
  259. package/src/monitoring/types.ts +0 -99
  260. package/src/network/network-config.ts +0 -129
  261. package/src/packaging/compiler.ts +0 -647
  262. package/src/packaging/config-persistence.ts +0 -135
  263. package/src/packaging/config-schemas.ts +0 -156
  264. package/src/packaging/detector.ts +0 -220
  265. package/src/packaging/index.ts +0 -90
  266. package/src/packaging/packager.ts +0 -118
  267. package/src/packaging/parsers/clawdbot.ts +0 -278
  268. package/src/packaging/parsers/cline.ts +0 -223
  269. package/src/packaging/parsers/generic.ts +0 -266
  270. package/src/packaging/parsers/goose.ts +0 -214
  271. package/src/packaging/serializer.ts +0 -260
  272. package/src/packaging/types.ts +0 -144
  273. package/src/packaging/wasmedge-compiler.ts +0 -406
  274. package/src/security/multisig.ts +0 -415
  275. package/src/security/types.ts +0 -416
  276. package/src/security/vetkeys.ts +0 -655
  277. package/src/testing/local-runner.ts +0 -264
  278. package/src/testing/types.ts +0 -104
  279. package/src/wallet/cbor-serializer.ts +0 -323
  280. package/src/wallet/chain-dispatcher.ts +0 -313
  281. package/src/wallet/cross-chain-aggregator.ts +0 -346
  282. package/src/wallet/index.ts +0 -76
  283. package/src/wallet/key-derivation.ts +0 -425
  284. package/src/wallet/providers/base-provider.ts +0 -154
  285. package/src/wallet/providers/cketh-provider.ts +0 -434
  286. package/src/wallet/providers/polkadot-provider.ts +0 -503
  287. package/src/wallet/providers/solana-provider.ts +0 -490
  288. package/src/wallet/transaction-queue.ts +0 -284
  289. package/src/wallet/types.ts +0 -178
  290. package/src/wallet/vetkeys-adapter.ts +0 -431
  291. package/src/wallet/wallet-manager.ts +0 -597
  292. package/src/wallet/wallet-storage.ts +0 -380
@@ -1,380 +0,0 @@
1
- /**
2
- * Wallet Storage Module
3
- *
4
- * Manages encrypted wallet persistence in ~/.agentvault/wallets/
5
- * Provides per-agent wallet isolation and encryption.
6
- */
7
-
8
- import * as fs from 'node:fs';
9
- import * as path from 'node:path';
10
- import * as os from 'node:os';
11
- import {
12
- serializeWallet,
13
- deserializeWallet,
14
- validateCborData,
15
- } from './cbor-serializer.js';
16
- import type {
17
- WalletData,
18
- WalletStorageOptions,
19
- } from './types.js';
20
-
21
- /**
22
- * Get base directory for wallet storage
23
- *
24
- * @param options - Storage options
25
- * @returns Wallet base directory
26
- */
27
- export function getWalletBaseDir(options: WalletStorageOptions = {}): string {
28
- const baseDir = options.baseDir || path.join(os.homedir(), '.agentvault', 'wallets');
29
- return baseDir;
30
- }
31
-
32
- /**
33
- * Get agent-specific wallet directory
34
- *
35
- * @param agentId - Agent ID
36
- * @param options - Storage options
37
- * @returns Agent wallet directory
38
- */
39
- export function getAgentWalletDir(
40
- agentId: string,
41
- options: WalletStorageOptions = {}
42
- ): string {
43
- const baseDir = getWalletBaseDir(options);
44
- return path.join(baseDir, agentId);
45
- }
46
-
47
- /**
48
- * Get wallet file path
49
- *
50
- * @param agentId - Agent ID
51
- * @param walletId - Wallet ID
52
- * @param options - Storage options
53
- * @returns Wallet file path
54
- */
55
- export function getWalletFilePath(
56
- agentId: string,
57
- walletId: string,
58
- options: WalletStorageOptions = {}
59
- ): string {
60
- const agentDir = getAgentWalletDir(agentId, options);
61
- return path.join(agentDir, `${walletId}.wallet`);
62
- }
63
-
64
- /**
65
- * Ensure wallet directories exist
66
- *
67
- * @param agentId - Agent ID
68
- * @param options - Storage options
69
- */
70
- export function ensureWalletDirectories(
71
- agentId: string,
72
- options: WalletStorageOptions = {}
73
- ): void {
74
- const agentDir = getAgentWalletDir(agentId, options);
75
-
76
- if (!fs.existsSync(agentDir)) {
77
- fs.mkdirSync(agentDir, { recursive: true });
78
- }
79
- }
80
-
81
- /**
82
- * Save wallet to encrypted storage
83
- *
84
- * @param wallet - Wallet data to save
85
- * @param options - Storage options
86
- */
87
- export function saveWallet(
88
- wallet: WalletData,
89
- options: WalletStorageOptions = {}
90
- ): void {
91
- // Ensure directories exist
92
- ensureWalletDirectories(wallet.agentId, options);
93
-
94
- // Serialize wallet to CBOR
95
- const serialized = serializeWallet(wallet);
96
-
97
- // Get wallet file path
98
- const walletPath = getWalletFilePath(wallet.agentId, wallet.id, options);
99
-
100
- // Write wallet file
101
- fs.writeFileSync(walletPath, Buffer.from(serialized));
102
- }
103
-
104
- /**
105
- * Load wallet from storage
106
- *
107
- * @param agentId - Agent ID
108
- * @param walletId - Wallet ID
109
- * @param options - Storage options
110
- * @returns Loaded wallet data or null if not found
111
- */
112
- export function loadWallet(
113
- agentId: string,
114
- walletId: string,
115
- options: WalletStorageOptions = {}
116
- ): WalletData | null {
117
- const walletPath = getWalletFilePath(agentId, walletId, options);
118
-
119
- // Check if wallet file exists
120
- if (!fs.existsSync(walletPath)) {
121
- return null;
122
- }
123
-
124
- // Read wallet file
125
- const data = fs.readFileSync(walletPath);
126
-
127
- // Validate CBOR data
128
- if (!validateCborData(new Uint8Array(data))) {
129
- throw new Error(`Invalid wallet data: ${walletId}`);
130
- }
131
-
132
- // Deserialize wallet
133
- const wallet = deserializeWallet(new Uint8Array(data));
134
-
135
- return wallet;
136
- }
137
-
138
- /**
139
- * Delete wallet from storage
140
- *
141
- * @param agentId - Agent ID
142
- * @param walletId - Wallet ID
143
- * @param options - Storage options
144
- */
145
- export function deleteWallet(
146
- agentId: string,
147
- walletId: string,
148
- options: WalletStorageOptions = {}
149
- ): void {
150
- const walletPath = getWalletFilePath(agentId, walletId, options);
151
-
152
- // Check if wallet file exists
153
- if (fs.existsSync(walletPath)) {
154
- fs.unlinkSync(walletPath);
155
- }
156
- }
157
-
158
- /**
159
- * List all wallets for an agent
160
- *
161
- * @param agentId - Agent ID
162
- * @param options - Storage options
163
- * @returns Array of wallet IDs
164
- */
165
- export function listWallets(
166
- agentId: string,
167
- options: WalletStorageOptions = {}
168
- ): string[] {
169
- const agentDir = getAgentWalletDir(agentId, options);
170
-
171
- // Check if agent directory exists
172
- if (!fs.existsSync(agentDir)) {
173
- return [];
174
- }
175
-
176
- // Read all wallet files
177
- const files = fs.readdirSync(agentDir);
178
-
179
- // Filter and extract wallet IDs
180
- const walletIds = files
181
- .filter((file) => file.endsWith('.wallet'))
182
- .map((file) => file.replace('.wallet', ''));
183
-
184
- return walletIds;
185
- }
186
-
187
- /**
188
- * List all agents with wallets
189
- *
190
- * @param options - Storage options
191
- * @returns Array of agent IDs
192
- */
193
- export function listAgents(options: WalletStorageOptions = {}): string[] {
194
- const baseDir = getWalletBaseDir(options);
195
-
196
- // Check if base directory exists
197
- if (!fs.existsSync(baseDir)) {
198
- return [];
199
- }
200
-
201
- // Read all agent directories
202
- const agents = fs.readdirSync(baseDir);
203
-
204
- // Filter out non-directories
205
- const agentIds = agents.filter((agent) => {
206
- const agentPath = path.join(baseDir, agent);
207
- return fs.statSync(agentPath).isDirectory();
208
- });
209
-
210
- return agentIds;
211
- }
212
-
213
- /**
214
- * Check if wallet exists
215
- *
216
- * @param agentId - Agent ID
217
- * @param walletId - Wallet ID
218
- * @param options - Storage options
219
- * @returns True if wallet exists
220
- */
221
- export function walletExists(
222
- agentId: string,
223
- walletId: string,
224
- options: WalletStorageOptions = {}
225
- ): boolean {
226
- const walletPath = getWalletFilePath(agentId, walletId, options);
227
- return fs.existsSync(walletPath);
228
- }
229
-
230
- /**
231
- * Get wallet file stats
232
- *
233
- * @param agentId - Agent ID
234
- * @param walletId - Wallet ID
235
- * @param options - Storage options
236
- * @returns Wallet file stats or null if not found
237
- */
238
- export function getWalletStats(
239
- agentId: string,
240
- walletId: string,
241
- options: WalletStorageOptions = {}
242
- ): {
243
- size: number;
244
- modified: Date;
245
- created: Date;
246
- } | null {
247
- const walletPath = getWalletFilePath(agentId, walletId, options);
248
-
249
- if (!fs.existsSync(walletPath)) {
250
- return null;
251
- }
252
-
253
- const stats = fs.statSync(walletPath);
254
-
255
- return {
256
- size: stats.size,
257
- modified: stats.mtime,
258
- created: stats.birthtime,
259
- };
260
- }
261
-
262
- /**
263
- * Backup all wallets for an agent
264
- *
265
- * @param agentId - Agent ID
266
- * @param backupPath - Path to save backup
267
- * @param options - Storage options
268
- */
269
- export function backupWallets(
270
- agentId: string,
271
- backupPath: string,
272
- options: WalletStorageOptions = {}
273
- ): void {
274
- const agentDir = getAgentWalletDir(agentId, options);
275
-
276
- if (!fs.existsSync(agentDir)) {
277
- throw new Error(`No wallets found for agent: ${agentId}`);
278
- }
279
-
280
- // Create backup directory
281
- const backupDir = path.join(backupPath, agentId);
282
- if (!fs.existsSync(backupDir)) {
283
- fs.mkdirSync(backupDir, { recursive: true });
284
- }
285
-
286
- // Copy all wallet files
287
- const files = fs.readdirSync(agentDir);
288
- for (const file of files) {
289
- const srcPath = path.join(agentDir, file);
290
- const destPath = path.join(backupDir, file);
291
- fs.copyFileSync(srcPath, destPath);
292
- }
293
- }
294
-
295
- /**
296
- * Restore wallets from backup
297
- *
298
- * @param agentId - Agent ID
299
- * @param backupPath - Path to backup directory
300
- * @param options - Storage options
301
- */
302
- export function restoreWallets(
303
- agentId: string,
304
- backupPath: string,
305
- options: WalletStorageOptions = {}
306
- ): void {
307
- const agentDir = getAgentWalletDir(agentId, options);
308
-
309
- if (!fs.existsSync(backupPath)) {
310
- throw new Error(`Backup directory not found: ${backupPath}`);
311
- }
312
-
313
- // Ensure agent directory exists
314
- ensureWalletDirectories(agentId, options);
315
-
316
- // Copy all wallet files from backup
317
- const files = fs.readdirSync(backupPath);
318
- for (const file of files) {
319
- if (file.endsWith('.wallet')) {
320
- const srcPath = path.join(backupPath, file);
321
- const destPath = path.join(agentDir, file);
322
- fs.copyFileSync(srcPath, destPath);
323
- }
324
- }
325
- }
326
-
327
- /**
328
- * Clear all wallets for an agent
329
- *
330
- * @param agentId - Agent ID
331
- * @param options - Storage options
332
- */
333
- export function clearWallets(
334
- agentId: string,
335
- options: WalletStorageOptions = {}
336
- ): void {
337
- const agentDir = getAgentWalletDir(agentId, options);
338
-
339
- if (!fs.existsSync(agentDir)) {
340
- return; // Nothing to clear
341
- }
342
-
343
- // Delete all wallet files
344
- const files = fs.readdirSync(agentDir);
345
- for (const file of files) {
346
- const filePath = path.join(agentDir, file);
347
- fs.unlinkSync(filePath);
348
- }
349
- }
350
-
351
- /**
352
- * Get total storage size for an agent
353
- *
354
- * @param agentId - Agent ID
355
- * @param options - Storage options
356
- * @returns Total size in bytes
357
- */
358
- export function getWalletStorageSize(
359
- agentId: string,
360
- options: WalletStorageOptions = {}
361
- ): number {
362
- const agentDir = getAgentWalletDir(agentId, options);
363
-
364
- if (!fs.existsSync(agentDir)) {
365
- return 0;
366
- }
367
-
368
- let totalSize = 0;
369
- const files = fs.readdirSync(agentDir);
370
-
371
- for (const file of files) {
372
- const filePath = path.join(agentDir, file);
373
- const stats = fs.statSync(filePath);
374
- if (stats.isFile() && file.endsWith('.wallet')) {
375
- totalSize += stats.size;
376
- }
377
- }
378
-
379
- return totalSize;
380
- }