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.
- package/.claude/settings.local.json +9 -0
- package/README.md +1 -1
- package/dist/cli/commands/approve.js +5 -5
- package/dist/cli/commands/archive.js +5 -5
- package/dist/cli/commands/backup.js +5 -5
- package/dist/cli/commands/cloud-backup.js +12 -12
- package/dist/cli/commands/decrypt.js +2 -2
- package/dist/cli/commands/deploy.js +1 -1
- package/dist/cli/commands/exec.js +2 -2
- package/dist/cli/commands/fetch.js +4 -4
- package/dist/cli/commands/inference.js +5 -5
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.js +16 -16
- package/dist/cli/commands/list.js +4 -4
- package/dist/cli/commands/package.js +2 -2
- package/dist/cli/commands/profile.js +1 -1
- package/dist/cli/commands/rebuild.js +2 -2
- package/dist/cli/commands/show.js +1 -1
- package/dist/cli/commands/status.d.ts +1 -1
- package/dist/cli/commands/status.js +8 -8
- package/dist/cli/commands/trace.js +1 -1
- package/dist/cli/commands/wallet-export.js +1 -1
- package/dist/cli/commands/wallet-sign.js +1 -1
- package/dist/cli/commands/wallet.d.ts +1 -1
- package/dist/cli/commands/wallet.js +1 -1
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +3 -3
- package/dist/src/archival/archive-manager.d.ts +85 -0
- package/dist/src/archival/archive-manager.js +294 -0
- package/dist/src/archival/arweave-client.d.ts +88 -0
- package/dist/src/archival/arweave-client.js +223 -0
- package/dist/src/archival/index.d.ts +8 -0
- package/{src/archival/index.ts → dist/src/archival/index.js} +1 -1
- package/dist/src/backup/backup.d.ts +67 -0
- package/dist/src/backup/backup.js +231 -0
- package/dist/src/backup/index.d.ts +7 -0
- package/{src/backup/index.ts → dist/src/backup/index.js} +1 -1
- package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
- package/dist/src/cloud-storage/cloud-sync.js +372 -0
- package/dist/src/cloud-storage/index.d.ts +11 -0
- package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
- package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
- package/dist/src/cloud-storage/provider-detector.js +158 -0
- package/{src/cloud-storage/types.ts → dist/src/cloud-storage/types.d.ts} +40 -53
- package/dist/src/cloud-storage/types.js +10 -0
- package/dist/src/debugging/index.d.ts +6 -0
- package/{src/debugging/index.ts → dist/src/debugging/index.js} +1 -1
- package/dist/src/debugging/logs.d.ts +32 -0
- package/dist/src/debugging/logs.js +158 -0
- package/dist/src/debugging/types.d.ts +91 -0
- package/dist/src/debugging/types.js +5 -0
- package/dist/src/deployment/deployer.d.ts +52 -0
- package/dist/src/deployment/deployer.js +211 -0
- package/dist/src/deployment/icpClient.d.ts +144 -0
- package/dist/src/deployment/icpClient.js +545 -0
- package/dist/src/deployment/index.d.ts +11 -0
- package/dist/src/deployment/index.js +14 -0
- package/dist/src/deployment/promotion.d.ts +32 -0
- package/dist/src/deployment/promotion.js +114 -0
- package/dist/src/deployment/types.d.ts +101 -0
- package/dist/src/deployment/types.js +5 -0
- package/dist/src/icp/batch.d.ts +112 -0
- package/dist/src/icp/batch.js +273 -0
- package/dist/src/icp/cycles.d.ts +29 -0
- package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
- package/dist/src/icp/environment.d.ts +60 -0
- package/dist/src/icp/environment.js +183 -0
- package/dist/src/icp/icpcli.d.ts +204 -0
- package/dist/src/icp/icpcli.js +374 -0
- package/dist/src/icp/icwasm.d.ts +94 -0
- package/dist/src/icp/icwasm.js +197 -0
- package/dist/src/icp/identity.d.ts +50 -0
- package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
- package/dist/src/icp/index.d.ts +16 -0
- package/dist/src/icp/index.js +20 -0
- package/dist/src/icp/optimization.d.ts +16 -0
- package/dist/src/icp/optimization.js +225 -0
- package/dist/src/icp/tokens.d.ts +24 -0
- package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
- package/dist/src/icp/tool-detector.d.ts +31 -0
- package/dist/src/icp/tool-detector.js +104 -0
- package/dist/src/icp/types.d.ts +493 -0
- package/dist/src/icp/types.js +7 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.js +18 -0
- package/dist/src/inference/bittensor-client.d.ts +108 -0
- package/dist/src/inference/bittensor-client.js +224 -0
- package/dist/src/inference/index.d.ts +8 -0
- package/{src/inference/index.ts → dist/src/inference/index.js} +1 -1
- package/dist/src/inference/inference-manager.d.ts +76 -0
- package/dist/src/inference/inference-manager.js +228 -0
- package/dist/src/metrics/index.d.ts +7 -0
- package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
- package/dist/src/metrics/metrics.d.ts +39 -0
- package/dist/src/metrics/metrics.js +129 -0
- package/dist/src/monitoring/alerting.d.ts +51 -0
- package/dist/src/monitoring/alerting.js +169 -0
- package/dist/src/monitoring/health.d.ts +40 -0
- package/dist/src/monitoring/health.js +164 -0
- package/dist/src/monitoring/index.d.ts +10 -0
- package/dist/src/monitoring/index.js +12 -0
- package/dist/src/monitoring/info.d.ts +15 -0
- package/dist/src/monitoring/info.js +109 -0
- package/dist/src/monitoring/types.d.ts +93 -0
- package/dist/src/monitoring/types.js +7 -0
- package/dist/src/network/index.d.ts +5 -0
- package/{src/network/index.ts → dist/src/network/index.js} +1 -1
- package/dist/src/network/network-config.d.ts +31 -0
- package/dist/src/network/network-config.js +109 -0
- package/dist/src/packaging/compiler.d.ts +61 -0
- package/dist/src/packaging/compiler.js +562 -0
- package/dist/src/packaging/config-persistence.d.ts +46 -0
- package/dist/src/packaging/config-persistence.js +108 -0
- package/dist/src/packaging/config-schemas.d.ts +115 -0
- package/dist/src/packaging/config-schemas.js +43 -0
- package/dist/src/packaging/detector.d.ts +26 -0
- package/dist/src/packaging/detector.js +193 -0
- package/dist/src/packaging/index.d.ts +16 -0
- package/dist/src/packaging/index.js +22 -0
- package/dist/src/packaging/packager.d.ts +31 -0
- package/dist/src/packaging/packager.js +90 -0
- package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
- package/dist/src/packaging/parsers/clawdbot.js +231 -0
- package/dist/src/packaging/parsers/cline.d.ts +26 -0
- package/dist/src/packaging/parsers/cline.js +185 -0
- package/dist/src/packaging/parsers/generic.d.ts +27 -0
- package/dist/src/packaging/parsers/generic.js +228 -0
- package/dist/src/packaging/parsers/goose.d.ts +26 -0
- package/dist/src/packaging/parsers/goose.js +175 -0
- package/dist/src/packaging/parsers/index.d.ts +11 -0
- package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +1 -1
- package/dist/src/packaging/serializer.d.ts +108 -0
- package/dist/src/packaging/serializer.js +153 -0
- package/dist/src/packaging/types.d.ts +131 -0
- package/dist/src/packaging/types.js +5 -0
- package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
- package/dist/src/packaging/wasmedge-compiler.js +349 -0
- package/dist/src/security/index.d.ts +11 -0
- package/{src/security/index.ts → dist/src/security/index.js} +1 -4
- package/dist/src/security/multisig.d.ts +102 -0
- package/dist/src/security/multisig.js +283 -0
- package/dist/src/security/types.d.ts +207 -0
- package/dist/src/security/types.js +217 -0
- package/dist/src/security/vetkeys.d.ts +179 -0
- package/dist/src/security/vetkeys.js +499 -0
- package/dist/src/testing/index.d.ts +6 -0
- package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
- package/dist/src/testing/local-runner.d.ts +23 -0
- package/dist/src/testing/local-runner.js +226 -0
- package/dist/src/testing/types.d.ts +98 -0
- package/dist/src/testing/types.js +5 -0
- package/dist/src/wallet/cbor-serializer.d.ts +82 -0
- package/dist/src/wallet/cbor-serializer.js +282 -0
- package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
- package/dist/src/wallet/chain-dispatcher.js +241 -0
- package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
- package/dist/src/wallet/cross-chain-aggregator.js +235 -0
- package/dist/src/wallet/index.d.ts +16 -0
- package/dist/src/wallet/index.js +22 -0
- package/dist/src/wallet/key-derivation.d.ts +117 -0
- package/dist/src/wallet/key-derivation.js +325 -0
- package/dist/src/wallet/providers/base-provider.d.ts +111 -0
- package/dist/src/wallet/providers/base-provider.js +58 -0
- package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
- package/dist/src/wallet/providers/cketh-provider.js +343 -0
- package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
- package/dist/src/wallet/providers/polkadot-provider.js +407 -0
- package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
- package/dist/src/wallet/providers/solana-provider.js +393 -0
- package/dist/src/wallet/transaction-queue.d.ts +133 -0
- package/dist/src/wallet/transaction-queue.js +195 -0
- package/dist/src/wallet/types.d.ts +167 -0
- package/dist/src/wallet/types.js +5 -0
- package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
- package/dist/src/wallet/vetkeys-adapter.js +313 -0
- package/dist/src/wallet/wallet-manager.d.ts +202 -0
- package/dist/src/wallet/wallet-manager.js +451 -0
- package/dist/src/wallet/wallet-storage.d.ts +131 -0
- package/dist/src/wallet/wallet-storage.js +274 -0
- package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +54 -0
- package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +102 -0
- package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +121 -0
- package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +98 -0
- package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +27 -0
- package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +69 -0
- package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +270 -0
- package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +367 -0
- package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +157 -0
- package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +120 -0
- package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +219 -0
- package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +44 -0
- package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +115 -0
- package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +237 -0
- package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +137 -0
- package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +179 -0
- package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +286 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +235 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +316 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +438 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +399 -0
- package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +134 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +276 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +133 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +233 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +281 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +280 -0
- package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +176 -0
- package/macos-wallet-app/Makefile +47 -0
- package/macos-wallet-app/project.yml +40 -0
- package/macos-wallet-app/setup.sh +73 -0
- package/package.json +10 -2
- package/backups/agentvault-backup-test-agent-2026-02-12T17-54-28-967Z.json +0 -28
- package/backups/agentvault-backup-test-agent-2026-02-12T17-54-29-032Z.backup +0 -1
- package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-373Z.json +0 -28
- package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-428Z.backup +0 -1
- package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-132Z.json +0 -28
- package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-247Z.backup +0 -1
- package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-216Z.json +0 -28
- package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-283Z.backup +0 -1
- package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-772Z.backup +0 -1
- package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-793Z.json +0 -28
- package/backups/test-backup.json +0 -28
- package/scripts/dev-dashboard.mjs +0 -84
- package/site/README.md +0 -63
- package/site/docusaurus.config.ts +0 -148
- package/site/package-lock.json +0 -18383
- package/site/package.json +0 -47
- package/site/sidebars.ts +0 -86
- package/site/static/.gitkeep +0 -0
- package/site/static/img/logo.svg +0 -28
- package/site/static/img/og-image.svg +0 -35
- package/src/archival/archive-manager.ts +0 -372
- package/src/archival/arweave-client.ts +0 -289
- package/src/backup/backup.ts +0 -315
- package/src/cloud-storage/cloud-sync.ts +0 -461
- package/src/cloud-storage/provider-detector.ts +0 -198
- package/src/debugging/logs.ts +0 -193
- package/src/debugging/types.ts +0 -100
- package/src/deployment/deployer.ts +0 -274
- package/src/deployment/icpClient.ts +0 -620
- package/src/deployment/index.ts +0 -46
- package/src/deployment/promotion.ts +0 -161
- package/src/deployment/types.ts +0 -111
- package/src/icp/batch.ts +0 -374
- package/src/icp/environment.ts +0 -215
- package/src/icp/icpcli.ts +0 -438
- package/src/icp/icwasm.ts +0 -222
- package/src/icp/index.ts +0 -94
- package/src/icp/optimization.ts +0 -242
- package/src/icp/tool-detector.ts +0 -110
- package/src/icp/types.ts +0 -574
- package/src/index.ts +0 -25
- package/src/inference/bittensor-client.ts +0 -304
- package/src/inference/inference-manager.ts +0 -327
- package/src/metrics/metrics.ts +0 -186
- package/src/monitoring/alerting.ts +0 -190
- package/src/monitoring/health.ts +0 -197
- package/src/monitoring/index.ts +0 -38
- package/src/monitoring/info.ts +0 -114
- package/src/monitoring/types.ts +0 -99
- package/src/network/network-config.ts +0 -129
- package/src/packaging/compiler.ts +0 -647
- package/src/packaging/config-persistence.ts +0 -135
- package/src/packaging/config-schemas.ts +0 -156
- package/src/packaging/detector.ts +0 -220
- package/src/packaging/index.ts +0 -90
- package/src/packaging/packager.ts +0 -118
- package/src/packaging/parsers/clawdbot.ts +0 -278
- package/src/packaging/parsers/cline.ts +0 -223
- package/src/packaging/parsers/generic.ts +0 -266
- package/src/packaging/parsers/goose.ts +0 -214
- package/src/packaging/serializer.ts +0 -260
- package/src/packaging/types.ts +0 -144
- package/src/packaging/wasmedge-compiler.ts +0 -406
- package/src/security/multisig.ts +0 -415
- package/src/security/types.ts +0 -416
- package/src/security/vetkeys.ts +0 -655
- package/src/testing/local-runner.ts +0 -264
- package/src/testing/types.ts +0 -104
- package/src/wallet/cbor-serializer.ts +0 -323
- package/src/wallet/chain-dispatcher.ts +0 -313
- package/src/wallet/cross-chain-aggregator.ts +0 -346
- package/src/wallet/index.ts +0 -76
- package/src/wallet/key-derivation.ts +0 -425
- package/src/wallet/providers/base-provider.ts +0 -154
- package/src/wallet/providers/cketh-provider.ts +0 -434
- package/src/wallet/providers/polkadot-provider.ts +0 -503
- package/src/wallet/providers/solana-provider.ts +0 -490
- package/src/wallet/transaction-queue.ts +0 -284
- package/src/wallet/types.ts +0 -178
- package/src/wallet/vetkeys-adapter.ts +0 -431
- package/src/wallet/wallet-manager.ts +0 -597
- 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
|