repograph-core 0.4.0

Core library for repograph: registering, grouping, and exposing local git repositories as structured context for AI agents.
Documentation
[package]
name = "repograph-core"
version = "0.4.0"
description = "Core library for repograph: registering, grouping, and exposing local git repositories as structured context for AI agents."
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
readme.workspace = true
rust-version.workspace = true

# repograph-core is a library with no binaries. This opt-out keeps cargo-dist
# from trying to build artifacts for the lib when it processes the workspace on
# the `repograph-v*` tag. (It does NOT stop a `repograph-core-v*` tag from
# triggering a failing dist run — that tag is suppressed in release-plz.toml via
# `git_tag_enable = false`.)
[package.metadata.dist]
dist = false

[lib]
name = "repograph_core"

[dependencies]
serde = { workspace = true }
thiserror = { workspace = true }
fs-err = { workspace = true }
dunce = { workspace = true }
# Diagnostics for adapter-level warnings (skipped repos, degraded embedding).
# A no-op without a subscriber; the binary installs one. Per logging.md, the
# `git2`/search adapters in core may log; pure data structs must not.
tracing = { workspace = true }
toml = "1.0"
git2 = { version = "0.21", default-features = false, features = [
    "vendored-libgit2",
    "vendored-openssl",
    "https",
    "ssh",
] }
dirs = "6"
globset = "0.4"
# Embedded index store. `bundled` compiles SQLite in (no system dep) with FTS5
# enabled, giving BM25 lexical search; vectors are stored as Float32 BLOBs in a
# plain table and cosine is computed in Rust.
rusqlite = { version = "0.37", features = ["bundled"] }
# Local semantic embeddings — OPTIONAL, behind the `semantic` feature. Pulls the
# ONNX runtime (downloaded at build time) and a model (downloaded once at
# runtime), so it is never compiled unless `--features semantic` is set. The
# always-on lexical path needs none of this.
fastembed = { version = "5", optional = true }

[features]
default = []
# Opt-in semantic retrieval: compiles `fastembed` and the embedding/vector code
# paths. Without it, `repograph find --semantic` degrades to lexical with a
# stderr notice. NOT enabled by dist/release builds (dist-workspace.toml sets no
# `features`, so cargo-dist builds default features only) — packaged binaries
# ship lexical-only. For embeddings: `cargo install repograph --features semantic`.
semantic = ["dep:fastembed"]

[dev-dependencies]
tempfile = "3"
pretty_assertions = "1"
serde_json = { workspace = true }

[lints]
workspace = true