vtcode_core/config/
context.rs1use crate::config::constants::context as context_defaults;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct LedgerConfig {
6 #[serde(default = "default_enabled")]
7 pub enabled: bool,
8 #[serde(default = "default_max_entries")]
9 pub max_entries: usize,
10 #[serde(default = "default_include_in_prompt")]
12 pub include_in_prompt: bool,
13 #[serde(default = "default_preserve_in_compression")]
15 pub preserve_in_compression: bool,
16}
17
18impl Default for LedgerConfig {
19 fn default() -> Self {
20 Self {
21 enabled: default_enabled(),
22 max_entries: default_max_entries(),
23 include_in_prompt: default_include_in_prompt(),
24 preserve_in_compression: default_preserve_in_compression(),
25 }
26 }
27}
28
29fn default_enabled() -> bool {
30 true
31}
32fn default_max_entries() -> usize {
33 12
34}
35fn default_include_in_prompt() -> bool {
36 true
37}
38fn default_preserve_in_compression() -> bool {
39 true
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct ContextFeaturesConfig {
44 #[serde(default)]
45 pub ledger: LedgerConfig,
46 #[serde(default = "default_max_context_tokens")]
47 pub max_context_tokens: usize,
48 #[serde(default = "default_trim_to_percent")]
49 pub trim_to_percent: u8,
50 #[serde(default = "default_preserve_recent_turns")]
51 pub preserve_recent_turns: usize,
52}
53
54impl Default for ContextFeaturesConfig {
55 fn default() -> Self {
56 Self {
57 ledger: LedgerConfig::default(),
58 max_context_tokens: default_max_context_tokens(),
59 trim_to_percent: default_trim_to_percent(),
60 preserve_recent_turns: default_preserve_recent_turns(),
61 }
62 }
63}
64
65fn default_max_context_tokens() -> usize {
66 context_defaults::DEFAULT_MAX_TOKENS
67}
68
69fn default_trim_to_percent() -> u8 {
70 context_defaults::DEFAULT_TRIM_TO_PERCENT
71}
72
73fn default_preserve_recent_turns() -> usize {
74 context_defaults::DEFAULT_PRESERVE_RECENT_TURNS
75}