Skip to main content

_diffctx/config/
needs.rs

1use once_cell::sync::Lazy;
2
3use super::env_overrides::read_env_fraction;
4
5pub struct NeedsConfig {
6    pub min_symbol_length: usize,
7    pub background_min_ident_length: usize,
8
9    pub definition_priority: f64,
10    pub call_definition_priority: f64,
11    pub signature_priority: f64,
12    pub impact_priority: f64,
13    pub invariant_priority: f64,
14    pub test_priority: f64,
15    pub background_priority: f64,
16    pub concept_background_priority: f64,
17    pub fallback_priority: f64,
18    pub identifier_default_priority: f64,
19
20    pub defines_scope_match: f64,
21    pub defines_no_scope: f64,
22    pub defines_other_scope: f64,
23    pub impact_scope_match: f64,
24    pub impact_mentions: f64,
25    pub signature_defines: f64,
26    pub test_mentions: f64,
27    pub mentions_fallback: f64,
28
29    pub min_rel_for_bonus: f64,
30    pub relatedness_bonus: f64,
31}
32
33impl Default for NeedsConfig {
34    fn default() -> Self {
35        Self {
36            min_symbol_length: 3,
37            background_min_ident_length: 5,
38
39            definition_priority: 0.9,
40            call_definition_priority: 1.0,
41            signature_priority: 0.7,
42            impact_priority: 0.8,
43            invariant_priority: 0.85,
44            test_priority: 0.6,
45            background_priority: 0.2,
46            concept_background_priority: 0.3,
47            fallback_priority: 0.5,
48            identifier_default_priority: 0.5,
49
50            defines_scope_match: 1.0,
51            defines_no_scope: 0.5,
52            defines_other_scope: 0.3,
53            impact_scope_match: 0.15,
54            impact_mentions: 0.8,
55            signature_defines: 0.7,
56            test_mentions: 0.6,
57            mentions_fallback: 0.3,
58
59            min_rel_for_bonus: read_env_fraction("DIFFCTX_MIN_REL_FOR_BONUS", 0.03),
60            relatedness_bonus: read_env_fraction("DIFFCTX_RELATEDNESS_BONUS", 0.25),
61        }
62    }
63}
64
65pub static NEEDS: Lazy<NeedsConfig> = Lazy::new(NeedsConfig::default);