[package]
name = "shellfirm"
description = "`shellfirm` will intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification, kinda like a captcha for your terminal."
version = "0.3.7"
edition = "2021"
authors = ["Elad-Kaplan <kaplan.elad@gmail.com>"]
license = "MIT"
readme = "../README.md"
repository = "https://github.com/kaplanelad/shellfirm"
homepage = "https://github.com/kaplanelad/shellfirm"
build = "build.rs"
[dependencies]
clap = { version = "4.5", features = ["cargo"], optional = true }
clap_complete = { version = "4.5", optional = true }
clap_complete_nushell = { version = "4.5", optional = true }
dirs = "6.0"
thiserror = "2"
serde = "1.0"
serde_yaml = "0.9"
serde_derive = "1.0"
serde_regex = "1.1"
regex = "1.12"
rand = "0.10"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
console = "0.16"
exitcode = "1.1"
requestty = "0.6"
wait-timeout = "0.2"
serde_json = "1.0"
reqwest = { version = "0.12", features = [
"json",
"rustls-tls",
"blocking",
], optional = true }
tokio = { version = "1", features = [
"rt",
"macros",
"time",
"io-std",
"io-util",
], optional = true }
uuid = { version = "1", features = ["v4"] }
[target.'cfg(unix)'.dependencies]
libc = "0.2"
nix = { version = "0.31", features = ["term"] }
rustix = { version = "1.0", features = ["termios"], optional = true }
[target.'cfg(windows)'.dependencies]
portable-pty = { version = "0.9", optional = true }
windows-sys = { version = "0.59", features = [
"Win32_System_Console",
"Win32_Foundation",
], optional = true }
[dev-dependencies]
insta = { version = "1.46", features = ["filters"] }
tree-fs = "0.2"
[build-dependencies]
[features]
default = ["all"]
cli = ["clap", "clap_complete", "clap_complete_nushell"]
llm = ["reqwest"]
mcp = ["tokio"]
ai = ["mcp", "llm"]
wrap = [
"nix/signal",
"nix/process",
"nix/poll",
"nix/fs",
"nix/ioctl",
"rustix",
"portable-pty",
"windows-sys",
]
all = ["cli", "llm", "mcp", "ai", "wrap"]
[[bin]]
name = "shellfirm"
required-features = ["cli"]