# Dependencies ## Rust Crates (30+ direct) ### Core Framework | Crate | Version | Purpose | |-------|---------|---------| | `ratatui` | 0.30.2 | TUI framework | | `crossterm` | 0.29 | Terminal manipulation | | `tokio` | 1 | Async runtime (multi-thread, macros, sync, time, net, io-util, signal) | ### HTTP & Networking | Crate | Version | Purpose | |-------|---------|---------| | `reqwest` | 0.13 | HTTP client (JSON, streaming, native-tls-vendored, form) | | `rmcp` | 2.2 | MCP client (child-process, streamable HTTP) | | `webbrowser` | 1 | Open URLs in browser | | `url` | 2 | URL parsing | | `percent-encoding` | 2 | URL encoding | ### HTML/Markdown | Crate | Version | Purpose | |-------|---------|---------| | `dom_smoothie` | 0.18.0 | HTML DOM manipulation | | `fast_html2md` | 0.0.62 | HTML-to-Markdown conversion | | `scraper` | 0.27.0 | HTML parsing/selecting | | `pulldown-cmark` | 0.13 | Markdown parsing (no default features) | ### Serialization | Crate | Version | Purpose | |-------|---------|---------| | `serde` | 1 | Serialization framework | | `serde_json` | 1 | JSON serialization | | `serde_yaml_ng` | 0.10 | YAML serialization | ### Storage & Files | Crate | Version | Purpose | |-------|---------|---------| | `rusqlite` | 0.40 | SQLite (bundled) | | `ignore` | 0.4 | `.gitignore`-aware file walking | | `globset` | 0.4 | Glob pattern matching | | `include_dir` | 0.7 | Embed directory contents in binary | | `infer` | 0.19 | File type detection | | `dirs` | 6 | Standard OS directories | ### Text & Search | Crate | Version | Purpose | |-------|---------|---------| | `regex` | 1 | Regular expressions | | `nucleo-matcher` | 0.3 | Fuzzy matching (for @mention autocomplete) | | `similar` | 3 | Diff computation | | `syntect` | 5 | Syntax highlighting | | `tiktoken-rs` | 0.12 | OpenAI token counting | ### Cryptography & Encoding | Crate | Version | Purpose | |-------|---------|---------| | `base64` | 0.22 | Base64 encoding | | `sha2` | 0.11 | SHA-256 hashing | | `hex` | 0.4 | Hex encoding | | `uuid` | 1 | UUID generation (v4, v5) | | `libc` | 0.2 | Raw C FFI bindings | ### Error Handling & Logging | Crate | Version | Purpose | |-------|---------|---------| | `anyhow` | 1 | Error handling | | `tracing` | 0.1 | Structured logging | | `tracing-subscriber` | 0.3 | Log subscriber with env-filter | | `chrono` | 0.4 | Date/time with serde | ### Other | Crate | Version | Purpose | |-------|---------|---------| | `lsp-types` | 0.97 | LSP protocol types | | `futures-util` | 0.3 | Async stream combinators | ## External Services | Service | Purpose | |---------|---------| | **Anthropic API** | Primary LLM provider | | **OpenAI API** | Alternative LLM provider (including OAuth) | | **GitHub** | Release artifacts via semantic-release CI | | **MCP Servers** | External tool servers (stdio or HTTP) | | **LSP Servers** | Language servers (rust-analyzer, TypeScript, Pyright, gopls, etc.) | ## Build Configuration ### Compiler Lints (`.cargo/config.toml`) All unused code, dead code, and deprecation warnings promoted to errors: `-W unused`, `-W dead_code`, `-W unreachable_code`, `-D warnings` ### Release Profile `opt-level=3`, LTO="fat", `codegen-units=1`, `panic="abort"`, `strip="symbols"`, `overflow-checks=true` ### CI/CD - **CI**: cargo build + test + clippy on every push - **Release**: semantic-release with changelog generation, Cargo.toml version bump, GitHub artifact upload