tatara-cli 0.2.246

CLI binary for tatara — Nix-native workload orchestrator
[package]
name = "tatara-cli"
description = "CLI binary for tatara — Nix-native workload orchestrator"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true

[[bin]]
name = "tatara"
path = "src/main.rs"

[dependencies]
tatara-core = { path = "../tatara-core" , version = "0.2.65" }
tatara-engine = { path = "../tatara-engine" , version = "0.2.65" }
tatara-api = { path = "../tatara-api" , version = "0.2.65" }

# CLI
clap = { version = "4.5", features = ["derive"] }

# Shikumi — pulls in the `cli` feature so the binary can consume the
# reusable `shikumi::cli::ConfigShowCommand` clap subcommand factory
# (Pillar 12: one Subcommand variant replaces every hand-rolled
# `config-show` surface fleet-wide). The branch=main pin matches
# tatara-core's pin and keeps the workspace on a single shikumi
# source.
shikumi = { version = "0.1", features = ["cli"] }

# Error handling
anyhow = "1.0"

# Config
toml = "0.8"
dirs = "6.0"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"

# Async runtime
tokio = { version = "1", features = ["full"] }
tokio-stream = "0.1"

# Drain coordinator (shared SIGTERM/SIGINT handler across pleme-io daemons)
tsunagu = "0.1"

# HTTP server (for server.rs composition root)
axum = { version = "0.8", features = ["json"] }
async-stream = "0.3"
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace", "cors"] }

# GraphQL (for server.rs composition)
async-graphql = { version = "7.0", features = ["tracing", "chrono"] }
async-graphql-axum = "7.0"

# HTTP client
reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"], default-features = false }

# CLI output formatting + TUI
comfy-table = "7"
crossterm = "0.28"
egaku-term = "0.3"
egaku = "0.1"
diff = "0.1"

# Time + IDs
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["v4", "serde"] }

# Raft types (for server.rs Raft endpoint handlers).
# Pinned at =0.9.22 — 0.9.24 has a trait-inference conflict with newer
# rkyv's `PartialEq<ArchivedBTreeSet<…>> for BTreeSet<…>` impl
# (rustc E0283 in openraft/src/metrics/wait.rs:231). Upstream openraft
# needs an explicit `let got: Vec<_>` annotation; until that ships, pin.
openraft = { version = "=0.9.22", features = ["serde", "storage-v2"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }

# Stream processing
futures-core = "0.3"

# Hostname (for server.rs)
hostname = "0.4"