agentvault 1.0.1 → 1.0.5
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/CHANGELOG.md +69 -0
- package/README.md +66 -6
- package/dist/cli/commands/approve.d.ts.map +1 -0
- package/dist/cli/commands/approve.js +362 -6
- package/dist/cli/commands/approve.js.map +1 -0
- package/dist/cli/commands/archive.d.ts.map +1 -0
- package/dist/cli/commands/archive.js +5 -5
- package/dist/cli/commands/archive.js.map +1 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +308 -25
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/cloud-backup.d.ts.map +1 -0
- package/dist/cli/commands/cloud-backup.js +29 -12
- package/dist/cli/commands/cloud-backup.js.map +1 -0
- package/dist/cli/commands/cron.d.ts +14 -0
- package/dist/cli/commands/cron.d.ts.map +1 -0
- package/dist/cli/commands/cron.js +144 -0
- package/dist/cli/commands/cron.js.map +1 -0
- package/dist/cli/commands/cycles.d.ts.map +1 -0
- package/dist/cli/commands/cycles.js.map +1 -0
- package/dist/cli/commands/decrypt.d.ts.map +1 -0
- package/dist/cli/commands/decrypt.js +2 -2
- package/dist/cli/commands/decrypt.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +1 -1
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/exec.d.ts.map +1 -0
- package/dist/cli/commands/exec.js +2 -2
- package/dist/cli/commands/exec.js.map +1 -0
- package/dist/cli/commands/fetch.d.ts +3 -0
- package/dist/cli/commands/fetch.d.ts.map +1 -0
- package/dist/cli/commands/fetch.js +72 -8
- package/dist/cli/commands/fetch.js.map +1 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +57 -2
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/identity.d.ts.map +1 -0
- package/dist/cli/commands/identity.js.map +1 -0
- package/dist/cli/commands/inference.d.ts.map +1 -0
- package/dist/cli/commands/inference.js +5 -5
- package/dist/cli/commands/inference.js.map +1 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -2
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +162 -37
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/instrument.d.ts.map +1 -0
- package/dist/cli/commands/instrument.js.map +1 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +4 -4
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +4 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +228 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +26 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +509 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/mint.d.ts +25 -0
- package/dist/cli/commands/mint.d.ts.map +1 -0
- package/dist/cli/commands/mint.js +276 -0
- package/dist/cli/commands/mint.js.map +1 -0
- package/dist/cli/commands/mirror.d.ts +19 -0
- package/dist/cli/commands/mirror.d.ts.map +1 -0
- package/dist/cli/commands/mirror.js +216 -0
- package/dist/cli/commands/mirror.js.map +1 -0
- package/dist/cli/commands/monitor.d.ts.map +1 -0
- package/dist/cli/commands/monitor.js.map +1 -0
- package/dist/cli/commands/network.d.ts.map +1 -0
- package/dist/cli/commands/network.js.map +1 -0
- package/dist/cli/commands/orchestrate.d.ts +35 -0
- package/dist/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/cli/commands/orchestrate.js +190 -0
- package/dist/cli/commands/orchestrate.js.map +1 -0
- package/dist/cli/commands/package.d.ts.map +1 -0
- package/dist/cli/commands/package.js +2 -2
- package/dist/cli/commands/package.js.map +1 -0
- package/dist/cli/commands/pilot.d.ts +17 -0
- package/dist/cli/commands/pilot.d.ts.map +1 -0
- package/dist/cli/commands/pilot.js +490 -0
- package/dist/cli/commands/pilot.js.map +1 -0
- package/dist/cli/commands/polytician.d.ts +4 -0
- package/dist/cli/commands/polytician.d.ts.map +1 -0
- package/dist/cli/commands/polytician.js +229 -0
- package/dist/cli/commands/polytician.js.map +1 -0
- package/dist/cli/commands/profile.d.ts.map +1 -0
- package/dist/cli/commands/profile.js +2 -2
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/promote.d.ts.map +1 -0
- package/dist/cli/commands/promote.js.map +1 -0
- package/dist/cli/commands/rebase.d.ts +85 -0
- package/dist/cli/commands/rebase.d.ts.map +1 -0
- package/dist/cli/commands/rebase.js +175 -0
- package/dist/cli/commands/rebase.js.map +1 -0
- package/dist/cli/commands/rebuild.d.ts.map +1 -0
- package/dist/cli/commands/rebuild.js +2 -2
- package/dist/cli/commands/rebuild.js.map +1 -0
- package/dist/cli/commands/repo.d.ts +19 -0
- package/dist/cli/commands/repo.d.ts.map +1 -0
- package/dist/cli/commands/repo.js +187 -0
- package/dist/cli/commands/repo.js.map +1 -0
- package/dist/cli/commands/rollback.d.ts.map +1 -0
- package/dist/cli/commands/rollback.js.map +1 -0
- package/dist/cli/commands/safehouse.d.ts +11 -0
- package/dist/cli/commands/safehouse.d.ts.map +1 -0
- package/dist/cli/commands/safehouse.js +323 -0
- package/dist/cli/commands/safehouse.js.map +1 -0
- package/dist/cli/commands/show.d.ts.map +1 -0
- package/dist/cli/commands/show.js +1 -1
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +12 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +248 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +2 -2
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -1
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +33 -8
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/tokens.d.ts.map +1 -0
- package/dist/cli/commands/tokens.js.map +1 -0
- package/dist/cli/commands/trace.d.ts.map +1 -0
- package/dist/cli/commands/trace.js +4 -4
- package/dist/cli/commands/trace.js.map +1 -0
- package/dist/cli/commands/vault.d.ts +7 -0
- package/dist/cli/commands/vault.d.ts.map +1 -0
- package/dist/cli/commands/vault.js +551 -0
- package/dist/cli/commands/vault.js.map +1 -0
- package/dist/cli/commands/wallet-export.d.ts.map +1 -0
- package/dist/cli/commands/wallet-export.js +1 -1
- package/dist/cli/commands/wallet-export.js.map +1 -0
- package/dist/cli/commands/wallet-history.d.ts.map +1 -0
- package/dist/cli/commands/wallet-history.js +2 -26
- package/dist/cli/commands/wallet-history.js.map +1 -0
- package/dist/cli/commands/wallet-import.d.ts.map +1 -0
- package/dist/cli/commands/wallet-import.js.map +1 -0
- package/dist/cli/commands/wallet-multi-send.d.ts.map +1 -0
- package/dist/cli/commands/wallet-multi-send.js.map +1 -0
- package/dist/cli/commands/wallet-process-queue.d.ts.map +1 -0
- package/dist/cli/commands/wallet-process-queue.js +2 -23
- package/dist/cli/commands/wallet-process-queue.js.map +1 -0
- package/dist/cli/commands/wallet-sign.d.ts.map +1 -0
- package/dist/cli/commands/wallet-sign.js +3 -27
- package/dist/cli/commands/wallet-sign.js.map +1 -0
- package/dist/cli/commands/wallet.d.ts +62 -1
- package/dist/cli/commands/wallet.d.ts.map +1 -0
- package/dist/cli/commands/wallet.js +313 -43
- package/dist/cli/commands/wallet.js.map +1 -0
- package/dist/cli/commands/wiki.d.ts +29 -0
- package/dist/cli/commands/wiki.d.ts.map +1 -0
- package/dist/cli/commands/wiki.js +528 -0
- package/dist/cli/commands/wiki.js.map +1 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +77 -5
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/merge.d.ts +70 -0
- package/dist/cli/merge.d.ts.map +1 -0
- package/dist/cli/merge.js +232 -0
- package/dist/cli/merge.js.map +1 -0
- package/dist/src/archival/archive-manager.d.ts +89 -0
- package/dist/src/archival/archive-manager.d.ts.map +1 -0
- package/dist/src/archival/archive-manager.js +300 -0
- package/dist/src/archival/archive-manager.js.map +1 -0
- package/dist/src/archival/arweave-archiver.d.ts +173 -0
- package/dist/src/archival/arweave-archiver.d.ts.map +1 -0
- package/dist/src/archival/arweave-archiver.js +279 -0
- package/dist/src/archival/arweave-archiver.js.map +1 -0
- package/dist/src/archival/arweave-client.d.ts +89 -0
- package/dist/src/archival/arweave-client.d.ts.map +1 -0
- package/dist/src/archival/arweave-client.js +226 -0
- package/dist/src/archival/arweave-client.js.map +1 -0
- package/dist/src/archival/index.d.ts +11 -0
- package/dist/src/archival/index.d.ts.map +1 -0
- package/dist/src/archival/index.js +9 -0
- package/dist/src/archival/index.js.map +1 -0
- package/dist/src/backbone/constants.d.ts +30 -0
- package/dist/src/backbone/constants.d.ts.map +1 -0
- package/dist/src/backbone/constants.js +62 -0
- package/dist/src/backbone/constants.js.map +1 -0
- package/dist/src/backbone/index.d.ts +15 -0
- package/dist/src/backbone/index.d.ts.map +1 -0
- package/dist/src/backbone/index.js +18 -0
- package/dist/src/backbone/index.js.map +1 -0
- package/dist/src/backbone/services/communication.d.ts +42 -0
- package/dist/src/backbone/services/communication.d.ts.map +1 -0
- package/dist/src/backbone/services/communication.js +107 -0
- package/dist/src/backbone/services/communication.js.map +1 -0
- package/dist/src/backbone/services/consensus.d.ts +61 -0
- package/dist/src/backbone/services/consensus.d.ts.map +1 -0
- package/dist/src/backbone/services/consensus.js +210 -0
- package/dist/src/backbone/services/consensus.js.map +1 -0
- package/dist/src/backbone/services/index.d.ts +10 -0
- package/dist/src/backbone/services/index.d.ts.map +1 -0
- package/dist/src/backbone/services/index.js +6 -0
- package/dist/src/backbone/services/index.js.map +1 -0
- package/dist/src/backbone/services/knowledge.d.ts +44 -0
- package/dist/src/backbone/services/knowledge.d.ts.map +1 -0
- package/dist/src/backbone/services/knowledge.js +99 -0
- package/dist/src/backbone/services/knowledge.js.map +1 -0
- package/dist/src/backbone/services/memory.d.ts +36 -0
- package/dist/src/backbone/services/memory.d.ts.map +1 -0
- package/dist/src/backbone/services/memory.js +94 -0
- package/dist/src/backbone/services/memory.js.map +1 -0
- package/dist/src/backbone/services/vault-health.d.ts +18 -0
- package/dist/src/backbone/services/vault-health.d.ts.map +1 -0
- package/dist/src/backbone/services/vault-health.js +74 -0
- package/dist/src/backbone/services/vault-health.js.map +1 -0
- package/dist/src/backbone/types.d.ts +211 -0
- package/dist/src/backbone/types.d.ts.map +1 -0
- package/dist/src/backbone/types.js +8 -0
- package/dist/src/backbone/types.js.map +1 -0
- package/dist/src/backbone/validators.d.ts +211 -0
- package/dist/src/backbone/validators.d.ts.map +1 -0
- package/dist/src/backbone/validators.js +122 -0
- package/dist/src/backbone/validators.js.map +1 -0
- package/dist/src/backup/backup.d.ts +173 -0
- package/dist/src/backup/backup.d.ts.map +1 -0
- package/dist/src/backup/backup.js +640 -0
- package/dist/src/backup/backup.js.map +1 -0
- package/dist/src/backup/index.d.ts +9 -0
- package/dist/src/backup/index.d.ts.map +1 -0
- package/dist/src/backup/index.js +9 -0
- package/dist/src/backup/index.js.map +1 -0
- package/dist/src/backup/merkle.d.ts +44 -0
- package/dist/src/backup/merkle.d.ts.map +1 -0
- package/dist/src/backup/merkle.js +85 -0
- package/dist/src/backup/merkle.js.map +1 -0
- package/dist/src/backup/thoughtform-bundle.d.ts +42 -0
- package/dist/src/backup/thoughtform-bundle.d.ts.map +1 -0
- package/dist/src/backup/thoughtform-bundle.js +200 -0
- package/dist/src/backup/thoughtform-bundle.js.map +1 -0
- package/dist/src/canister/actor.d.ts +310 -0
- package/dist/src/canister/actor.d.ts.map +1 -0
- package/dist/src/canister/actor.idl.d.ts +8 -0
- package/dist/src/canister/actor.idl.d.ts.map +1 -0
- package/dist/src/canister/actor.idl.js +518 -0
- package/dist/src/canister/actor.idl.js.map +1 -0
- package/dist/src/canister/actor.js +51 -0
- package/dist/src/canister/actor.js.map +1 -0
- package/dist/src/canister/encryption.d.ts +158 -0
- package/dist/src/canister/encryption.d.ts.map +1 -0
- package/dist/src/canister/encryption.js +296 -0
- package/dist/src/canister/encryption.js.map +1 -0
- package/dist/src/canister/memory-repo-actor.d.ts +162 -0
- package/dist/src/canister/memory-repo-actor.d.ts.map +1 -0
- package/dist/src/canister/memory-repo-actor.idl.d.ts +8 -0
- package/dist/src/canister/memory-repo-actor.idl.d.ts.map +1 -0
- package/dist/src/canister/memory-repo-actor.idl.js +90 -0
- package/dist/src/canister/memory-repo-actor.idl.js.map +1 -0
- package/dist/src/canister/memory-repo-actor.js +69 -0
- package/dist/src/canister/memory-repo-actor.js.map +1 -0
- package/dist/src/canister/types.d.ts +54 -0
- package/dist/src/canister/types.d.ts.map +1 -0
- package/dist/src/canister/types.js +7 -0
- package/dist/src/canister/types.js.map +1 -0
- package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
- package/dist/src/cloud-storage/cloud-sync.d.ts.map +1 -0
- package/dist/src/cloud-storage/cloud-sync.js +377 -0
- package/dist/src/cloud-storage/cloud-sync.js.map +1 -0
- package/dist/src/cloud-storage/index.d.ts +11 -0
- package/dist/src/cloud-storage/index.d.ts.map +1 -0
- package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
- package/dist/src/cloud-storage/index.js.map +1 -0
- package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
- package/dist/src/cloud-storage/provider-detector.d.ts.map +1 -0
- package/dist/src/cloud-storage/provider-detector.js +158 -0
- package/dist/src/cloud-storage/provider-detector.js.map +1 -0
- package/dist/src/cloud-storage/types.d.ts +96 -0
- package/dist/src/cloud-storage/types.d.ts.map +1 -0
- package/dist/src/cloud-storage/types.js +10 -0
- package/dist/src/cloud-storage/types.js.map +1 -0
- package/dist/src/debugging/debug-logger.d.ts +8 -0
- package/dist/src/debugging/debug-logger.d.ts.map +1 -0
- package/dist/src/debugging/debug-logger.js +11 -0
- package/dist/src/debugging/debug-logger.js.map +1 -0
- package/dist/src/debugging/index.d.ts +7 -0
- package/dist/src/debugging/index.d.ts.map +1 -0
- package/{src/debugging/index.ts → dist/src/debugging/index.js} +2 -1
- package/dist/src/debugging/index.js.map +1 -0
- package/dist/src/debugging/logs.d.ts +32 -0
- package/dist/src/debugging/logs.d.ts.map +1 -0
- package/dist/src/debugging/logs.js +158 -0
- package/dist/src/debugging/logs.js.map +1 -0
- package/dist/src/debugging/types.d.ts +91 -0
- package/dist/src/debugging/types.d.ts.map +1 -0
- package/dist/src/debugging/types.js +5 -0
- package/dist/src/debugging/types.js.map +1 -0
- package/dist/src/deployment/deployer.d.ts +52 -0
- package/dist/src/deployment/deployer.d.ts.map +1 -0
- package/dist/src/deployment/deployer.js +343 -0
- package/dist/src/deployment/deployer.js.map +1 -0
- package/dist/src/deployment/icpClient.d.ts +144 -0
- package/dist/src/deployment/icpClient.d.ts.map +1 -0
- package/dist/src/deployment/icpClient.js +549 -0
- package/dist/src/deployment/icpClient.js.map +1 -0
- package/dist/src/deployment/index.d.ts +11 -0
- package/dist/src/deployment/index.d.ts.map +1 -0
- package/dist/src/deployment/index.js +14 -0
- package/dist/src/deployment/index.js.map +1 -0
- package/dist/src/deployment/promotion.d.ts +32 -0
- package/dist/src/deployment/promotion.d.ts.map +1 -0
- package/dist/src/deployment/promotion.js +114 -0
- package/dist/src/deployment/promotion.js.map +1 -0
- package/dist/src/deployment/types.d.ts +102 -0
- package/dist/src/deployment/types.d.ts.map +1 -0
- package/dist/src/deployment/types.js +5 -0
- package/dist/src/deployment/types.js.map +1 -0
- package/dist/src/fault-tolerance/backup-status.d.ts +31 -0
- package/dist/src/fault-tolerance/backup-status.d.ts.map +1 -0
- package/dist/src/fault-tolerance/backup-status.js +76 -0
- package/dist/src/fault-tolerance/backup-status.js.map +1 -0
- package/dist/src/fault-tolerance/cron-check.d.ts +66 -0
- package/dist/src/fault-tolerance/cron-check.d.ts.map +1 -0
- package/dist/src/fault-tolerance/cron-check.js +177 -0
- package/dist/src/fault-tolerance/cron-check.js.map +1 -0
- package/dist/src/fault-tolerance/index.d.ts +12 -0
- package/dist/src/fault-tolerance/index.d.ts.map +1 -0
- package/dist/src/fault-tolerance/index.js +12 -0
- package/dist/src/fault-tolerance/index.js.map +1 -0
- package/dist/src/fault-tolerance/mirror-sync.d.ts +61 -0
- package/dist/src/fault-tolerance/mirror-sync.d.ts.map +1 -0
- package/dist/src/fault-tolerance/mirror-sync.js +203 -0
- package/dist/src/fault-tolerance/mirror-sync.js.map +1 -0
- package/dist/src/icp/batch.d.ts +112 -0
- package/dist/src/icp/batch.d.ts.map +1 -0
- package/dist/src/icp/batch.js +279 -0
- package/dist/src/icp/batch.js.map +1 -0
- package/dist/src/icp/cycles.d.ts +29 -0
- package/dist/src/icp/cycles.d.ts.map +1 -0
- package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
- package/dist/src/icp/cycles.js.map +1 -0
- package/dist/src/icp/environment.d.ts +60 -0
- package/dist/src/icp/environment.d.ts.map +1 -0
- package/dist/src/icp/environment.js +183 -0
- package/dist/src/icp/environment.js.map +1 -0
- package/dist/src/icp/icpcli.d.ts +204 -0
- package/dist/src/icp/icpcli.d.ts.map +1 -0
- package/dist/src/icp/icpcli.js +374 -0
- package/dist/src/icp/icpcli.js.map +1 -0
- package/dist/src/icp/icwasm.d.ts +94 -0
- package/dist/src/icp/icwasm.d.ts.map +1 -0
- package/dist/src/icp/icwasm.js +197 -0
- package/dist/src/icp/icwasm.js.map +1 -0
- package/dist/src/icp/identity.d.ts +50 -0
- package/dist/src/icp/identity.d.ts.map +1 -0
- package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
- package/dist/src/icp/identity.js.map +1 -0
- package/dist/src/icp/index.d.ts +16 -0
- package/dist/src/icp/index.d.ts.map +1 -0
- package/dist/src/icp/index.js +20 -0
- package/dist/src/icp/index.js.map +1 -0
- package/dist/src/icp/optimization.d.ts +16 -0
- package/dist/src/icp/optimization.d.ts.map +1 -0
- package/dist/src/icp/optimization.js +225 -0
- package/dist/src/icp/optimization.js.map +1 -0
- package/dist/src/icp/tokens.d.ts +24 -0
- package/dist/src/icp/tokens.d.ts.map +1 -0
- package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
- package/dist/src/icp/tokens.js.map +1 -0
- package/dist/src/icp/tool-detector.d.ts +31 -0
- package/dist/src/icp/tool-detector.d.ts.map +1 -0
- package/dist/src/icp/tool-detector.js +118 -0
- package/dist/src/icp/tool-detector.js.map +1 -0
- package/dist/src/icp/types.d.ts +493 -0
- package/dist/src/icp/types.d.ts.map +1 -0
- package/dist/src/icp/types.js +7 -0
- package/dist/src/icp/types.js.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +39 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/inference/bittensor-client.d.ts +161 -0
- package/dist/src/inference/bittensor-client.d.ts.map +1 -0
- package/dist/src/inference/bittensor-client.js +317 -0
- package/dist/src/inference/bittensor-client.js.map +1 -0
- package/dist/src/inference/fallback-chain.d.ts +90 -0
- package/dist/src/inference/fallback-chain.d.ts.map +1 -0
- package/dist/src/inference/fallback-chain.js +219 -0
- package/dist/src/inference/fallback-chain.js.map +1 -0
- package/dist/src/inference/index.d.ts +13 -0
- package/dist/src/inference/index.d.ts.map +1 -0
- package/dist/src/inference/index.js +13 -0
- package/dist/src/inference/index.js.map +1 -0
- package/dist/src/inference/inference-manager.d.ts +76 -0
- package/dist/src/inference/inference-manager.d.ts.map +1 -0
- package/dist/src/inference/inference-manager.js +228 -0
- package/dist/src/inference/inference-manager.js.map +1 -0
- package/dist/src/inference/local-model-client.d.ts +46 -0
- package/dist/src/inference/local-model-client.d.ts.map +1 -0
- package/dist/src/inference/local-model-client.js +92 -0
- package/dist/src/inference/local-model-client.js.map +1 -0
- package/dist/src/inference/secure-inference.d.ts +105 -0
- package/dist/src/inference/secure-inference.d.ts.map +1 -0
- package/dist/src/inference/secure-inference.js +237 -0
- package/dist/src/inference/secure-inference.js.map +1 -0
- package/dist/src/inference/venice-client.d.ts +149 -0
- package/dist/src/inference/venice-client.d.ts.map +1 -0
- package/dist/src/inference/venice-client.js +333 -0
- package/dist/src/inference/venice-client.js.map +1 -0
- package/dist/src/metrics/index.d.ts +7 -0
- package/dist/src/metrics/index.d.ts.map +1 -0
- package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
- package/dist/src/metrics/index.js.map +1 -0
- package/dist/src/metrics/metrics.d.ts +39 -0
- package/dist/src/metrics/metrics.d.ts.map +1 -0
- package/dist/src/metrics/metrics.js +129 -0
- package/dist/src/metrics/metrics.js.map +1 -0
- package/dist/src/mint/google-adk.d.ts +19 -0
- package/dist/src/mint/google-adk.d.ts.map +1 -0
- package/dist/src/mint/google-adk.js +180 -0
- package/dist/src/mint/google-adk.js.map +1 -0
- package/dist/src/monitoring/alerting.d.ts +51 -0
- package/dist/src/monitoring/alerting.d.ts.map +1 -0
- package/dist/src/monitoring/alerting.js +169 -0
- package/dist/src/monitoring/alerting.js.map +1 -0
- package/dist/src/monitoring/health.d.ts +48 -0
- package/dist/src/monitoring/health.d.ts.map +1 -0
- package/dist/src/monitoring/health.js +227 -0
- package/dist/src/monitoring/health.js.map +1 -0
- package/dist/src/monitoring/index.d.ts +10 -0
- package/dist/src/monitoring/index.d.ts.map +1 -0
- package/dist/src/monitoring/index.js +12 -0
- package/dist/src/monitoring/index.js.map +1 -0
- package/dist/src/monitoring/info.d.ts +15 -0
- package/dist/src/monitoring/info.d.ts.map +1 -0
- package/dist/src/monitoring/info.js +109 -0
- package/dist/src/monitoring/info.js.map +1 -0
- package/dist/src/monitoring/types.d.ts +119 -0
- package/dist/src/monitoring/types.d.ts.map +1 -0
- package/dist/src/monitoring/types.js +7 -0
- package/dist/src/monitoring/types.js.map +1 -0
- package/dist/src/network/index.d.ts +5 -0
- package/dist/src/network/index.d.ts.map +1 -0
- package/{src/network/index.ts → dist/src/network/index.js} +1 -1
- package/dist/src/network/index.js.map +1 -0
- package/dist/src/network/network-config.d.ts +31 -0
- package/dist/src/network/network-config.d.ts.map +1 -0
- package/dist/src/network/network-config.js +109 -0
- package/dist/src/network/network-config.js.map +1 -0
- package/dist/src/orchestration/claude.d.ts +125 -0
- package/dist/src/orchestration/claude.d.ts.map +1 -0
- package/dist/src/orchestration/claude.js +639 -0
- package/dist/src/orchestration/claude.js.map +1 -0
- package/dist/src/orchestration/google-adk.d.ts +77 -0
- package/dist/src/orchestration/google-adk.d.ts.map +1 -0
- package/dist/src/orchestration/google-adk.js +659 -0
- package/dist/src/orchestration/google-adk.js.map +1 -0
- package/dist/src/orchestration/mcp-client.d.ts +47 -0
- package/dist/src/orchestration/mcp-client.d.ts.map +1 -0
- package/dist/src/orchestration/mcp-client.js +179 -0
- package/dist/src/orchestration/mcp-client.js.map +1 -0
- package/dist/src/orchestration/polytician-enricher.d.ts +21 -0
- package/dist/src/orchestration/polytician-enricher.d.ts.map +1 -0
- package/dist/src/orchestration/polytician-enricher.js +131 -0
- package/dist/src/orchestration/polytician-enricher.js.map +1 -0
- package/dist/src/orchestration/smallchat-bridge.d.ts +121 -0
- package/dist/src/orchestration/smallchat-bridge.d.ts.map +1 -0
- package/dist/src/orchestration/smallchat-bridge.js +331 -0
- package/dist/src/orchestration/smallchat-bridge.js.map +1 -0
- package/dist/src/orchestration/smallchat-compression.d.ts +100 -0
- package/dist/src/orchestration/smallchat-compression.d.ts.map +1 -0
- package/dist/src/orchestration/smallchat-compression.js +203 -0
- package/dist/src/orchestration/smallchat-compression.js.map +1 -0
- package/dist/src/orchestration/smallchat-policy.d.ts +158 -0
- package/dist/src/orchestration/smallchat-policy.d.ts.map +1 -0
- package/dist/src/orchestration/smallchat-policy.js +314 -0
- package/dist/src/orchestration/smallchat-policy.js.map +1 -0
- package/dist/src/orchestration/smallchat-tools.d.ts +69 -0
- package/dist/src/orchestration/smallchat-tools.d.ts.map +1 -0
- package/dist/src/orchestration/smallchat-tools.js +501 -0
- package/dist/src/orchestration/smallchat-tools.js.map +1 -0
- package/dist/src/packaging/compiler.d.ts +61 -0
- package/dist/src/packaging/compiler.d.ts.map +1 -0
- package/dist/src/packaging/compiler.js +562 -0
- package/dist/src/packaging/compiler.js.map +1 -0
- package/dist/src/packaging/config-persistence.d.ts +46 -0
- package/dist/src/packaging/config-persistence.d.ts.map +1 -0
- package/dist/src/packaging/config-persistence.js +108 -0
- package/dist/src/packaging/config-persistence.js.map +1 -0
- package/dist/src/packaging/config-schemas.d.ts +157 -0
- package/dist/src/packaging/config-schemas.d.ts.map +1 -0
- package/dist/src/packaging/config-schemas.js +62 -0
- package/dist/src/packaging/config-schemas.js.map +1 -0
- package/dist/src/packaging/detector.d.ts +26 -0
- package/dist/src/packaging/detector.d.ts.map +1 -0
- package/dist/src/packaging/detector.js +207 -0
- package/dist/src/packaging/detector.js.map +1 -0
- package/dist/src/packaging/index.d.ts +22 -0
- package/dist/src/packaging/index.d.ts.map +1 -0
- package/dist/src/packaging/index.js +28 -0
- package/dist/src/packaging/index.js.map +1 -0
- package/dist/src/packaging/packager.d.ts +31 -0
- package/dist/src/packaging/packager.d.ts.map +1 -0
- package/dist/src/packaging/packager.js +90 -0
- package/dist/src/packaging/packager.js.map +1 -0
- package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
- package/dist/src/packaging/parsers/clawdbot.d.ts.map +1 -0
- package/dist/src/packaging/parsers/clawdbot.js +229 -0
- package/dist/src/packaging/parsers/clawdbot.js.map +1 -0
- package/dist/src/packaging/parsers/cline.d.ts +26 -0
- package/dist/src/packaging/parsers/cline.d.ts.map +1 -0
- package/dist/src/packaging/parsers/cline.js +185 -0
- package/dist/src/packaging/parsers/cline.js.map +1 -0
- package/dist/src/packaging/parsers/generic.d.ts +27 -0
- package/dist/src/packaging/parsers/generic.d.ts.map +1 -0
- package/dist/src/packaging/parsers/generic.js +221 -0
- package/dist/src/packaging/parsers/generic.js.map +1 -0
- package/dist/src/packaging/parsers/goose.d.ts +26 -0
- package/dist/src/packaging/parsers/goose.d.ts.map +1 -0
- package/dist/src/packaging/parsers/goose.js +175 -0
- package/dist/src/packaging/parsers/goose.js.map +1 -0
- package/dist/src/packaging/parsers/index.d.ts +13 -0
- package/dist/src/packaging/parsers/index.d.ts.map +1 -0
- package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +3 -1
- package/dist/src/packaging/parsers/index.js.map +1 -0
- package/dist/src/packaging/parsers/nemoclaw.d.ts +4 -0
- package/dist/src/packaging/parsers/nemoclaw.d.ts.map +1 -0
- package/dist/src/packaging/parsers/nemoclaw.js +145 -0
- package/dist/src/packaging/parsers/nemoclaw.js.map +1 -0
- package/dist/src/packaging/parsers/polytician.d.ts +4 -0
- package/dist/src/packaging/parsers/polytician.d.ts.map +1 -0
- package/dist/src/packaging/parsers/polytician.js +121 -0
- package/dist/src/packaging/parsers/polytician.js.map +1 -0
- package/dist/src/packaging/serializer.d.ts +114 -0
- package/dist/src/packaging/serializer.d.ts.map +1 -0
- package/dist/src/packaging/serializer.js +164 -0
- package/dist/src/packaging/serializer.js.map +1 -0
- package/dist/src/packaging/serializers/index.d.ts +3 -0
- package/dist/src/packaging/serializers/index.d.ts.map +1 -0
- package/dist/src/packaging/serializers/index.js +2 -0
- package/dist/src/packaging/serializers/index.js.map +1 -0
- package/dist/src/packaging/serializers/thoughtform.d.ts +89 -0
- package/dist/src/packaging/serializers/thoughtform.d.ts.map +1 -0
- package/dist/src/packaging/serializers/thoughtform.js +84 -0
- package/dist/src/packaging/serializers/thoughtform.js.map +1 -0
- package/dist/src/packaging/state-format.d.ts +332 -0
- package/dist/src/packaging/state-format.d.ts.map +1 -0
- package/dist/src/packaging/state-format.js +602 -0
- package/dist/src/packaging/state-format.js.map +1 -0
- package/dist/src/packaging/types.d.ts +131 -0
- package/dist/src/packaging/types.d.ts.map +1 -0
- package/dist/src/packaging/types.js +5 -0
- package/dist/src/packaging/types.js.map +1 -0
- package/dist/src/packaging/wasm-compiler.d.ts +160 -0
- package/dist/src/packaging/wasm-compiler.d.ts.map +1 -0
- package/dist/src/packaging/wasm-compiler.js +662 -0
- package/dist/src/packaging/wasm-compiler.js.map +1 -0
- package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
- package/dist/src/packaging/wasmedge-compiler.d.ts.map +1 -0
- package/dist/src/packaging/wasmedge-compiler.js +351 -0
- package/dist/src/packaging/wasmedge-compiler.js.map +1 -0
- package/dist/src/pilot/air-gap.d.ts +51 -0
- package/dist/src/pilot/air-gap.d.ts.map +1 -0
- package/dist/src/pilot/air-gap.js +118 -0
- package/dist/src/pilot/air-gap.js.map +1 -0
- package/dist/src/pilot/index.d.ts +14 -0
- package/dist/src/pilot/index.d.ts.map +1 -0
- package/dist/src/pilot/index.js +16 -0
- package/dist/src/pilot/index.js.map +1 -0
- package/dist/src/pilot/private-replica.d.ts +67 -0
- package/dist/src/pilot/private-replica.d.ts.map +1 -0
- package/dist/src/pilot/private-replica.js +429 -0
- package/dist/src/pilot/private-replica.js.map +1 -0
- package/dist/src/pilot/proxy-config.d.ts +36 -0
- package/dist/src/pilot/proxy-config.d.ts.map +1 -0
- package/dist/src/pilot/proxy-config.js +96 -0
- package/dist/src/pilot/proxy-config.js.map +1 -0
- package/dist/src/pilot/types.d.ts +181 -0
- package/dist/src/pilot/types.d.ts.map +1 -0
- package/dist/src/pilot/types.js +7 -0
- package/dist/src/pilot/types.js.map +1 -0
- package/dist/src/security/icp-audit.d.ts +63 -0
- package/dist/src/security/icp-audit.d.ts.map +1 -0
- package/dist/src/security/icp-audit.js +234 -0
- package/dist/src/security/icp-audit.js.map +1 -0
- package/dist/src/security/index.d.ts +17 -0
- package/dist/src/security/index.d.ts.map +1 -0
- package/dist/src/security/index.js +24 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/security/mfa-approval.d.ts +219 -0
- package/dist/src/security/mfa-approval.d.ts.map +1 -0
- package/dist/src/security/mfa-approval.js +668 -0
- package/dist/src/security/mfa-approval.js.map +1 -0
- package/dist/src/security/multisig.d.ts +102 -0
- package/dist/src/security/multisig.d.ts.map +1 -0
- package/dist/src/security/multisig.js +283 -0
- package/dist/src/security/multisig.js.map +1 -0
- package/dist/src/security/totp.d.ts +67 -0
- package/dist/src/security/totp.d.ts.map +1 -0
- package/dist/src/security/totp.js +148 -0
- package/dist/src/security/totp.js.map +1 -0
- package/dist/src/security/types.d.ts +212 -0
- package/dist/src/security/types.d.ts.map +1 -0
- package/dist/src/security/types.js +217 -0
- package/dist/src/security/types.js.map +1 -0
- package/dist/src/security/vetkeys.d.ts +222 -0
- package/dist/src/security/vetkeys.d.ts.map +1 -0
- package/dist/src/security/vetkeys.js +628 -0
- package/dist/src/security/vetkeys.js.map +1 -0
- package/dist/src/security/webauthn.d.ts +127 -0
- package/dist/src/security/webauthn.d.ts.map +1 -0
- package/dist/src/security/webauthn.js +246 -0
- package/dist/src/security/webauthn.js.map +1 -0
- package/dist/src/testing/index.d.ts +6 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/local-runner.d.ts +23 -0
- package/dist/src/testing/local-runner.d.ts.map +1 -0
- package/dist/src/testing/local-runner.js +226 -0
- package/dist/src/testing/local-runner.js.map +1 -0
- package/dist/src/testing/types.d.ts +98 -0
- package/dist/src/testing/types.d.ts.map +1 -0
- package/dist/src/testing/types.js +5 -0
- package/dist/src/testing/types.js.map +1 -0
- package/dist/src/trading/api-key-manager.d.ts +96 -0
- package/dist/src/trading/api-key-manager.d.ts.map +1 -0
- package/dist/src/trading/api-key-manager.js +201 -0
- package/dist/src/trading/api-key-manager.js.map +1 -0
- package/dist/src/trading/consensus.d.ts +171 -0
- package/dist/src/trading/consensus.d.ts.map +1 -0
- package/dist/src/trading/consensus.js +291 -0
- package/dist/src/trading/consensus.js.map +1 -0
- package/dist/src/trading/index.d.ts +19 -0
- package/dist/src/trading/index.d.ts.map +1 -0
- package/dist/src/trading/index.js +15 -0
- package/dist/src/trading/index.js.map +1 -0
- package/dist/src/trading/ip-whitelist.d.ts +70 -0
- package/dist/src/trading/ip-whitelist.d.ts.map +1 -0
- package/dist/src/trading/ip-whitelist.js +239 -0
- package/dist/src/trading/ip-whitelist.js.map +1 -0
- package/dist/src/trading/skill-sandbox.d.ts +88 -0
- package/dist/src/trading/skill-sandbox.d.ts.map +1 -0
- package/dist/src/trading/skill-sandbox.js +175 -0
- package/dist/src/trading/skill-sandbox.js.map +1 -0
- package/dist/src/utils/path-validation.d.ts +34 -0
- package/dist/src/utils/path-validation.d.ts.map +1 -0
- package/dist/src/utils/path-validation.js +88 -0
- package/dist/src/utils/path-validation.js.map +1 -0
- package/dist/src/vault/bitwarden.d.ts +51 -0
- package/dist/src/vault/bitwarden.d.ts.map +1 -0
- package/dist/src/vault/bitwarden.js +172 -0
- package/dist/src/vault/bitwarden.js.map +1 -0
- package/dist/src/vault/client.d.ts +44 -0
- package/dist/src/vault/client.d.ts.map +1 -0
- package/dist/src/vault/client.js +523 -0
- package/dist/src/vault/client.js.map +1 -0
- package/dist/src/vault/config.d.ts +68 -0
- package/dist/src/vault/config.d.ts.map +1 -0
- package/dist/src/vault/config.js +265 -0
- package/dist/src/vault/config.js.map +1 -0
- package/dist/src/vault/encrypted-memory-store.d.ts +80 -0
- package/dist/src/vault/encrypted-memory-store.d.ts.map +1 -0
- package/dist/src/vault/encrypted-memory-store.js +175 -0
- package/dist/src/vault/encrypted-memory-store.js.map +1 -0
- package/dist/src/vault/hashicorp-provider.d.ts +22 -0
- package/dist/src/vault/hashicorp-provider.d.ts.map +1 -0
- package/dist/src/vault/hashicorp-provider.js +63 -0
- package/dist/src/vault/hashicorp-provider.js.map +1 -0
- package/dist/src/vault/index.d.ts +40 -0
- package/dist/src/vault/index.d.ts.map +1 -0
- package/dist/src/vault/index.js +38 -0
- package/dist/src/vault/index.js.map +1 -0
- package/dist/src/vault/memory-provider.d.ts +26 -0
- package/dist/src/vault/memory-provider.d.ts.map +1 -0
- package/dist/src/vault/memory-provider.js +42 -0
- package/dist/src/vault/memory-provider.js.map +1 -0
- package/dist/src/vault/provider.d.ts +68 -0
- package/dist/src/vault/provider.d.ts.map +1 -0
- package/dist/src/vault/provider.js +50 -0
- package/dist/src/vault/provider.js.map +1 -0
- package/dist/src/vault/safehouse-types.d.ts +204 -0
- package/dist/src/vault/safehouse-types.d.ts.map +1 -0
- package/dist/src/vault/safehouse-types.js +9 -0
- package/dist/src/vault/safehouse-types.js.map +1 -0
- package/dist/src/vault/secret-audit.d.ts +91 -0
- package/dist/src/vault/secret-audit.d.ts.map +1 -0
- package/dist/src/vault/secret-audit.js +224 -0
- package/dist/src/vault/secret-audit.js.map +1 -0
- package/dist/src/vault/secret-injector.d.ts +62 -0
- package/dist/src/vault/secret-injector.d.ts.map +1 -0
- package/dist/src/vault/secret-injector.js +237 -0
- package/dist/src/vault/secret-injector.js.map +1 -0
- package/dist/src/vault/secret-leak-detector.d.ts +94 -0
- package/dist/src/vault/secret-leak-detector.d.ts.map +1 -0
- package/dist/src/vault/secret-leak-detector.js +218 -0
- package/dist/src/vault/secret-leak-detector.js.map +1 -0
- package/dist/src/vault/secret-management-layer.d.ts +139 -0
- package/dist/src/vault/secret-management-layer.d.ts.map +1 -0
- package/dist/src/vault/secret-management-layer.js +366 -0
- package/dist/src/vault/secret-management-layer.js.map +1 -0
- package/dist/src/vault/secret-rotation.d.ts +54 -0
- package/dist/src/vault/secret-rotation.d.ts.map +1 -0
- package/dist/src/vault/secret-rotation.js +156 -0
- package/dist/src/vault/secret-rotation.js.map +1 -0
- package/dist/src/vault/secret-sandbox.d.ts +94 -0
- package/dist/src/vault/secret-sandbox.d.ts.map +1 -0
- package/dist/src/vault/secret-sandbox.js +232 -0
- package/dist/src/vault/secret-sandbox.js.map +1 -0
- package/dist/src/vault/types.d.ts +148 -0
- package/dist/src/vault/types.d.ts.map +1 -0
- package/dist/src/vault/types.js +7 -0
- package/dist/src/vault/types.js.map +1 -0
- package/dist/src/wallet/cbor-serializer.d.ts +82 -0
- package/dist/src/wallet/cbor-serializer.d.ts.map +1 -0
- package/dist/src/wallet/cbor-serializer.js +287 -0
- package/dist/src/wallet/cbor-serializer.js.map +1 -0
- package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
- package/dist/src/wallet/chain-dispatcher.d.ts.map +1 -0
- package/dist/src/wallet/chain-dispatcher.js +230 -0
- package/dist/src/wallet/chain-dispatcher.js.map +1 -0
- package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
- package/dist/src/wallet/cross-chain-aggregator.d.ts.map +1 -0
- package/dist/src/wallet/cross-chain-aggregator.js +235 -0
- package/dist/src/wallet/cross-chain-aggregator.js.map +1 -0
- package/dist/src/wallet/hsm/index.d.ts +39 -0
- package/dist/src/wallet/hsm/index.d.ts.map +1 -0
- package/dist/src/wallet/hsm/index.js +60 -0
- package/dist/src/wallet/hsm/index.js.map +1 -0
- package/dist/src/wallet/hsm/ledger-provider.d.ts +75 -0
- package/dist/src/wallet/hsm/ledger-provider.d.ts.map +1 -0
- package/dist/src/wallet/hsm/ledger-provider.js +272 -0
- package/dist/src/wallet/hsm/ledger-provider.js.map +1 -0
- package/dist/src/wallet/hsm/sgx-provider.d.ts +83 -0
- package/dist/src/wallet/hsm/sgx-provider.d.ts.map +1 -0
- package/dist/src/wallet/hsm/sgx-provider.js +281 -0
- package/dist/src/wallet/hsm/sgx-provider.js.map +1 -0
- package/dist/src/wallet/hsm/types.d.ts +134 -0
- package/dist/src/wallet/hsm/types.d.ts.map +1 -0
- package/dist/src/wallet/hsm/types.js +46 -0
- package/dist/src/wallet/hsm/types.js.map +1 -0
- package/dist/src/wallet/index.d.ts +22 -0
- package/dist/src/wallet/index.d.ts.map +1 -0
- package/dist/src/wallet/index.js +29 -0
- package/dist/src/wallet/index.js.map +1 -0
- package/dist/src/wallet/key-derivation.d.ts +145 -0
- package/dist/src/wallet/key-derivation.d.ts.map +1 -0
- package/dist/src/wallet/key-derivation.js +408 -0
- package/dist/src/wallet/key-derivation.js.map +1 -0
- package/dist/src/wallet/providers/arweave-provider.d.ts +34 -0
- package/dist/src/wallet/providers/arweave-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/arweave-provider.js +126 -0
- package/dist/src/wallet/providers/arweave-provider.js.map +1 -0
- package/dist/src/wallet/providers/base-provider.d.ts +111 -0
- package/dist/src/wallet/providers/base-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/base-provider.js +58 -0
- package/dist/src/wallet/providers/base-provider.js.map +1 -0
- package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
- package/dist/src/wallet/providers/cketh-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/cketh-provider.js +343 -0
- package/dist/src/wallet/providers/cketh-provider.js.map +1 -0
- package/dist/src/wallet/providers/icp-provider.d.ts +34 -0
- package/dist/src/wallet/providers/icp-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/icp-provider.js +114 -0
- package/dist/src/wallet/providers/icp-provider.js.map +1 -0
- package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
- package/dist/src/wallet/providers/polkadot-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/polkadot-provider.js +406 -0
- package/dist/src/wallet/providers/polkadot-provider.js.map +1 -0
- package/dist/src/wallet/providers/provider-factory.d.ts +23 -0
- package/dist/src/wallet/providers/provider-factory.d.ts.map +1 -0
- package/dist/src/wallet/providers/provider-factory.js +74 -0
- package/dist/src/wallet/providers/provider-factory.js.map +1 -0
- package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
- package/dist/src/wallet/providers/solana-provider.d.ts.map +1 -0
- package/dist/src/wallet/providers/solana-provider.js +392 -0
- package/dist/src/wallet/providers/solana-provider.js.map +1 -0
- package/dist/src/wallet/secure-wallet.d.ts +132 -0
- package/dist/src/wallet/secure-wallet.d.ts.map +1 -0
- package/dist/src/wallet/secure-wallet.js +298 -0
- package/dist/src/wallet/secure-wallet.js.map +1 -0
- package/dist/src/wallet/transaction-queue.d.ts +133 -0
- package/dist/src/wallet/transaction-queue.d.ts.map +1 -0
- package/dist/src/wallet/transaction-queue.js +195 -0
- package/dist/src/wallet/transaction-queue.js.map +1 -0
- package/dist/src/wallet/types.d.ts +222 -0
- package/dist/src/wallet/types.d.ts.map +1 -0
- package/dist/src/wallet/types.js +5 -0
- package/dist/src/wallet/types.js.map +1 -0
- package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
- package/dist/src/wallet/vetkeys-adapter.d.ts.map +1 -0
- package/dist/src/wallet/vetkeys-adapter.js +304 -0
- package/dist/src/wallet/vetkeys-adapter.js.map +1 -0
- package/dist/src/wallet/wallet-crypto.d.ts +101 -0
- package/dist/src/wallet/wallet-crypto.d.ts.map +1 -0
- package/dist/src/wallet/wallet-crypto.js +185 -0
- package/dist/src/wallet/wallet-crypto.js.map +1 -0
- package/dist/src/wallet/wallet-manager.d.ts +222 -0
- package/dist/src/wallet/wallet-manager.d.ts.map +1 -0
- package/dist/src/wallet/wallet-manager.js +518 -0
- package/dist/src/wallet/wallet-manager.js.map +1 -0
- package/dist/src/wallet/wallet-storage.d.ts +139 -0
- package/dist/src/wallet/wallet-storage.d.ts.map +1 -0
- package/dist/src/wallet/wallet-storage.js +290 -0
- package/dist/src/wallet/wallet-storage.js.map +1 -0
- package/dist/src/wiki/index.d.ts +30 -0
- package/dist/src/wiki/index.d.ts.map +1 -0
- package/dist/src/wiki/index.js +30 -0
- package/dist/src/wiki/index.js.map +1 -0
- package/dist/src/wiki/ingest.d.ts +51 -0
- package/dist/src/wiki/ingest.d.ts.map +1 -0
- package/dist/src/wiki/ingest.js +197 -0
- package/dist/src/wiki/ingest.js.map +1 -0
- package/dist/src/wiki/lint.d.ts +43 -0
- package/dist/src/wiki/lint.d.ts.map +1 -0
- package/dist/src/wiki/lint.js +187 -0
- package/dist/src/wiki/lint.js.map +1 -0
- package/dist/src/wiki/mcp-tools.d.ts +35 -0
- package/dist/src/wiki/mcp-tools.d.ts.map +1 -0
- package/dist/src/wiki/mcp-tools.js +353 -0
- package/dist/src/wiki/mcp-tools.js.map +1 -0
- package/dist/src/wiki/query.d.ts +38 -0
- package/dist/src/wiki/query.d.ts.map +1 -0
- package/dist/src/wiki/query.js +117 -0
- package/dist/src/wiki/query.js.map +1 -0
- package/dist/src/wiki/wiki-store.d.ts +53 -0
- package/dist/src/wiki/wiki-store.d.ts.map +1 -0
- package/dist/src/wiki/wiki-store.js +132 -0
- package/dist/src/wiki/wiki-store.js.map +1 -0
- package/package.json +44 -12
- package/.dfx/local/network-id +0 -4
- package/.next/trace +0 -2
- package/.vercel/README.txt +0 -11
- package/.vercel/project.json +0 -1
- package/AGENTS.md +0 -43
- package/PLAN_VAULT_INTEGRATION.md +0 -318
- 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/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.js +0 -14
- package/fixup_1_0_OSS_release.md +0 -136
- package/fixup_REALEASE_PRD.md +0 -136
- package/pnpm-workspace.yaml +0 -5
- 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/archival/index.ts +0 -8
- package/src/backup/backup.ts +0 -315
- package/src/backup/index.ts +0 -7
- package/src/cloud-storage/cloud-sync.ts +0 -461
- package/src/cloud-storage/provider-detector.ts +0 -198
- package/src/cloud-storage/types.ts +0 -104
- 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/index.ts +0 -8
- 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/index.ts +0 -17
- 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
- package/vercel.json +0 -8
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebAuthn / Biometric Fallback — AgentVault MFA Layer 2
|
|
3
|
+
*
|
|
4
|
+
* Provides a biometric-backed device key for approvals when TOTP is unavailable.
|
|
5
|
+
*
|
|
6
|
+
* Architecture
|
|
7
|
+
* ─────────────
|
|
8
|
+
* • A P-256 (prime256v1) ECDSA keypair is generated once per device and stored in
|
|
9
|
+
* ~/.agentvault/mfa/device-key-<fingerprint>.json.
|
|
10
|
+
* • The private key is AES-256-GCM encrypted using a key derived from the device
|
|
11
|
+
* fingerprint + a locally generated salt (HKDF-SHA256). This simulates the
|
|
12
|
+
* Secure Enclave model: the key never leaves the local machine and is bound to
|
|
13
|
+
* the device's hardware identity (hostname + platform + arch).
|
|
14
|
+
* • signChallenge() signs a challenge hash with the private key and returns a DER
|
|
15
|
+
* signature — equivalent to what a Secure Enclave produces.
|
|
16
|
+
* • verifySignature() validates the signature using the public key, suitable for
|
|
17
|
+
* both the local CLI and a remote verifier (ICP canister, webapp).
|
|
18
|
+
* • generateWebAuthnAssertion() wraps sign+metadata into a WebAuthn-compatible
|
|
19
|
+
* AuthenticatorAssertionResponse structure for browser/webapp interop.
|
|
20
|
+
*
|
|
21
|
+
* Browser / Node.js portability
|
|
22
|
+
* ──────────────────────────────
|
|
23
|
+
* In a browser the same flow runs via crypto.subtle (WebCrypto API):
|
|
24
|
+
* navigator.credentials.get({ publicKey: { challenge, ... } })
|
|
25
|
+
* The server (ICP canister) holds the public key and verifies the assertion.
|
|
26
|
+
* This module mirrors that contract using Node's built-in crypto so the CLI
|
|
27
|
+
* can participate in the same protocol without browser dependencies.
|
|
28
|
+
*
|
|
29
|
+
* Replay protection
|
|
30
|
+
* ──────────────────
|
|
31
|
+
* Every assertion includes a counter that increments on each signing operation.
|
|
32
|
+
* The verifier checks that counter > lastSeenCounter, matching the WebAuthn spec.
|
|
33
|
+
*/
|
|
34
|
+
/** Stored device credential (no unencrypted private key on disk). */
|
|
35
|
+
export interface DeviceCredential {
|
|
36
|
+
/** Credential identifier (hex of public key hash). */
|
|
37
|
+
credentialId: string;
|
|
38
|
+
/** Device fingerprint this credential is bound to. */
|
|
39
|
+
deviceFingerprint: string;
|
|
40
|
+
/** SPKI-encoded public key, base64url. */
|
|
41
|
+
publicKeyB64: string;
|
|
42
|
+
/** Signing counter — monotonically increments on every signing operation. */
|
|
43
|
+
signCounter: number;
|
|
44
|
+
/** AES-256-GCM encrypted PKCS#8 private key, base64url. */
|
|
45
|
+
encryptedPrivateKeyB64: string;
|
|
46
|
+
/** Random salt used for key derivation, hex. */
|
|
47
|
+
kdfSaltHex: string;
|
|
48
|
+
/** AES-GCM IV, hex. */
|
|
49
|
+
ivHex: string;
|
|
50
|
+
/** AES-GCM auth tag, hex. */
|
|
51
|
+
authTagHex: string;
|
|
52
|
+
createdAt: string;
|
|
53
|
+
}
|
|
54
|
+
/** Result of a biometric signing operation. */
|
|
55
|
+
export interface WebAuthnAssertion {
|
|
56
|
+
/** The credential that produced this assertion. */
|
|
57
|
+
credentialId: string;
|
|
58
|
+
/** The data that was signed: SHA-256(clientDataJSON). */
|
|
59
|
+
clientDataHash: string;
|
|
60
|
+
/** DER-encoded ECDSA signature, base64url. */
|
|
61
|
+
signatureB64: string;
|
|
62
|
+
/** Current signing counter (replay protection). */
|
|
63
|
+
signCounter: number;
|
|
64
|
+
/** ISO timestamp of the signing operation. */
|
|
65
|
+
timestamp: string;
|
|
66
|
+
}
|
|
67
|
+
/** Result of a biometric setup call. */
|
|
68
|
+
export interface BiometricSetup {
|
|
69
|
+
credentialId: string;
|
|
70
|
+
deviceFingerprint: string;
|
|
71
|
+
/** SPKI public key — send this to the ICP canister for storage. */
|
|
72
|
+
publicKeyB64: string;
|
|
73
|
+
createdAt: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate a new P-256 device keypair and store it (private key AES-GCM encrypted).
|
|
77
|
+
*
|
|
78
|
+
* This is the one-time "biometric enrollment" step. In a browser this would
|
|
79
|
+
* involve navigator.credentials.create() with the Secure Enclave; here we use
|
|
80
|
+
* Node's crypto to produce an equivalent credential.
|
|
81
|
+
*
|
|
82
|
+
* @param deviceFingerprint - SHA-256(hostname ‖ platform ‖ arch)[:16] identifying this device
|
|
83
|
+
* @returns BiometricSetup containing the public key to register with the verifier
|
|
84
|
+
*/
|
|
85
|
+
export declare function setupBiometricCredential(deviceFingerprint: string): BiometricSetup;
|
|
86
|
+
/**
|
|
87
|
+
* Sign a challenge hash with the device's private key (biometric assertion).
|
|
88
|
+
*
|
|
89
|
+
* Mirrors the WebAuthn AuthenticatorAssertionResponse:
|
|
90
|
+
* - clientDataHash = SHA-256(JSON.stringify({ type, challenge, timestamp }))
|
|
91
|
+
* - signature = ECDSA-SHA256(clientDataHash, privateKey) in DER format
|
|
92
|
+
* - signCounter increments (replay protection)
|
|
93
|
+
*
|
|
94
|
+
* @param challengeHash - SHA-256 hex from MFA challenge (binds this to the request)
|
|
95
|
+
* @param deviceFingerprint - Must match the enrolled device
|
|
96
|
+
* @returns WebAuthnAssertion — forward to the ICP canister for verification
|
|
97
|
+
*/
|
|
98
|
+
export declare function signChallenge(challengeHash: string, deviceFingerprint: string): WebAuthnAssertion;
|
|
99
|
+
/**
|
|
100
|
+
* Verify a WebAuthn assertion from any device.
|
|
101
|
+
*
|
|
102
|
+
* @param assertion - The assertion produced by signChallenge()
|
|
103
|
+
* @param challengeHash - The original challenge hash (must be embedded in clientDataHash)
|
|
104
|
+
* @param publicKeyB64 - SPKI public key registered for this credential (base64url)
|
|
105
|
+
* @param lastSignCounter - The last seen signCounter for this credential (replay check)
|
|
106
|
+
* @returns { ok: true } or { ok: false, reason: string }
|
|
107
|
+
*/
|
|
108
|
+
export declare function verifyWebAuthnAssertion(assertion: WebAuthnAssertion, challengeHash: string, publicKeyB64: string, lastSignCounter: number): {
|
|
109
|
+
ok: true;
|
|
110
|
+
} | {
|
|
111
|
+
ok: false;
|
|
112
|
+
reason: string;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Return the registered public key for a device, or null if not enrolled.
|
|
116
|
+
*/
|
|
117
|
+
export declare function getDevicePublicKey(deviceFingerprint: string): string | null;
|
|
118
|
+
/**
|
|
119
|
+
* Return the current sign counter for a device credential.
|
|
120
|
+
* Used by the verifier to detect counter replay.
|
|
121
|
+
*/
|
|
122
|
+
export declare function getSignCounter(deviceFingerprint: string): number;
|
|
123
|
+
/**
|
|
124
|
+
* Check whether a biometric credential exists for the given device.
|
|
125
|
+
*/
|
|
126
|
+
export declare function hasBiometricCredential(deviceFingerprint: string): boolean;
|
|
127
|
+
//# sourceMappingURL=webauthn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webauthn.d.ts","sourceRoot":"","sources":["../../../src/security/webauthn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAsBH,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqDD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,CAuClF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GACxB,iBAAiB,CA+CnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoD9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAEzE"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebAuthn / Biometric Fallback — AgentVault MFA Layer 2
|
|
3
|
+
*
|
|
4
|
+
* Provides a biometric-backed device key for approvals when TOTP is unavailable.
|
|
5
|
+
*
|
|
6
|
+
* Architecture
|
|
7
|
+
* ─────────────
|
|
8
|
+
* • A P-256 (prime256v1) ECDSA keypair is generated once per device and stored in
|
|
9
|
+
* ~/.agentvault/mfa/device-key-<fingerprint>.json.
|
|
10
|
+
* • The private key is AES-256-GCM encrypted using a key derived from the device
|
|
11
|
+
* fingerprint + a locally generated salt (HKDF-SHA256). This simulates the
|
|
12
|
+
* Secure Enclave model: the key never leaves the local machine and is bound to
|
|
13
|
+
* the device's hardware identity (hostname + platform + arch).
|
|
14
|
+
* • signChallenge() signs a challenge hash with the private key and returns a DER
|
|
15
|
+
* signature — equivalent to what a Secure Enclave produces.
|
|
16
|
+
* • verifySignature() validates the signature using the public key, suitable for
|
|
17
|
+
* both the local CLI and a remote verifier (ICP canister, webapp).
|
|
18
|
+
* • generateWebAuthnAssertion() wraps sign+metadata into a WebAuthn-compatible
|
|
19
|
+
* AuthenticatorAssertionResponse structure for browser/webapp interop.
|
|
20
|
+
*
|
|
21
|
+
* Browser / Node.js portability
|
|
22
|
+
* ──────────────────────────────
|
|
23
|
+
* In a browser the same flow runs via crypto.subtle (WebCrypto API):
|
|
24
|
+
* navigator.credentials.get({ publicKey: { challenge, ... } })
|
|
25
|
+
* The server (ICP canister) holds the public key and verifies the assertion.
|
|
26
|
+
* This module mirrors that contract using Node's built-in crypto so the CLI
|
|
27
|
+
* can participate in the same protocol without browser dependencies.
|
|
28
|
+
*
|
|
29
|
+
* Replay protection
|
|
30
|
+
* ──────────────────
|
|
31
|
+
* Every assertion includes a counter that increments on each signing operation.
|
|
32
|
+
* The verifier checks that counter > lastSeenCounter, matching the WebAuthn spec.
|
|
33
|
+
*/
|
|
34
|
+
import fs from 'node:fs';
|
|
35
|
+
import path from 'node:path';
|
|
36
|
+
import os from 'node:os';
|
|
37
|
+
import crypto from 'node:crypto';
|
|
38
|
+
import { parse, stringify } from 'yaml';
|
|
39
|
+
// ─── Directory helpers ────────────────────────────────────────────────────────
|
|
40
|
+
const MFA_DIR = path.join(os.homedir(), '.agentvault', 'mfa');
|
|
41
|
+
function ensureMfaDir() {
|
|
42
|
+
fs.mkdirSync(MFA_DIR, { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
function deviceKeyFile(fingerprint) {
|
|
45
|
+
return path.join(MFA_DIR, `device-key-${fingerprint}.yaml`);
|
|
46
|
+
}
|
|
47
|
+
// ─── Internal crypto helpers ──────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Derive a 32-byte AES key from the device fingerprint using HKDF-SHA256.
|
|
50
|
+
* This binds the stored private key to the device's hardware identity.
|
|
51
|
+
*/
|
|
52
|
+
function deriveEncryptionKey(fingerprint, saltHex) {
|
|
53
|
+
const salt = Buffer.from(saltHex, 'hex');
|
|
54
|
+
const ikm = crypto.createHash('sha256').update(`agentvault:device-key:${fingerprint}`).digest();
|
|
55
|
+
return Buffer.from(crypto.hkdfSync('sha256', ikm, salt, 'agentvault:biometric-key:v1', 32));
|
|
56
|
+
}
|
|
57
|
+
/** AES-256-GCM encrypt. Returns { ciphertext, iv, authTag } — all Buffer. */
|
|
58
|
+
function aesGcmEncrypt(plaintext, key) {
|
|
59
|
+
const iv = crypto.randomBytes(12); // 96-bit IV recommended for GCM
|
|
60
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
|
|
61
|
+
const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
|
|
62
|
+
const authTag = cipher.getAuthTag();
|
|
63
|
+
return { ciphertext, iv, authTag };
|
|
64
|
+
}
|
|
65
|
+
/** AES-256-GCM decrypt. Throws on authentication failure. */
|
|
66
|
+
function aesGcmDecrypt(ciphertext, key, iv, authTag) {
|
|
67
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
|
|
68
|
+
decipher.setAuthTag(authTag);
|
|
69
|
+
return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
70
|
+
}
|
|
71
|
+
// ─── Device credential management ────────────────────────────────────────────
|
|
72
|
+
function loadCredential(fingerprint) {
|
|
73
|
+
const fp = deviceKeyFile(fingerprint);
|
|
74
|
+
if (!fs.existsSync(fp))
|
|
75
|
+
return null;
|
|
76
|
+
return parse(fs.readFileSync(fp, 'utf8'));
|
|
77
|
+
}
|
|
78
|
+
function saveCredential(cred) {
|
|
79
|
+
ensureMfaDir();
|
|
80
|
+
fs.writeFileSync(deviceKeyFile(cred.deviceFingerprint), stringify(cred), { mode: 0o600 });
|
|
81
|
+
}
|
|
82
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
83
|
+
/**
|
|
84
|
+
* Generate a new P-256 device keypair and store it (private key AES-GCM encrypted).
|
|
85
|
+
*
|
|
86
|
+
* This is the one-time "biometric enrollment" step. In a browser this would
|
|
87
|
+
* involve navigator.credentials.create() with the Secure Enclave; here we use
|
|
88
|
+
* Node's crypto to produce an equivalent credential.
|
|
89
|
+
*
|
|
90
|
+
* @param deviceFingerprint - SHA-256(hostname ‖ platform ‖ arch)[:16] identifying this device
|
|
91
|
+
* @returns BiometricSetup containing the public key to register with the verifier
|
|
92
|
+
*/
|
|
93
|
+
export function setupBiometricCredential(deviceFingerprint) {
|
|
94
|
+
// Generate P-256 (prime256v1) keypair — matches WebAuthn ES256 (-7)
|
|
95
|
+
const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
|
|
96
|
+
namedCurve: 'prime256v1',
|
|
97
|
+
});
|
|
98
|
+
// Export keys
|
|
99
|
+
const pkcs8 = privateKey.export({ type: 'pkcs8', format: 'der' });
|
|
100
|
+
const spki = publicKey.export({ type: 'spki', format: 'der' });
|
|
101
|
+
const publicKeyB64 = spki.toString('base64url');
|
|
102
|
+
// Credential ID = SHA-256(public key DER)[:16], hex
|
|
103
|
+
const credentialId = crypto.createHash('sha256').update(spki).digest('hex').slice(0, 32);
|
|
104
|
+
// Derive encryption key and encrypt private key
|
|
105
|
+
const kdfSaltHex = crypto.randomBytes(32).toString('hex');
|
|
106
|
+
const encKey = deriveEncryptionKey(deviceFingerprint, kdfSaltHex);
|
|
107
|
+
const { ciphertext, iv, authTag } = aesGcmEncrypt(pkcs8, encKey);
|
|
108
|
+
const cred = {
|
|
109
|
+
credentialId,
|
|
110
|
+
deviceFingerprint,
|
|
111
|
+
publicKeyB64,
|
|
112
|
+
signCounter: 0,
|
|
113
|
+
encryptedPrivateKeyB64: ciphertext.toString('base64url'),
|
|
114
|
+
kdfSaltHex,
|
|
115
|
+
ivHex: iv.toString('hex'),
|
|
116
|
+
authTagHex: authTag.toString('hex'),
|
|
117
|
+
createdAt: new Date().toISOString(),
|
|
118
|
+
};
|
|
119
|
+
saveCredential(cred);
|
|
120
|
+
return {
|
|
121
|
+
credentialId,
|
|
122
|
+
deviceFingerprint,
|
|
123
|
+
publicKeyB64,
|
|
124
|
+
createdAt: cred.createdAt,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sign a challenge hash with the device's private key (biometric assertion).
|
|
129
|
+
*
|
|
130
|
+
* Mirrors the WebAuthn AuthenticatorAssertionResponse:
|
|
131
|
+
* - clientDataHash = SHA-256(JSON.stringify({ type, challenge, timestamp }))
|
|
132
|
+
* - signature = ECDSA-SHA256(clientDataHash, privateKey) in DER format
|
|
133
|
+
* - signCounter increments (replay protection)
|
|
134
|
+
*
|
|
135
|
+
* @param challengeHash - SHA-256 hex from MFA challenge (binds this to the request)
|
|
136
|
+
* @param deviceFingerprint - Must match the enrolled device
|
|
137
|
+
* @returns WebAuthnAssertion — forward to the ICP canister for verification
|
|
138
|
+
*/
|
|
139
|
+
export function signChallenge(challengeHash, deviceFingerprint) {
|
|
140
|
+
const cred = loadCredential(deviceFingerprint);
|
|
141
|
+
if (!cred) {
|
|
142
|
+
throw new Error(`No biometric credential for device ${deviceFingerprint}. ` +
|
|
143
|
+
`Run: agentvault approve mfa biometric-setup`);
|
|
144
|
+
}
|
|
145
|
+
// Re-derive encryption key and decrypt private key
|
|
146
|
+
const encKey = deriveEncryptionKey(deviceFingerprint, cred.kdfSaltHex);
|
|
147
|
+
const pkcs8 = aesGcmDecrypt(Buffer.from(cred.encryptedPrivateKeyB64, 'base64url'), encKey, Buffer.from(cred.ivHex, 'hex'), Buffer.from(cred.authTagHex, 'hex'));
|
|
148
|
+
const privateKey = crypto.createPrivateKey({ key: pkcs8, format: 'der', type: 'pkcs8' });
|
|
149
|
+
// Build clientData (WebAuthn-compatible structure)
|
|
150
|
+
const timestamp = new Date().toISOString();
|
|
151
|
+
const clientDataJSON = JSON.stringify({
|
|
152
|
+
type: 'webauthn.get',
|
|
153
|
+
challenge: challengeHash,
|
|
154
|
+
origin: 'https://agentvault.approve',
|
|
155
|
+
timestamp,
|
|
156
|
+
});
|
|
157
|
+
const clientDataHash = crypto
|
|
158
|
+
.createHash('sha256')
|
|
159
|
+
.update(clientDataJSON)
|
|
160
|
+
.digest('hex');
|
|
161
|
+
// Sign with ECDSA-SHA256
|
|
162
|
+
const sigDer = crypto.sign('sha256', Buffer.from(clientDataHash, 'hex'), privateKey);
|
|
163
|
+
// Increment sign counter (replay protection)
|
|
164
|
+
cred.signCounter += 1;
|
|
165
|
+
saveCredential(cred);
|
|
166
|
+
return {
|
|
167
|
+
credentialId: cred.credentialId,
|
|
168
|
+
clientDataHash,
|
|
169
|
+
signatureB64: sigDer.toString('base64url'),
|
|
170
|
+
signCounter: cred.signCounter,
|
|
171
|
+
timestamp,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Verify a WebAuthn assertion from any device.
|
|
176
|
+
*
|
|
177
|
+
* @param assertion - The assertion produced by signChallenge()
|
|
178
|
+
* @param challengeHash - The original challenge hash (must be embedded in clientDataHash)
|
|
179
|
+
* @param publicKeyB64 - SPKI public key registered for this credential (base64url)
|
|
180
|
+
* @param lastSignCounter - The last seen signCounter for this credential (replay check)
|
|
181
|
+
* @returns { ok: true } or { ok: false, reason: string }
|
|
182
|
+
*/
|
|
183
|
+
export function verifyWebAuthnAssertion(assertion, challengeHash, publicKeyB64, lastSignCounter) {
|
|
184
|
+
// ── Counter check (replay protection) ────────────────────────────────────
|
|
185
|
+
if (assertion.signCounter <= lastSignCounter) {
|
|
186
|
+
return { ok: false, reason: 'counter-replay' };
|
|
187
|
+
}
|
|
188
|
+
// ── Reconstruct clientDataHash to verify it embeds the right challenge ───
|
|
189
|
+
// The clientDataHash is SHA-256(clientDataJSON) where clientDataJSON contains
|
|
190
|
+
// the challengeHash. We verify the signature covers clientDataHash and that
|
|
191
|
+
// clientDataHash encodes the expected challenge.
|
|
192
|
+
// For the CLI flow the verifier re-derives clientDataHash from assertion.clientDataHash
|
|
193
|
+
// and checks the challenge is present (full JSON is not transmitted here, only hash).
|
|
194
|
+
// A production ICP canister would receive the full clientDataJSON.
|
|
195
|
+
// ── Signature verification ────────────────────────────────────────────────
|
|
196
|
+
const spki = Buffer.from(publicKeyB64, 'base64url');
|
|
197
|
+
let publicKey;
|
|
198
|
+
try {
|
|
199
|
+
publicKey = crypto.createPublicKey({ key: spki, format: 'der', type: 'spki' });
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return { ok: false, reason: 'invalid-public-key' };
|
|
203
|
+
}
|
|
204
|
+
let sigBuf;
|
|
205
|
+
try {
|
|
206
|
+
sigBuf = Buffer.from(assertion.signatureB64, 'base64url');
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return { ok: false, reason: 'invalid-signature-encoding' };
|
|
210
|
+
}
|
|
211
|
+
const verified = crypto.verify('sha256', Buffer.from(assertion.clientDataHash, 'hex'), publicKey, sigBuf);
|
|
212
|
+
if (!verified) {
|
|
213
|
+
return { ok: false, reason: 'signature-invalid' };
|
|
214
|
+
}
|
|
215
|
+
// ── Challenge binding ─────────────────────────────────────────────────────
|
|
216
|
+
// The clientDataHash must encode the expected challenge. We verify by checking
|
|
217
|
+
// that the assertion's stored clientDataHash was derived from a JSON blob containing
|
|
218
|
+
// our challengeHash. Since we only receive the hash (not the full JSON), we perform
|
|
219
|
+
// a best-effort check: the assertion must have been produced after the challenge was
|
|
220
|
+
// issued, which is ensured by the nonce/timestamp in the calling mfa-approval layer.
|
|
221
|
+
// If the full clientDataJSON is available (webapp flow), verify:
|
|
222
|
+
// JSON.parse(clientDataJSON).challenge === challengeHash
|
|
223
|
+
void challengeHash;
|
|
224
|
+
return { ok: true };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Return the registered public key for a device, or null if not enrolled.
|
|
228
|
+
*/
|
|
229
|
+
export function getDevicePublicKey(deviceFingerprint) {
|
|
230
|
+
const cred = loadCredential(deviceFingerprint);
|
|
231
|
+
return cred?.publicKeyB64 ?? null;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Return the current sign counter for a device credential.
|
|
235
|
+
* Used by the verifier to detect counter replay.
|
|
236
|
+
*/
|
|
237
|
+
export function getSignCounter(deviceFingerprint) {
|
|
238
|
+
return loadCredential(deviceFingerprint)?.signCounter ?? 0;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Check whether a biometric credential exists for the given device.
|
|
242
|
+
*/
|
|
243
|
+
export function hasBiometricCredential(deviceFingerprint) {
|
|
244
|
+
return fs.existsSync(deviceKeyFile(deviceFingerprint));
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=webauthn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webauthn.js","sourceRoot":"","sources":["../../../src/security/webauthn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAExC,iFAAiF;AAEjF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAE9D,SAAS,YAAY;IACnB,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,WAAW,OAAO,CAAC,CAAC;AAC9D,CAAC;AAgDD,iFAAiF;AAEjF;;;GAGG;AACH,SAAS,mBAAmB,CAAC,WAAmB,EAAE,OAAe;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAChG,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,6EAA6E;AAC7E,SAAS,aAAa,CACpB,SAAiB,EACjB,GAAW;IAEX,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,6DAA6D;AAC7D,SAAS,aAAa,CACpB,UAAkB,EAClB,GAAW,EACX,EAAU,EACV,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,gFAAgF;AAEhF,SAAS,cAAc,CAAC,WAAmB;IACzC,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAqB,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,IAAsB;IAC5C,YAAY,EAAE,CAAC;IACf,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,iBAAyB;IAChE,oEAAoE;IACpE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;QACjE,UAAU,EAAE,YAAY;KACzB,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAW,CAAC;IAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAW,CAAC;IACzE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEhD,oDAAoD;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzF,gDAAgD;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAClE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAqB;QAC7B,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,WAAW,EAAE,CAAC;QACd,sBAAsB,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxD,UAAU;QACV,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,cAAc,CAAC,IAAI,CAAC,CAAC;IAErB,OAAO;QACL,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,aAAqB,EACrB,iBAAyB;IAEzB,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,sCAAsC,iBAAiB,IAAI;YACzD,6CAA6C,CAChD,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,MAAM,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,aAAa,CACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,EACrD,MAAM,EACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CACpC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzF,mDAAmD;IACnD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,4BAA4B;QACpC,SAAS;KACV,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM;SAC1B,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAErF,6CAA6C;IAC7C,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACtB,cAAc,CAAC,IAAI,CAAC,CAAC;IAErB,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,cAAc;QACd,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA4B,EAC5B,aAAqB,EACrB,YAAoB,EACpB,eAAuB;IAEvB,4EAA4E;IAC5E,IAAI,SAAS,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;QAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,iDAAiD;IACjD,wFAAwF;IACxF,sFAAsF;IACtF,mEAAmE;IAEnE,6EAA6E;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,SAA2B,CAAC;IAChC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,QAAQ,EACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,EAC5C,SAAS,EACT,MAAM,CACP,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACpD,CAAC;IAED,6EAA6E;IAC7E,gFAAgF;IAChF,qFAAqF;IACrF,qFAAqF;IACrF,qFAAqF;IACrF,qFAAqF;IACrF,iEAAiE;IACjE,2DAA2D;IAC3D,KAAK,aAAa,CAAC;IAEnB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,iBAAyB;IAC1D,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC/C,OAAO,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,iBAAyB;IACtD,OAAO,cAAc,CAAC,iBAAiB,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,iBAAyB;IAC9D,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local test runner for canister testing
|
|
3
|
+
*
|
|
4
|
+
* Provides test execution for unit, integration, and load tests against local canisters
|
|
5
|
+
*/
|
|
6
|
+
import type { TestRunnerOptions, TestSuite, LoadTestConfig, LoadTestResult } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run unit tests
|
|
9
|
+
*/
|
|
10
|
+
export declare function runUnitTests(options: TestRunnerOptions): Promise<TestSuite>;
|
|
11
|
+
/**
|
|
12
|
+
* Run integration tests
|
|
13
|
+
*/
|
|
14
|
+
export declare function runIntegrationTests(options: TestRunnerOptions): Promise<TestSuite>;
|
|
15
|
+
/**
|
|
16
|
+
* Run load tests
|
|
17
|
+
*/
|
|
18
|
+
export declare function runLoadTests(config: LoadTestConfig): Promise<LoadTestResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Run tests based on options
|
|
21
|
+
*/
|
|
22
|
+
export declare function runTests(options: TestRunnerOptions): Promise<TestSuite | LoadTestResult>;
|
|
23
|
+
//# sourceMappingURL=local-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../../../src/testing/local-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAwEpB;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8BjF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8BxF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAiFlF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,CAiB9F"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local test runner for canister testing
|
|
3
|
+
*
|
|
4
|
+
* Provides test execution for unit, integration, and load tests against local canisters
|
|
5
|
+
*/
|
|
6
|
+
import { execa } from 'execa';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import os from 'node:os';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
const AGENTVAULT_DIR = path.join(os.homedir(), '.agentvault');
|
|
11
|
+
const TEST_RESULTS_DIR = path.join(AGENTVAULT_DIR, 'test-results');
|
|
12
|
+
/**
|
|
13
|
+
* Ensure test results directory exists
|
|
14
|
+
*/
|
|
15
|
+
function ensureTestResultsDir() {
|
|
16
|
+
if (!fs.existsSync(AGENTVAULT_DIR)) {
|
|
17
|
+
fs.mkdirSync(AGENTVAULT_DIR, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
if (!fs.existsSync(TEST_RESULTS_DIR)) {
|
|
20
|
+
fs.mkdirSync(TEST_RESULTS_DIR, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get test results file path
|
|
25
|
+
*/
|
|
26
|
+
function getTestResultsPath(agentName, testType) {
|
|
27
|
+
ensureTestResultsDir();
|
|
28
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
29
|
+
return path.join(TEST_RESULTS_DIR, `${agentName}-${testType}-${timestamp}.json`);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parse vitest output to extract test results
|
|
33
|
+
*/
|
|
34
|
+
function parseVitestOutput(stdout) {
|
|
35
|
+
const lines = stdout.split('\n');
|
|
36
|
+
const tests = [];
|
|
37
|
+
let total = 0;
|
|
38
|
+
let passed = 0;
|
|
39
|
+
let failed = 0;
|
|
40
|
+
let skipped = 0;
|
|
41
|
+
let duration = 0;
|
|
42
|
+
for (const line of lines) {
|
|
43
|
+
const match = line.match(/^(PASS|FAIL|SKIP)\s+(.+) \((\d+)ms\)$/);
|
|
44
|
+
if (match) {
|
|
45
|
+
const [, status, nameRaw, timeRaw] = match;
|
|
46
|
+
const name = nameRaw?.trim() || 'unknown';
|
|
47
|
+
const time = timeRaw || '0';
|
|
48
|
+
tests.push({
|
|
49
|
+
name,
|
|
50
|
+
status: status === 'PASS' ? 'passed' : status === 'FAIL' ? 'failed' : 'skipped',
|
|
51
|
+
duration: parseInt(time, 10),
|
|
52
|
+
});
|
|
53
|
+
total++;
|
|
54
|
+
if (status === 'PASS')
|
|
55
|
+
passed++;
|
|
56
|
+
else if (status === 'FAIL')
|
|
57
|
+
failed++;
|
|
58
|
+
else
|
|
59
|
+
skipped++;
|
|
60
|
+
}
|
|
61
|
+
const durationMatch = line.match(/Test Files\s+(\d+)\s+passed\s+\((\d+)\)/);
|
|
62
|
+
if (durationMatch && durationMatch[2]) {
|
|
63
|
+
duration = parseInt(durationMatch[2], 10);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
name: 'canister-tests',
|
|
68
|
+
total,
|
|
69
|
+
passed,
|
|
70
|
+
failed,
|
|
71
|
+
skipped,
|
|
72
|
+
duration,
|
|
73
|
+
tests,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Run unit tests
|
|
78
|
+
*/
|
|
79
|
+
export async function runUnitTests(options) {
|
|
80
|
+
const vitestArgs = [
|
|
81
|
+
'run',
|
|
82
|
+
'--reporter=verbose',
|
|
83
|
+
];
|
|
84
|
+
if (options.network) {
|
|
85
|
+
vitestArgs.push(`--env.network=${options.network}`);
|
|
86
|
+
}
|
|
87
|
+
if (options.outputFormat === 'json') {
|
|
88
|
+
vitestArgs.push('--reporter=json');
|
|
89
|
+
}
|
|
90
|
+
vitestArgs.push('tests/unit');
|
|
91
|
+
const result = await execa('npx', ['vitest', ...vitestArgs], {
|
|
92
|
+
reject: false,
|
|
93
|
+
timeout: 120_000,
|
|
94
|
+
});
|
|
95
|
+
const testSuite = parseVitestOutput(result.stdout);
|
|
96
|
+
if (options.outputFormat === 'json') {
|
|
97
|
+
const resultsPath = getTestResultsPath(options.agentName, 'unit');
|
|
98
|
+
fs.writeFileSync(resultsPath, JSON.stringify(testSuite, null, 2), 'utf8');
|
|
99
|
+
console.log(`Test results saved to ${resultsPath}`);
|
|
100
|
+
}
|
|
101
|
+
return testSuite;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Run integration tests
|
|
105
|
+
*/
|
|
106
|
+
export async function runIntegrationTests(options) {
|
|
107
|
+
const vitestArgs = [
|
|
108
|
+
'run',
|
|
109
|
+
'--reporter=verbose',
|
|
110
|
+
];
|
|
111
|
+
if (options.network) {
|
|
112
|
+
vitestArgs.push(`--env.network=${options.network}`);
|
|
113
|
+
}
|
|
114
|
+
if (options.outputFormat === 'json') {
|
|
115
|
+
vitestArgs.push('--reporter=json');
|
|
116
|
+
}
|
|
117
|
+
vitestArgs.push('tests/integration');
|
|
118
|
+
const result = await execa('npx', ['vitest', ...vitestArgs], {
|
|
119
|
+
reject: false,
|
|
120
|
+
timeout: 300_000,
|
|
121
|
+
});
|
|
122
|
+
const testSuite = parseVitestOutput(result.stdout);
|
|
123
|
+
if (options.outputFormat === 'json') {
|
|
124
|
+
const resultsPath = getTestResultsPath(options.agentName, 'integration');
|
|
125
|
+
fs.writeFileSync(resultsPath, JSON.stringify(testSuite, null, 2), 'utf8');
|
|
126
|
+
console.log(`Test results saved to ${resultsPath}`);
|
|
127
|
+
}
|
|
128
|
+
return testSuite;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Run load tests
|
|
132
|
+
*/
|
|
133
|
+
export async function runLoadTests(config) {
|
|
134
|
+
const errors = {};
|
|
135
|
+
let totalRequests = 0;
|
|
136
|
+
let successfulRequests = 0;
|
|
137
|
+
let failedRequests = 0;
|
|
138
|
+
const responseTimes = [];
|
|
139
|
+
const startTime = Date.now();
|
|
140
|
+
const endTime = startTime + (config.duration * 1000);
|
|
141
|
+
const interval = config.duration * 1000 / (config.concurrency * 10);
|
|
142
|
+
const requestPromises = [];
|
|
143
|
+
for (let i = 0; i < config.concurrency * 10; i++) {
|
|
144
|
+
if (Date.now() >= endTime)
|
|
145
|
+
break;
|
|
146
|
+
const startTimeMs = Date.now();
|
|
147
|
+
const request = execa('npx', ['icp', 'canister', 'call', config.canisterId, config.method, ...(config.args ? [config.args] : [])], {
|
|
148
|
+
reject: false,
|
|
149
|
+
timeout: 30_000,
|
|
150
|
+
});
|
|
151
|
+
const requestPromise = request.then((result) => {
|
|
152
|
+
const responseTime = Date.now() - startTimeMs;
|
|
153
|
+
if (result.exitCode === 0) {
|
|
154
|
+
return { success: true, responseTime };
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
const error = result.stderr || 'Unknown error';
|
|
158
|
+
errors[error] = (errors[error] || 0) + 1;
|
|
159
|
+
return { success: false, responseTime, error };
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
requestPromises.push(requestPromise);
|
|
163
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
164
|
+
}
|
|
165
|
+
const results = await Promise.all(requestPromises);
|
|
166
|
+
for (const result of results) {
|
|
167
|
+
totalRequests++;
|
|
168
|
+
if (result.success) {
|
|
169
|
+
successfulRequests++;
|
|
170
|
+
responseTimes.push(result.responseTime);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
failedRequests++;
|
|
174
|
+
if (result.error) {
|
|
175
|
+
errors[result.error] = (errors[result.error] || 0) + 1;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const actualDuration = (Date.now() - startTime) / 1000;
|
|
180
|
+
const requestsPerSecond = totalRequests / actualDuration;
|
|
181
|
+
const sortedTimes = responseTimes.sort((a, b) => a - b);
|
|
182
|
+
const minResponseTime = sortedTimes[0] || 0;
|
|
183
|
+
const maxResponseTime = sortedTimes[sortedTimes.length - 1] || 0;
|
|
184
|
+
const avgResponseTime = responseTimes.length > 0
|
|
185
|
+
? responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length
|
|
186
|
+
: 0;
|
|
187
|
+
const percentiles = {
|
|
188
|
+
p50: sortedTimes[Math.floor(sortedTimes.length * 0.5)] || 0,
|
|
189
|
+
p90: sortedTimes[Math.floor(sortedTimes.length * 0.9)] || 0,
|
|
190
|
+
p95: sortedTimes[Math.floor(sortedTimes.length * 0.95)] || 0,
|
|
191
|
+
p99: sortedTimes[Math.floor(sortedTimes.length * 0.99)] || 0,
|
|
192
|
+
};
|
|
193
|
+
return {
|
|
194
|
+
totalRequests,
|
|
195
|
+
successfulRequests,
|
|
196
|
+
failedRequests,
|
|
197
|
+
requestsPerSecond,
|
|
198
|
+
avgResponseTime,
|
|
199
|
+
minResponseTime,
|
|
200
|
+
maxResponseTime,
|
|
201
|
+
percentiles,
|
|
202
|
+
errors,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Run tests based on options
|
|
207
|
+
*/
|
|
208
|
+
export async function runTests(options) {
|
|
209
|
+
switch (options.testType) {
|
|
210
|
+
case 'unit':
|
|
211
|
+
return runUnitTests(options);
|
|
212
|
+
case 'integration':
|
|
213
|
+
return runIntegrationTests(options);
|
|
214
|
+
case 'load-test':
|
|
215
|
+
if (!options.concurrency) {
|
|
216
|
+
throw new Error('Concurrency is required for load tests');
|
|
217
|
+
}
|
|
218
|
+
if (!options.loadDuration) {
|
|
219
|
+
throw new Error('Load duration is required for load tests');
|
|
220
|
+
}
|
|
221
|
+
throw new Error('Load test requires specific LoadTestConfig');
|
|
222
|
+
default:
|
|
223
|
+
throw new Error(`Unknown test type: ${options.testType}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=local-runner.js.map
|