rch 2.1.21

Remote Compilation Helper - PreToolUse hook CLI
[package]
name = "rch"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
readme.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Remote Compilation Helper - PreToolUse hook CLI"

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

[dependencies]
rch-common = { workspace = true, features = ["rich-ui"] }
rch-telemetry = { path = "../rch-telemetry", version = "2.1.0" }
# RABS B002: the invocation recorder emits B001 corpus records from the
# live hook path. Zero-dependency schema crate.
rabs-protocol = { path = "../rabs-protocol", version = "2.1.0" }
rabs-key = { path = "../rabs-key", version = "2.1.0" }
rabs-cas = { path = "../rabs-cas", version = "2.1.0" }
# Clean-overlay archive materialization (transfer.rs) uses tempfile at
# RUNTIME since bd-glivu's per-attempt retry fix; dev-dependencies alone
# left `cargo check -p rch` broken.
tempfile = "3.25.0"
serde = { workspace = true }
serde_json = { workspace = true }
schemars = { workspace = true }
toon-rust = { workspace = true }
tokio = { workspace = true }
clap = { workspace = true }
clap_complete = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
miette = { workspace = true }
toml = { workspace = true }
directories = { workspace = true }
blake3 = { workspace = true }
shellexpand = "3.1.1"
dirs = { workspace = true }
urlencoding = "2.1.3"
colored = "3.1.1"
unicode-width = { workspace = true }
is-terminal = "0.4.17"
terminal_size = "0.4.4"
regex = "1"
glob = "0.3"
indicatif = { version = "0.18.4", features = ["tokio"] }
chrono = { workspace = true, features = ["serde"] }
uuid = { workspace = true }
flate2 = { workspace = true }
tar = { workspace = true }
zip = { workspace = true }

# Update system dependencies
reqwest = { version = "0.13.5", default-features = false, features = ["json", "rustls"] }
sha2 = "0.11.0"
shell-escape = "0.1.5"
shell-words = "1.1.0"

# State detection dependencies
which = "8.0.6"
# Release authenticity for `rch update` (bd-oxxnk): verifies the `.minisig`
# dsr publishes beside every archive against a pinned public key. Pure Rust,
# no dependencies, by the minisign author.
minisign-verify = "0.3.0"

# LRU cache for classification decisions
lru = "0.18.4"

# Async stream utilities for parallel operations
futures = "0.3.34"

# Markdown rendering
pulldown-cmark = { workspace = true }

# Rich terminal output (optional)
rich_rust = { workspace = true, optional = true }

# TUI (Terminal User Interface) — FrankenTUI native stack
ftui = { workspace = true }
ftui-core = { workspace = true }
ftui-render = { workspace = true }
ftui-style = { workspace = true }
ftui-text = { workspace = true }
ftui-layout = { workspace = true }
ftui-widgets = { workspace = true }
ftui-tty = { workspace = true }
ftui-backend = { workspace = true }

# Interactive CLI prompts
dialoguer = { workspace = true }
console = { workspace = true }

[target.'cfg(unix)'.dependencies]
# Reuse the locked safe syscall API for descriptor-bound job journal reads.
rustix = { version = "1.1.5", default-features = false, features = ["fs", "process", "std"] }

[features]
default = ["rich-ui"]
rich-ui = ["rich_rust"]
true-e2e = []

[dev-dependencies]
tempfile = "3.25.0"
proptest = "1.11.0"
insta = "1.47.2"
serial_test = "4.0.1"

[[test]]
name = "true_e2e"
path = "../tests/true_e2e/mod.rs"
required-features = ["true-e2e"]

[[test]]
name = "true_e2e_ssh"
path = "../tests/true_e2e/ssh_tests.rs"
required-features = ["true-e2e"]

[lints.rust]
unsafe_code = "forbid"