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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backup System
|
|
3
|
+
*
|
|
4
|
+
* Portable JSON format backup with embedded manifest and checksums
|
|
5
|
+
* Stores backups in ~/.agentvault/backups/
|
|
6
|
+
* CLE-101: Enhanced to include real canister state
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentConfig } from '../packaging/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Canister state captured in backup
|
|
11
|
+
*/
|
|
12
|
+
export interface CanisterState {
|
|
13
|
+
canisterId: string;
|
|
14
|
+
status: 'running' | 'stopped' | 'stopping';
|
|
15
|
+
memorySize?: bigint;
|
|
16
|
+
cycles?: bigint;
|
|
17
|
+
moduleHash?: string;
|
|
18
|
+
fetchedAt: string;
|
|
19
|
+
tasks?: unknown[];
|
|
20
|
+
memory?: unknown;
|
|
21
|
+
context?: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface BackupManifest {
|
|
24
|
+
version: string;
|
|
25
|
+
agentName: string;
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
created: Date;
|
|
28
|
+
agentConfig?: AgentConfig;
|
|
29
|
+
canisterId?: string;
|
|
30
|
+
canisterState?: CanisterState;
|
|
31
|
+
checksums: Record<string, string>;
|
|
32
|
+
size: number;
|
|
33
|
+
components: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface BackupOptions {
|
|
36
|
+
agentName: string;
|
|
37
|
+
outputPath?: string;
|
|
38
|
+
includeConfig?: boolean;
|
|
39
|
+
canisterId?: string;
|
|
40
|
+
includeCanisterState?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface ImportOptions {
|
|
43
|
+
inputPath: string;
|
|
44
|
+
targetAgentName?: string;
|
|
45
|
+
overwrite?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface BackupResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
path?: string;
|
|
50
|
+
error?: string;
|
|
51
|
+
sizeBytes?: number;
|
|
52
|
+
manifest?: BackupManifest;
|
|
53
|
+
}
|
|
54
|
+
export interface ImportResult {
|
|
55
|
+
success: boolean;
|
|
56
|
+
agentName?: string;
|
|
57
|
+
error?: string;
|
|
58
|
+
components: string[];
|
|
59
|
+
warnings: string[];
|
|
60
|
+
}
|
|
61
|
+
export declare function exportBackup(options: BackupOptions): Promise<BackupResult>;
|
|
62
|
+
export declare function previewBackup(inputPath: string): Promise<BackupManifest | null>;
|
|
63
|
+
export declare function importBackup(options: ImportOptions): Promise<ImportResult>;
|
|
64
|
+
export declare function listBackups(agentName: string): Promise<BackupManifest[]>;
|
|
65
|
+
export declare function deleteBackup(filePath: string): Promise<boolean>;
|
|
66
|
+
export declare function formatBackupSize(bytes: number): string;
|
|
67
|
+
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backup System
|
|
3
|
+
*
|
|
4
|
+
* Portable JSON format backup with embedded manifest and checksums
|
|
5
|
+
* Stores backups in ~/.agentvault/backups/
|
|
6
|
+
* CLE-101: Enhanced to include real canister state
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import os from 'node:os';
|
|
11
|
+
import crypto from 'node:crypto';
|
|
12
|
+
const AGENTVAULT_DIR = path.join(os.homedir(), '.agentvault');
|
|
13
|
+
const BACKUPS_DIR = path.join(AGENTVAULT_DIR, 'backups');
|
|
14
|
+
function ensureBackupsDir() {
|
|
15
|
+
if (!fs.existsSync(AGENTVAULT_DIR)) {
|
|
16
|
+
fs.mkdirSync(AGENTVAULT_DIR, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
if (!fs.existsSync(BACKUPS_DIR)) {
|
|
19
|
+
fs.mkdirSync(BACKUPS_DIR, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fetch canister state for backup
|
|
24
|
+
*/
|
|
25
|
+
async function fetchCanisterState(canisterId) {
|
|
26
|
+
try {
|
|
27
|
+
const { createICPClient } = await import('../deployment/icpClient.js');
|
|
28
|
+
const client = createICPClient({ network: 'local' });
|
|
29
|
+
const status = await client.getCanisterStatus(canisterId);
|
|
30
|
+
const statusMap = {
|
|
31
|
+
running: 'running',
|
|
32
|
+
stopped: 'stopped',
|
|
33
|
+
stopping: 'stopping',
|
|
34
|
+
pending: 'stopped',
|
|
35
|
+
};
|
|
36
|
+
const state = {
|
|
37
|
+
canisterId,
|
|
38
|
+
status: statusMap[status.status] || 'stopped',
|
|
39
|
+
memorySize: status.memorySize,
|
|
40
|
+
cycles: status.cycles,
|
|
41
|
+
fetchedAt: new Date().toISOString(),
|
|
42
|
+
};
|
|
43
|
+
try {
|
|
44
|
+
const tasksResult = await client.callAgentMethod(canisterId, 'getTasks', []);
|
|
45
|
+
if (tasksResult) {
|
|
46
|
+
state.tasks = tasksResult;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Tasks not available
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const memoryResult = await client.callAgentMethod(canisterId, 'getMemory', []);
|
|
54
|
+
if (memoryResult) {
|
|
55
|
+
state.memory = memoryResult;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Memory not available
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const contextResult = await client.callAgentMethod(canisterId, 'getContext', []);
|
|
63
|
+
if (contextResult) {
|
|
64
|
+
state.context = contextResult;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Context not available
|
|
69
|
+
}
|
|
70
|
+
return state;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.warn('Failed to fetch canister state:', error);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function exportBackup(options) {
|
|
78
|
+
try {
|
|
79
|
+
ensureBackupsDir();
|
|
80
|
+
const { agentName, outputPath, includeConfig = true, canisterId, includeCanisterState = true } = options;
|
|
81
|
+
const timestamp = new Date();
|
|
82
|
+
const created = new Date();
|
|
83
|
+
const filename = `${agentName}-${timestamp.toISOString().replace(/[:.]/g, '-')}.json`;
|
|
84
|
+
const filePath = outputPath || path.join(BACKUPS_DIR, filename);
|
|
85
|
+
const components = [];
|
|
86
|
+
if (includeConfig) {
|
|
87
|
+
components.push('config');
|
|
88
|
+
}
|
|
89
|
+
const manifest = {
|
|
90
|
+
version: '1.1',
|
|
91
|
+
agentName,
|
|
92
|
+
timestamp,
|
|
93
|
+
created,
|
|
94
|
+
checksums: {},
|
|
95
|
+
size: 0,
|
|
96
|
+
components,
|
|
97
|
+
};
|
|
98
|
+
if (includeConfig) {
|
|
99
|
+
manifest.canisterId = canisterId || agentName;
|
|
100
|
+
}
|
|
101
|
+
if (includeCanisterState && canisterId) {
|
|
102
|
+
const canisterState = await fetchCanisterState(canisterId);
|
|
103
|
+
if (canisterState) {
|
|
104
|
+
manifest.canisterState = canisterState;
|
|
105
|
+
manifest.canisterId = canisterId;
|
|
106
|
+
components.push('canister-state');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const content = JSON.stringify(manifest, null, 2);
|
|
110
|
+
const checksum = crypto.createHash('sha256').update(content).digest('hex');
|
|
111
|
+
manifest.checksums[filename] = checksum;
|
|
112
|
+
fs.writeFileSync(filePath, JSON.stringify(manifest, null, 2), 'utf8');
|
|
113
|
+
const stats = fs.statSync(filePath);
|
|
114
|
+
manifest.size = stats.size;
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
path: filePath,
|
|
118
|
+
sizeBytes: stats.size,
|
|
119
|
+
manifest,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export async function previewBackup(inputPath) {
|
|
130
|
+
try {
|
|
131
|
+
if (!fs.existsSync(inputPath)) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
const content = fs.readFileSync(inputPath, 'utf8');
|
|
135
|
+
const manifest = JSON.parse(content);
|
|
136
|
+
return manifest;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error('Failed to preview backup:', error);
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export async function importBackup(options) {
|
|
144
|
+
try {
|
|
145
|
+
const { inputPath, targetAgentName, overwrite } = options;
|
|
146
|
+
if (!fs.existsSync(inputPath)) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
agentName: undefined,
|
|
150
|
+
components: [],
|
|
151
|
+
warnings: [],
|
|
152
|
+
error: `Backup file not found: ${inputPath}`,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const manifest = await previewBackup(inputPath);
|
|
156
|
+
if (!manifest) {
|
|
157
|
+
return {
|
|
158
|
+
success: false,
|
|
159
|
+
agentName: undefined,
|
|
160
|
+
components: [],
|
|
161
|
+
warnings: [],
|
|
162
|
+
error: 'Invalid backup file',
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const targetName = targetAgentName || manifest.agentName;
|
|
166
|
+
const warnings = [];
|
|
167
|
+
if (!overwrite) {
|
|
168
|
+
warnings.push('Using dry-run mode; no changes will be made');
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
success: true,
|
|
172
|
+
agentName: targetName,
|
|
173
|
+
components: manifest.components,
|
|
174
|
+
warnings,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
return {
|
|
179
|
+
success: false,
|
|
180
|
+
agentName: undefined,
|
|
181
|
+
components: [],
|
|
182
|
+
warnings: [],
|
|
183
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export async function listBackups(agentName) {
|
|
188
|
+
ensureBackupsDir();
|
|
189
|
+
const backups = [];
|
|
190
|
+
if (!fs.existsSync(BACKUPS_DIR)) {
|
|
191
|
+
return backups;
|
|
192
|
+
}
|
|
193
|
+
const files = fs.readdirSync(BACKUPS_DIR);
|
|
194
|
+
for (const file of files) {
|
|
195
|
+
if (file.startsWith(agentName) && file.endsWith('.json')) {
|
|
196
|
+
const filePath = path.join(BACKUPS_DIR, file);
|
|
197
|
+
try {
|
|
198
|
+
const manifest = await previewBackup(filePath);
|
|
199
|
+
if (manifest && manifest.agentName === agentName) {
|
|
200
|
+
backups.push(manifest);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
console.error(`Failed to read backup ${file}:`, error);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
backups.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
|
|
209
|
+
return backups;
|
|
210
|
+
}
|
|
211
|
+
export async function deleteBackup(filePath) {
|
|
212
|
+
try {
|
|
213
|
+
if (fs.existsSync(filePath)) {
|
|
214
|
+
fs.unlinkSync(filePath);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
console.error('Failed to delete backup:', error);
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export function formatBackupSize(bytes) {
|
|
225
|
+
if (bytes < 1024)
|
|
226
|
+
return `${bytes} B`;
|
|
227
|
+
if (bytes < 1024 * 1024)
|
|
228
|
+
return `${(bytes / 1024).toFixed(2)} KB`;
|
|
229
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Sync
|
|
3
|
+
*
|
|
4
|
+
* Archive and restore AgentVault data to/from a cloud-synced
|
|
5
|
+
* local directory. Creates a self-contained folder with a JSON
|
|
6
|
+
* manifest so any cloud provider can sync it as plain files.
|
|
7
|
+
*
|
|
8
|
+
* No blockchain, no crypto, no API keys — just files.
|
|
9
|
+
*/
|
|
10
|
+
import type { CloudArchiveOptions, CloudArchiveResult, CloudRestoreResult, DiscoveredArchive } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Return the default AgentVault data directory.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDefaultVaultDir(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Archive AgentVault data to a cloud-synced directory.
|
|
17
|
+
*
|
|
18
|
+
* Creates a timestamped folder inside the cloud backup dir
|
|
19
|
+
* containing a copy of the selected vault data plus a manifest.
|
|
20
|
+
*
|
|
21
|
+
* @param providerBasePath - Root path of the cloud provider sync directory
|
|
22
|
+
* @param options - What to include in the archive
|
|
23
|
+
* @param subdirectory - Subdirectory name inside provider (default: AgentVault-Backups)
|
|
24
|
+
* @param vaultDir - Path to the AgentVault data directory (default: ~/.agentvault)
|
|
25
|
+
*/
|
|
26
|
+
export declare function archiveToCloud(providerBasePath: string, options: CloudArchiveOptions, subdirectory?: string, vaultDir?: string): CloudArchiveResult;
|
|
27
|
+
/**
|
|
28
|
+
* List available archives in a cloud backup directory.
|
|
29
|
+
*/
|
|
30
|
+
export declare function listCloudArchives(providerBasePath: string, subdirectory?: string): DiscoveredArchive[];
|
|
31
|
+
/**
|
|
32
|
+
* Restore AgentVault data from a cloud archive.
|
|
33
|
+
*
|
|
34
|
+
* Copies files from the archive back into the vault directory,
|
|
35
|
+
* verifying checksums along the way.
|
|
36
|
+
*
|
|
37
|
+
* @param archivePath - Path to the archive directory
|
|
38
|
+
* @param overwrite - Whether to overwrite existing files
|
|
39
|
+
* @param vaultDir - Path to the AgentVault data directory (default: ~/.agentvault)
|
|
40
|
+
*/
|
|
41
|
+
export declare function restoreFromCloud(archivePath: string, overwrite?: boolean, vaultDir?: string): CloudRestoreResult;
|
|
42
|
+
/**
|
|
43
|
+
* Verify integrity of a cloud archive by checking all file checksums.
|
|
44
|
+
*/
|
|
45
|
+
export declare function verifyCloudArchive(archivePath: string): {
|
|
46
|
+
valid: boolean;
|
|
47
|
+
errors: string[];
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=cloud-sync.d.ts.map
|