# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.89"
name = "apr-cli"
version = "0.40.1"
authors = ["Noah Gift <noah@paiml.com>"]
build = "build.rs"
exclude = [
    "playbooks/snapshots/",
    "models/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "CLI tool for APR model inspection, debugging, and operations"
documentation = "https://docs.rs/apr-cli"
readme = "README.md"
keywords = [
    "machine-learning",
    "model-inspection",
    "cli",
    "debugging",
]
categories = [
    "command-line-utilities",
    "science",
]
license = "MIT"
repository = "https://github.com/paiml/aprender"

[features]
code = []
cuda = [
    "inference",
    "realizar/cuda",
    "entrenar/cuda",
    "aprender-train-distill?/cuda",
]
cuda-batch = ["cuda"]
default = [
    "hf-hub",
    "safetensors-compare",
    "inference",
    "training",
    "visualization",
    "zram",
]
dev = []
dhat-heap = ["dep:dhat"]
full = [
    "inference",
    "cuda",
    "cuda-batch",
    "visualization",
    "zram",
    "training",
    "training-gpu",
    "code",
    "xet",
]
hf-hub = ["aprender/hf-hub-integration"]
inference = [
    "realizar",
    "trueno",
    "tokio",
    "axum",
    "futures-util",
]
safetensors-compare = ["aprender/safetensors-compare"]
training = [
    "dep:entrenar",
    "dep:entrenar-lora",
    "dep:aprender-train-distill",
    "dep:aprender-train-common",
    "aprender-train-distill?/shard-batch-source",
]
training-gpu = ["training"]
visualization = [
    "renacer",
    "trueno-viz",
]
wgpu = ["inference"]
whisper = ["whisper-apr"]
xet = [
    "hf-hub",
    "aprender/xet",
]
zram = ["trueno-zram-core"]

[lib]
name = "apr_cli"
path = "src/lib.rs"

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

[[bin]]
name = "apr-corpus-ingest"
path = "src/bin/apr-corpus-ingest.rs"

[[example]]
name = "gpu_chat_inference"
path = "examples/gpu_chat_inference.rs"
required-features = [
    "inference",
    "cuda",
]

[[example]]
name = "ptx_parity_validation"
path = "examples/ptx_parity_validation.rs"
required-features = ["inference"]

[[example]]
name = "serve_with_tracing"
path = "examples/serve_with_tracing.rs"
required-features = ["inference"]

[[example]]
name = "tool_calling_demo"
path = "examples/tool_calling_demo.rs"

[[test]]
name = "chinchilla_gate_test"
path = "tests/chinchilla_gate_test.rs"

[[test]]
name = "cli_commands"
path = "tests/cli_commands.rs"

[[test]]
name = "cli_integration"
path = "tests/cli_integration.rs"

[[test]]
name = "command_coverage"
path = "tests/command_coverage.rs"

[[test]]
name = "falsification_apr_tok_par_004"
path = "tests/falsification_apr_tok_par_004.rs"

[[test]]
name = "falsification_bert_326_embed_parity"
path = "tests/falsification_bert_326_embed_parity.rs"

[[test]]
name = "falsification_bert_326_hf_parity"
path = "tests/falsification_bert_326_hf_parity.rs"

[[test]]
name = "falsification_chat_http_cli"
path = "tests/falsification_chat_http_cli.rs"

[[test]]
name = "falsification_cross_crate_parity"
path = "tests/falsification_cross_crate_parity.rs"

[[test]]
name = "falsification_crux_a_01"
path = "tests/falsification_crux_a_01.rs"

[[test]]
name = "falsification_crux_a_03"
path = "tests/falsification_crux_a_03.rs"

[[test]]
name = "falsification_crux_a_20"
path = "tests/falsification_crux_a_20.rs"

[[test]]
name = "falsification_crux_a_21"
path = "tests/falsification_crux_a_21.rs"

[[test]]
name = "falsification_crux_a_22"
path = "tests/falsification_crux_a_22.rs"

[[test]]
name = "falsification_crux_a_23"
path = "tests/falsification_crux_a_23.rs"

[[test]]
name = "falsification_crux_a_25"
path = "tests/falsification_crux_a_25.rs"

[[test]]
name = "falsification_crux_b_07"
path = "tests/falsification_crux_b_07.rs"

[[test]]
name = "falsification_crux_b_08"
path = "tests/falsification_crux_b_08.rs"

[[test]]
name = "falsification_crux_b_09"
path = "tests/falsification_crux_b_09.rs"

[[test]]
name = "falsification_crux_b_10"
path = "tests/falsification_crux_b_10.rs"

[[test]]
name = "falsification_crux_b_11"
path = "tests/falsification_crux_b_11.rs"

[[test]]
name = "falsification_crux_c_04"
path = "tests/falsification_crux_c_04.rs"

[[test]]
name = "falsification_crux_c_10"
path = "tests/falsification_crux_c_10.rs"

[[test]]
name = "falsification_crux_c_11"
path = "tests/falsification_crux_c_11.rs"

[[test]]
name = "falsification_crux_c_13"
path = "tests/falsification_crux_c_13.rs"

[[test]]
name = "falsification_crux_c_22"
path = "tests/falsification_crux_c_22.rs"

[[test]]
name = "falsification_crux_c_23"
path = "tests/falsification_crux_c_23.rs"

[[test]]
name = "falsification_crux_d_11"
path = "tests/falsification_crux_d_11.rs"

[[test]]
name = "falsification_crux_e_02"
path = "tests/falsification_crux_e_02.rs"

[[test]]
name = "falsification_crux_e_07"
path = "tests/falsification_crux_e_07.rs"

[[test]]
name = "falsification_crux_f_06"
path = "tests/falsification_crux_f_06.rs"

[[test]]
name = "falsification_crux_f_07"
path = "tests/falsification_crux_f_07.rs"

[[test]]
name = "falsification_crux_f_09"
path = "tests/falsification_crux_f_09.rs"

[[test]]
name = "falsification_crux_f_11"
path = "tests/falsification_crux_f_11.rs"

[[test]]
name = "falsification_crux_f_13"
path = "tests/falsification_crux_f_13.rs"

[[test]]
name = "falsification_crux_f_14"
path = "tests/falsification_crux_f_14.rs"

[[test]]
name = "falsification_crux_f_15"
path = "tests/falsification_crux_f_15.rs"

[[test]]
name = "falsification_crux_f_17"
path = "tests/falsification_crux_f_17.rs"

[[test]]
name = "falsification_crux_f_18"
path = "tests/falsification_crux_f_18.rs"

[[test]]
name = "falsification_crux_f_19"
path = "tests/falsification_crux_f_19.rs"

[[test]]
name = "falsification_crux_h_13"
path = "tests/falsification_crux_h_13.rs"

[[test]]
name = "falsification_crux_i_04"
path = "tests/falsification_crux_i_04.rs"

[[test]]
name = "falsification_crux_i_06"
path = "tests/falsification_crux_i_06.rs"

[[test]]
name = "falsification_crux_k_07"
path = "tests/falsification_crux_k_07.rs"

[[test]]
name = "falsification_crux_k_08"
path = "tests/falsification_crux_k_08.rs"

[[test]]
name = "falsification_crux_l_02"
path = "tests/falsification_crux_l_02.rs"

[[test]]
name = "falsification_measurement_freshness"
path = "tests/falsification_measurement_freshness.rs"

[[test]]
name = "falsification_tokenizer_data"
path = "tests/falsification_tokenizer_data.rs"

[[test]]
name = "falsification_whisper_routing"
path = "tests/falsification_whisper_routing.rs"

[[test]]
name = "falsify_auth_001"
path = "tests/falsify_auth_001.rs"

[[test]]
name = "falsify_auth_002"
path = "tests/falsify_auth_002.rs"

[[test]]
name = "falsify_auth_003"
path = "tests/falsify_auth_003.rs"

[[test]]
name = "falsify_ship_012_tokenizer_roundtrip"
path = "tests/falsify_ship_012_tokenizer_roundtrip.rs"

[[test]]
name = "p0k_convert_inspect_e2e_test"
path = "tests/p0k_convert_inspect_e2e_test.rs"

[[test]]
name = "pixel_regression"
path = "tests/pixel_regression.rs"

[[test]]
name = "qwen3_moe_apr_run_live_falsifier"
path = "tests/qwen3_moe_apr_run_live_falsifier.rs"

[[test]]
name = "trace_json_payload_schema"
path = "tests/trace_json_payload_schema.rs"

[[test]]
name = "val_shard_test"
path = "tests/val_shard_test.rs"

[dependencies.alimentar]
version = "0.2.8"
features = ["shuffle"]
default-features = false

[dependencies.anyhow]
version = "1.0"

[dependencies.aprender]
version = "0.40.1"
features = ["format-compression"]
default-features = true
package = "aprender-core"

[dependencies.aprender-mcp]
version = "0.40.1"

[dependencies.aprender-train-common]
version = "0.40.1"
optional = true

[dependencies.aprender-train-distill]
version = "0.40.1"
optional = true

[dependencies.arrow-array]
version = "57"

[dependencies.async-stream]
version = "0.3"

[dependencies.axum]
version = "0.7"
optional = true

[dependencies.batuta]
version = "0.40.1"
features = [
    "agents",
    "agents-inference",
    "agents-mcp",
    "rag",
]
package = "aprender-orchestrate"

[dependencies.batuta-common]
version = "0.1"

[dependencies.blake3]
version = "1"

[dependencies.chrono]
version = "0.4"
features = [
    "std",
    "clock",
]
default-features = false

[dependencies.clap]
version = "4.5"
features = [
    "derive",
    "env",
    "wrap_help",
]

[dependencies.colored]
version = "2.1"

[dependencies.crossterm]
version = "0.28"

[dependencies.dhat]
version = "0.3"
optional = true

[dependencies.dirs]
version = "5.0"

[dependencies.entrenar]
version = "0.40.1"
optional = true
package = "aprender-train"

[dependencies.entrenar-lora]
version = "0.40.1"
optional = true
package = "aprender-train-lora"

[dependencies.futures-util]
version = "0.3"
optional = true

[dependencies.gag]
version = "1.0"

[dependencies.glob]
version = "0.3"

[dependencies.half]
version = "2.4.1"

[dependencies.humansize]
version = "2.1"

[dependencies.pacha]
version = "0.2.4"
features = ["remote"]
default-features = false

[dependencies.parquet]
version = "57"
features = [
    "arrow",
    "snap",
    "zstd",
]
default-features = false

[dependencies.presentar-core]
version = "0.40.1"
package = "aprender-present-core"

[dependencies.presentar-terminal]
version = "0.40.1"
package = "aprender-present-terminal"

[dependencies.provable-contracts-macros]
version = "0.3"

[dependencies.rayon]
version = "1.10"

[dependencies.realizar]
version = "0.40.1"
optional = true
package = "aprender-serve"

[dependencies.renacer]
version = "0.40.1"
optional = true
package = "aprender-profile"

[dependencies.rmp-serde]
version = "1.3"

[dependencies.safetensors]
version = "0.4"

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde_json]
version = "1.0"

