JOIN documents.updated_at. stale defaults to false; App facade post-processes against config threshold. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.7 KiB
TOML
39 lines
1.7 KiB
TOML
[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"] }
|