rustyclaw_core/mnemo/
config.rs1use serde::{Deserialize, Serialize};
4use std::path::PathBuf;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct MnemoConfig {
9 #[serde(default)]
11 pub enabled: bool,
12
13 #[serde(default)]
16 pub db_path: Option<PathBuf>,
17
18 #[serde(default = "default_fresh_tail")]
21 pub fresh_tail_messages: usize,
22
23 #[serde(default = "default_leaf_chunk")]
26 pub leaf_chunk_size: usize,
27
28 #[serde(default = "default_condensed_chunk")]
31 pub condensed_chunk_size: usize,
32
33 #[serde(default = "default_threshold")]
36 pub threshold_items: usize,
37
38 #[serde(default)]
40 pub summarization: SummarizationConfig,
41}
42
43impl Default for MnemoConfig {
44 fn default() -> Self {
45 Self {
46 enabled: false,
47 db_path: None,
48 fresh_tail_messages: default_fresh_tail(),
49 leaf_chunk_size: default_leaf_chunk(),
50 condensed_chunk_size: default_condensed_chunk(),
51 threshold_items: default_threshold(),
52 summarization: SummarizationConfig::default(),
53 }
54 }
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
59pub struct SummarizationConfig {
60 #[serde(default = "default_use_main_model")]
64 pub use_main_model: bool,
65
66 #[serde(default)]
69 pub provider: Option<String>,
70
71 #[serde(default)]
74 pub model: Option<String>,
75
76 #[serde(default = "default_fallback")]
80 pub fallback: String,
81
82 #[serde(default = "default_truncate_chars")]
84 pub truncate_chars: usize,
85
86 #[serde(default = "default_truncate_total")]
88 pub truncate_total: usize,
89}
90
91impl Default for SummarizationConfig {
92 fn default() -> Self {
93 Self {
94 use_main_model: true,
95 provider: None,
96 model: None,
97 fallback: default_fallback(),
98 truncate_chars: default_truncate_chars(),
99 truncate_total: default_truncate_total(),
100 }
101 }
102}
103
104fn default_fresh_tail() -> usize { 6 }
105fn default_leaf_chunk() -> usize { 8 }
106fn default_condensed_chunk() -> usize { 4 }
107fn default_threshold() -> usize { 24 }
108fn default_use_main_model() -> bool { true }
109fn default_fallback() -> String { "truncate".to_string() }
110fn default_truncate_chars() -> usize { 180 }
111fn default_truncate_total() -> usize { 900 }