[dependencies.serde_yaml]
version = "0.10"
package = "serde_yaml_ng"

[dependencies.sha2]
version = "0.10"

[dependencies.subtle]
version = "2.6"

[dependencies.tabled]
version = "0.16"

[dependencies.tempfile]
version = "3.14"

[dependencies.thiserror]
version = "2.0"

[dependencies.tokio]
version = "1"
features = [
    "rt-multi-thread",
    "macros",
    "signal",
    "sync",
]
optional = true

[dependencies.trueno]
version = "0.40.1"
optional = true
package = "aprender-compute"

[dependencies.trueno-explain]
version = "0.2.2"
optional = true

[dependencies.trueno-viz]
version = "0.3"
optional = true

[dependencies.trueno-zram-core]
version = "0.3"
optional = true

[dependencies.unicode-normalization]
version = "0.1"

[dependencies.ureq]
version = "2.10"

[dependencies.which]
version = "7"

[dependencies.whisper-apr]
version = "0.2"
optional = true

[dev-dependencies.assert_cmd]
version = "2.0"

[dev-dependencies.axum-test]
version = "16"

[dev-dependencies.bytemuck]
version = "1.24"
features = ["derive"]

[dev-dependencies.jugar-probar]
version = "0.4"
features = ["tui"]

[dev-dependencies.predicates]
version = "3.1"

[dev-dependencies.proptest]
version = "1.6"

[dev-dependencies.regex]
version = "1.10"

[dev-dependencies.safetensors]
version = "0.4"

[dev-dependencies.tempfile]
version = "3.14"

[dev-dependencies.tokio]
version = "1"
features = [
    "rt-multi-thread",
    "macros",
    "time",
]

[dev-dependencies.tower]
version = "0.5"

[dev-dependencies.unicode-normalization]
version = "0.1"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
enum_glob_use = "allow"
fn_params_excessive_bools = "allow"
format_in_format_args = "allow"
items_after_statements = "allow"
match_same_arms = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_raw_string_hashes = "allow"
no_effect_underscore_binding = "allow"
similar_names = "allow"
single_match_else = "allow"
struct_excessive_bools = "allow"
too_many_arguments = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
unnecessary_wraps = "allow"
unreadable_literal = "allow"
used_underscore_binding = "allow"
wildcard_imports = "allow"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
unsafe_code = "deny"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(coverage_nightly)"]
