[package] name = "swarm-controller" version.workspace = true readme = "README.md" edition.workspace = true [[bin]] name = "swarm-controller" path = "src/main.rs" [dependencies] anyhow.workspace = true # `kv` (which pulls `jetstream`) on top of the workspace's feature set: the # queue is this daemon's *store*, not just its transport - a hive's last # status snapshot is read out of a JetStream KV bucket. Declared here rather # than in the workspace entry so the auth-callout responder, which speaks # neither, does not claim to need them. async-nats = { workspace = true, features = ["kv"] } axum.workspace = true futures-util.workspace = true # The graph itself, held directly rather than behind a c0re-style wrapper # module — that layering (`hive-c0re::job_queue`) is partially legacy (predates # `hive-jobq`'s extraction into its own crate) and this daemon does not need it # repeated. No `Scheduler` yet either: nothing here submits or executes a job, # so there is nothing to schedule — just a `Graph` for the read-only endpoints # to serve. hive-jobq.workspace = true hive-jobq-wire.workspace = true serde.workspace = true serde_json.workspace = true # The queue connect (token mint + auth callback + reconnect) is shared with # every other participant - a hive publishing its own status runs the same # code with a different client id. Two copies of credential handling is one # token-refresh fix that has to be found twice. # # `kv` for the same reason one level in: the status bucket's name and # creation config are shared with the hive that writes it, so this end does # not get to declare them privately. swarm-queue-client = { workspace = true, features = ["kv"] } tokio.workspace = true tracing.workspace = true tracing-subscriber.workspace = true utoipa.workspace = true utoipa-axum.workspace = true [lints] workspace = true