[workspace]
members = [".", "crates/codescout-embed"]
resolver = "2"
[workspace.package]
edition = "2021"
license = "MIT"
authors = ["Marius Ailinca"]
repository = "https://github.com/mareurs/codescout"
homepage = "https://mareurs.github.io/codescout/"
documentation = "https://mareurs.github.io/codescout/"
[workspace.dependencies]
anyhow = "1"
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
rusqlite = { version = "0.39" }
sqlite-vec = "0.1"
[package]
name = "codescout"
version = "0.13.0"
edition = "2021"
description = "High-performance coding agent toolkit MCP server"
repository = "https://github.com/mareurs/codescout"
homepage = "https://mareurs.github.io/codescout/"
documentation = "https://mareurs.github.io/codescout/"
license = "MIT"
rust-version = "1.82"
build = "build.rs"
exclude = [".codescout/", "docs/", "scripts/", ".github/", "CLAUDE.md"]
[lib]
name = "codescout"
path = "src/lib.rs"
[[bin]]
name = "codescout"
path = "src/main.rs"
[dependencies]
tikv-jemallocator = "0.6"
fs4 = "0.12"
tokio = { version = "1", features = ["full"] }
rmcp = { version = "1.3", features = ["server", "macros", "transport-io", "elicitation", "schemars"] }
schemars = "1"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
toml = "1"
anyhow = "1"
thiserror = "2"
async-trait = "0.1"
codescout-embed = { path = "crates/codescout-embed", version = "0.1.0" }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
tracing-appender = "0.2"
clap = { version = "4", features = ["derive"] }
git2 = { version = "0.20", default-features = false, features = ["vendored-libgit2"] }
rusqlite = { version = "0.39" }
sqlite-vec = "0.1"
qdrant-client = { version = "1.13", default-features = false, features = ["serde"] }
reqwest = { version = "0.13", default-features = false, features = ["json", "http2", "charset", "rustls-no-provider"] }
rustls = { version = "0.23", default-features = false, features = ["ring", "tls12", "std", "logging"] }
walkdir = "2"
ignore = "0.4"
globset = "0.4"
regex = "1"
sha2 = "0.10"
hex = "0.4"
lsp-types = "0.97"
url = "2"
tree-sitter = "0.26"
tree-sitter-rust = "0.24.0"
tree-sitter-python = "0.25.0"
tree-sitter-go = "0.25.0"
tree-sitter-typescript = "0.23.2"
tree-sitter-java = "0.23.5"
tree-sitter-kotlin-ng = "1.1.0"
tree-sitter-html = "0.23"
tree-sitter-css = "0.23"
tree-sitter-bash = "0.23"
libc = "0.2.182"
chrono = { version = "0.4", features = ["serde"] }
tempfile = "3"
axum = { version = "0.8", features = ["json"], optional = true }
tower-http = { version = "0.6", features = ["cors", "limit", "timeout"], optional = true }
open = { version = "5", optional = true }
tokio-util = "0.7"
uuid = { version = "1.20.0", features = ["v4", "v5"] }
parking_lot = "0.12"
serde_yml = { version = "0.0.12", optional = true }
dirs = { version = "5", optional = true }
pulldown-cmark = { version = "0.13", optional = true }
futures = { version = "0.3", optional = true }
ulid = { version = "1", optional = true }
minijinja = { version = "2", default-features = false, features = ["builtins", "serde"], optional = true }
jsonschema = { version = "0.30", default-features = false, optional = true }
[features]
default = ["remote-embed", "http", "librarian"]
librarian = [
"dep:serde_yml",
"dep:dirs",
"dep:pulldown-cmark",
"dep:futures",
"dep:ulid",
"dep:minijinja",
"dep:jsonschema",
]
dashboard = ["dep:axum", "dep:tower-http", "dep:open"]
http = ["dep:axum", "dep:tower-http", "rmcp/transport-streamable-http-server"]
remote-embed = ["codescout-embed/remote-embed"]
local-embed = ["codescout-embed/local-embed"]
e2e = ["e2e-rust", "e2e-python", "e2e-typescript", "e2e-kotlin", "e2e-java"]
e2e-rust = []
e2e-python = []
e2e-typescript = []
e2e-kotlin = []
e2e-java = []
retrieval-e2e = []
[profile.dev]
opt-level = 0
debug = 1
[profile.dev.build-override]
opt-level = 3
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 16
strip = true
panic = "abort"
[dev-dependencies]
tempfile = "3"
tower = "0.5"
filetime = "0.2"
mockito = "1"
tokio = { version = "1", features = ["test-util"] }
assert_cmd = "2"
predicates = "3"
serial_test = "3.4.0"