[package]
name = "skardi"
version.workspace = true
edition.workspace = true
description.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
license.workspace = true
readme = "README.md"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = []
onnx = ["dep:ort", "dep:ndarray", "dep:num_cpus"]
embedding = ["onnx", "candle", "gguf", "remote-embed"]
remote-embed = ["dep:reqwest"]
gguf = ["dep:llama-cpp-4"]
candle = ["dep:candle-core", "dep:candle-nn", "dep:candle-transformers", "dep:tokenizers"]

[dependencies]
# engine
anyhow = { workspace = true }
async-trait = { workspace = true }
chrono = { version = "0.4", features = ["serde"] }
datafusion = { workspace = true }
datafusion-common = { workspace = true }
serde = { workspace = true }
tokio = { workspace = true }
arrow = { workspace = true }
tracing = { workspace = true }
# pipeline
log = { workspace = true }
regex = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
# model
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"], optional = true }
ndarray = { version = "0.17", optional = true }
num_cpus = { version = "1.17.0", optional = true }
ort = { version = "2.0.0-rc.12", default-features = false, features = ["std", "ndarray", "download-binaries", "tls-rustls"], optional = true }
llama-cpp-4 = { version = "0.2", optional = true }
candle-core = { version = "0.8", optional = true }
candle-nn = { version = "0.8", optional = true }
candle-transformers = { version = "0.8", optional = true }
tokenizers = { version = "0.21", default-features = false, features = ["onig"], optional = true }
# sources
datafusion-federation = { workspace = true }
datafusion-table-providers = { workspace = true }
derivative = "2.2.0"
futures = { workspace = true }
hex = "0.4"
iceberg = { workspace = true }
iceberg-datafusion = { workspace = true }
iceberg-storage-opendal = { workspace = true }
lance = { workspace = true }
lance-index = { workspace = true }
mongodb = "3.1"
mysql_async = "0.36"
percent-encoding = "2.3"
redis = { version = "1.0.0-rc.2", default-features = false, features = ["cluster"] }
secrecy = "0.10"
pgvector = { version = "0.4", features = ["sqlx"] }
sqlx = { workspace = true }
sqlparser = "0.53"
thiserror = "2.0"
tokio-rusqlite = { workspace = true }
url = { workspace = true }
uuid = { workspace = true }

[dev-dependencies]
tokio-test = "0.4"
tempfile = { workspace = true }
redis-test = "0.13.0"
gguf-rs-lib = "0.2"
