[package]
name = "sipp-rs"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Unified Rust library for extensible Sipp inference"
readme = "README.md"
keywords = ["ai", "llm", "inference", "gguf"]
categories = ["api-bindings", "science"]

[lib]
name = "sipp"

[features]
default = ["gateway", "providers"]
gateway = ["dep:futures-util"]
providers = ["dep:async-trait", "dep:bytes", "dep:futures-util"]
backend-dl = ["sipp-sys/backend-dl"]
cuda = ["sipp-sys/cuda"]
metal = ["sipp-sys/metal"]
vulkan = ["sipp-sys/vulkan"]
openmp = ["sipp-sys/openmp"]

[dependencies]
async-trait = { version = "0.1", optional = true }
bytes = { version = "1", optional = true }
sipp-sys.workspace = true
cxx.workspace = true
futures.workspace = true
futures-channel.workspace = true
futures-core.workspace = true
futures-util = { version = "0.3", optional = true }
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
thiserror.workspace = true

[target.'cfg(not(target_family = "wasm"))'.dependencies]
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
tokio = { workspace = true, features = [
    "rt",
    "net",
    "time",
    "sync",
] }

[dev-dependencies]
anyhow.workspace = true
async-trait = "0.1"
futures.workspace = true
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "test-util", "time"] }
wiremock = "0.6"
