[workspace]
members = [
    "shared/rust-api/shared-api-lib",
    "shared/rust-tui",
    "shared/rust",
    "core/crates/syntaxis",
    "core/crates/syntaxis-bridge",
    "core/crates/api",
    "core/crates/tui",
    "core/crates/cli",
    "core/crates/client",
    "core/crates/shared",
    "core/crates/vapora",
]
# "core/crates/syntaxis-dashboard", # replaced by leptos dashboard-client

resolver = "2"

[workspace.package]
version = "0.1.0"
edition = "2021"
rust-version = "1.75"
authors = ["syntaxis contributors"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/syntaxis/core"

[workspace.dependencies]
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.9"
uuid = { version = "1.18", features = ["v4", "serde"] }

# Error handling
thiserror = "2.0"
anyhow = "1.0"

# Async runtime
tokio = { version = "1.48", features = ["full"] }
async-trait = "0.1"
futures = "0.3"

# Web framework
axum = { version = "0.8", features = ["ws"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["trace", "cors", "fs"] }
tokio-rustls = "0.26"
rustls = "0.23"
rustls-pemfile = "2.2"

# HTTP client
reqwest = { version = "0.12", features = ["json"] }

# Leptos (WASM frontend)
leptos = { version = "0.8.12", default-features = false, features = ["csr"] }
leptos_router = { version = "0.8.9", default-features = false }
leptos_meta = { version = "0.8.5", default-features = false }
wasm-bindgen = "0.2"
gloo-net = { version = "0.6" }
web-sys = "0.3"

# CLI
clap = { version = "4.5", features = ["derive"] }
clap_complete = "4.5"
colored = "3.0"
prettytable-rs = "0.10"
inquire = "0.9"

# TUI
ratatui = { version = "0.30.0-beta.0", features = ["all-widgets"] }
crossterm = { version = "0.29", features = ["serde"] }
palette = { version = "0.7", features = ["serializing"] }

# Database
sqlx = { version = "0.8", features = ["runtime-tokio-native-tls", "sqlite", "macros"] }
sqlx-sqlite = "0.8"
surrealdb = { version = "2.3", features = ["kv-mem", "kv-rocksdb"] }
serde_bytes = "0.11"

# Logging/Tracing
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Date/time
chrono = { version = "0.4", features = ["serde"] }

# File operations
camino = "1.2"
walkdir = "2.5"

# Templating
handlebars = "6.3"

# Utilities
indexmap = "2.12"
regex = "1.12"
moka = { version = "0.12", features = ["future"] }
tokio-tungstenite = "0.28"
jsonwebtoken = { version = "10.2", features = ["aws_lc_rs"] }
once_cell = "1.21"
prometheus = { version = "0.14", features = ["process"] }
async-nats = "0.45"
rand_core = "0.6"
rand = "0.8"

# Dev dependencies
tokio-test = "0.4"
tempfile = "3.23"
assert_cmd = "2.1"
predicates = "3.1"
criterion = { version = "0.7", features = ["html_reports"] }
mockito = "1.6"

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true

[profile.dev]
opt-level = 0
