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 #[deprecated(
11 since = "0.75.0",
12 note = "Model validation removed. API validates model names directly."
13 )]
14 #[serde(default)]
15 pub skip_model_validation: bool,
16
17 #[serde(default = "default_extended_thinking_enabled")]
26 pub extended_thinking_enabled: bool,
27
28 #[serde(default = "default_interleaved_thinking_beta")]
30 pub interleaved_thinking_beta: String,
31
32 #[serde(default = "default_interleaved_thinking_budget_tokens")]
37 pub interleaved_thinking_budget_tokens: u32,
38
39 #[serde(default = "default_interleaved_thinking_type")]
41 pub interleaved_thinking_type_enabled: String,
42
43 #[serde(default)]
45 pub tool_search: ToolSearchConfig,
46
47 #[serde(default = "default_effort")]
52 pub effort: String,
53
54 #[serde(default = "default_count_tokens_enabled")]
58 pub count_tokens_enabled: bool,
59}
60
61#[allow(deprecated)]
62impl Default for AnthropicConfig {
63 fn default() -> Self {
64 Self {
65 skip_model_validation: false,
66 extended_thinking_enabled: default_extended_thinking_enabled(),
67 interleaved_thinking_beta: default_interleaved_thinking_beta(),
68 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
69 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
70 tool_search: ToolSearchConfig::default(),
71 effort: default_effort(),
72 count_tokens_enabled: default_count_tokens_enabled(),
73 }
74 }
75}
76
77#[inline]
78fn default_count_tokens_enabled() -> bool {
79 true
80}
81
82#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
85#[derive(Debug, Clone, Deserialize, Serialize)]
86pub struct ToolSearchConfig {
87 #[serde(default)]
89 pub enabled: bool,
90
91 #[serde(default = "default_tool_search_algorithm")]
93 pub algorithm: String,
94
95 #[serde(default = "default_defer_by_default")]
97 pub defer_by_default: bool,
98
99 #[serde(default = "default_max_results")]
101 pub max_results: u32,
102
103 #[serde(default)]
105 pub always_available_tools: Vec<String>,
106}
107
108impl Default for ToolSearchConfig {
109 fn default() -> Self {
110 Self {
111 enabled: false,
112 algorithm: default_tool_search_algorithm(),
113 defer_by_default: default_defer_by_default(),
114 max_results: default_max_results(),
115 always_available_tools: vec![],
116 }
117 }
118}
119
120#[inline]
121fn default_tool_search_algorithm() -> String {
122 "regex".to_string()
123}
124
125#[inline]
126fn default_defer_by_default() -> bool {
127 true
128}
129
130#[inline]
131fn default_max_results() -> u32 {
132 5
133}
134
135#[inline]
136fn default_extended_thinking_enabled() -> bool {
137 true
138}
139
140#[inline]
141fn default_interleaved_thinking_beta() -> String {
142 "interleaved-thinking-2025-05-14".to_string()
143}
144
145#[inline]
146fn default_interleaved_thinking_budget_tokens() -> u32 {
147 31999
148}
149
150#[inline]
151fn default_interleaved_thinking_type() -> String {
152 "enabled".to_string()
153}
154
155#[inline]
156fn default_effort() -> String {
157 "low".to_string()
158}