[package]
name = "kebab-search"
version       = { workspace = true }
edition       = { workspace = true }
rust-version  = { workspace = true }
license       = { workspace = true }
repository    = { workspace = true }
description   = "Retriever implementations for kb (P2-2 lexical FTS5; P3 vector / hybrid will follow)"

[dependencies]
kebab-core = { path = "../kebab-core" }
kebab-config = { path = "../kebab-config" }
kebab-store-sqlite = { path = "../kebab-store-sqlite" }
# P3-4 hybrid retriever wraps a `dyn VectorStore` (typically backed by
# `kb-store-vector::LanceVectorStore`) and a `dyn Embedder` (any P3-2
# adapter). Listed as a runtime dep so callers can construct
# `VectorRetriever::new` against the trait objects without a concrete
# adapter — the concrete adapter (`kb-embed-local`) stays out of this
# crate per the spec's Forbidden deps list.
kebab-store-vector = { path = "../kebab-store-vector" }
kebab-embed = { path = "../kebab-embed" }
rusqlite        = { workspace = true }
globset         = { workspace = true }
serde_json      = { workspace = true }
tracing         = { workspace = true }
thiserror       = { workspace = true }
anyhow          = { workspace = true }
# p9-fb-32: parse documents.updated_at (RFC3339) into OffsetDateTime
# for SearchHit.indexed_at.
time            = { workspace = true }

[dev-dependencies]
tempfile        = { workspace = true }
# Hybrid integration tests inject a `MockEmbedder` (kb-embed `mock`
# feature) and stand up a real `LanceVectorStore` on a tmp directory.
# The mock-retriever unit tests (the bulk of the hybrid suite) do not
# need either, but the integration / snapshot lane does.
kebab-embed = { path = "../kebab-embed", features = ["mock"] }

[lints]
workspace = true
