[package]
name = "rkat"
description = "CLI for the Meerkat agent platform — run LLM agents from the terminal"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true

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

[[bin]]
name = "rkat-mini"
path = "src/main.rs"
test = false

[[test]]
name = "system_cli_init"
path = "tests/system_cli_init.rs"
required-features = ["integration-real-tests"]

[[test]]
name = "system_cli_resume"
path = "tests/system_cli_resume.rs"
required-features = ["integration-real-tests"]

[[test]]
name = "live_smoke_cli"
path = "tests/live_smoke_cli.rs"
required-features = ["integration-real-tests"]

[[test]]
name = "cli_mobpack_live_smoke"
path = "tests/cli_mobpack_live_smoke.rs"
required-features = ["integration-real-tests"]

[dependencies]
meerkat = { workspace = true, features = ["openai-realtime"] }
meerkat-core = { workspace = true }
meerkat-contracts = { workspace = true }
meerkat-client = { workspace = true, features = ["anthropic", "openai", "gemini", "oauth", "native-keyring", "refresh-file-lock"] }
meerkat-anthropic = { workspace = true, features = ["oauth"] }
meerkat-openai = { workspace = true, features = ["oauth"] }
meerkat-gemini = { workspace = true, features = ["oauth"] }
meerkat-providers = { workspace = true, features = ["anthropic", "openai", "gemini", "oauth", "native-keyring", "refresh-file-lock"] }
webbrowser = "1"
meerkat-store = { workspace = true }
meerkat-runtime = { workspace = true }
meerkat-tools = { workspace = true }
meerkat-mob = { workspace = true, optional = true }
meerkat-mob-pack = { workspace = true, optional = true }
meerkat-mob-mcp = { workspace = true, optional = true }
meerkat-rpc = { workspace = true, optional = true, features = ["mob"] }
meerkat-mcp = { workspace = true, optional = true }
meerkat-comms = { workspace = true, optional = true }
serde = { workspace = true }
serde_json = { workspace = true }
base64 = { workspace = true }
toml = { workspace = true }
toml_edit = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
clap = { workspace = true }
dirs = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
anyhow = { workspace = true }
humantime = { workspace = true }
chrono = { workspace = true }
futures = { workspace = true }
async-trait = { workspace = true }
nix = { workspace = true }
reqwest = { workspace = true }
uuid = { workspace = true }

[features]
default = ["anthropic", "openai", "gemini", "jsonl-store", "session-store", "skills", "comms", "mcp", "schedule", "mob"]

# LLM providers (forwarded to facade)
anthropic = ["meerkat/anthropic"]
openai = ["meerkat/openai"]
gemini = ["meerkat/gemini"]

# Storage backends (forwarded to facade)
jsonl-store = ["meerkat/jsonl-store"]

# Session capabilities (forwarded to facade)
session-store = ["meerkat/session-store"]
session-compaction = ["meerkat/session-compaction"]
# Enables both the memory backend capability and memory_search/session wiring.
memory-store = ["meerkat/memory-store", "meerkat/memory-store-session"]
memory-store-session = ["meerkat/memory-store-session"]

# Subsystems
mob = [
    "dep:meerkat-mob",
    "dep:meerkat-mob-pack",
    "dep:meerkat-mob-mcp",
    "dep:meerkat-rpc",
]
comms = ["dep:meerkat-comms", "meerkat/comms"]
mcp = ["dep:meerkat-mcp", "meerkat/mcp"]
schedule = ["meerkat/schedule"]
skills = ["meerkat/skills"]

integration-real-tests = []

[dev-dependencies]
parking_lot = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["test-util", "macros"] }
serde_json = { workspace = true }
meerkat-comms = { workspace = true }
meerkat-llm-core = { workspace = true }
tokio-tungstenite = "0.28"

[package.metadata.cargo-machete]
ignored = ["thiserror"]  # proc macro (derive)

[lints]
workspace = true
