selfware 0.2.2

Your personal AI workshop — software you own, software that lasts
Documentation
[package]
name = "selfware"
version = "0.2.2"
edition = "2021"
license = "MIT"
description = "Your personal AI workshop — software you own, software that lasts"
authors = ["Trebuchet Network"]
homepage = "https://selfware.design"
repository = "https://github.com/architehc/selfware"
keywords = ["ai", "agent", "local-first", "cli", "automation"]
categories = ["command-line-utilities", "development-tools"]
readme = "README.md"
rust-version = "1.91"
documentation = "https://docs.rs/selfware"
exclude = [
    "system_tests/",
    "experiments/",
    "k8s/",
    "docs/",
    "screenshots/",
    "sab_results/",
    "kimi_docs/",
    "demos/",
    "selfware.toml",
    "selfware-eval.toml",
    "selfware-extended-test.toml",
    "selfware-longrun.toml",
    "*.zip",
    "*.profraw",
    "*.html",
    "*.info",
    "*.bak",
    ".evolution-log.jsonl",
    "COMPREHENSIVE_PRODUCTION_READINESS_REVIEW.md",
    "PRODUCTION_READINESS_REVIEW.md",
    "SECOND_OPINION_REVIEW.md",
    "EVAL_REPORT.md",
    "COMPREHENSIVE_PROJECT_REVIEW.md",
    "PROJECT_REVIEW_2026_03_06.md",
    "GEMINI_RECOMMENDATIONS.md",
    "QUICK_FIXES.md",
    "ARCHITECTURE_SUMMARY.md",
    "Dockerfile",
    ".dockerignore",
    ".tarpaulin.toml",
    "deny.toml",
    ".pre-commit-config.yaml",
    ".github/",
]

[dependencies]
tokio = { version = "1.43", features = ["rt-multi-thread", "macros", "sync", "time", "fs", "io-util", "process", "signal"] }
anyhow = "1.0"
thiserror = "2.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
reqwest = { version = "0.13", features = ["json", "stream", "blocking"] }
clap = { version = "4.4", features = ["derive"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
git2 = "0.20"  # Updated for security fixes (CVE-2024-24575, CVE-2024-24577)
walkdir = "2.4"
regex = "1.11"
colored = "3.1"
chrono = { version = "0.4", features = ["serde"] }
futures = "0.3"
async-trait = "0.1"
tempfile = "3.9"
base64 = "0.22"
glob = "0.3"
sha2 = "0.10"
shlex = "1"
pbkdf2 = "0.12"
hmac = "0.12"
hex = "0.4"
toml = "1.0"
uuid = { version = "1.6", features = ["v4"] }
once_cell = "1.19"
tiktoken-rs = "0.9"
whoami = "2.1"

# Modern CLI/TUI
reedline = "0.46"
crossterm = "0.29"
ratatui = "0.30"
fuzzy-matcher = "0.3"
syntect = "5.2"
nu-ansi-term = "0.50"
dirs = "6.0"
nucleo = "0.5"  # Fast fuzzy matcher
pulldown-cmark = "0.13"  # Markdown parsing (0.12+ has breaking API changes)
similar = "2.4"  # Diff algorithm
unicode-width = "0.2"  # Unicode character display width
rand = "0.9"  # Random number generation
url = "2"  # URL parsing for SSRF protection
ctrlc = "3"

# Vector Memory & RAG
hnsw_rs = "0.3"  # Hierarchical Navigable Small World graphs (embedded vector search)
bincode = { version = "2.0", features = ["serde"] }  # Fast binary serialization
aes-gcm = "0.10"
keyring = "3.2"

# Workflows
serde_yaml = "0.9"  # YAML workflow definitions
zeroize = "1.8.2"
parking_lot = "0.12.5"
lru = "0.16.3"
libloading = "0.9.0"
sysinfo = "0.38.3"
xcap = "0.3"
nvml-wrapper = "0.12.0"
zstd = "0.13.3"
openssl = { version = "0.10", features = ["vendored"], optional = true }  # For cross-compilation in release builds
tokenizers = { version = "0.22.2", features = ["hf-hub", "http"] }
tracing-appender = "0.2.4"
opentelemetry = "0.21.0"
opentelemetry_sdk = { version = "0.21.0", features = ["rt-tokio"] }
opentelemetry-otlp = "0.14.0"
tracing-opentelemetry = "0.22.0"
metrics = "0.21.0"
metrics-exporter-prometheus = "0.12.1"

[target.'cfg(unix)'.dependencies]
nix = { version = "0.31", features = ["signal"] }

[features]
default = ["tui", "workflows", "resilience", "execution-modes", "cache", "log-analysis", "tokens", "self-improvement"]
integration = []  # Enable with: cargo test --features integration

# Semantic feature flags (replacing monolithic "extras")
# TUI dashboard mode with animations and demos
tui = []
# Workflow automation and parallel execution
workflows = []
# Self-healing and graceful degradation
resilience = []
# Execution control modes (dry-run, confirm, yolo)
execution-modes = []
# Caching layer for responses
cache = []
# Log analysis and diagnostics
log-analysis = []
# Token counting and management
tokens = []
# Recursive self-improvement loop
self-improvement = []
# Dynamic library hot-reload (security-sensitive, off by default)
hot-reload = []
# Vendored OpenSSL for cross-compilation (release builds)
vendored-openssl = ["dep:openssl"]

# VLM benchmark suite for visual understanding evaluation
vlm-bench = []

# System-level E2E tests (require live LLM endpoint, run manually)
system-tests = []

# Convenience feature that enables all optional modules
extras = ["tui", "workflows", "resilience", "execution-modes", "cache", "log-analysis", "tokens", "self-improvement", "hot-reload", "vlm-bench"]

[dev-dependencies]
tokio-test = "0.4"
criterion = { version = "0.8", features = ["html_reports"] }
proptest = "1.5"
assert_cmd = "2.1.2"
predicates = "3.1.4"

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

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

[[test]]
name = "unit"
path = "tests/unit/mod.rs"

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

# Examples
[[example]]
name = "basic_chat"
path = "examples/basic_chat.rs"

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

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

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

# VLM Benchmark binaries
[[bin]]
name = "vlm_gen_fixtures"
path = "src/bin/vlm_gen_fixtures.rs"
required-features = ["vlm-bench"]

[[bin]]
name = "vlm_bench_run"
path = "src/bin/vlm_bench_run.rs"
required-features = ["vlm-bench"]

# Benchmarks
[[bench]]
name = "token_processing"
harness = false

[[bench]]
name = "vlm_benchmark"
harness = false
required-features = ["vlm-bench"]