[workspace]
members = [".", "src-tauri"]

[package]
name = "epic-harness"
version = "0.4.1"
edition = "2024"
rust-version = "1.85.0"
description = "6 commands · auto skills · self-evolving Claude Code harness"
license = "Apache-2.0"
repository = "https://github.com/epicsagas/epic-harness"
homepage = "https://github.com/epicsagas/epic-harness"
readme = "README.md"
keywords = ["claude-code", "plugin", "agent", "harness", "ai"]
categories = ["command-line-utilities", "development-tools"]
exclude = ["ref/", "tests/", ".harness/", "hooks/bin/"]

[[bin]]
name = "epic-harness"
path = "src/main.rs"

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

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

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
regex = "1"
crossterm = { version = "0.29", features = ["events"] }
serde_yaml = "0.9"
toml = "1.1"
uuid = { version = "1", features = ["v4"] }
tiny_http = "0.12"
rusqlite = { version = "0.39", features = ["bundled", "vtab"] }

# harness-mem axum server (M1)
axum = { version = "0.8", features = ["macros"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "net"] }
tower-http = { version = "0.6", features = ["cors"] }

[dev-dependencies]
tempfile = "3"
serial_test = "3"
axum-test = "20"

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/epic-harness-{ target }.tar.xz"
pkg-fmt = "txz"
bin-dir = "epic-harness-{ target }/{ bin }"

[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/epic-harness-{ target }.zip"
pkg-fmt = "zip"
bin-dir = "epic-harness-{ target }/epic-harness.exe"

[profile.release]
opt-level = "s"
lto = true
strip = true

# ---------------------------------------------------------------------------
# Build optimizations
# ---------------------------------------------------------------------------

[profile.dev]
opt-level = 0
debug = 1

# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"

[profile.release.package."*"]
opt-level = 3
codegen-units = 4
