code-search-please 0.1.10

Hybrid code search for agents — core library (Rust rewrite of MinishLab/semble).
# Published to crates.io as `code-search-please` because the short name `csp`
# is already taken by an unrelated crate. The library name stays `csp` (see
# `[lib]`), so downstream code still writes `use csp::...` — matching the README
# example and the `@pleaseai/csp` npm package.
[package]
name = "code-search-please"
description = "Hybrid code search for agents — core library (Rust rewrite of MinishLab/semble)."
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
homepage = "https://github.com/pleaseai/code-search"
documentation = "https://docs.rs/code-search-please"
readme = "README.md"
keywords = ["code-search", "search", "embeddings", "bm25", "agents"]
categories = ["development-tools", "text-processing"]

[lib]
name = "csp"

[dependencies]
# Populated per the ADR-0003 migration phases.
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
regex = { workspace = true }
fancy-regex = { workspace = true }
indexmap = { workspace = true }
ignore = { workspace = true }
sha2 = { workspace = true }
tempfile = { workspace = true }
# Phase 3 — real Model2Vec dense embeddings (official MinishLab Rust port).
model2vec-rs = { workspace = true }
# Phase 3 — tree-sitter AST chunking. Full upstream-parity grammar coverage via
# `tree-sitter-language-pack` (306 languages), replacing the earlier ~14-grammar
# curated static set (see ADR-0004). Parsers are fetched from GitHub releases on
# first use and cached on disk (`dynamic-loading` + `download`, the crate
# defaults); a language with no available grammar (or an offline fetch failure)
# degrades to line chunking exactly as before.
tree-sitter = { workspace = true }
tree-sitter-language-pack = "1.9"

# CLI + MCP-server dependencies, gated behind the `cli` feature so library
# consumers (`use csp::...`) don't pull the clap/tokio/rmcp stack. The `csp`
# binary sets `required-features = ["cli"]`; the feature is on by default so
# `cargo install code-search-please` yields the `csp` CLI with no extra flags
# (the ripgrep model — one crate, lib + bin). Depend on the library only with
# `default-features = false` to get the lean tree.
clap = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
rmcp = { workspace = true, optional = true }
schemars = { workspace = true, optional = true }
anyhow = { workspace = true, optional = true }

[features]
default = ["cli"]
cli = ["dep:clap", "dep:tokio", "dep:rmcp", "dep:schemars", "dep:anyhow"]

[dev-dependencies]
criterion = { version = "5.0.1", package = "codspeed-criterion-compat" }

[[bin]]
name = "csp"
path = "src/bin/csp/main.rs"
required-features = ["cli"]

[[bench]]
name = "core"
harness = false