[package]
name = "loki-ai"
version = "0.4.0"
edition = "2024"
authors = ["Alex Clarke <alex.j.tusa@gmail.com>"]
description = "An all-in-one, batteries included LLM CLI Tool"
keywords = ["chatgpt", "llm", "cli", "ai", "repl"]
homepage = "https://github.com/Dark-Alex-17/loki"
repository = "https://github.com/Dark-Alex-17/loki"
categories = ["command-line-utilities"]
readme = "README.md"
license = "MIT"
rust-version = "1.95.0"
exclude = [".github", "CONTRIBUTING.md"]

[dependencies]
anyhow = "1.0.69"
bytes = "1.4.0"
clap = { version = "4.5.40", features = ["cargo", "derive", "wrap_help"] }
dirs = "6.0.0"
dunce = "1.0.5"
futures-util = "0.3.29"
inquire = "0.9.4"
is-terminal = "0.4.9"
reedline = "0.47.0"
serde = { version = "1.0.152", features = ["derive"] }
serde_json = { version = "1.0.93", features = ["preserve_order"] }
serde_yaml = "0.9.17"
tokio = { version = "1.34.0", features = [
  "rt",
  "time",
  "macros",
  "signal",
  "rt-multi-thread",
  "full",
] }
crossterm = "0.29.0"
chrono = "0.4.23"
bincode = { version = "2.0.0", features = [
  "serde",
  "std",
], default-features = false }
parking_lot = "0.12.1"
fancy-regex = "0.14.0"
base64 = "0.22.0"
nu-ansi-term = "0.50.0"
async-trait = "0.1.74"
textwrap = "0.16.0"
ansi_colours = "1.2.2"
eventsource-stream = "0.2.3"
log = "0.4.28"
log4rs = { version = "1.4.0", features = ["file_appender"] }
shell-words = "1.1.0"
sha2 = "0.10.8"
unicode-width = "0.2.0"
async-recursion = "1.1.1"
http = "1.1.0"
indexmap = { version = "2.2.6", features = ["serde"] }
hmac = "0.12.1"
aws-smithy-eventstream = "0.60.4"
urlencoding = "2.1.3"
json-patch = { version = "4.0.0", default-features = false }
bitflags = "2.5.0"
path-absolutize = "3.1.1"
hnsw_rs = "0.3.0"
uuid = { version = "1.9.1", features = ["v4"] }
scraper = { version = "0.23.1", default-features = false, features = [
  "deterministic",
] }
sys-locale = "0.3.1"
html_to_markdown = "0.1.0"
rust-embed = "8.5.0"
os_info = { version = "3.8.2", default-features = false }
bm25 = { version = "2.0.1", features = ["parallelism"] }
which = "8.0.0"
fuzzy-matcher = "0.3.7"
terminal-colorsaurus = "0.4.8"
duct = "1.0.0"
argc = "1.23.0"
strum_macros = "0.27.2"
indoc = "2.0.6"
rmcp = { version = "1.5.0", features = [
  "client",
  "transport-child-process",
  "transport-streamable-http-client-reqwest",
  "reqwest-native-tls",
] }
num_cpus = "1.17.0"
tree-sitter = "0.26.8"
tree-sitter-python = "0.25.0"
tree-sitter-typescript = "0.23"
colored = "3.0.0"
clap_complete = { version = "4.5.58", features = ["unstable-dynamic"] }
gman = "0.4.1"
clap_complete_nushell = "4.5.9"
open = "5"
rand = { version = "0.10.0", features = ["default"] }
url = "2.5.8"
self_update = { version = "0.44", default-features = false, features = [
  "reqwest",
  "rustls",
  "archive-tar",
  "compression-flate2",
  "archive-zip",
  "compression-zip-deflate",
] }

[dependencies.reqwest]
version = "0.13.3"
features = [
  "json",
  "multipart",
  "stream",
  "form",
  "socks",
  "rustls",
]
default-features = false

[dependencies.syntect]
version = "5.0.0"
default-features = false
features = ["parsing", "regex-onig", "plist-load"]

[target.'cfg(target_os = "macos")'.dependencies]
crossterm = { version = "0.29.0", features = ["use-dev-tty"] }

[target.'cfg(target_os = "linux")'.dependencies]
arboard = { version = "3.3.0", default-features = false, features = [
  "wayland-data-control",
] }

[target.'cfg(not(any(target_os = "linux", target_os = "android", target_os = "emscripten")))'.dependencies]
arboard = { version = "3.3.0", default-features = false }

[dev-dependencies]
pretty_assertions = "1.4.0"
serial_test = "3"

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

[profile.release]
lto = true
strip = true
opt-level = "z"
