[workspace]
members = [".", "crates/embacle-mcp", "crates/embacle-server"]
[package]
name = "embacle"
version = "0.10.2"
edition = "2021"
license = "Apache-2.0"
description = "LLM runner library — wraps AI CLI tools and SDKs as pluggable LLM providers"
repository = "https://github.com/dravr-ai/dravr-embacle"
homepage = "https://github.com/dravr-ai/dravr-embacle"
documentation = "https://docs.rs/embacle"
keywords = ["llm", "cli", "ai", "claude", "gemini"]
categories = ["command-line-utilities", "api-bindings"]
readme = "README.md"
exclude = [".claude/", ".githooks/", ".github/", "scripts/", "AGENTS.md", "crates/"]
[features]
default = []
copilot-headless = ["dep:agent-client-protocol-schema", "tokio/sync"]
openai-api = ["dep:reqwest", "tokio/sync"]
[dependencies]
async-trait = "0.1"
bitflags = { version = "2", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tempfile = "3"
tokio = { version = "1.45", features = ["process", "io-util", "time", "rt", "rt-multi-thread", "macros", "fs"] }
tokio-stream = { version = "0.1", features = ["io-util"] }
tracing = "0.1"
which = "7"
agent-client-protocol-schema = { version = "0.11", optional = true }
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"], optional = true }
[dev-dependencies]
tokio = { version = "1.45", features = ["full", "test-util"] }
serde_json = "1.0"
[[example]]
name = "test_claude_e2e"
path = "examples/test_claude_e2e.rs"
[lints.rust]
unsafe_code = "deny"
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
missing_errors_doc = "allow"
must_use_candidate = "allow"
return_self_not_must_use = "allow"
redundant_pub_crate = "allow"
multiple_crate_versions = "allow"
unnecessary_literal_bound = "allow"