[package]
name = "kanade-shared"
description = "Shared wire types, NATS subject helpers, KV constants, YAML manifest schema, and teravars-backed config loader for the kanade endpoint-management system"
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]
anyhow     = { workspace = true }
async-nats = { workspace = true }
chrono     = { workspace = true }
croner     = { workspace = true }
humantime  = { workspace = true }
pelite     = { workspace = true }
schemars   = { workspace = true }
serde      = { workspace = true }
serde_json = { workspace = true }
# `Schedule.when` is an externally-tagged enum; serde_yaml 0.9 maps
# those to `!tag` YAML syntax by default, so the field rides
# `serde_yaml::with::singleton_map` to keep the operator-facing
# `when: { per_pc: once }` map shape (JSON output is unchanged —
# the same singleton map external tagging produces).
serde_yaml = { workspace = true }
serde_ignored = { workspace = true }
teravars   = { workspace = true }
thiserror  = { workspace = true }
tokio      = { workspace = true }
toml       = { workspace = true }
tracing    = { workspace = true }
uuid       = { workspace = true }

[target.'cfg(windows)'.dependencies]
winreg = { workspace = true }

[dev-dependencies]
# kv_cas_live.rs spawns a throwaway `nats-server -js` like the
# agent's offline_boot harness does.
portpicker = "0.1.1"
tempfile = "3.27.0"
