Skip to main content

talon_core/config/
search.rs

1//! Search and inspect configuration tables.
2
3use serde::{Deserialize, Serialize};
4
5use super::defaults::{
6    default_candidate_limit, default_limit, default_rerank_batch_size, default_rerank_cache_size,
7    default_rerank_max_tokens, default_search_cache_size,
8};
9
10/// Lint settings.
11#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
12#[serde(deny_unknown_fields)]
13pub struct InspectConfig {
14    /// Glob-style patterns of file paths to skip when reporting inspect findings.
15    /// Takes precedence over per-scope `inspect = true`. Files matching these
16    /// globs are still indexed for link resolution.
17    #[serde(default)]
18    pub ignore: Vec<String>,
19}
20
21/// Search defaults and process-level cache/client tunables.
22#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
23#[serde(deny_unknown_fields)]
24pub struct SearchConfig {
25    /// Candidate pool size used when no CLI flag is provided.
26    #[serde(default = "default_candidate_limit")]
27    pub candidate_limit: u16,
28    /// Result limit used when no CLI flag is provided.
29    #[serde(default = "default_limit")]
30    pub limit: u16,
31    /// Search-response LRU capacity.
32    #[serde(default = "default_search_cache_size")]
33    pub cache_size: usize,
34    /// Rerank score LRU capacity.
35    #[serde(default = "default_rerank_cache_size")]
36    pub rerank_cache_size: usize,
37    /// Reranker HTTP request batch size.
38    #[serde(default = "default_rerank_batch_size")]
39    pub rerank_batch_size: usize,
40    /// Approximate reranker text budget.
41    #[serde(default = "default_rerank_max_tokens")]
42    pub rerank_max_tokens: u32,
43}
44
45impl Default for SearchConfig {
46    fn default() -> Self {
47        Self {
48            candidate_limit: default_candidate_limit(),
49            limit: default_limit(),
50            cache_size: default_search_cache_size(),
51            rerank_cache_size: default_rerank_cache_size(),
52            rerank_batch_size: default_rerank_batch_size(),
53            rerank_max_tokens: default_rerank_max_tokens(),
54        }
55    }
56}