aethershell 1.7.0

The world's first multi-agent shell with typed functional pipelines and multi-modal AI
[workspace]
members = [".", "crates/aethershell-lsp", "crates/agentic-eval"]
exclude = ["web", "integrations/python"]

[package]
name = "aethershell"
version = "1.7.0"
edition = "2021"
authors = ["Nervosys <contact@nervosys.ai>"]
description = "The world's first multi-agent shell with typed functional pipelines and multi-modal AI"
license = "AGPL-3.0-or-later"
repository = "https://github.com/nervosys/AetherShell"
homepage = "https://github.com/nervosys/AetherShell"
documentation = "https://github.com/nervosys/AetherShell/blob/master/README.md"
keywords = ["shell", "ai", "multi-agent", "functional", "multimodal"]
categories = ["command-line-utilities", "development-tools"]
readme = "README.md"
rust-version = "1.75"
exclude = [
    "assets/",
    "demos/",
    "docs/",
    "editors/",
    "Formula/",
    "infra/",
    "integrations/",
    "samples/",
    "scripts/",
    "temp/",
    "test-scripts/",
    "website/",
    "web/",
    "/FEATURE_DEMO.ae",
    "/demo_all_features.ae",
    "/demo_new_features.ae",
    "/temp_test.ae",
    "/test_assignment.ae",
    "/temp_section.md",
    "Dockerfile",
    "deny.toml",
    "DIRECTORY_OVERVIEW.md",
    "PROJECT_STRUCTURE.md",
    "ROADMAP.md",
    "TESTING.md",
    "CHANGELOG.md",
    "CLA.md",
    "CONTRIBUTING.md",
    ".github/",
    # Internal AI-assistant / editor config and separate artifacts — not part of
    # the published library; kept out of the crate package.
    # `.mailmap` is a git-side authorship tool with no meaning inside a
    # published crate, and it maps a maintainer's personal email address —
    # keep it out of the permanent crates.io archive.
    ".mailmap",
    ".clinerules",
    ".cursor/",
    ".windsurfrules",
    "extensions/",
]

[features]
default = ["native"]
native = [
    "dep:walkdir",
    "dep:which",
    "dep:crossterm",
    "dep:ratatui",
    "dep:tui-input",
    "dep:image",
    "dep:viuer",
    "dep:rodio",
    "dep:keyring",
    "dep:tokio",
    "dep:axum",
    "dep:tower",
    "dep:tower-http",
    "dep:utoipa",
    "dep:utoipa-swagger-ui",
    "dep:jsonschema",
]
candle = [
    "dep:candle-core",
    "dep:candle-nn",
    "dep:candle-transformers",
    "dep:hf-hub",
    "dep:tokenizers",
]
onnx = ["dep:ort"]
# Real GPT-4 BPE tokenizer (embeds cl100k vocab) for exact token counts across
# the token-economy builtins (tokens/budget/digest/accounting) and the benchmark.
real-tokens = ["dep:tiktoken-rs"]
web = [
    "dep:wasm-bindgen",
    "dep:console_error_panic_hook",
    "dep:js-sys",
    "dep:web-sys",
]

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

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

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

[dependencies]
anyhow = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
csv = "1.3"
chrono = { version = "0.4", features = ["clock", "serde"] }
thiserror = "1.0"
uuid = { version = "1.0", features = ["v4", "serde", "js"] }
base64 = "0.21"
mime = "0.3"
lazy_static = "1.4"
secrecy = { version = "0.8", features = ["serde"] }
zeroize = "1.7"
toml = "0.8"
clap = { version = "4.0", features = ["derive"] }
futures = "0.3"
futures-util = "0.3"
async-stream = "0.3"
rand = "0.8"
sha2 = "0.10"
url = "2.5"
urlencoding = "2.1"
flate2 = "1.0"
tar = "0.4"
getrandom = { version = "0.2", features = ["js"] }
async-trait = "0.1"
dirs = "5.0"
hex = "0.4"
semver = "1.0"
libloading = "0.8"
notify = "6.1"
md5 = "0.7"
sysinfo = "0.33"
regex = "1.10"

