[package]
edition = "2024"
rust-version = "1.95"
name = "talon-core"
version = "0.4.2"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Core retrieval engine for Talon: hybrid search (BM25 + semantic + reranker), indexing, and graph-aware ranking over markdown corpora."
homepage = "https://github.com/seanmozeik/talon"
readme = "README.md"
keywords = [
"search",
"retrieval",
"embeddings",
"bm25",
"obsidian",
]
categories = [
"text-processing",
"database-implementations",
]
license = "MIT"
repository = "https://github.com/seanmozeik/talon"
[lib]
name = "talon_core"
path = "src/lib.rs"
[[test]]
name = "eval_suite"
path = "tests/eval_suite.rs"
[[test]]
name = "fixture_vault"
path = "tests/fixture_vault.rs"
[[test]]
name = "ranking_regression"
path = "tests/ranking_regression.rs"
[[test]]
name = "search_integration"
path = "tests/search_integration.rs"
[[test]]
name = "sync_embed"
path = "tests/sync_embed.rs"
[[bench]]
name = "bm25_with_filter"
path = "benches/bm25_with_filter.rs"
harness = false
[dependencies.fs-err]
version = "3.3.0"
[dependencies.globset]
version = "0.4.18"
[dependencies.indexmap]
version = "2.13.0"
features = ["serde"]
[dependencies.keyring-core]
version = "1.0.0"
[dependencies.lru]
version = "0.18.0"
[dependencies.regex]
version = "1.12.3"
[dependencies.reqwest]
version = "0.13.2"
features = [
"json",
"blocking",
"rustls",
]
default-features = false
[dependencies.rusqlite]
version = "0.32.1"
features = [
"bundled",
"load_extension",
]
[dependencies.rustix]
version = "1.1.4"
features = ["process"]
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.145"
[dependencies.serde_yaml_ng]
version = "0.10.0"
[dependencies.sha2]
version = "0.10.9"
[dependencies.sqlite-vec]
version = "0.1.9"
[dependencies.text-splitter]
version = "0.30.1"
features = ["markdown"]
[dependencies.thiserror]
version = "2.0.17"
[dependencies.time]
version = "0.3.44"
features = [
"formatting",
"parsing",
"macros",
"serde",
]
[dependencies.tokenx-rs]
version = "0.1.0"
[dependencies.tracing]
version = "0.1.41"
[dependencies.unicode-normalization]
version = "0.1.25"
[dependencies.walkdir]
version = "2.5.0"
[dependencies.windows-sys]
version = "0.61.2"
features = [
"Win32_Foundation",
"Win32_System_Threading",
]
[dependencies.xxhash-rust]
version = "0.8.15"
features = ["xxh3"]
[dependencies.yake-rust]
version = "1.0.3"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
default-features = false
[dev-dependencies.tokio]
version = "1.48.0"
features = [
"macros",
"rt-multi-thread",
"signal",
"sync",
"time",
]
[dev-dependencies.wiremock]
version = "0.6.5"
[target.'cfg(target_os = "linux")'.dependencies.linux-keyutils-keyring-store]
version = "1.0.0"
[target.'cfg(target_os = "macos")'.dependencies.security-framework]
version = "3.7.0"
[target.'cfg(target_os = "windows")'.dependencies.windows-native-keyring-store]
version = "1.0.0"
[lints.clippy]
dbg_macro = "deny"
expect_used = "warn"
print_stdout = "warn"
todo = "warn"
unwrap_used = "deny"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.complexity]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.perf]
level = "warn"
priority = -1
[lints.clippy.style]
level = "warn"
priority = -1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
unsafe_code = "deny"
unused_must_use = "deny"
[lints.rustdoc]
broken_intra_doc_links = "deny"
private_intra_doc_links = "warn"