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,374 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* icp-cli Wrapper
|
|
3
|
+
*
|
|
4
|
+
* TypeScript wrapper around the icp CLI tool (v0.1.0).
|
|
5
|
+
* The binary name is `icp` (not `icp-cli`).
|
|
6
|
+
*
|
|
7
|
+
* Provides typed interfaces for build, deploy, canister operations,
|
|
8
|
+
* cycles management, identity management, network management,
|
|
9
|
+
* token operations, sync, and environment queries.
|
|
10
|
+
*/
|
|
11
|
+
import { execa } from 'execa';
|
|
12
|
+
const ICP_BIN = 'icp';
|
|
13
|
+
/**
|
|
14
|
+
* Build common arguments from IcpCommonOptions.
|
|
15
|
+
*/
|
|
16
|
+
function buildCommonArgs(options) {
|
|
17
|
+
const args = [];
|
|
18
|
+
if (options.environment) {
|
|
19
|
+
args.push('-e', options.environment);
|
|
20
|
+
}
|
|
21
|
+
if (options.projectRoot) {
|
|
22
|
+
args.push('--project-root-override', options.projectRoot);
|
|
23
|
+
}
|
|
24
|
+
if (options.identity) {
|
|
25
|
+
args.push('--identity', options.identity);
|
|
26
|
+
}
|
|
27
|
+
if (options.identityPasswordFile) {
|
|
28
|
+
args.push('--identity-password-file', options.identityPasswordFile);
|
|
29
|
+
}
|
|
30
|
+
if (options.debug) {
|
|
31
|
+
args.push('--debug');
|
|
32
|
+
}
|
|
33
|
+
return args;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Execute an icp command and return the result.
|
|
37
|
+
*
|
|
38
|
+
* @param args - Command-line arguments (after 'icp')
|
|
39
|
+
* @param timeoutMs - Timeout in milliseconds (default 120s)
|
|
40
|
+
* @param cwd - Working directory
|
|
41
|
+
* @returns Structured result
|
|
42
|
+
*/
|
|
43
|
+
async function runIcp(args, timeoutMs = 120_000, cwd) {
|
|
44
|
+
try {
|
|
45
|
+
const result = await execa(ICP_BIN, args, {
|
|
46
|
+
reject: false,
|
|
47
|
+
timeout: timeoutMs,
|
|
48
|
+
cwd,
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
success: result.exitCode === 0,
|
|
52
|
+
stdout: result.stdout,
|
|
53
|
+
stderr: result.stderr,
|
|
54
|
+
exitCode: result.exitCode ?? 1,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
stdout: '',
|
|
62
|
+
stderr: message,
|
|
63
|
+
exitCode: 1,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ─── Build ─────────────────────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Build canisters using icp build.
|
|
70
|
+
*
|
|
71
|
+
* @param options - Build options
|
|
72
|
+
* @returns Command result
|
|
73
|
+
*/
|
|
74
|
+
export async function build(options = {}) {
|
|
75
|
+
const args = ['build', ...buildCommonArgs(options)];
|
|
76
|
+
if (options.canisters && options.canisters.length > 0) {
|
|
77
|
+
args.push(...options.canisters);
|
|
78
|
+
}
|
|
79
|
+
return runIcp(args, 300_000, options.projectRoot);
|
|
80
|
+
}
|
|
81
|
+
// ─── Deploy ────────────────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Deploy project to an environment.
|
|
84
|
+
*
|
|
85
|
+
* @param options - Deploy options
|
|
86
|
+
* @returns Command result
|
|
87
|
+
*/
|
|
88
|
+
export async function deploy(options = {}) {
|
|
89
|
+
const args = ['deploy', ...buildCommonArgs(options)];
|
|
90
|
+
if (options.mode) {
|
|
91
|
+
args.push('-m', options.mode);
|
|
92
|
+
}
|
|
93
|
+
if (options.canisters && options.canisters.length > 0) {
|
|
94
|
+
args.push(...options.canisters);
|
|
95
|
+
}
|
|
96
|
+
return runIcp(args, 300_000, options.projectRoot);
|
|
97
|
+
}
|
|
98
|
+
// ─── Canister Operations ───────────────────────────────────────────────────
|
|
99
|
+
/**
|
|
100
|
+
* Get canister status.
|
|
101
|
+
*
|
|
102
|
+
* @param options - Canister status options
|
|
103
|
+
* @returns Command result with status in stdout
|
|
104
|
+
*/
|
|
105
|
+
export async function canisterStatus(options) {
|
|
106
|
+
const args = ['canister', 'status', options.canister, ...buildCommonArgs(options)];
|
|
107
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Call a canister method.
|
|
111
|
+
*
|
|
112
|
+
* @param options - Canister call options
|
|
113
|
+
* @returns Command result with response in stdout
|
|
114
|
+
*/
|
|
115
|
+
export async function canisterCall(options) {
|
|
116
|
+
const args = ['canister', 'call', options.canister, options.method, ...buildCommonArgs(options)];
|
|
117
|
+
if (options.args) {
|
|
118
|
+
args.push(options.args);
|
|
119
|
+
}
|
|
120
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* List canisters in the project.
|
|
124
|
+
*
|
|
125
|
+
* @param options - Common options
|
|
126
|
+
* @returns Command result with canister list in stdout
|
|
127
|
+
*/
|
|
128
|
+
export async function canisterList(options = {}) {
|
|
129
|
+
const args = ['canister', 'list', ...buildCommonArgs(options)];
|
|
130
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Start a stopped canister.
|
|
134
|
+
*
|
|
135
|
+
* @param canister - Canister ID or name
|
|
136
|
+
* @param options - Common options
|
|
137
|
+
* @returns Command result
|
|
138
|
+
*/
|
|
139
|
+
export async function canisterStart(canister, options = {}) {
|
|
140
|
+
const args = ['canister', 'start', canister, ...buildCommonArgs(options)];
|
|
141
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Stop a running canister.
|
|
145
|
+
*
|
|
146
|
+
* @param canister - Canister ID or name
|
|
147
|
+
* @param options - Common options
|
|
148
|
+
* @returns Command result
|
|
149
|
+
*/
|
|
150
|
+
export async function canisterStop(canister, options = {}) {
|
|
151
|
+
const args = ['canister', 'stop', canister, ...buildCommonArgs(options)];
|
|
152
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Delete a canister.
|
|
156
|
+
*
|
|
157
|
+
* @param canister - Canister ID or name
|
|
158
|
+
* @param options - Common options
|
|
159
|
+
* @returns Command result
|
|
160
|
+
*/
|
|
161
|
+
export async function canisterDelete(canister, options = {}) {
|
|
162
|
+
const args = ['canister', 'delete', canister, ...buildCommonArgs(options)];
|
|
163
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
164
|
+
}
|
|
165
|
+
// ─── Cycles Management ────────────────────────────────────────────────────
|
|
166
|
+
/**
|
|
167
|
+
* Check cycle balance of a canister.
|
|
168
|
+
*
|
|
169
|
+
* @param options - Cycles balance options
|
|
170
|
+
* @returns Command result with balance in stdout
|
|
171
|
+
*/
|
|
172
|
+
export async function cyclesBalance(options) {
|
|
173
|
+
const args = ['cycles', 'balance', options.canister, ...buildCommonArgs(options)];
|
|
174
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Mint cycles.
|
|
178
|
+
*
|
|
179
|
+
* @param options - Mint options
|
|
180
|
+
* @returns Command result
|
|
181
|
+
*/
|
|
182
|
+
export async function cyclesMint(options) {
|
|
183
|
+
const args = ['cycles', 'mint', options.amount, ...buildCommonArgs(options)];
|
|
184
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Transfer cycles to a canister.
|
|
188
|
+
*
|
|
189
|
+
* @param options - Transfer options
|
|
190
|
+
* @returns Command result
|
|
191
|
+
*/
|
|
192
|
+
export async function cyclesTransfer(options) {
|
|
193
|
+
const args = ['cycles', 'transfer', options.amount, '--to', options.to, ...buildCommonArgs(options)];
|
|
194
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
195
|
+
}
|
|
196
|
+
// ─── Identity Management ──────────────────────────────────────────────────
|
|
197
|
+
/**
|
|
198
|
+
* List available identities.
|
|
199
|
+
*
|
|
200
|
+
* @param options - Common options
|
|
201
|
+
* @returns Command result with identity list in stdout
|
|
202
|
+
*/
|
|
203
|
+
export async function identityList(options = {}) {
|
|
204
|
+
const args = ['identity', 'list', ...buildCommonArgs(options)];
|
|
205
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create a new identity.
|
|
209
|
+
*
|
|
210
|
+
* @param options - New identity options
|
|
211
|
+
* @returns Command result
|
|
212
|
+
*/
|
|
213
|
+
export async function identityNew(options) {
|
|
214
|
+
const args = ['identity', 'new', ...(options.name ? [options.name] : []), ...buildCommonArgs(options)];
|
|
215
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Export an identity.
|
|
219
|
+
*
|
|
220
|
+
* @param options - Export options
|
|
221
|
+
* @returns Command result with PEM data in stdout
|
|
222
|
+
*/
|
|
223
|
+
export async function identityExport(options) {
|
|
224
|
+
const args = ['identity', 'export', ...(options.name ? [options.name] : []), ...buildCommonArgs(options)];
|
|
225
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Import an identity from a PEM file.
|
|
229
|
+
*
|
|
230
|
+
* @param options - Import options
|
|
231
|
+
* @returns Command result
|
|
232
|
+
*/
|
|
233
|
+
export async function identityImport(options) {
|
|
234
|
+
const args = ['identity', 'import', ...(options.name ? [options.name] : []), ...(options.pemFile ? [options.pemFile] : []), ...buildCommonArgs(options)];
|
|
235
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get the principal of the current or named identity.
|
|
239
|
+
*
|
|
240
|
+
* @param options - Common options (use identity field to specify which identity)
|
|
241
|
+
* @returns Command result with principal in stdout
|
|
242
|
+
*/
|
|
243
|
+
export async function identityPrincipal(options = {}) {
|
|
244
|
+
const args = ['identity', 'principal', ...buildCommonArgs(options)];
|
|
245
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get the default identity name.
|
|
249
|
+
*
|
|
250
|
+
* @param options - Common options
|
|
251
|
+
* @returns Command result with default identity name in stdout
|
|
252
|
+
*/
|
|
253
|
+
export async function identityDefault(options = {}) {
|
|
254
|
+
const args = ['identity', 'default', ...buildCommonArgs(options)];
|
|
255
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
256
|
+
}
|
|
257
|
+
// ─── Network Management ───────────────────────────────────────────────────
|
|
258
|
+
/**
|
|
259
|
+
* Start a local test network.
|
|
260
|
+
*
|
|
261
|
+
* @param options - Network start options
|
|
262
|
+
* @returns Command result
|
|
263
|
+
*/
|
|
264
|
+
export async function networkStart(options = {}) {
|
|
265
|
+
const args = ['network', 'start', ...buildCommonArgs(options)];
|
|
266
|
+
if (options.network) {
|
|
267
|
+
args.push(options.network);
|
|
268
|
+
}
|
|
269
|
+
return runIcp(args, 60_000, options.projectRoot);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Stop a local test network.
|
|
273
|
+
*
|
|
274
|
+
* @param options - Network stop options
|
|
275
|
+
* @returns Command result
|
|
276
|
+
*/
|
|
277
|
+
export async function networkStop(options = {}) {
|
|
278
|
+
const args = ['network', 'stop', ...buildCommonArgs(options)];
|
|
279
|
+
if (options.network) {
|
|
280
|
+
args.push(options.network);
|
|
281
|
+
}
|
|
282
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Get network status.
|
|
286
|
+
*
|
|
287
|
+
* @param options - Common options
|
|
288
|
+
* @returns Command result with status in stdout
|
|
289
|
+
*/
|
|
290
|
+
export async function networkStatus(options = {}) {
|
|
291
|
+
const args = ['network', 'status', ...buildCommonArgs(options)];
|
|
292
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* List available networks.
|
|
296
|
+
*
|
|
297
|
+
* @param options - Common options
|
|
298
|
+
* @returns Command result with network list in stdout
|
|
299
|
+
*/
|
|
300
|
+
export async function networkList(options = {}) {
|
|
301
|
+
const args = ['network', 'list', ...buildCommonArgs(options)];
|
|
302
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Ping a network to check connectivity.
|
|
306
|
+
*
|
|
307
|
+
* @param options - Common options
|
|
308
|
+
* @returns Command result
|
|
309
|
+
*/
|
|
310
|
+
export async function networkPing(options = {}) {
|
|
311
|
+
const args = ['network', 'ping', ...buildCommonArgs(options)];
|
|
312
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
313
|
+
}
|
|
314
|
+
// ─── Sync ──────────────────────────────────────────────────────────────────
|
|
315
|
+
/**
|
|
316
|
+
* Synchronize canisters with the network.
|
|
317
|
+
*
|
|
318
|
+
* @param options - Sync options
|
|
319
|
+
* @returns Command result
|
|
320
|
+
*/
|
|
321
|
+
export async function sync(options = {}) {
|
|
322
|
+
const args = ['sync', ...buildCommonArgs(options)];
|
|
323
|
+
return runIcp(args, 120_000, options.projectRoot);
|
|
324
|
+
}
|
|
325
|
+
// ─── Token Operations ─────────────────────────────────────────────────────
|
|
326
|
+
/**
|
|
327
|
+
* Get token balance.
|
|
328
|
+
*
|
|
329
|
+
* @param options - Token balance options
|
|
330
|
+
* @returns Command result with balance in stdout
|
|
331
|
+
*/
|
|
332
|
+
export async function tokenBalance(options = {}) {
|
|
333
|
+
const args = ['token', 'balance', ...buildCommonArgs(options)];
|
|
334
|
+
if (options.canister) {
|
|
335
|
+
args.push('--canister', options.canister);
|
|
336
|
+
}
|
|
337
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Transfer tokens.
|
|
341
|
+
*
|
|
342
|
+
* @param options - Token transfer options
|
|
343
|
+
* @returns Command result
|
|
344
|
+
*/
|
|
345
|
+
export async function tokenTransfer(options) {
|
|
346
|
+
const args = ['token', 'transfer', options.amount, '--to', options.to, ...buildCommonArgs(options)];
|
|
347
|
+
if (options.canister) {
|
|
348
|
+
args.push('--canister', options.canister);
|
|
349
|
+
}
|
|
350
|
+
return runIcp(args, 30_000, options.projectRoot);
|
|
351
|
+
}
|
|
352
|
+
// ─── Environment ──────────────────────────────────────────────────────────
|
|
353
|
+
/**
|
|
354
|
+
* List project environments.
|
|
355
|
+
*
|
|
356
|
+
* @param options - Common options
|
|
357
|
+
* @returns Command result with environments in stdout
|
|
358
|
+
*/
|
|
359
|
+
export async function environmentList(options = {}) {
|
|
360
|
+
const args = ['environment', 'list', ...buildCommonArgs(options)];
|
|
361
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
362
|
+
}
|
|
363
|
+
// ─── Project ──────────────────────────────────────────────────────────────
|
|
364
|
+
/**
|
|
365
|
+
* Show project information (effective YAML config).
|
|
366
|
+
*
|
|
367
|
+
* @param options - Common options
|
|
368
|
+
* @returns Command result with project info in stdout
|
|
369
|
+
*/
|
|
370
|
+
export async function projectShow(options = {}) {
|
|
371
|
+
const args = ['project', 'show', ...buildCommonArgs(options)];
|
|
372
|
+
return runIcp(args, 15_000, options.projectRoot);
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=icpcli.js.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ic-wasm Wrapper
|
|
3
|
+
*
|
|
4
|
+
* TypeScript wrapper around the ic-wasm CLI tool (v0.9.11).
|
|
5
|
+
* Provides typed interfaces for WASM optimization, shrinking,
|
|
6
|
+
* metadata management, resource limiting, endpoint validation,
|
|
7
|
+
* and instrumentation.
|
|
8
|
+
*
|
|
9
|
+
* Usage pattern:
|
|
10
|
+
* ic-wasm [OPTIONS] <INPUT> <COMMAND>
|
|
11
|
+
* Output is written with -o <OUTPUT>
|
|
12
|
+
*/
|
|
13
|
+
import type { IcWasmResult, IcWasmOptimizeOptions, IcWasmShrinkOptions, IcWasmResourceOptions, IcWasmMetadataOptions, IcWasmCheckEndpointsOptions, IcWasmInstrumentOptions, IcWasmInfo } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Optimize a WASM module using wasm-opt.
|
|
16
|
+
*
|
|
17
|
+
* Applies dead-code elimination, constant folding, and other
|
|
18
|
+
* optimizations to reduce WASM size and improve performance.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Optimization options
|
|
21
|
+
* @returns Command result
|
|
22
|
+
*/
|
|
23
|
+
export declare function optimize(options: IcWasmOptimizeOptions): Promise<IcWasmResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Shrink a WASM module by removing unused functions and debug info.
|
|
26
|
+
*
|
|
27
|
+
* This is a lighter-weight optimization focused purely on size reduction
|
|
28
|
+
* without the full wasm-opt pipeline.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Shrink options
|
|
31
|
+
* @returns Command result
|
|
32
|
+
*/
|
|
33
|
+
export declare function shrink(options: IcWasmShrinkOptions): Promise<IcWasmResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Set resource limits on a WASM module.
|
|
36
|
+
*
|
|
37
|
+
* Embeds resource constraints (memory, compute) into the WASM metadata
|
|
38
|
+
* so the ICP runtime can enforce them.
|
|
39
|
+
*
|
|
40
|
+
* @param options - Resource limit options
|
|
41
|
+
* @returns Command result
|
|
42
|
+
*/
|
|
43
|
+
export declare function setResource(options: IcWasmResourceOptions): Promise<IcWasmResult>;
|
|
44
|
+
/**
|
|
45
|
+
* List metadata in a WASM module.
|
|
46
|
+
*
|
|
47
|
+
* @param input - Input WASM file path
|
|
48
|
+
* @returns Command result with metadata listing in stdout
|
|
49
|
+
*/
|
|
50
|
+
export declare function listMetadata(input: string): Promise<IcWasmResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Get a specific metadata value from a WASM module.
|
|
53
|
+
*
|
|
54
|
+
* @param input - Input WASM file path
|
|
55
|
+
* @param name - Metadata key name
|
|
56
|
+
* @returns Command result with metadata value in stdout
|
|
57
|
+
*/
|
|
58
|
+
export declare function getMetadata(input: string, name: string): Promise<IcWasmResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Set metadata on a WASM module.
|
|
61
|
+
*
|
|
62
|
+
* @param options - Metadata options
|
|
63
|
+
* @returns Command result
|
|
64
|
+
*/
|
|
65
|
+
export declare function setMetadata(options: IcWasmMetadataOptions): Promise<IcWasmResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Get detailed information about a WASM canister module.
|
|
68
|
+
*
|
|
69
|
+
* @param input - Input WASM file path
|
|
70
|
+
* @returns Parsed info result
|
|
71
|
+
*/
|
|
72
|
+
export declare function info(input: string): Promise<IcWasmInfo>;
|
|
73
|
+
/**
|
|
74
|
+
* Validate canister endpoints against a Candid interface.
|
|
75
|
+
*
|
|
76
|
+
* Compares the exported functions in the WASM module against the
|
|
77
|
+
* expected interface defined in a .did file. Returns success if
|
|
78
|
+
* all endpoints match.
|
|
79
|
+
*
|
|
80
|
+
* @param options - Check endpoints options
|
|
81
|
+
* @returns Command result (success means validation passed)
|
|
82
|
+
*/
|
|
83
|
+
export declare function checkEndpoints(options: IcWasmCheckEndpointsOptions): Promise<IcWasmResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Instrument a WASM module for execution tracing (experimental).
|
|
86
|
+
*
|
|
87
|
+
* Modifies the WASM to emit execution traces to stable memory,
|
|
88
|
+
* useful for debugging and profiling canister behavior.
|
|
89
|
+
*
|
|
90
|
+
* @param options - Instrument options
|
|
91
|
+
* @returns Command result
|
|
92
|
+
*/
|
|
93
|
+
export declare function instrument(options: IcWasmInstrumentOptions): Promise<IcWasmResult>;
|
|
94
|
+
//# sourceMappingURL=icwasm.d.ts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ic-wasm Wrapper
|
|
3
|
+
*
|
|
4
|
+
* TypeScript wrapper around the ic-wasm CLI tool (v0.9.11).
|
|
5
|
+
* Provides typed interfaces for WASM optimization, shrinking,
|
|
6
|
+
* metadata management, resource limiting, endpoint validation,
|
|
7
|
+
* and instrumentation.
|
|
8
|
+
*
|
|
9
|
+
* Usage pattern:
|
|
10
|
+
* ic-wasm [OPTIONS] <INPUT> <COMMAND>
|
|
11
|
+
* Output is written with -o <OUTPUT>
|
|
12
|
+
*/
|
|
13
|
+
import { execa } from 'execa';
|
|
14
|
+
const IC_WASM_BIN = 'ic-wasm';
|
|
15
|
+
/**
|
|
16
|
+
* Execute an ic-wasm command and return the result.
|
|
17
|
+
*
|
|
18
|
+
* @param args - Command-line arguments (after 'ic-wasm')
|
|
19
|
+
* @param timeoutMs - Timeout in milliseconds (default 60s)
|
|
20
|
+
* @returns Structured result with stdout, stderr, exitCode
|
|
21
|
+
*/
|
|
22
|
+
async function runIcWasm(args, timeoutMs = 60_000) {
|
|
23
|
+
try {
|
|
24
|
+
const result = await execa(IC_WASM_BIN, args, {
|
|
25
|
+
reject: false,
|
|
26
|
+
timeout: timeoutMs,
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
success: result.exitCode === 0,
|
|
30
|
+
stdout: result.stdout,
|
|
31
|
+
stderr: result.stderr,
|
|
32
|
+
exitCode: result.exitCode ?? 1,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
stdout: '',
|
|
40
|
+
stderr: message,
|
|
41
|
+
exitCode: 1,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Optimize a WASM module using wasm-opt.
|
|
47
|
+
*
|
|
48
|
+
* Applies dead-code elimination, constant folding, and other
|
|
49
|
+
* optimizations to reduce WASM size and improve performance.
|
|
50
|
+
*
|
|
51
|
+
* @param options - Optimization options
|
|
52
|
+
* @returns Command result
|
|
53
|
+
*/
|
|
54
|
+
export async function optimize(options) {
|
|
55
|
+
const args = [options.input, 'optimize', '-o', options.output];
|
|
56
|
+
if (options.level) {
|
|
57
|
+
args.push(`--${options.level}`);
|
|
58
|
+
}
|
|
59
|
+
return runIcWasm(args, 120_000);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Shrink a WASM module by removing unused functions and debug info.
|
|
63
|
+
*
|
|
64
|
+
* This is a lighter-weight optimization focused purely on size reduction
|
|
65
|
+
* without the full wasm-opt pipeline.
|
|
66
|
+
*
|
|
67
|
+
* @param options - Shrink options
|
|
68
|
+
* @returns Command result
|
|
69
|
+
*/
|
|
70
|
+
export async function shrink(options) {
|
|
71
|
+
const args = [options.input, 'shrink', '-o', options.output];
|
|
72
|
+
return runIcWasm(args);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Set resource limits on a WASM module.
|
|
76
|
+
*
|
|
77
|
+
* Embeds resource constraints (memory, compute) into the WASM metadata
|
|
78
|
+
* so the ICP runtime can enforce them.
|
|
79
|
+
*
|
|
80
|
+
* @param options - Resource limit options
|
|
81
|
+
* @returns Command result
|
|
82
|
+
*/
|
|
83
|
+
export async function setResource(options) {
|
|
84
|
+
const args = [
|
|
85
|
+
options.input,
|
|
86
|
+
'resource',
|
|
87
|
+
'-o', options.output,
|
|
88
|
+
options.name,
|
|
89
|
+
options.value,
|
|
90
|
+
];
|
|
91
|
+
return runIcWasm(args);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* List metadata in a WASM module.
|
|
95
|
+
*
|
|
96
|
+
* @param input - Input WASM file path
|
|
97
|
+
* @returns Command result with metadata listing in stdout
|
|
98
|
+
*/
|
|
99
|
+
export async function listMetadata(input) {
|
|
100
|
+
return runIcWasm([input, 'metadata', 'list']);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get a specific metadata value from a WASM module.
|
|
104
|
+
*
|
|
105
|
+
* @param input - Input WASM file path
|
|
106
|
+
* @param name - Metadata key name
|
|
107
|
+
* @returns Command result with metadata value in stdout
|
|
108
|
+
*/
|
|
109
|
+
export async function getMetadata(input, name) {
|
|
110
|
+
return runIcWasm([input, 'metadata', name]);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Set metadata on a WASM module.
|
|
114
|
+
*
|
|
115
|
+
* @param options - Metadata options
|
|
116
|
+
* @returns Command result
|
|
117
|
+
*/
|
|
118
|
+
export async function setMetadata(options) {
|
|
119
|
+
if (!options.output) {
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
stdout: '',
|
|
123
|
+
stderr: 'Output path is required for set metadata operations',
|
|
124
|
+
exitCode: 1,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const args = [options.input, 'metadata', options.name, '-o', options.output];
|
|
128
|
+
if (options.data !== undefined) {
|
|
129
|
+
args.push('-d', options.data);
|
|
130
|
+
}
|
|
131
|
+
else if (options.file) {
|
|
132
|
+
args.push('-f', options.file);
|
|
133
|
+
}
|
|
134
|
+
if (options.visibility) {
|
|
135
|
+
args.push('-v', options.visibility);
|
|
136
|
+
}
|
|
137
|
+
return runIcWasm(args);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get detailed information about a WASM canister module.
|
|
141
|
+
*
|
|
142
|
+
* @param input - Input WASM file path
|
|
143
|
+
* @returns Parsed info result
|
|
144
|
+
*/
|
|
145
|
+
export async function info(input) {
|
|
146
|
+
const result = await runIcWasm([input, 'info']);
|
|
147
|
+
const parsed = { raw: result.stdout };
|
|
148
|
+
// Best-effort parsing of info output into sections
|
|
149
|
+
if (result.success && result.stdout) {
|
|
150
|
+
const sections = {};
|
|
151
|
+
const lines = result.stdout.split('\n');
|
|
152
|
+
for (const line of lines) {
|
|
153
|
+
const colonIdx = line.indexOf(':');
|
|
154
|
+
if (colonIdx > 0) {
|
|
155
|
+
const key = line.substring(0, colonIdx).trim();
|
|
156
|
+
const value = line.substring(colonIdx + 1).trim();
|
|
157
|
+
if (key && value) {
|
|
158
|
+
sections[key] = value;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (Object.keys(sections).length > 0) {
|
|
163
|
+
parsed.sections = sections;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return parsed;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Validate canister endpoints against a Candid interface.
|
|
170
|
+
*
|
|
171
|
+
* Compares the exported functions in the WASM module against the
|
|
172
|
+
* expected interface defined in a .did file. Returns success if
|
|
173
|
+
* all endpoints match.
|
|
174
|
+
*
|
|
175
|
+
* @param options - Check endpoints options
|
|
176
|
+
* @returns Command result (success means validation passed)
|
|
177
|
+
*/
|
|
178
|
+
export async function checkEndpoints(options) {
|
|
179
|
+
return runIcWasm([
|
|
180
|
+
options.input,
|
|
181
|
+
'check-endpoints',
|
|
182
|
+
'--interface', options.candidInterface,
|
|
183
|
+
]);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Instrument a WASM module for execution tracing (experimental).
|
|
187
|
+
*
|
|
188
|
+
* Modifies the WASM to emit execution traces to stable memory,
|
|
189
|
+
* useful for debugging and profiling canister behavior.
|
|
190
|
+
*
|
|
191
|
+
* @param options - Instrument options
|
|
192
|
+
* @returns Command result
|
|
193
|
+
*/
|
|
194
|
+
export async function instrument(options) {
|
|
195
|
+
return runIcWasm([options.input, 'instrument', '-o', options.output]);
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=icwasm.js.map
|