A bare String in a crate whose whole suite types validated names as hive_types::Ident, so a consumer had to re-derive at the boundary what every sibling field gets checked for free. Ident is strictly narrower than the store's charset — [a-z0-9-] against the [A-Za-z0-9._-] the users database allows, because that file holds humans too. Every agent name is a legal Ident by construction (creation parses one before the job is queued), so the narrowing costs real agents nothing. What it does mean is that a human hand-added to the agent group cannot be described as an agent: the reader omits that row and logs it, rather than failing the whole roster or quietly shrinking the answer. The REQUEST keeps its String. That side carries what a caller asked for, and validating it server-side is what lets a bad name be refused with a message instead of failing to deserialise.
25 lines
517 B
TOML
25 lines
517 B
TOML
[package]
|
|
name = "swarm-authelia-bridge"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
readme = "README.md"
|
|
|
|
[[bin]]
|
|
name = "swarm-authelia-bridge"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
hive-types.workspace = true
|
|
anyhow.workspace = true
|
|
axum.workspace = true
|
|
reqwest.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
serde_norway = "0.9.42"
|
|
swarm-authelia-bridge-sock.workspace = true
|
|
tokio.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|