[package]
name = "jammi-cli"
description = "Command-line interface for Jammi AI"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
readme = "README.md"

# The crate is `jammi-cli`, but the shipped binary is `jammi` — that's the
# command users invoke and what the cookbook recipes / docs / smoke tests
# expect at `target/<profile>/jammi`.
[[bin]]
name = "jammi"
path = "src/main.rs"

[dependencies]
# The CLI is a strict control-plane client: it talks to a running `jammi-server`
# over the wire and never touches the catalog/DB in-process. It depends on
# `jammi-admin` (the candle-free `CatalogClient`) for every verb it drives — the
# CLI is a control-plane tool, so it needs no data-plane (`jammi-client`) surface
# — and pulls no embedded ML stack. It does NOT depend on `jammi-ai`, so the
# candle / tokenizers / symphonia / hf-hub stack never reaches the `jammi` binary.
jammi-db.workspace = true
jammi-admin.workspace = true
# Building the `tonic::transport::Endpoint` the connect path carries from the
# translated `--target` URL. Part of the transport stack `jammi-admin` already
# pulls; candle-free.
tonic.workspace = true
# The trigger-register and mutable-create paths build an Arrow `Schema` from the
# CLI's inline column spec; `arrow-schema` carries that type alone (no array /
# compute / datafusion stack — the strict client builds no record batches).
arrow-schema.workspace = true
clap.workspace = true
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true

# docs.rs builds with default features only. The thin client carries no feature
# flags, so this pins the empty set explicitly.
[package.metadata.docs.rs]
features = []

[dev-dependencies]
tempfile = "3"
assert_cmd = "2"
predicates = "3"
