[package] name = "buzz-cli" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true repository.workspace = true description = "Agent-first CLI for Buzz relay" [lib] name = "buzz_cli" path = "src/lib.rs" [[bin]] name = "buzz" path = "src/main.rs" [dependencies] # CLI argument parsing — derive macros + env var support (BUZZ_API_TOKEN auto-wired) clap = { version = "4", features = ["derive", "env"] } # HTTP client — async REST calls to the relay reqwest = { workspace = true, features = ["json"] } # Async runtime — tokio macros + multi-thread for reqwest tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } # Serialization — JSON body building and response passthrough serde = { workspace = true } serde_json = { workspace = true } # Structured error types with exit code mapping thiserror = { workspace = true } # Nostr event signing — used in `buzz auth`, auto-mint, and signed event writes nostr = { workspace = true } # UUID parsing for validate_uuid + event building uuid = { workspace = true } # RFC3339 observer timestamps for owner-reviewed agent draft requests chrono = { workspace = true } # Typed event builders for all write operations buzz-sdk = { workspace = true } buzz-core = { workspace = true } # Base64 encoding — NIP-98 event serialization for Authorization header base64 = "0.22" # SHA-256 — NIP-98 payload hash tag, Blossom file hash, mem patch base-hash sha2 = "0.11" # Unified-diff parser and strict applier — `mem patch` diffy = "0.5" # Hex encoding — SHA-256 hash output for Blossom uploads hex = { workspace = true } # Byte buffers returned by authenticated media downloads bytes = "1" # MIME type detection via magic bytes — file upload validation infer = "0.19" # URL parsing — extract server domain for Blossom auth tag url = { workspace = true } # Persona pack parsing, validation, and resolution buzz-persona = { path = "../buzz-persona" } # Platform app-data dir resolution — locates the desktop app's # channel-templates.json store for `channels create --template` dirs = "6" # WebSocket client — ephemeral event publish (kind:20001 is WS-only on the relay) buzz-ws-client = { path = "../buzz-ws-client" } # Explicit rustls dep with ring provider — required to install the process-level # CryptoProvider at startup. Without this the standalone `buzz` binary panics when # a multi-package release build (buzz-acp + buzz-dev-mcp + buzz-cli in one cargo # invocation) unifies both ring and aws-lc-rs features, leaving rustls unable to # auto-select a provider. See crates/buzz-acp/Cargo.toml for the same dependency. rustls = { version = "0.23", default-features = false, features = ["ring", "std"] } # Random number generation — full jitter for exponential backoff in with_retry rand = { workspace = true } [dev-dependencies] # Scratch files for channel-templates.json fixtures in tests tempfile = "3" # Minimal HTTP test server for retry/policy integration tests axum = { workspace = true }