[package]
name = "cog-pose-estimation"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Cognitum Cog: 17-keypoint pose estimation from WiFi CSI. See ADR-100 (packaging) + ADR-101 (this Cog)."

[[bin]]
name = "cog-pose-estimation"
path = "src/main.rs"

[lib]
name = "cog_pose_estimation"
path = "src/lib.rs"

[dependencies]
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "signal", "time"] }
sha2 = "0.10"
hex = "0.4"
# Sensing-server subscriber over HTTP — kept minimal; no full reqwest dep
ureq = { version = "2", default-features = false, features = ["tls"] }
# Inference backend — Candle, CPU by default. The `cuda` feature gate
# below pulls in CUDA support on hosts that have it. Pinned to 0.9 to
# match the training script that produced pose_v1.safetensors.
candle-core = { version = "0.9", default-features = false }
candle-nn = { version = "0.9", default-features = false }
safetensors = "0.4"
# wifi-densepose-train re-exports the model types we need; depend by path
# inside the workspace.
wifi-densepose-train = { version = "0.3.1", path = "../wifi-densepose-train", default-features = false }

[dev-dependencies]
tempfile = "3"

[features]
default = []
# Use CUDA for inference on hosts with a CUDA-capable GPU. Off by
# default so CI on plain Linux/Windows boxes still builds; flip on for
# the GPU-dev path on ruvultra.
cuda = ["candle-core/cuda", "candle-nn/cuda"]
# Stub for the future Hailo HEF runtime path. The actual Hailo
# integration lives in the companion v0-appliance crate `cognitum-hailo`;
# this crate keeps a feature flag so the binary can compile without the
# Hailo SDK in CI.
hailo = []