# Native-only dependencies (terminal, TUI, system interaction)
walkdir = { version = "2", optional = true }
which = { version = "6", optional = true }
crossterm = { version = "0.27", optional = true }
ratatui = { version = "0.26", optional = true }
tui-input = { version = "0.8", optional = true }
image = { version = "0.24", features = [
    "jpeg",
    "png",
    "gif",
    "webp",
], optional = true }
viuer = { version = "0.7", optional = true }
rodio = { version = "0.17", features = ["mp3", "wav", "flac"], optional = true }
keyring = { version = "2.3", optional = true }
tokio = { version = "1.0", features = ["full"], optional = true }
axum = { version = "0.7", features = ["ws"], optional = true }
tower = { version = "0.4", optional = true }
tower-http = { version = "0.5", features = [
    "cors",
    "trace",
    "timeout",
], optional = true }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
utoipa = { version = "4.0", features = ["axum_extras"], optional = true }
utoipa-swagger-ui = { version = "6.0", features = ["axum"], optional = true }
tokio-stream = "0.1"
jsonschema = { version = "0.17", optional = true }

# Local inference backends (optional)
candle-core = { version = "0.8", optional = true }
candle-nn = { version = "0.8", optional = true }
candle-transformers = { version = "0.8", optional = true }
hf-hub = { version = "0.3", optional = true }
tokenizers = { version = "0.21", optional = true }
tiktoken-rs = { version = "0.6", optional = true }
ort = { version = "2.0.0-rc.9", optional = true }

# Unix-only dependencies (Linux, macOS, BSD)
[target.'cfg(unix)'.dependencies]
libc = "0.2"

# HTTP client - non-optional for non-wasm targets
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
reqwest = { version = "0.12", features = [
    "blocking",
    "json",
    "rustls-tls",
    "stream",
] }

# WASM-only dependencies
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = { version = "0.2", optional = true }
console_error_panic_hook = { version = "0.1", optional = true }
js-sys = { version = "0.3", optional = true }
web-sys = { version = "0.3", features = [
    "console",
    "Window",
    "Document",
    "HtmlElement",
    "HtmlInputElement",
    "HtmlTextAreaElement",
    "KeyboardEvent",
], optional = true }

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
# Four-axis agentic evaluation (token efficiency, determinism, reliability, safety)
# applied to AetherShell's real engine in examples/agentic_eval.rs + the matching test.
agentic-eval = { path = "crates/agentic-eval", version = "0.14" }

[[bench]]
name = "mcp_performance"
harness = false

[[bench]]
name = "builtin_performance"
harness = false

[[bench]]
name = "parser_performance"
harness = false

[[bench]]
name = "eval_performance"
harness = false

[[bench]]
name = "pipeline_performance"
harness = false

# ============================================================================
# Linux Package Metadata
# ============================================================================

[package.metadata.deb]
maintainer = "Nervosys <contact@nervosys.ai>"
copyright = "2024-2026 Nervosys"
license-file = ["LICENSE", "0"]
section = "utils"
priority = "optional"
extended-description = """\
AetherShell is a next-generation shell combining typed functional pipelines \
with multi-modal AI agents. Features include Hindley-Milner type inference, \
structured data pipelines, multi-provider LLM support, agent swarms, \
TUI interface, MCP server, and bash compatibility."""
depends = "$auto"
assets = [
    [
        "target/release/ae",
        "usr/bin/ae",
        "755",
    ],
    [
        "target/release/aimodel",
        "usr/bin/aimodel",
        "755",
    ],
    [
        "README.md",
        "usr/share/doc/aethershell/README.md",
        "644",
    ],
    [
        "LICENSE",
        "usr/share/doc/aethershell/LICENSE",
        "644",
    ],
]

[package.metadata.generate-rpm]
assets = [
    { source = "target/release/ae", dest = "/usr/bin/ae", mode = "755" },
    { source = "target/release/aimodel", dest = "/usr/bin/aimodel", mode = "755" },
    { source = "README.md", dest = "/usr/share/doc/aethershell/README.md", mode = "644" },
    { source = "LICENSE", dest = "/usr/share/doc/aethershell/LICENSE", mode = "644" },
]