[package]
name = "oxide-browser-sh"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Self-healing AI-driven browser automation for Rust Oxide. Built on chromiumoxide with accessibility-tree-first targeting, an LLM-friendly feedback loop, and token-efficient Markdown extraction via oxide-compress."

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

[features]
# Default ships only the mock backend + AX/healing/extract logic. This keeps
# default builds slim — `chromiumoxide` and its substantial async-tungstenite
# / hyper-rustls / web-time / etc. transitive tree only compile when callers
# opt in via the `chromium` feature.
default = []
chromium = ["dep:chromiumoxide", "dep:futures"]
# Real-browser tests require Chromium / Chrome on PATH. They auto-enable the
# `chromium` feature too. Run with
# `cargo test -p oxide-browser-sh --features live-browser -- --ignored`.
live-browser = ["chromium"]

[dependencies]
tokio = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
async-trait = { workspace = true }
chromiumoxide = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
scraper = { workspace = true }

oxide-k = { path = "../oxide-k", version = "0.3.0" }
oxide-compress = { path = "../oxide-compress", version = "0.3.0" }

[dev-dependencies]
tokio = { workspace = true, features = ["test-util", "macros"] }
tracing-subscriber = { workspace = true }
