[package]
name = "agv"
version = "0.2.2"
edition = "2024"
rust-version = "1.85"
description = "Create and manage QEMU VMs for AI agents"
license = "MIT OR Apache-2.0"
authors = ["Einar Fløystad Dørum <einarfd@mailthief.com>"]
repository = "https://github.com/einarfd/agentverk"
homepage = "https://github.com/einarfd/agentverk"
readme = "README.md"
keywords = ["qemu", "vm", "cloud-init", "agent", "kvm"]
categories = ["command-line-utilities", "development-tools", "virtualization"]

[dependencies]
anstream = "0.6"
anstyle = "1"
anyhow = "1"
base64 = "0.22"
clap = { version = "4", features = ["derive"] }
futures-util = "0.3"
indicatif = "0.17"
reqwest = { version = "0.12", default-features = false, features = ["stream", "rustls-tls"] }
rustix = { version = "1", features = ["process"] }
serde = { version = "1", features = ["derive"] }
sha2 = "0.10"
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "process", "io-util", "fs", "net", "sync", "signal"] }
toml = "0.8"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }

[dev-dependencies]
assert_cmd = "2"
predicates = "3"
serial_test = "3"
tempfile = "3"

[lints.rust]
unsafe_code = "forbid"

[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
# Force the use of `#[expect(clippy::foo, reason = "...")]` instead of
# `#[allow(clippy::foo)]`. expect requires the lint to actually fire, so
# stale suppressions get caught automatically; reason makes every
# suppression self-documenting.
allow_attributes = "warn"
allow_attributes_without_reason = "warn"

[profile.release]
lto = true
codegen-units = 1
strip = true
