[package]
name = "rtb-ai"
description = "Rust Tool Base — unified AI client for Claude, OpenAI, Gemini, and OpenAI-compatible endpoints."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
readme.workspace = true
homepage.workspace = true
documentation.workspace = true
categories.workspace = true
keywords.workspace = true

[lints]
workspace = true

[dependencies]
rtb-app = { path = "../rtb-app", version = "0.5.4" }
rtb-error = { path = "../rtb-error", version = "0.5.4" }
rtb-redact = { path = "../rtb-redact", version = "0.5.4" }
rtb-credentials = { path = "../rtb-credentials", version = "0.5.4" }

# Multi-provider chat client — covers OpenAI / Gemini / Ollama /
# OpenAI-compatible endpoints.
genai = { workspace = true }

# Direct Anthropic Messages API path (cache, thinking, citations) +
# the base HTTP client for streaming/extracting bytes.
reqwest = { workspace = true }
url = { workspace = true }

# Async + stream plumbing.
tokio = { workspace = true }
async-trait = { workspace = true }
futures-util = { workspace = true }
bytes = { workspace = true }

# Serde + structured-output validation.
serde = { workspace = true }
serde_json = { workspace = true }
schemars = { workspace = true }
jsonschema = { workspace = true }

# Errors + diagnostics.
miette = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }

# Secrets — `Config::api_key` is `SecretString` end-to-end.
secrecy = { workspace = true }

[dev-dependencies]
tokio = { workspace = true }
wiremock = { workspace = true }
serde = { workspace = true, features = ["derive"] }
