supercode-cli 0.4.6

supercode — a lightweight, fully-customizable AI coding agent CLI in Rust. Any model via OpenRouter; natively continues Claude Code and Codex sessions.
[package]
name = "supercode-cli"
description = "supercode — a lightweight, fully-customizable AI coding agent CLI in Rust. Any model via OpenRouter; natively continues Claude Code and Codex sessions."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "../../README.md"

[[bin]]
name = "supercode"
path = "src/main.rs"

# cargo-binstall: fetch the prebuilt binary from GitHub Releases when available.
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/supercode-{ target }.tar.gz"
bin-dir = "supercode-{ target }/{ bin }{ binary-ext }"
pkg-fmt = "tgz"

[dependencies]
supercode-core = { path = "../core", version = "=0.4.6" }
supercode-codex-frontend = { path = "../codex-frontend", version = "=0.4.6" }
supercode-opencode-frontend = { path = "../opencode-frontend", version = "=0.4.6" }
supercode-frontend-tui = { path = "../frontend-tui", version = "=0.4.6" }
tokio = { workspace = true }
anyhow = { workspace = true }
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
clap_mangen = "0.2"
serde_json = { workspace = true }
serde = { workspace = true }
toml = "0.8"
reqwest = { workspace = true }
base64 = "0.22"
rustyline = "14"
# Already resolved transitively (workspace-pinned, used by crates/bench) —
# promoting to a direct dep for termios-based hidden key input (UX-18) adds
# zero new crates to the dependency tree (Cargo.lock is unaffected).
libc = { workspace = true }
# P5-2: was dev-only (test mock providers); `attach_mcp`'s `McpToolAdapter`
# (wrapping a `Box<dyn Tool>` resource tool from `McpServerHandle`) is
# PRODUCTION code that needs the same `#[async_trait]` sugar — already
# resolved workspace-wide (Cargo.lock unaffected, same precedent as `libc`
# above), just promoted out of `[dev-dependencies]` since a single crate
# can't be both dev-only and a real dependency.
async-trait = { workspace = true }
# P5-4 (design §2 module 30 `tui`): the full-screen render/event-loop
# layer (`crates/cli/src/tui/`) — the ONLY place either crate depends on a
# terminal library; `crates/core`'s view-model stays terminal-free (see
# `crates/harness/src/tui/key.rs`'s doc comment). `crossterm` pinned to the
# exact minor `ratatui`'s own default `crossterm` backend
# (`ratatui-crossterm`) resolves, so there's one `crossterm` in the
# dependency tree, not two. Both MIT-licensed, cargo-deny-clean (see
# `deny.toml`'s license allow-list, which already includes MIT).
ratatui = { workspace = true }
crossterm = { workspace = true }
url = { workspace = true }
# D41: detect when `convert --out` is the input itself, a symlink, or a
# hard-link alias before a recoverable parse-loss path can overwrite the
# only copy of the corrupt source. Already present transitively via walkdir.
same-file = "1"
# Hash the externally installed stock Goose source entrypoint and its pinned
# dependency boundary before execution. Already present in Cargo.lock.
sha2 = "0.10"

[target.'cfg(windows)'.dependencies]
# UX-12 — Windows counterpart to the `libc` termios calls above:
# `hidden_input.rs`'s Console-API hidden-password read. Windows-only
# target dependency, so this adds nothing to Unix builds/Cargo.lock.
windows-sys = { version = "0.59", features = [
    "Win32_Foundation",
    "Win32_Security",
    "Win32_Security_Authorization",
    "Win32_Storage_FileSystem",
    "Win32_System_Console",
    "Win32_System_Threading",
] }