[package]
name = "axiom_engine"
version = "0.2.9"
edition = "2021"
description = "Axiom-TTT Inference Engine â€“ Rust implementation using candle"
license = "MIT"
repository = "https://github.com/fernandogarzaaa/AXIOM-AETHER"
homepage = "https://github.com/fernandogarzaaa/AXIOM-AETHER"
readme = "README.md"
authors = ["Fernando Garza <fernandogarzaaa@users.noreply.github.com>"]
keywords = ["ttt", "inference", "llm", "self-healing", "cli"]
categories = ["command-line-utilities", "science"]
# `axiom` is the canonical entrypoint (so `cargo run` and maturin's bin wheel
# select it rather than ambiguating over the many dev/bench binaries).
default-run = "axiom"
# Keep the published crate to source only â€” never ship checkpoints, models, or
# build output (crates.io enforces a size limit these would blow past).
exclude = [
    "target/*",
    "target-*/*",
    "dist/*",
    "checkpoints/*",
    "**/*.safetensors",
    "**/*.gguf",
    "tests/fixtures/*",
]

# Two names for the same entrypoint: `axiom_engine` keeps the existing Docker /
# release / script references working, while `axiom` is the clean command that
# `cargo install` and the pip wheel expose (matching what install.sh already
# renames the release binary to).
[[bin]]
name = "axiom_engine"
path = "src/main.rs"

[[bin]]
name = "axiom"
path = "src/bin/axiom.rs"

[features]
default = []
# Enable NVIDIA CUDA GPU backend (requires CUDA toolkit).
cuda = ["candle-core/cuda", "candle-nn/cuda"]
# Enable Apple Metal GPU backend (macOS / Apple Silicon only).
metal = ["candle-core/metal", "candle-nn/metal"]
# Dev/training/eval binaries (src/bin/*). Off by default so `cargo install`,
# the pip wheel, Docker, and release builds ship only the user-facing `axiom`
# command â€” not the training toolchain. Build them with `--features tools`.
tools = []

# Dev/training/eval binaries, gated behind the `tools` feature (see above).
[[bin]]
name = "axiombench"
path = "src/bin/axiombench/main.rs"
required-features = ["tools"]

[[bin]]
name = "build_pairs"
path = "src/bin/build_pairs.rs"
required-features = ["tools"]

[[bin]]
name = "corpus_crawl"
path = "src/bin/corpus_crawl.rs"
required-features = ["tools"]

[[bin]]
name = "eval_model"
path = "src/bin/eval_model.rs"
required-features = ["tools"]

[[bin]]
name = "eval_recall"
path = "src/bin/eval_recall.rs"
required-features = ["tools"]

[[bin]]
name = "harvest"
path = "src/bin/harvest.rs"
required-features = ["tools"]

[[bin]]
name = "search_node"
path = "src/bin/search_node.rs"
required-features = ["tools"]

[[bin]]
name = "smoke_embed"
path = "src/bin/smoke_embed.rs"
required-features = ["tools"]

[[bin]]
name = "train_embedder"
path = "src/bin/train_embedder.rs"
required-features = ["tools"]

[[bin]]
name = "train_semantic"
path = "src/bin/train_semantic.rs"
required-features = ["tools"]

[[bin]]
name = "train_tokenizer"
path = "src/bin/train_tokenizer.rs"
required-features = ["tools"]

[dependencies]
candle-core = "0.10.2"
candle-nn = "0.10.2"
tokio = { version = "1.35", features = ["full"] }
sha2 = "0.10.8"
rand = "0.8.5"
indicatif = "0.17.7"
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls", "stream"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1.0"
tokenizers = "0.15"
scraper = "0.27"
tree-sitter = "0.26.9"
tree-sitter-rust = "0.24.2"
urlencoding = "2.1"
bincode = "1.3"
axum = { version = "0.7", features = ["json", "ws"] }
# WS client for the /v1/responses WebSocket passthrough (Codex's preferred transport).
tokio-tungstenite = { version = "0.21", features = ["rustls-tls-webpki-roots"] }
tower-http = { version = "0.5", features = ["cors", "trace", "decompression-full"] }
tower-lsp = "0.20"
uuid = { version = "1", features = ["v4"] }
futures = "0.3"
safetensors = "0.7.0"
dashmap = "5.5"
walkdir = "2.5"
clap = { version = "4.6.1", features = ["derive"] }
toml = "1.1.2"
dirs = "6.0.0"

[dev-dependencies]
tower = { version = "0.4", features = ["util"] }
http-body-util = "0.1"
tempfile = "3"
