agentvault 1.0.0 → 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 (293) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/approve.js +5 -5
  4. package/dist/cli/commands/archive.js +5 -5
  5. package/dist/cli/commands/backup.js +5 -5
  6. package/dist/cli/commands/cloud-backup.js +12 -12
  7. package/dist/cli/commands/decrypt.js +2 -2
  8. package/dist/cli/commands/deploy.js +1 -1
  9. package/dist/cli/commands/exec.js +2 -2
  10. package/dist/cli/commands/fetch.js +4 -4
  11. package/dist/cli/commands/inference.js +5 -5
  12. package/dist/cli/commands/init.d.ts +1 -1
  13. package/dist/cli/commands/init.js +16 -16
  14. package/dist/cli/commands/list.js +4 -4
  15. package/dist/cli/commands/package.js +2 -2
  16. package/dist/cli/commands/profile.js +1 -1
  17. package/dist/cli/commands/rebuild.js +2 -2
  18. package/dist/cli/commands/show.js +1 -1
  19. package/dist/cli/commands/status.d.ts +1 -1
  20. package/dist/cli/commands/status.js +8 -8
  21. package/dist/cli/commands/trace.js +1 -1
  22. package/dist/cli/commands/wallet-export.js +1 -1
  23. package/dist/cli/commands/wallet-sign.js +1 -1
  24. package/dist/cli/commands/wallet.d.ts +1 -1
  25. package/dist/cli/commands/wallet.js +1 -1
  26. package/dist/cli/index.d.ts +2 -2
  27. package/dist/cli/index.js +3 -3
  28. package/dist/src/archival/archive-manager.d.ts +85 -0
  29. package/dist/src/archival/archive-manager.js +294 -0
  30. package/dist/src/archival/arweave-client.d.ts +88 -0
  31. package/dist/src/archival/arweave-client.js +223 -0
  32. package/dist/src/archival/index.d.ts +8 -0
  33. package/{src/archival/index.ts → dist/src/archival/index.js} +1 -1
  34. package/dist/src/backup/backup.d.ts +67 -0
  35. package/dist/src/backup/backup.js +231 -0
  36. package/dist/src/backup/index.d.ts +7 -0
  37. package/{src/backup/index.ts → dist/src/backup/index.js} +1 -1
  38. package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
  39. package/dist/src/cloud-storage/cloud-sync.js +372 -0
  40. package/dist/src/cloud-storage/index.d.ts +11 -0
  41. package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
  42. package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
  43. package/dist/src/cloud-storage/provider-detector.js +158 -0
  44. package/{src/cloud-storage/types.ts → dist/src/cloud-storage/types.d.ts} +40 -53
  45. package/dist/src/cloud-storage/types.js +10 -0
  46. package/dist/src/debugging/index.d.ts +6 -0
  47. package/{src/debugging/index.ts → dist/src/debugging/index.js} +1 -1
  48. package/dist/src/debugging/logs.d.ts +32 -0
  49. package/dist/src/debugging/logs.js +158 -0
  50. package/dist/src/debugging/types.d.ts +91 -0
  51. package/dist/src/debugging/types.js +5 -0
  52. package/dist/src/deployment/deployer.d.ts +52 -0
  53. package/dist/src/deployment/deployer.js +211 -0
  54. package/dist/src/deployment/icpClient.d.ts +144 -0
  55. package/dist/src/deployment/icpClient.js +545 -0
  56. package/dist/src/deployment/index.d.ts +11 -0
  57. package/dist/src/deployment/index.js +14 -0
  58. package/dist/src/deployment/promotion.d.ts +32 -0
  59. package/dist/src/deployment/promotion.js +114 -0
  60. package/dist/src/deployment/types.d.ts +101 -0
  61. package/dist/src/deployment/types.js +5 -0
  62. package/dist/src/icp/batch.d.ts +112 -0
  63. package/dist/src/icp/batch.js +273 -0
  64. package/dist/src/icp/cycles.d.ts +29 -0
  65. package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
  66. package/dist/src/icp/environment.d.ts +60 -0
  67. package/dist/src/icp/environment.js +183 -0
  68. package/dist/src/icp/icpcli.d.ts +204 -0
  69. package/dist/src/icp/icpcli.js +374 -0
  70. package/dist/src/icp/icwasm.d.ts +94 -0
  71. package/dist/src/icp/icwasm.js +197 -0
  72. package/dist/src/icp/identity.d.ts +50 -0
  73. package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
  74. package/dist/src/icp/index.d.ts +16 -0
  75. package/dist/src/icp/index.js +20 -0
  76. package/dist/src/icp/optimization.d.ts +16 -0
  77. package/dist/src/icp/optimization.js +225 -0
  78. package/dist/src/icp/tokens.d.ts +24 -0
  79. package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
  80. package/dist/src/icp/tool-detector.d.ts +31 -0
  81. package/dist/src/icp/tool-detector.js +104 -0
  82. package/dist/src/icp/types.d.ts +493 -0
  83. package/dist/src/icp/types.js +7 -0
  84. package/dist/src/index.d.ts +12 -0
  85. package/dist/src/index.js +18 -0
  86. package/dist/src/inference/bittensor-client.d.ts +108 -0
  87. package/dist/src/inference/bittensor-client.js +224 -0
  88. package/dist/src/inference/index.d.ts +8 -0
  89. package/{src/inference/index.ts → dist/src/inference/index.js} +1 -1
  90. package/dist/src/inference/inference-manager.d.ts +76 -0
  91. package/dist/src/inference/inference-manager.js +228 -0
  92. package/dist/src/metrics/index.d.ts +7 -0
  93. package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
  94. package/dist/src/metrics/metrics.d.ts +39 -0
  95. package/dist/src/metrics/metrics.js +129 -0
  96. package/dist/src/monitoring/alerting.d.ts +51 -0
  97. package/dist/src/monitoring/alerting.js +169 -0
  98. package/dist/src/monitoring/health.d.ts +40 -0
  99. package/dist/src/monitoring/health.js +164 -0
  100. package/dist/src/monitoring/index.d.ts +10 -0
  101. package/dist/src/monitoring/index.js +12 -0
  102. package/dist/src/monitoring/info.d.ts +15 -0
  103. package/dist/src/monitoring/info.js +109 -0
  104. package/dist/src/monitoring/types.d.ts +93 -0
  105. package/dist/src/monitoring/types.js +7 -0
  106. package/dist/src/network/index.d.ts +5 -0
  107. package/{src/network/index.ts → dist/src/network/index.js} +1 -1
  108. package/dist/src/network/network-config.d.ts +31 -0
  109. package/dist/src/network/network-config.js +109 -0
  110. package/dist/src/packaging/compiler.d.ts +61 -0
  111. package/dist/src/packaging/compiler.js +562 -0
  112. package/dist/src/packaging/config-persistence.d.ts +46 -0
  113. package/dist/src/packaging/config-persistence.js +108 -0
  114. package/dist/src/packaging/config-schemas.d.ts +115 -0
  115. package/dist/src/packaging/config-schemas.js +43 -0
  116. package/dist/src/packaging/detector.d.ts +26 -0
  117. package/dist/src/packaging/detector.js +193 -0
  118. package/dist/src/packaging/index.d.ts +16 -0
  119. package/dist/src/packaging/index.js +22 -0
  120. package/dist/src/packaging/packager.d.ts +31 -0
  121. package/dist/src/packaging/packager.js +90 -0
  122. package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
  123. package/dist/src/packaging/parsers/clawdbot.js +231 -0
  124. package/dist/src/packaging/parsers/cline.d.ts +26 -0
  125. package/dist/src/packaging/parsers/cline.js +185 -0
  126. package/dist/src/packaging/parsers/generic.d.ts +27 -0
  127. package/dist/src/packaging/parsers/generic.js +228 -0
  128. package/dist/src/packaging/parsers/goose.d.ts +26 -0
  129. package/dist/src/packaging/parsers/goose.js +175 -0
  130. package/dist/src/packaging/parsers/index.d.ts +11 -0
  131. package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +1 -1
  132. package/dist/src/packaging/serializer.d.ts +108 -0
  133. package/dist/src/packaging/serializer.js +153 -0
  134. package/dist/src/packaging/types.d.ts +131 -0
  135. package/dist/src/packaging/types.js +5 -0
  136. package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
  137. package/dist/src/packaging/wasmedge-compiler.js +349 -0
  138. package/dist/src/security/index.d.ts +11 -0
  139. package/{src/security/index.ts → dist/src/security/index.js} +1 -4
  140. package/dist/src/security/multisig.d.ts +102 -0
  141. package/dist/src/security/multisig.js +283 -0
  142. package/dist/src/security/types.d.ts +207 -0
  143. package/dist/src/security/types.js +217 -0
  144. package/dist/src/security/vetkeys.d.ts +179 -0
  145. package/dist/src/security/vetkeys.js +499 -0
  146. package/dist/src/testing/index.d.ts +6 -0
  147. package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
  148. package/dist/src/testing/local-runner.d.ts +23 -0
  149. package/dist/src/testing/local-runner.js +226 -0
  150. package/dist/src/testing/types.d.ts +98 -0
  151. package/dist/src/testing/types.js +5 -0
  152. package/dist/src/wallet/cbor-serializer.d.ts +82 -0
  153. package/dist/src/wallet/cbor-serializer.js +282 -0
  154. package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
  155. package/dist/src/wallet/chain-dispatcher.js +241 -0
  156. package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
  157. package/dist/src/wallet/cross-chain-aggregator.js +235 -0
  158. package/dist/src/wallet/index.d.ts +16 -0
  159. package/dist/src/wallet/index.js +22 -0
  160. package/dist/src/wallet/key-derivation.d.ts +117 -0
  161. package/dist/src/wallet/key-derivation.js +325 -0
  162. package/dist/src/wallet/providers/base-provider.d.ts +111 -0
  163. package/dist/src/wallet/providers/base-provider.js +58 -0
  164. package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
  165. package/dist/src/wallet/providers/cketh-provider.js +343 -0
  166. package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
  167. package/dist/src/wallet/providers/polkadot-provider.js +407 -0
  168. package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
  169. package/dist/src/wallet/providers/solana-provider.js +393 -0
  170. package/dist/src/wallet/transaction-queue.d.ts +133 -0
  171. package/dist/src/wallet/transaction-queue.js +195 -0
  172. package/dist/src/wallet/types.d.ts +167 -0
  173. package/dist/src/wallet/types.js +5 -0
  174. package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
  175. package/dist/src/wallet/vetkeys-adapter.js +313 -0
  176. package/dist/src/wallet/wallet-manager.d.ts +202 -0
  177. package/dist/src/wallet/wallet-manager.js +451 -0
  178. package/dist/src/wallet/wallet-storage.d.ts +131 -0
  179. package/dist/src/wallet/wallet-storage.js +274 -0
  180. package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +54 -0
  181. package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +102 -0
  182. package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +121 -0
  183. package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +98 -0
  184. package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +27 -0
  185. package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +69 -0
  186. package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +270 -0
  187. package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +367 -0
  188. package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +157 -0
  189. package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +120 -0
  190. package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +219 -0
  191. package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +44 -0
  192. package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +115 -0
  193. package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +237 -0
  194. package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +137 -0
  195. package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +179 -0
  196. package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +286 -0
  197. package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +235 -0
  198. package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +316 -0
  199. package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +438 -0
  200. package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +399 -0
  201. package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +134 -0
  202. package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +276 -0
  203. package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +133 -0
  204. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +233 -0
  205. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +281 -0
  206. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +280 -0
  207. package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +176 -0
  208. package/macos-wallet-app/Makefile +47 -0
  209. package/macos-wallet-app/project.yml +40 -0
  210. package/macos-wallet-app/setup.sh +73 -0
  211. package/package.json +10 -2
  212. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-28-967Z.json +0 -28
  213. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-29-032Z.backup +0 -1
  214. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-373Z.json +0 -28
  215. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-428Z.backup +0 -1
  216. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-132Z.json +0 -28
  217. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-247Z.backup +0 -1
  218. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-216Z.json +0 -28
  219. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-283Z.backup +0 -1
  220. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-772Z.backup +0 -1
  221. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-793Z.json +0 -28
  222. package/backups/test-backup.json +0 -28
  223. package/scripts/dev-dashboard.mjs +0 -84
  224. package/site/README.md +0 -63
  225. package/site/docusaurus.config.ts +0 -148
  226. package/site/package-lock.json +0 -18383
  227. package/site/package.json +0 -47
  228. package/site/sidebars.ts +0 -86
  229. package/site/static/.gitkeep +0 -0
  230. package/site/static/img/logo.svg +0 -28
  231. package/site/static/img/og-image.svg +0 -35
  232. package/src/archival/archive-manager.ts +0 -372
  233. package/src/archival/arweave-client.ts +0 -289
  234. package/src/backup/backup.ts +0 -315
  235. package/src/cloud-storage/cloud-sync.ts +0 -461
  236. package/src/cloud-storage/provider-detector.ts +0 -198
  237. package/src/debugging/logs.ts +0 -193
  238. package/src/debugging/types.ts +0 -100
  239. package/src/deployment/deployer.ts +0 -274
  240. package/src/deployment/icpClient.ts +0 -620
  241. package/src/deployment/index.ts +0 -46
  242. package/src/deployment/promotion.ts +0 -161
  243. package/src/deployment/types.ts +0 -111
  244. package/src/icp/batch.ts +0 -374
  245. package/src/icp/environment.ts +0 -215
  246. package/src/icp/icpcli.ts +0 -438
  247. package/src/icp/icwasm.ts +0 -222
  248. package/src/icp/index.ts +0 -94
  249. package/src/icp/optimization.ts +0 -242
  250. package/src/icp/tool-detector.ts +0 -110
  251. package/src/icp/types.ts +0 -574
  252. package/src/index.ts +0 -25
  253. package/src/inference/bittensor-client.ts +0 -304
  254. package/src/inference/inference-manager.ts +0 -327
  255. package/src/metrics/metrics.ts +0 -186
  256. package/src/monitoring/alerting.ts +0 -190
  257. package/src/monitoring/health.ts +0 -197
  258. package/src/monitoring/index.ts +0 -38
  259. package/src/monitoring/info.ts +0 -114
  260. package/src/monitoring/types.ts +0 -99
  261. package/src/network/network-config.ts +0 -129
  262. package/src/packaging/compiler.ts +0 -647
  263. package/src/packaging/config-persistence.ts +0 -135
  264. package/src/packaging/config-schemas.ts +0 -156
  265. package/src/packaging/detector.ts +0 -220
  266. package/src/packaging/index.ts +0 -90
  267. package/src/packaging/packager.ts +0 -118
  268. package/src/packaging/parsers/clawdbot.ts +0 -278
  269. package/src/packaging/parsers/cline.ts +0 -223
  270. package/src/packaging/parsers/generic.ts +0 -266
  271. package/src/packaging/parsers/goose.ts +0 -214
  272. package/src/packaging/serializer.ts +0 -260
  273. package/src/packaging/types.ts +0 -144
  274. package/src/packaging/wasmedge-compiler.ts +0 -406
  275. package/src/security/multisig.ts +0 -415
  276. package/src/security/types.ts +0 -416
  277. package/src/security/vetkeys.ts +0 -655
  278. package/src/testing/local-runner.ts +0 -264
  279. package/src/testing/types.ts +0 -104
  280. package/src/wallet/cbor-serializer.ts +0 -323
  281. package/src/wallet/chain-dispatcher.ts +0 -313
  282. package/src/wallet/cross-chain-aggregator.ts +0 -346
  283. package/src/wallet/index.ts +0 -76
  284. package/src/wallet/key-derivation.ts +0 -425
  285. package/src/wallet/providers/base-provider.ts +0 -154
  286. package/src/wallet/providers/cketh-provider.ts +0 -434
  287. package/src/wallet/providers/polkadot-provider.ts +0 -503
  288. package/src/wallet/providers/solana-provider.ts +0 -490
  289. package/src/wallet/transaction-queue.ts +0 -284
  290. package/src/wallet/types.ts +0 -178
  291. package/src/wallet/vetkeys-adapter.ts +0 -431
  292. package/src/wallet/wallet-manager.ts +0 -597
  293. package/src/wallet/wallet-storage.ts +0 -380
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Agent Deployer
3
+ *
4
+ * Main orchestrator for the ICP canister deployment pipeline.
5
+ * Coordinates validation, client setup, and deployment operations.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { createICPClient } from './icpClient.js';
10
+ import { detectToolchain } from '../icp/tool-detector.js';
11
+ import * as icpcli from '../icp/icpcli.js';
12
+ import { getEnvironment } from '../icp/environment.js';
13
+ /**
14
+ * Extract agent name from WASM file path
15
+ */
16
+ function extractAgentName(wasmPath) {
17
+ const basename = path.basename(wasmPath);
18
+ // Remove .wasm extension
19
+ return basename.replace(/\.wasm$/, '');
20
+ }
21
+ /**
22
+ * Validate deployment options
23
+ */
24
+ export function validateDeployOptions(options) {
25
+ const errors = [];
26
+ const warnings = [];
27
+ // Validate WASM path using client
28
+ const client = createICPClient({ network: options.network });
29
+ const wasmValidation = client.validateWasmPath(options.wasmPath);
30
+ if (!wasmValidation.valid) {
31
+ errors.push({
32
+ code: 'INVALID_WASM',
33
+ message: wasmValidation.error,
34
+ });
35
+ }
36
+ // Validate network - requires standard network name or an explicit environment config
37
+ const knownNetworks = ['local', 'ic', 'mainnet', 'dev', 'staging', 'production'];
38
+ if (!knownNetworks.includes(options.network)) {
39
+ errors.push({
40
+ code: 'INVALID_NETWORK',
41
+ message: `Network '${options.network}' is not a standard name. Ensure it is defined in your icp.yaml.`,
42
+ });
43
+ }
44
+ // Warn about mainnet deployment
45
+ if (options.network === 'ic' && !options.skipConfirmation) {
46
+ warnings.push('Deploying to IC mainnet will consume cycles. Ensure you have sufficient balance.');
47
+ }
48
+ // Warn about upgrade without canister ID check
49
+ if (options.canisterId) {
50
+ warnings.push(`Upgrading existing canister: ${options.canisterId}`);
51
+ }
52
+ return {
53
+ valid: errors.length === 0,
54
+ errors,
55
+ warnings,
56
+ };
57
+ }
58
+ /**
59
+ * Get deployment preview/summary
60
+ *
61
+ * Useful for dry-run functionality
62
+ */
63
+ export function getDeploySummary(options) {
64
+ const validation = validateDeployOptions(options);
65
+ // Calculate WASM hash if file exists
66
+ let wasmHash = '';
67
+ let wasmSize = 0;
68
+ if (validation.valid) {
69
+ try {
70
+ const client = createICPClient({ network: options.network });
71
+ wasmHash = client.calculateWasmHash(options.wasmPath);
72
+ wasmSize = fs.statSync(options.wasmPath).size;
73
+ }
74
+ catch {
75
+ // File doesn't exist or can't be read
76
+ }
77
+ }
78
+ return {
79
+ agentName: extractAgentName(options.wasmPath),
80
+ wasmPath: options.wasmPath,
81
+ wasmHash,
82
+ wasmSize,
83
+ network: options.network,
84
+ isUpgrade: !!options.canisterId,
85
+ canisterId: options.canisterId,
86
+ validation,
87
+ };
88
+ }
89
+ /**
90
+ * Deploy an agent to ICP
91
+ *
92
+ * This is the main entry point for the deployment pipeline.
93
+ * Uses auto-detection to choose between icp-cli and the @dfinity/agent SDK.
94
+ *
95
+ * Priority: icp-cli > @dfinity/agent SDK (with dfx fallback)
96
+ *
97
+ * @param options - Deployment options
98
+ * @returns Deployment result with canister info
99
+ */
100
+ export async function deployAgent(options) {
101
+ // Validate options
102
+ const validation = validateDeployOptions(options);
103
+ if (!validation.valid) {
104
+ const errorMessages = validation.errors.map((e) => e.message).join('; ');
105
+ throw new Error(`Deployment validation failed: ${errorMessages}`);
106
+ }
107
+ // Detect available toolchain
108
+ const toolchain = await detectToolchain();
109
+ // Determine which tool to use
110
+ if (toolchain.icp.available && (options.environment || options.identity)) {
111
+ // Use icp-cli when explicitly requesting environments or identity features
112
+ return deployWithIcpCli(options, validation.warnings);
113
+ }
114
+ else if (toolchain.preferredDeployTool === 'icp') {
115
+ // Prefer icp-cli when available
116
+ return deployWithIcpCli(options, validation.warnings);
117
+ }
118
+ else {
119
+ // Fall back to @dfinity/agent SDK
120
+ return deployWithSdk(options, validation.warnings);
121
+ }
122
+ }
123
+ /**
124
+ * Deploy using icp-cli tool.
125
+ */
126
+ async function deployWithIcpCli(options, warnings) {
127
+ // Resolve environment from options or network
128
+ const envName = options.environment ?? options.network;
129
+ const envConfig = getEnvironment(envName);
130
+ const identity = options.identity ?? envConfig.identity;
131
+ // Determine deploy mode
132
+ const mode = options.mode ?? (options.canisterId ? 'upgrade' : 'auto');
133
+ const result = await icpcli.deploy({
134
+ environment: envName,
135
+ identity,
136
+ mode,
137
+ projectRoot: options.projectRoot,
138
+ });
139
+ if (!result.success) {
140
+ throw new Error(`icp-cli deploy failed: ${result.stderr || result.stdout}`);
141
+ }
142
+ // Parse canister ID from output (best effort)
143
+ const canisterIdMatch = result.stdout.match(/([a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{3})/);
144
+ const canisterId = canisterIdMatch?.[1] ?? options.canisterId ?? 'unknown';
145
+ const canisterInfo = {
146
+ canisterId,
147
+ network: options.network,
148
+ agentName: extractAgentName(options.wasmPath),
149
+ deployedAt: new Date(),
150
+ };
151
+ return {
152
+ canister: canisterInfo,
153
+ isUpgrade: mode === 'upgrade',
154
+ warnings: [...warnings, `Deployed via icp-cli (environment: ${envName})`],
155
+ deployTool: 'icp',
156
+ };
157
+ }
158
+ /**
159
+ * Deploy using @dfinity/agent SDK (original implementation).
160
+ */
161
+ async function deployWithSdk(options, warnings) {
162
+ // Create ICP client
163
+ const client = createICPClient({
164
+ network: options.network,
165
+ identity: options.identityPath,
166
+ });
167
+ // Check network connection
168
+ const connectionCheck = await client.checkConnection();
169
+ if (!connectionCheck.connected) {
170
+ throw new Error(`Failed to connect to ${options.network} network: ${connectionCheck.error ?? 'Unknown error'}`);
171
+ }
172
+ // Deploy the WASM
173
+ const deployResult = await client.deploy(options.wasmPath, options.canisterId);
174
+ // Build canister info
175
+ const canisterInfo = {
176
+ canisterId: deployResult.canisterId,
177
+ network: options.network,
178
+ agentName: extractAgentName(options.wasmPath),
179
+ deployedAt: new Date(),
180
+ wasmHash: deployResult.wasmHash,
181
+ };
182
+ return {
183
+ canister: canisterInfo,
184
+ isUpgrade: deployResult.isUpgrade,
185
+ cyclesUsed: deployResult.cyclesUsed,
186
+ warnings,
187
+ deployTool: 'sdk',
188
+ };
189
+ }
190
+ /**
191
+ * Check if a canister exists and get its status
192
+ */
193
+ export async function getCanisterStatus(canisterId, network) {
194
+ const client = createICPClient({ network });
195
+ try {
196
+ const status = await client.getCanisterStatus(canisterId);
197
+ if (!status.exists) {
198
+ return { exists: false };
199
+ }
200
+ return {
201
+ exists: status.exists,
202
+ status: status.status,
203
+ memorySize: status.memorySize,
204
+ cycles: status.cycles,
205
+ };
206
+ }
207
+ catch {
208
+ return { exists: false };
209
+ }
210
+ }
211
+ //# sourceMappingURL=deployer.js.map
@@ -0,0 +1,144 @@
1
+ /**
2
+ * ICP Client
3
+ *
4
+ * This module provides real ICP integration using @dfinity/agent SDK.
5
+ * Handles canister deployment, installation, and queries.
6
+ */
7
+ import type { ICPClientConfig, DeploymentStatus } from './types.js';
8
+ /**
9
+ * ICP Client Class
10
+ *
11
+ * Provides methods for deploying, installing, and querying canisters.
12
+ * Uses @dfinity/agent SDK for real ICP network interactions.
13
+ */
14
+ export declare class ICPClient {
15
+ private config;
16
+ private host;
17
+ constructor(config: ICPClientConfig);
18
+ get network(): string;
19
+ getHost(): string;
20
+ /**
21
+ * Check connection to ICP network
22
+ */
23
+ checkConnection(): Promise<{
24
+ connected: boolean;
25
+ error?: string;
26
+ }>;
27
+ /**
28
+ * Deploy WASM to canister (new or upgrade)
29
+ *
30
+ * @param wasmPath - Path to WASM file
31
+ * @param canisterId - Optional canister ID for upgrade
32
+ * @returns Deployment result with canister info
33
+ */
34
+ deploy(wasmPath: string, canisterId?: string): Promise<{
35
+ canisterId: string;
36
+ isUpgrade: boolean;
37
+ cyclesUsed: bigint;
38
+ wasmHash: string;
39
+ }>;
40
+ /**
41
+ * Execute agent function on canister
42
+ *
43
+ * @param canisterId - Canister ID to execute on
44
+ * @param functionName - Agent function to call
45
+ * @param args - Arguments to pass (as Uint8Array)
46
+ * @returns Execution result
47
+ */
48
+ executeAgent(canisterId: string, functionName: string, args: Uint8Array): Promise<{
49
+ success: boolean;
50
+ result?: Uint8Array;
51
+ error?: string;
52
+ }>;
53
+ /**
54
+ * Load agent WASM module into canister
55
+ *
56
+ * @param canisterId - Canister ID to load WASM into
57
+ * @param wasmPath - Path to WASM file
58
+ * @param wasmHash - Expected WASM hash for verification
59
+ * @returns Loading result
60
+ */
61
+ loadAgentWasm(canisterId: string, wasmPath: string, wasmHash?: string): Promise<{
62
+ success: boolean;
63
+ error?: string;
64
+ }>;
65
+ /**
66
+ * Get canister status
67
+ *
68
+ * @param canisterId - Canister ID to query
69
+ * @returns Canister status information
70
+ */
71
+ getCanisterStatus(canisterId: string): Promise<{
72
+ exists: boolean;
73
+ status: DeploymentStatus;
74
+ memorySize?: bigint;
75
+ cycles?: bigint;
76
+ }>;
77
+ /**
78
+ * Validate WASM file path
79
+ *
80
+ * @param wasmPath - Path to WASM file
81
+ * @returns Validation result
82
+ */
83
+ validateWasmPath(wasmPath: string): {
84
+ valid: boolean;
85
+ error?: string;
86
+ };
87
+ /**
88
+ * Calculate WASM file hash
89
+ *
90
+ * @param wasmPath - Path to WASM file
91
+ * @returns SHA-256 hash as hex string
92
+ */
93
+ calculateWasmHash(wasmPath: string): string;
94
+ /**
95
+ * Create SHA-256 hash from buffer
96
+ *
97
+ * @param buffer - Buffer to hash
98
+ * @returns Hex-encoded hash
99
+ */
100
+ private createSha256Hash;
101
+ /**
102
+ * Resolve canister ID from dfx output.
103
+ */
104
+ private resolveCanisterId;
105
+ /**
106
+ * Parse dfx canister status output (JSON or text output modes).
107
+ */
108
+ private parseCanisterStatus;
109
+ /**
110
+ * Detect unit test execution environment.
111
+ */
112
+ private isTestEnvironment;
113
+ /**
114
+ * Call agent function via Actor (Phase 5B: Real Actor Integration)
115
+ *
116
+ * @param canisterId - Canister ID
117
+ * @param methodName - Agent method name
118
+ * @param args - Arguments as array
119
+ * @returns Method result
120
+ */
121
+ callAgentMethod<T>(canisterId: string, methodName: string, args?: any[]): Promise<T>;
122
+ /**
123
+ * Get stub response for testing
124
+ */
125
+ private getStubResponse;
126
+ /**
127
+ * Call method via Actor instance
128
+ */
129
+ private callViaActor;
130
+ }
131
+ /**
132
+ * Create ICP client instance
133
+ *
134
+ * @param config - Client configuration
135
+ * @returns Initialized ICP client
136
+ */
137
+ export declare function createICPClient(config: ICPClientConfig): ICPClient;
138
+ /**
139
+ * Generate stub canister ID (for testing)
140
+ *
141
+ * @returns Random canister ID for local testing
142
+ */
143
+ export declare function generateStubCanisterId(): string;
144
+ //# sourceMappingURL=icpClient.d.ts.map