Files
zesdex/docs/CODEMAPS/dependencies.md
T

4.6 KiB

Dependencies

Semua dependency dideklarasikan di [workspace.dependencies] dalam Cargo.toml root, lalu di-inherit oleh setiap crate anggota.

Crate per Layer

Domain (apps/domain)

Hanya boleh pakai dependency yang tidak membawa I/O:

Crate Versi Fungsi
serde 1 Serialisasi (derive)
serde_json 1 JSON
chrono 0.4 Tanggal/waktu
uuid 1 UUID v4/v5
anyhow 1 Error handling
thiserror 1 Derive error types

Infrastructure (apps/infrastructure)

Semua I/O, LLM, DB, tools:

Crate Versi Fungsi
tokio 1 Async runtime (rt-multi-thread, macros, sync, time, net, io-util, signal)
reqwest 0.13 HTTP client (json, stream, blocking, native-tls-vendored, form)
rusqlite 0.40 SQLite (bundled — tidak perlu install sistem)
rmcp 2.2 MCP client (child-process, streamable HTTP)
tiktoken-rs 0.12 Token counting (OpenAI cl100k)
similar 3 Diff computation
syntect 5 Syntax highlighting (default-fancy)
ignore 0.4 File walking dengan .gitignore support
globset 0.4 Glob pattern matching
include_dir 0.7 Embed direktori ke binary
infer 0.19 Deteksi tipe file dari byte signature
regex 1 Regular expressions
nucleo-matcher 0.3 Fuzzy matching (untuk @mention autocomplete)
webbrowser 1 Buka URL di browser (OAuth)
url 2 URL parsing
percent-encoding 2 URL encoding
dom_smoothie 0.18.0 HTML DOM manipulation
fast_html2md 0.0.62 HTML → Markdown
scraper 0.27.0 HTML parsing + CSS selector
pulldown-cmark 0.13 Markdown parsing
lsp-types 0.97 LSP protocol types
futures-util 0.3 Async stream combinators
libc 0.2 Raw C FFI (Unix process groups)

TUI (apps/interfaces/tui)

Crate Versi Fungsi
ratatui 0.30.2 TUI framework
crossterm 0.29 Terminal manipulation (raw mode, events, mouse)
base64 0.22 Base64 (OSC52 clipboard)
sha2 0.11 SHA-256
hex 0.4 Hex encoding
dirs 6 Platform data directory

API (apps/interfaces/api)

Crate Versi Fungsi
axum 0.8 HTTP server framework (macros)
tower 0.5 Middleware layer
tower-http 0.6 CORS, body limit
argon2 0.5 Password hashing
jsonwebtoken 9 JWT (HS256)
clap 4 CLI argument parsing (derive)
rand_core 0.6 Secure random (getrandom)

Serialization (semua layer)

Crate Versi Fungsi
serde 1 Framework serialisasi
serde_json 1 JSON
serde_yaml_ng 0.10 YAML (frontmatter memory files)

Layanan Eksternal

Layanan Fungsi
LLM Provider OpenAI/Anthropic-compatible API (default: OpenCode AI / DeepSeek)
MCP Servers Tool servers eksternal via stdio atau HTTP
LSP Servers rust-analyzer, typescript-language-server, pyright, gopls, dll
GitHub Release artifacts via semantic-release CI

Build & CI

Compiler Lints (Cargo.toml workspace)

[workspace.lints.rust]
unused = "deny"
dead_code = "deny"
unreachable_code = "deny"
unused_imports = "deny"
unused_variables = "deny"
unused_mut = "deny"
unused_must_use = "deny"
deprecated = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"

[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -2 }

Release Profile

[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
strip = "symbols"
overflow-checks = true

CI/CD

  • CI: cargo build + cargo test + cargo clippy --all-targets pada setiap push
  • Release: semantic-release — auto changelog, Cargo.toml version bump, GitHub artifact upload
  • Versioning: v1.17.0 (saat ini) — mengikuti semver dari commit messages

Feature Flags Penting

Crate Feature Alasan
rusqlite bundled SQLite statically linked — tidak perlu install sistem
reqwest blocking Sync HTTP untuk agent turn di blocking thread
reqwest native-tls-vendored TLS tanpa dependency sistem
tokio rt-multi-thread Async runtime multi-thread
pulldown-cmark (no default) Tidak include semua fitur berat
syntect default-fancy Syntax highlighting penuh
rmcp transport-child-process + transport-streamable-http-client-reqwest MCP via stdio dan HTTP