[package]
name = "batty-cli"
version = "0.11.18"
default-run = "batty"
edition = "2024"
rust-version = "1.85"
description = "Supervised agent execution for software teams"
license = "MIT"
repository = "https://github.com/battysh/batty"
homepage = "https://github.com/battysh/batty"
readme = "README.md"
keywords = ["ai-agent", "tmux", "automation", "supervisor", "llm"]
categories = ["command-line-utilities", "development-tools"]
exclude = [
    ".agents/",
    ".batty/",
    ".batty-target/",
    ".claude/",
    ".github/",
    ".video/",
    "assets/*.png",
    "assets/*.jpg",
    "assets/*.jpeg",
    "assets/*.gif",
    "assets/social/",
    "docs/",
    "examples/",
    "/grafana/",
    "phase-summary.md",
    "planning/",
    "review-packet.md",
    "scripts/",
    "target/",
    "target-worker2/",
    "tasks/",
    "tests/",
    "demo.tape",
]

[[bin]]
name = "batty"
path = "src/main.rs"
test = false

[lib]
doctest = false

[dependencies]
# CLI
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
dialoguer = "0.11"

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "1"
serde_yaml = "0.9"

# Unique IDs
uuid = { version = "1", features = ["v4"] }

# Maildir-based inbox messaging
maildir = "0.6"

# HTTP client (blocking) — Telegram Bot API
ureq = { version = "2", features = ["json"] }

# Scheduling
cron = "0.15"
chrono = { version = "0.4", features = ["serde"] }

# Telemetry storage
rusqlite = { version = "0.39", features = ["bundled"] }

# Pattern matching
regex = "1"
sha2 = "0.10"

# PTY (agent shim)
portable-pty = "0.8"

# Virtual terminal emulator (agent shim screen classification)
vt100 = "0.15"

# Error handling
anyhow = "1"
thiserror = "2"

# Signal handling
ctrlc = "3"

# Unix process control (daemon kill)
[target.'cfg(unix)'.dependencies]
libc = "0.2"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

[features]
integration = []
shim-integration = []
shim-benchmark = []
live-agent = []
# Scenario-framework public test surface (ScenarioHooks + FakeShim).
# Enabled by `cargo test` automatically (`#[cfg(test)]` side of the gate)
# and by integration test binaries via
# `cargo test --features scenario-test`. Off in release builds.
scenario-test = []

[dev-dependencies]
tempfile = "3"
serial_test = "3"
proptest = "1"
proptest-state-machine = "0.8"
filetime = "0.2"
