mirror of
https://github.com/hanzoai/cli.git
synced 2026-10-30 15:00:27 +00:00
The front door tells a reader to run hanzo up, and the binary answered only hanzo node up — an unrecognised first word is taken as a task for the coding agent, so the reader did not get an error, they got something else entirely. Root Up dispatches to the same handler; both spellings run one implementation. The product commands are folded from the served document rather than kept beside it, so a command the document names is a command the binary answers.
54 lines
2.3 KiB
TOML
54 lines
2.3 KiB
TOML
[package]
|
|
name = "hanzo-cli"
|
|
version = "1.0.1"
|
|
edition = "2021"
|
|
authors = ["Hanzo AI"]
|
|
description = "Unified CLI for Hanzo AI development tools"
|
|
license = "MIT"
|
|
repository = "https://github.com/hanzoai/cli"
|
|
|
|
[[bin]]
|
|
name = "hanzo"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# `string` lets a command be named at runtime, which is what grafting the
|
|
# platform's served command document onto this tree needs (src/catalog.rs).
|
|
clap = { version = "4.5", features = ["derive", "env", "string"] }
|
|
tokio = { version = "1.36", features = ["full"] }
|
|
anyhow = "1.0"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
toml = "0.8"
|
|
dirs = "5.0"
|
|
colored = "2.1"
|
|
indicatif = "0.17"
|
|
dialoguer = "0.11"
|
|
reqwest = { version = "0.12", features = ["json", "gzip"] }
|
|
which = "6.0"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
tempfile = "3.10"
|
|
subprocess = "0.2"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# Cloud auth (HIP-0111 OIDC PKCE S256 + RFC 8628 device flow).
|
|
sha2 = "0.10" # PKCE S256 challenge
|
|
base64 = "0.22.1" # base64url (no pad) — PKCE + JWT claim decode
|
|
rand = "0.8" # OsRng for PKCE verifier + state + local wallet entropy
|
|
keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service"] } # OS keychain — secrets NEVER hit disk
|
|
webbrowser = "1" # open the IAM authorize URL
|
|
qr2term = "0.3.3" # terminal QR of the device verification link
|
|
|
|
# Local / imported wallets — HD derivation + EVM address. Cloud-custody (KMS/MPC)
|
|
# wallets need NONE of this; these are only for offline `wallet create --local`
|
|
# and `wallet import`. Pure-Rust RustCrypto; secrets live in the OS keychain.
|
|
bip39 = { package = "tiny-bip39", version = "1" } # BIP-39 mnemonic (all word counts) -> seed
|
|
bip32 = "0.5" # secp256k1 BIP-32 HD derivation from a seed
|
|
k256 = "0.13" # secp256k1 (matches bip32) — public key -> EVM address
|
|
sha3 = "0.10" # Keccak-256 for EVM address
|
|
|
|
[dev-dependencies]
|
|
assert_cmd = "2.0"
|
|
predicates = "3.1"
|