refactor(swarm-queue-client): a library's errors are an enum, not anyhow

Operator ruling: libs should not use anyhow. The queue connect was moved
here verbatim from swarm-controller, which is a binary, so it arrived
still wearing a binary's error handling — the move changed what the code
is without changing how it reports.

Callers get variants they can match on, split by what an operator does
about them: a half-configured environment is a deployment bug, a refused
token is an identity-provider config problem, an unreachable queue is a
network one. The binaries that consume this keep anyhow and `?` converts,
so nothing downstream is more verbose for it. Same split hive-claude uses.

One thing anyhow was doing unpaid: the auth callback hands async-nats a
plain string, and a Display that stops at the top message drops the cause
— the half that says why the mint failed. `chain()` walks the source
chain, which is what `{:#}` was doing before.
This commit is contained in:
atlas 2026-08-15 23:04:36 +02:00 committed by mara
commit d71222c206
3 changed files with 96 additions and 29 deletions

2
Cargo.lock generated
View file

@ -4595,11 +4595,11 @@ dependencies = [
name = "swarm-queue-client"
version = "0.1.0"
dependencies = [
"anyhow",
"async-nats",
"reqwest 0.13.1",
"serde",
"serde_json",
"thiserror 2.0.18",
"tokio",
"tracing",
]