coverage-mcp 0.15.4

Local-first coverage time-series dashboard and MCP server
[package]
name = "coverage-mcp"
version = "0.15.4"
edition = "2024"
rust-version = "1.85"
description = "Local-first coverage time-series dashboard and MCP server"
license = "MIT"
repository = "https://github.com/appunni-m/coverage-mcp"
homepage = "https://github.com/appunni-m/coverage-mcp"
documentation = "https://docs.rs/coverage-mcp"
readme = "README.md"
keywords = ["coverage", "mcp", "duckdb", "testing", "rust"]
categories = ["development-tools", "command-line-utilities", "database"]
default-run = "coverage-mcp"
exclude = [
    "/.coverage-mcp/",
    "/.github/",
    "/AGENTS.md",
    "/CLAUDE.md",
    "/CONTRIBUTING.md",
    "/Makefile",
    "/docs/generated/",
    "/docs/releasing.md",
    "/docs/rust-migration-parity.md",
    "/evals/",
    "/scripts/",
    "/src/bin/mcp-evals.rs",
    "/src/bin/migration_status.rs",
    "/tests/",
]

[lib]
name = "coverage_mcp"
path = "src/lib.rs"

[[bin]]
name = "coverage-mcp"
path = "src/main.rs"

[[bin]]
name = "migration-status"
path = "src/bin/migration_status.rs"

[features]
default = ["bundled-duckdb"]
bundled-duckdb = ["duckdb/bundled"]

[dependencies]
base64 = "0.23.1"
chrono = { version = "0.4.44", default-features = false, features = ["serde", "clock"] }
clap = { version = "4.6.4", default-features = false, features = ["derive", "env", "std", "help", "usage", "error-context"] }
duckdb = { version = "1.10505.0", default-features = false, features = ["chrono", "r2d2"] }
form_urlencoded = "1.2.2"
fs2 = "0.4.3"
futures-util = { version = "0.3.33", default-features = false, features = ["alloc"] }
http-body-util = "0.1.3"
hyper = { version = "1.9.0", features = ["http1", "server"] }
hyper-util = { version = "0.1.20", features = ["server", "tokio"] }
quick-xml = "0.41.0"
r2d2 = "0.8.10"
rustc-demangle = "0.1.28"
serde = { version = "1.0.229", features = ["derive"] }
serde_json = "1.0.151"
sha2 = { version = "0.11.0", default-features = false }
tokio = { version = "1.52.3", features = ["io-std", "io-util", "macros", "net", "process", "rt-multi-thread", "signal", "sync", "time"] }
uuid = { version = "1.23.1", features = ["v4", "serde"] }
zstd = { version = "0.13.3", default-features = false }

[dev-dependencies]
tempfile = "3.27.0"

[profile.test]
# Full dependency debug info makes each DuckDB/Arrow integration-test link
# needlessly expensive. Keep line tables for actionable backtraces while
# bounding cold hosted-runner memory and link time.
debug = 1

[profile.release]
lto = "thin"
codegen-units = 1
strip = "symbols"

[lints.rust]
# Match the strict workspace policy used by production Rust projects: compiler
# correctness and dead-code regressions are hard errors, while documentation
# warnings remain visible to contributors and are denied by CI.
future_incompatible = { level = "deny", priority = -1 }
nonstandard_style = { level = "deny", priority = -1 }
unused = { level = "deny", priority = -1 }
unsafe_code = "deny"
dead_code = "deny"
missing_docs = "warn"

[lints.clippy]
all = { level = "warn", priority = -1 }
correctness = { level = "deny", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
unwrap_in_result = "deny"
todo = "deny"
# These compatibility-oriented lints are useful during focused cleanup but
# would make the existing storage/projection arithmetic non-buildable before
# checked arithmetic is introduced everywhere. Keep them visible locally via
# `cargo clippy` while the correctness/safety policy above remains hard.
arithmetic_side_effects = "allow"
cast_possible_truncation = "allow"
cast_sign_loss = "allow"
map_unwrap_or = "allow"
needless_collect = "allow"
needless_range_loop = "allow"
redundant_clone = "allow"
unnecessary_cast = "allow"
unnecessary_to_owned = "allow"