[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"] }