New `crates/maestro/` umbrella binary hosts the CLI, daemon, and registry
behind Cargo features `cli`, `daemon`, `registry` (default = all three).
Library crates keep their structure; per-binary `main.rs` files are removed
and their dispatch logic is exposed as public functions:
- `maestro_cli::dispatch(command, config, registry_url)`
- `maestro_daemon::cli::dispatch(config, cmd)` (with public `DaemonCmd`/`ConfigureArgs`)
- `maestro_registry::run()`
Subcommand surface:
- `maestro list / spawn / attach / kill / set-registry / policy` (unchanged)
- `maestro daemon [run|configure]` (was `maestrod`)
- `maestro registry` (was `maestro-registry`)
Hard cutover — old binary names are not preserved.
Verified: default-feature build, plus `--no-default-features --features {cli|daemon|registry}`
each build clean with `-D warnings`.
38 lines
959 B
TOML
38 lines
959 B
TOML
[package]
|
|
name = "maestro-daemon"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
publish.workspace = true
|
|
description = "Per-host tmux wrapper + session orchestrator that talks to the registry"
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
axum.workspace = true
|
|
chrono.workspace = true
|
|
clap.workspace = true
|
|
dirs.workspace = true
|
|
futures-util.workspace = true
|
|
jsonwebtoken.workspace = true
|
|
libc.workspace = true
|
|
maestro-config.workspace = true
|
|
maestro-protocol.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
thiserror.workspace = true
|
|
tokio.workspace = true
|
|
tokio-tungstenite = { workspace = true, features = ["rustls-tls-webpki-roots"] }
|
|
toml.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
urlencoding = "2"
|
|
uuid.workspace = true
|
|
|
|
[dev-dependencies]
|
|
reqwest.workspace = true
|
|
tempfile.workspace = true
|
|
maestro-registry = { path = "../maestro-registry" }
|