[workspace]
members = [
    "crates/garudust-core",
    "crates/garudust-transport",
    "crates/garudust-tools",
    "crates/garudust-memory",
    "crates/garudust-agent",
    "crates/garudust-platforms",
    "crates/garudust-cron",
    "crates/garudust-gateway",
    "bin/garudust",
    "bin/garudust-server",
]
resolver = "2"

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

[workspace.package]
version      = "0.9.0"
edition      = "2021"
authors      = ["Garudust"]
license      = "MIT"
repository   = "https://github.com/garudust-org/garudust-agent"
homepage     = "https://garudust-org.github.io/garudust-agent/"
rust-version = "1.87"

[workspace.dependencies]
# Async runtime
tokio        = { version = "1", features = ["full"] }
tokio-stream = { version = "0.1", features = ["sync"] }
async-trait  = "0.1"
futures      = "0.3"
async-stream = "0.3"

# HTTP
axum         = { version = "0.8", features = ["ws", "macros"] }
reqwest      = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
tower        = { version = "0.5", features = ["limit", "util"] }
tower-http   = { version = "0.6", features = ["cors", "trace"] }

# Serialization
serde        = { version = "1", features = ["derive"] }
serde_json   = "1"
serde_yaml   = "0.9"

# LLM
async-openai = "0.28"

# Database
rusqlite     = { version = "0.39", features = ["bundled"] }

# Error handling
anyhow  = "1"
thiserror = "2"

# Utilities
uuid      = { version = "1", features = ["v4"] }
chrono    = { version = "0.4", features = ["serde"] }
tracing   = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
dotenvy   = "0.15"
bytes     = "1"
parking_lot = "0.12"
dashmap   = "6"
hmac      = "0.13"
sha2      = "0.11"
base64    = "0.22"
hex       = "0.4"

# JSON Schema validation
jsonschema = { version = "0.46", default-features = false }

# Filesystem utilities
walkdir      = "2"
globset      = "0.4"
tempfile     = "3"
lopdf        = "0.38"
pdf-extract  = "0.10"

# File locking
fs4 = "1.1"

# Template engine
tera = "1"

# CLI / TUI
clap      = { version = "4", features = ["derive", "env"] }
ratatui   = { version = "0.30", features = ["unstable-rendered-line-info"] }
crossterm = "0.29"

# Cron
tokio-cron-scheduler = "0.15"

# Platform SDKs (optional flag set per-crate, not here)
teloxide  = { version = "0.17", default-features = false, features = ["macros", "rustls", "ctrlc_handler"] }
serenity  = { version = "0.12", default-features = false, features = ["default_no_backend", "rustls_backend"] }

# MCP
rmcp = { version = "1", features = ["client", "transport-child-process"] }

# Hot-reload
arc-swap = "1"
notify   = { version = "8", features = ["macos_fsevent"] }

# Rate limiting
tower_governor = { version = "0.8", features = ["axum"] }

# Browser / CDP
chromiumoxide = { version = "0.8", default-features = false, features = ["tokio-runtime"] }

# Platform SDKs (Slack / Matrix)
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
matrix-sdk        = { version = "0.16", default-features = false, features = ["rustls-tls"] }
