112 lines
4.6 KiB
TOML
112 lines
4.6 KiB
TOML
[package]
|
|
name = "wifi-densepose-sensing-server"
|
|
version = "0.3.1"
|
|
edition.workspace = true
|
|
description = "Lightweight Axum server for WiFi sensing UI with RuVector signal processing"
|
|
license.workspace = true
|
|
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
|
|
repository.workspace = true
|
|
documentation = "https://docs.rs/wifi-densepose-sensing-server"
|
|
keywords = ["wifi", "sensing", "server", "websocket", "csi"]
|
|
categories = ["web-programming::http-server", "science"]
|
|
readme = "README.md"
|
|
|
|
[lib]
|
|
name = "wifi_densepose_sensing_server"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "sensing-server"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Web framework
|
|
axum = { workspace = true }
|
|
tower-http = { version = "0.6", features = ["fs", "cors", "set-header"] }
|
|
tokio = { workspace = true, features = ["full", "process"] }
|
|
futures-util = "0.3"
|
|
ruvector-mincut = { workspace = true }
|
|
|
|
# Serialization
|
|
serde = { workspace = true }
|
|
serde_json.workspace = true
|
|
|
|
# Logging
|
|
tracing.workspace = true
|
|
tracing-subscriber = { workspace = true }
|
|
|
|
# Time
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# CLI
|
|
clap = { workspace = true }
|
|
|
|
# Multi-BSSID WiFi scanning pipeline (ADR-022 Phase 3)
|
|
wifi-densepose-wifiscan = { version = "0.3.0", path = "../wifi-densepose-wifiscan" }
|
|
|
|
# Signal processing with RuvSense pose tracker (accuracy sprint).
|
|
# default-features = false drops the optional ndarray-linalg/BLAS chain so that
|
|
# `--no-default-features` at the workspace root can produce a Windows-friendly
|
|
# build without vcpkg/openblas (issue #366, #415).
|
|
wifi-densepose-signal = { version = "0.3.1", path = "../wifi-densepose-signal", default-features = false }
|
|
|
|
# Hardware crate — SyncPacket decoder for ADR-110 §A0.12 mesh-aligned timestamps.
|
|
wifi-densepose-hardware = { version = "0.3.0", path = "../wifi-densepose-hardware" }
|
|
|
|
# midstream — real-time introspection / low-latency tap (ADR-099 D1).
|
|
# Two crates only, on purpose: scheduler / neural-solver / strange-loop are
|
|
# explicitly out of scope of ADR-099 (D5).
|
|
midstreamer-temporal-compare = "0.2" # DTW / LCS / Edit-Distance pattern matching
|
|
midstreamer-attractor = "0.2" # Lyapunov + regime classification
|
|
|
|
# ADR-102: Edge Module Registry — fetch the canonical Cognitum cog catalog
|
|
# at `https://storage.googleapis.com/cognitum-apps/app-registry.json`,
|
|
# cache with TTL, surface via /api/v1/edge/registry. ureq is the smallest
|
|
# blocking HTTP client we can use without dragging a tokio HTTP stack in;
|
|
# rustls is enabled implicitly via the `tls` default feature.
|
|
ureq = { version = "2", default-features = false, features = ["tls", "json"] }
|
|
sha2 = "0.10"
|
|
thiserror = "1"
|
|
|
|
# ADR-115 §3.8 — MQTT publisher (HA-DISCO).
|
|
# Gated behind the `mqtt` feature so the default binary stays small for users
|
|
# who don't need Home Assistant integration. `rumqttc` is the chosen Rust MQTT
|
|
# client (ADR-115 §10 references). `rustls` is preferred over openssl on
|
|
# Windows to keep parity with the rest of the workspace (`ureq` above also
|
|
# uses rustls).
|
|
rumqttc = { version = "0.24", default-features = false, features = ["use-rustls"], optional = true }
|
|
|
|
[features]
|
|
default = []
|
|
# Enables the ADR-115 §2 MQTT auto-discovery publisher. Without this feature
|
|
# all `--mqtt-*` CLI flags still parse (cli.rs declares them unconditionally),
|
|
# but enabling `--mqtt` at runtime logs a `WARN` and the publisher is a no-op.
|
|
mqtt = ["dep:rumqttc"]
|
|
# ADR-115 §3.11 — Matter Bridge (HA-FABRIC). Same gating principle: flags
|
|
# parse unconditionally; the bridge is a no-op without this feature.
|
|
# matter-rs is added in P7; intentionally absent in P1 to keep the dep
|
|
# surface small until the SDK choice is validated.
|
|
matter = []
|
|
|
|
# 4-stage vital signs pipeline (IIR + autocorrelation) — issue #44 / ADR-045.
|
|
wifi-densepose-vitals = { version = "0.3.0", path = "../wifi-densepose-vitals" }
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.10"
|
|
# `tower::ServiceExt::oneshot` for in-process Router tests (bearer_auth).
|
|
tower = { workspace = true }
|
|
# ADR-115 P9 — micro-benchmarks for MQTT hot paths + semantic bus.
|
|
# Heavy dep tree (~80 transitive crates) so it's dev-only; benches live
|
|
# behind --features mqtt because they bench the mqtt module.
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
# ADR-115 P9 — property-based fuzzing for the wire-boundary security
|
|
# audit. Catches edge cases the example-based unit tests would miss
|
|
# (random Unicode, control chars, etc.). Pinned to a small version that
|
|
# doesn't pull in proptest-derive (we don't need it).
|
|
proptest = { version = "1.5", default-features = false, features = ["std"] }
|
|
|
|
[[bench]]
|
|
name = "mqtt_throughput"
|
|
harness = false
|
|
required-features = ["mqtt"]
|