magellan 3.3.13

Deterministic codebase mapping tool for local development
Documentation
[package]
name = "magellan"
version = "3.3.13"
edition = "2021"
license = "GPL-3.0-only"
repository = "https://github.com/oldnordic/magellan"
readme = "README.md"
documentation = "https://github.com/oldnordic/magellan/blob/main/MANUAL.md"
description = "Deterministic codebase mapping tool for local development"
keywords = ["code-indexing", "code-analysis", "ast", "source-code", "cli"]
categories = ["development-tools", "command-line-utilities"]

exclude = [
    ".mcp.json",
    "AGENTS.md",
    "CLAUDE.md",
    "codemcp",
    ".planning/",
    ".github/",
    "get-shit-done/",
    "commands/",
    "scripts/",
    "docs/*",
    "CONTEXT_*.md",
    "MAGELLAN_CONTEXT.md",
    "opencode.json",
    # Internal dev files
    "BUILD_WARNINGS_*.md",
    "CLIPPY_*.md",
    "COMPILATION_ERROR_*.md",
    "CONTEXT_LOGICGRAPH_*.md",
    "TEST-*-RESULTS.md",
    "PLAN_*_MIGRATION.md",
    # Backup and temp files
    "*.bak",
    "*.checkpoint",
    "*.wal",
    ".splice_graph.*",
]

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

[[bench]]
name = "perf_suite"
harness = false
path = "benches/perf_suite.rs"

[[bench]]
name = "context_bench"
harness = false
path = "benches/context_bench.rs"

[[bench]]
name = "kv_metadata_bench"
harness = false
path = "benches/kv_metadata_bench.rs"

[features]
# Default: Hybrid SQLite + Geometric backend
default = ["sqlite-backend", "geometric-backend"]
# SQLite backend (stable, uses SQLite for storage)
# Use this for compatibility and stability
sqlite-backend = ["sqlitegraph/sqlite-backend"]

# GeoGraphDB backend for 3D spatial indexing of CFG data
geometric-backend = ["dep:geographdb-core"]

# Java bytecode CFG (placeholder for future ASM integration)
bytecode-cfg = []

# External tools CFG extraction (C/C++ via clang/LLVM IR text, Java via javac/bytecode)
# Uses external tools (clang, javac) and parses their output files directly
# No LLVM/ASM library dependencies needed - we parse text/binary formats ourselves
# Works on LLVM 22+ and all Java versions, cross-platform compatible
external-tools-cfg = []

# Telemetry for race condition and loop detection
telemetry = []

# LLVM IR CFG for C/C++ (stable, uses LLVM)
llvm-cfg = ["dep:llvm-sys"]

# Platform support
# Windows: opt-in feature for Windows builds (analysis-only, reduced functionality)
windows = []

# Web UI server (optional)
web-ui = ["dep:axum", "dep:tower", "dep:tower-http"]

# Debug instrumentation (disabled by default for performance)
# Enable with: cargo build --features debug-prints
debug-prints = ["geographdb-core/debug-prints"]

# Optional LLVM IR-based CFG extraction for C/C++ (requires clang)
[dependencies]
ahash = "0.8"
notify = "8.2.0"
notify-debouncer-mini = "0.7.0"
anyhow = "1.0"
thiserror = "1.0"
indicatif = "0.17"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"
tree-sitter = "0.25"
tree-sitter-rust = "0.24"
tree-sitter-python = "0.25"
tree-sitter-c = "0.24"
tree-sitter-cpp = "0.23"
tree-sitter-java = "0.23"
tree-sitter-javascript = "0.25"
tree-sitter-typescript = "0.23"
sha2 = "0.10"
hex = "0.4"
uuid = { version = "1.0", features = ["serde", "v4"] }
chrono = { version = "0.4", features = ["serde"] }
signal-hook = "0.3"
sqlitegraph = { version = "3.0.3", default-features = false }
walkdir = "2.5"
git2 = "0.20"
globset = "0.4"
lcov = "0.8.2"
ignore = "0.4.25"
rusqlite = "0.31"
csv = "1.3"
scip = "0.6.1"
protobuf = "3.7"
base64 = "0.22"
blake3 = "1.5"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
memchr = "2"
fixedbitset = "0.4"
camino = "1.2"
rayon = "1.11"
tempfile = "3.10"

# 3D vector types for geometric backend
glam = { version = "0.27", features = ["serde"] }

# GeoGraphDB spatial indexing (optional - for geometric-backend feature)
geographdb-core = { version = "0.1.0", optional = true }

# External tools CFG extraction (C/C++ via clang/LLVM IR text, Java via javac/bytecode)
# Uses external tools (clang, javac) and parses their output files directly
# No LLVM/ASM library dependencies needed - we parse text/binary formats ourselves
# External tools CFG feature: standard library only

# Java bytecode CFG analysis (ASM library)

# LLVM IR CFG analysis for C/C++
llvm-sys = { version = "170", optional = true }

# Async runtime for watcher (Phase 1)
tokio = { version = "1", features = ["rt-multi-thread", "fs", "sync", "time", "macros"] }
tokio-stream = "0.1"
async-channel = "2"

# Web UI server dependencies (optional, enabled by web-ui feature)
axum = { version = "0.7", optional = true }
tower = { version = "0.4", optional = true }
tower-http = { version = "0.5", features = ["fs", "cors"], optional = true }

# LSP support (Phase 3) - optional dependencies
tower-lsp = { version = "0.20", optional = true }
lsp-types = { version = "0.95", optional = true }

# LLVM C API bindings (optional, for llvm-cfg feature)
[dependencies.inkwell]
version = "0.5"
optional = true
# Use the same LLVM version as your clang installation
# Common versions: 12, 13, 14, 15, 16, 17, 18
features = ["target-all"]

# which crate for finding clang in PATH (optional, for llvm-cfg)
[dependencies.which]
version = "6"
optional = false

# Note: llvm-cfg feature requires:
# - LLVM/Clang installed (matching version to inkwell)
# - libclang.so/libLLVM.so in library path
# - This is OPTIONAL - Magellan works fine without it
# AST-based CFG extraction (Phase 42) works for all languages


[dev-dependencies]
criterion = "0.5"