llmy-cli 0.23.0

All-in-one LLM utilities.
[package]
name = "llmy-cli"
version.workspace = true
edition.workspace = true
license.workspace = true
readme.workspace = true
description.workspace = true
homepage.workspace = true
repository.workspace = true

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

[dependencies]
clap = {workspace = true, features = ["derive"]}
async-openai = {workspace = true, features = ["chat-completion-types"]}
serde = {workspace = true, features = ["derive"]}
serde_json.workspace = true
chrono.workspace = true
llmy-clap.workspace = true
llmy-agent.workspace = true
rmcp = {workspace = true, features = ["server"]}
llmy-agent-tools.workspace = true
llmy-harness.workspace = true
llmy-client.workspace = true
llmy-tokenizer.workspace = true
rust_decimal = { workspace = true, features = ["macros"] }
tokio = {workspace = true, features = ["full"]}
tracing.workspace = true
color-eyre.workspace = true
dotenvy.workspace = true
rustyline.workspace = true
shlex.workspace = true
tracing-subscriber = {workspace = true, features = ["env-filter"]}

[features]
default = ["rustls"]

# --- TLS backend -------------------------------------------------------
#
# Cargo features are additive, so `rustls` is only *default*, never
# exclusive. To build against native-tls you must turn the default off:
#
#     llmy = { version = "0.18", default-features = false, features = ["native-tls"] }
#
# Asking for both leaves both stacks linked in, which builds but is
# almost certainly not what you want.

rustls = [
    "async-openai/rustls",
    "llmy-clap/rustls",
    "llmy-client/rustls",
    "llmy-agent/rustls",
    "llmy-agent-tools/rustls",
    "llmy-harness/rustls",
]
native-tls = [
    "async-openai/native-tls",
    "llmy-clap/native-tls",
    "llmy-client/native-tls",
    "llmy-agent/native-tls",
    "llmy-agent-tools/native-tls",
    "llmy-harness/native-tls",
]
native-tls-vendored = [
    "async-openai/native-tls-vendored",
    "llmy-clap/native-tls-vendored",
    "llmy-client/native-tls-vendored",
    "llmy-agent/native-tls-vendored",
    "llmy-agent-tools/native-tls-vendored",
    "llmy-harness/native-tls-vendored",
]

# Off by default. `embed` / `memory-embed-search` pull in `fastembed` +
# `ort-sys`, which does not support musl. When off, the umbrella crate
# has no `fastembed`/`openssl-sys` in its dep graph.

# Expose the embedding utilities (re-exports `ebmed`). No memory-search code.
embed = ["llmy-agent-tools/embed", "llmy-harness/embed"]

# Embedding-backed memory search. Implies `embed`.
memory-embed-search = [
    "llmy-agent-tools/memory-embed-search",
    "llmy-harness/memory-embed-search",
    "embed",
]

# Granular per-backend toggles, for mixing TLS stacks across hf-hub / ort.
hf-hub-rustls-tls = ["llmy-agent-tools/hf-hub-rustls-tls", "llmy-harness/hf-hub-rustls-tls"]
hf-hub-native-tls = ["llmy-agent-tools/hf-hub-native-tls", "llmy-harness/hf-hub-native-tls"]
ort-download-binaries-rustls-tls = ["llmy-agent-tools/ort-download-binaries-rustls-tls", "llmy-harness/ort-download-binaries-rustls-tls"]
ort-download-binaries-native-tls = ["llmy-agent-tools/ort-download-binaries-native-tls", "llmy-harness/ort-download-binaries-native-tls"]