Files
cli/Cargo.toml
zeekay b692102e8c Release 8.5.753 with CLI commands regenerated from the live API
CI reads the deployed public API document, but the local helper still fetched a private pinned YAML file. Generate from the public document consistently and refresh its digest, commands, and live evidence together.

Testing: workspace suite; corrected evidence provenance and reran CLI/spec regression tests successfully; strict clippy; spec-check; 1025 live probes found no absent coordinates, with 53 inconclusive responses.
Risk: medium; generated commands follow current API shapes and remove retired routes.
How to revert: revert this commit and install v8.5.752.
2026-10-20 01:59:31 -07:00

114 lines
5.3 KiB
TOML

[package]
name = "hanzo-cli"
version = "8.5.753"
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"
# genspec pulls the cloud command surface forward: it reads cloud's live route
# table over the wire and the authored master (YAML) from a hanzoai/openapi
# checkout. Both are MAINTAINER inputs — the shipped `hanzo` parses no YAML,
# fetches no spec and links no cloud code — so its parser is compiled only when
# the seam is run.
[[bin]]
name = "genspec"
path = "src/bin/genspec.rs"
required-features = ["maintainer"]
# driftgate is the GATE, not a generator: it reads the committed spec, the live
# route table and — where neither can answer — the running host, and it reads the
# built `hanzo` to ask what a person can actually reach. No YAML, no authored
# master, so CI runs it with nothing but a checkout, a build and the network.
[[bin]]
name = "driftgate"
path = "src/bin/driftgate.rs"
required-features = ["maintainer"]
# genproduct rewrites the committed command tree from the committed spec. It was
# auto-discovered from src/bin/ and so installed into every user PATH — where a
# bare (it parses no arguments) rewrote generated.rs inside the
# reader own cargo registry cache. It is a maintainer tool; it is gated like one.
[[bin]]
name = "genproduct"
path = "src/bin/genproduct.rs"
required-features = ["maintainer"]
# ONE gate for the three maintainer tools. A user installs the hanzo binary;
# genspec, driftgate and genproduct are how that binary's command tree is MADE,
# and a reader has no use for them. genproduct in particular parses no arguments,
# so a bare invocation rewrote generated.rs inside the caller's own registry cache.
[features]
maintainer = ["dep:serde_norway"]
# The two library crates the CLI is BUILT ON, each in its own crate so another
# consumer shares the exact same wire via a pinned git dependency — one source of
# truth, several consumers. `client` is the platform client itself: the act grant,
# the held outcome and the typed refusal live there, not in this binary.
[workspace]
members = ["crates/event", "crates/client"]
[dependencies]
hanzo-event = { path = "crates/event", version = "0.1.0" }
hanzo-client = { path = "crates/client", version = "0.1.0" }
# The coding-agent harness: `hanzo dev`, a bare `hanzo`, `hanzo desktop` and the
# session, target and kit clients all run it, with this CLI as its host
# (`commands::dev::Store`). Pinned by commit; a Gen release moves it.
hanzo-gen = { git = "https://github.com/hanzoai/gen", rev = "7846eed181a15047e5b1b3ec1a092a9a4d8ad82b" }
strsim = "0.11"
clap = { version = "4.5", features = ["derive", "env"] }
tokio = { version = "1.36", features = ["full"] }
anyhow = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_norway = { version = "0.9", optional = true } # genspec only — reads hanzoai/openapi's YAML master
toml = "0.8"
dirs = "5.0"
colored = "2.1"
dialoguer = "0.11"
reqwest = { version = "0.12", default-features = false, features = ["json", "gzip", "rustls-tls", "http2", "charset"] }
which = "6.0"
flate2 = "1.1" # vm bootstrap: gunzip the release tarball
tar = "0.4" # vm bootstrap: extract hanzo-vm from it
libc = "0.2" # SIGTERM/liveness for the local cloud host daemon
vm-measure = "2.0.3" # `hanzo up`: the boot measurement the vm reports, and the workload half we extend
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tempfile = "3.10"
chrono = { version = "0.4", features = ["serde"] }
ratatui = "0.29"
crossterm = "0.28"
# Cloud auth (HIP-0111 OIDC PKCE S256).
sha2 = "0.10" # PKCE S256 challenge
base64 = "0.22" # base64url (no pad)
rand = "0.8" # OsRng for PKCE verifier + state + local wallet entropy
# A scannable link, so signing a headless box in is a phone camera rather than
# 40 characters typed by hand. Terminal half-blocks, no image, no C.
qr2term = "0.3"
webbrowser = "1" # open the IAM authorize URL
# 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 `iam::token`'s store.
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"
libc = "0.2"
# Gen consumes `hanzo-client` from this repository by pinned commit. Building
# here, that git source IS `crates/client`, so it resolves to the path and one
# copy links.
[patch."https://github.com/hanzoai/cli"]
hanzo-client = { path = "crates/client" }