[package]
name = "kanade-agent"
description = "Windows-side resident daemon for the kanade endpoint-management system. Subscribes to commands.* over NATS, runs scripts, publishes WMI inventory + heartbeats, watches for self-updates"
readme = "../../README.md"
version.workspace      = true
edition.workspace      = true
rust-version.workspace = true
license.workspace      = true
repository.workspace   = true
homepage.workspace     = true
authors.workspace      = true
keywords.workspace     = true
categories.workspace   = true

[dependencies]
kanade-shared = { path = "../kanade-shared", version = "0.11.3" }

anyhow     = { workspace = true }
async-nats = { workspace = true }
bytes      = { workspace = true }
chrono     = { workspace = true }
clap       = { workspace = true }
futures    = { workspace = true }
humantime  = { workspace = true }
rand       = { workspace = true }
serde      = { workspace = true }
serde_json = { workspace = true }
sha2       = { workspace = true }
tokio      = { workspace = true }
tracing    = { workspace = true }
tracing-appender   = { workspace = true }
tracing-subscriber = { workspace = true }
uuid       = { workspace = true }

[target.'cfg(target_os = "windows")'.dependencies]
wmi = "0.18"
# SCM (Service Control Manager) integration. Without this the agent
# runs under sc.exe but never calls StartServiceCtrlDispatcher, so
# Windows times out after 30 s and marks the service "did not respond"
# (Event ID 7009). The crate provides the dispatcher + control-handler
# scaffolding plus the typed status struct (Running / Stopped + accepted
# control codes) that SCM expects.
windows-service = "0.8"
