[package]
name = "assay-core"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
readme.workspace = true
description = "High-performance evaluation framework for LLM agents (Core)"

[features]
default = ["discovery", "kill-switch"]
experimental = []
discovery = ["dep:sysinfo", "dep:dirs"]
kill-switch = ["dep:nix", "dep:sysinfo"]
kill-switch-capture = ["kill-switch", "dep:procfs"]
runtime-monitor = []

[dependencies]
assay-common = { path = "../assay-common", version = "2.0.0" }
anyhow = "1"
async-trait = "0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
thiserror = "1.0"
tracing = "0.1"
uuid = { version = "1.0", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
sha2 = "0.10"
rusqlite = { version = "0.31", features = ["bundled"] }
tokio = { version = "1", features = ["sync", "time", "macros", "rt-multi-thread"] }
reqwest = { version = "0.12.26", default-features = false, features = ["json", "rustls-tls"] }
hex = "0.4.3"
md5 = "0.8.0"
strsim = "0.11.1"
serde_ignored = "0.1.14"
jsonschema = "0.19"
regex = "1.5"
tempfile = "3.23.0"
globset = "0.4"

# Discovery dependencies
sysinfo = { version = "0.30", optional = true }
dirs = { version = "5", optional = true }
nix = { version = "0.27", features = ["signal", "process"], optional = true }
schemars = "1.2.0"

# Unix-specifics for Kill Switch P0
# nix moved to main dependencies to satisfy dep:nix feature
[target.'cfg(unix)'.dependencies]
nix = { version = "0.27", features = ["fs"] }
libc = "0.2"

# Linux-specifics for process inspection
[target.'cfg(target_os = "linux")'.dependencies]
procfs = { version = "0.16", optional = true }

[dev-dependencies]
tempfile = "3.23.0"
serial_test = "3"
rusqlite = { version = "0.31", features = ["bundled"] }
