[package]
name = "tabby"
version = "0.7.0-rc.0"
edition = "2021"

[features]
default = ["ee"]
ee = ["dep:tabby-webserver"]
cuda = ["llama-cpp-bindings/cuda"]
rocm = ["llama-cpp-bindings/rocm"]
experimental-http = ["dep:http-api-bindings"]

[dependencies]
tabby-common = { path = "../tabby-common" }
tabby-scheduler = { path = "../tabby-scheduler" }
tabby-download = { path = "../tabby-download" }
tabby-inference = { path = "../tabby-inference" }
axum.workspace = true
hyper = { workspace = true }
tokio = { workspace = true, features = ["full"] }
utoipa = { workspace = true, features = ["axum_extras", "preserve_order"] }
utoipa-swagger-ui = { version = "3.1", features = ["axum"] }
serde = { workspace = true }
serdeconv = { workspace = true }
serde_json = { workspace = true }
tower-http = { version = "0.4.0", features = ["cors", "timeout"] }
clap = { version = "4.3.0", features = ["derive"] }
lazy_static = { workspace = true }
strum = { version = "0.24", features = ["derive"] }
strfmt = "0.2.4"
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
opentelemetry = { version = "0.18.0", features = ["rt-tokio"] }
opentelemetry-otlp = "0.11.0"
axum-tracing-opentelemetry = "0.10.0"
tracing-opentelemetry = "0.18.0"
tantivy = { workspace = true }
anyhow = { workspace = true }
sysinfo = "0.29.8"
nvml-wrapper = "0.9.0"
http-api-bindings = { path = "../http-api-bindings", optional = true }      # included when build with `experimental-http` feature
async-stream = { workspace = true }
axum-streams = { version = "0.9.1", features = ["json"] }
minijinja = { version = "1.0.8", features = ["loader"] }
textdistance = "1.0.2"
regex.workspace = true
llama-cpp-bindings = { path = "../llama-cpp-bindings" }
futures.workspace = true
async-trait.workspace = true
tabby-webserver = { path = "../../ee/tabby-webserver", optional = true }
thiserror.workspace = true
chrono = "0.4.31"
axum-prometheus = "0.4.0"

[dependencies.uuid]
version = "1.3.3"
features = [
    "v4",                # Lets you generate random UUIDs
    "fast-rng",          # Use a faster (but still sufficiently random) RNG
    "macro-diagnostics", # Enable better diagnostics for compile-time UUIDs
]

[build-dependencies]
vergen = { version = "8.0.0", features = ["build", "git", "gitcl"] }

[dev-dependencies]
assert-json-diff = "2.0.2"
reqwest.workspace = true
serde-jsonlines = "0.5.0"
