vtcode_config/core/
provider.rs1use serde::{Deserialize, Serialize};
2
3#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5#[derive(Debug, Clone, Deserialize, Serialize)]
6pub struct AnthropicConfig {
7 #[serde(default)]
13 pub skip_model_validation: bool,
14
15 #[serde(default = "default_extended_thinking_enabled")]
23 pub extended_thinking_enabled: bool,
24
25 #[serde(default = "default_interleaved_thinking_beta")]
27 pub interleaved_thinking_beta: String,
28
29 #[serde(default = "default_interleaved_thinking_budget_tokens")]
34 pub interleaved_thinking_budget_tokens: u32,
35
36 #[serde(default = "default_interleaved_thinking_type")]
38 pub interleaved_thinking_type_enabled: String,
39
40 #[serde(default)]
42 pub tool_search: ToolSearchConfig,
43
44 #[serde(default = "default_effort")]
49 pub effort: String,
50
51 #[serde(default)]
55 pub count_tokens_enabled: bool,
56}
57
58impl Default for AnthropicConfig {
59 fn default() -> Self {
60 Self {
61 skip_model_validation: false,
62 extended_thinking_enabled: default_extended_thinking_enabled(),
63 interleaved_thinking_beta: default_interleaved_thinking_beta(),
64 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
65 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
66 tool_search: ToolSearchConfig::default(),
67 effort: default_effort(),
68 count_tokens_enabled: false,
69 }
70 }
71}
72
73#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
76#[derive(Debug, Clone, Deserialize, Serialize)]
77pub struct ToolSearchConfig {
78 #[serde(default)]
80 pub enabled: bool,
81
82 #[serde(default = "default_tool_search_algorithm")]
84 pub algorithm: String,
85
86 #[serde(default = "default_defer_by_default")]
88 pub defer_by_default: bool,
89
90 #[serde(default = "default_max_results")]
92 pub max_results: u32,
93
94 #[serde(default)]
96 pub always_available_tools: Vec<String>,
97}
98
99impl Default for ToolSearchConfig {
100 fn default() -> Self {
101 Self {
102 enabled: false,
103 algorithm: default_tool_search_algorithm(),
104 defer_by_default: default_defer_by_default(),
105 max_results: default_max_results(),
106 always_available_tools: vec![],
107 }
108 }
109}
110
111#[inline]
112fn default_tool_search_algorithm() -> String {
113 "regex".to_string()
114}
115
116#[inline]
117fn default_defer_by_default() -> bool {
118 true
119}
120
121#[inline]
122fn default_max_results() -> u32 {
123 5
124}
125
126#[inline]
127fn default_extended_thinking_enabled() -> bool {
128 true
129}
130
131#[inline]
132fn default_interleaved_thinking_beta() -> String {
133 "interleaved-thinking-2025-05-14".to_string()
134}
135
136#[inline]
137fn default_interleaved_thinking_budget_tokens() -> u32 {
138 31999
139}
140
141#[inline]
142fn default_interleaved_thinking_type() -> String {
143 "enabled".to_string()
144}
145
146#[inline]
147fn default_effort() -> String {
148 "low".to_string()
149}