grex-cli 1.3.0

grex — nested meta-repo manager. Pack-based, agent-native, Rust-fast.
Documentation
[package]
name = "grex-cli"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme.workspace = true
description = "grex — nested meta-repo manager. Pack-based, agent-native, Rust-fast."
documentation = "https://docs.rs/grex-cli"
keywords.workspace = true
categories.workspace = true

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

[dependencies]
clap = { workspace = true }
tokio = { workspace = true }
serde = { workspace = true }
# v1.3.0: `preserve_order` ensures `serde_json::json!({...})` macro
# expansions write keys in source-order rather than alphabetical.
# Required by the dual-emit JSON envelope contract (`workspace` MUST
# appear before `pack` in `grex ls --json` / `grex doctor --json`
# output — see `crates/grex/tests/cli_json.rs`).
serde_json = { workspace = true, features = ["preserve_order"] }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
comfy-table = { workspace = true }
owo-colors = { workspace = true }
grex-core = { workspace = true }
grex-mcp = { workspace = true }
grex-plugins-builtin = { workspace = true }
# feat-m7-1 stage 2: CLI constructs a never-cancelled sentinel
# (`CancellationToken::new()`) and threads it into every core verb so
# the MCP server (stages 3+) can pass a real cancel handle through the
# same shared signature. Workspace-pinned to keep the version aligned
# with `grex-core` and `grex-mcp`.
tokio-util = { workspace = true }
# feat-m7-1 stage 8: `verbs/serve.rs` constructs the stdio transport
# directly via `rmcp::transport::stdio()`. The `transport-io` feature is
# already pulled by `grex-mcp` so the unification is free.
rmcp = { workspace = true, features = ["transport-io"] }

[dev-dependencies]
assert_cmd = { workspace = true }
predicates = { workspace = true }
tempfile = { workspace = true }
proptest = { workspace = true }

[lints]
workspace = true

# M2 placeholder deps retained for M3+ wiring (CLI output, async runtime,
# serde boundaries, in-process core integration). Remove from this ignore
# list as each is actually used. TODO(m3): delete this block.
[package.metadata.cargo-machete]
ignored = [
    "comfy-table",
    "grex-core",
    "grex-plugins-builtin",
    "owo-colors",
    "serde",
    "serde_json",
    "tokio",
    "tracing",
    "tracing-subscriber",
]