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)]
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: false,
73 }
74 }
75}
76
77#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
80#[derive(Debug, Clone, Deserialize, Serialize)]
81pub struct ToolSearchConfig {
82 #[serde(default)]
84 pub enabled: bool,
85
86 #[serde(default = "default_tool_search_algorithm")]
88 pub algorithm: String,
89
90 #[serde(default = "default_defer_by_default")]
92 pub defer_by_default: bool,
93
94 #[serde(default = "default_max_results")]
96 pub max_results: u32,
97
98 #[serde(default)]
100 pub always_available_tools: Vec<String>,
101}
102
103impl Default for ToolSearchConfig {
104 fn default() -> Self {
105 Self {
106 enabled: false,
107 algorithm: default_tool_search_algorithm(),
108 defer_by_default: default_defer_by_default(),
109 max_results: default_max_results(),
110 always_available_tools: vec![],
111 }
112 }
113}
114
115#[inline]
116fn default_tool_search_algorithm() -> String {
117 "regex".to_string()
118}
119
120#[inline]
121fn default_defer_by_default() -> bool {
122 true
123}
124
125#[inline]
126fn default_max_results() -> u32 {
127 5
128}
129
130#[inline]
131fn default_extended_thinking_enabled() -> bool {
132 true
133}
134
135#[inline]
136fn default_interleaved_thinking_beta() -> String {
137 "interleaved-thinking-2025-05-14".to_string()
138}
139
140#[inline]
141fn default_interleaved_thinking_budget_tokens() -> u32 {
142 31999
143}
144
145#[inline]
146fn default_interleaved_thinking_type() -> String {
147 "enabled".to_string()
148}
149
150#[inline]
151fn default_effort() -> String {
152 "low".to_string()
153}