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 = "default_extended_thinking_enabled")]
13 pub extended_thinking_enabled: bool,
14
15 #[serde(default = "default_interleaved_thinking_beta")]
17 pub interleaved_thinking_beta: String,
18
19 #[serde(default = "default_interleaved_thinking_budget_tokens")]
23 pub interleaved_thinking_budget_tokens: u32,
24
25 #[serde(default = "default_interleaved_thinking_type")]
27 pub interleaved_thinking_type_enabled: String,
28
29 #[serde(default)]
31 pub tool_search: ToolSearchConfig,
32
33 #[serde(default = "default_effort")]
38 pub effort: String,
39
40 #[serde(default)]
44 pub count_tokens_enabled: bool,
45}
46
47impl Default for AnthropicConfig {
48 fn default() -> Self {
49 Self {
50 extended_thinking_enabled: default_extended_thinking_enabled(),
51 interleaved_thinking_beta: default_interleaved_thinking_beta(),
52 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
53 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
54 tool_search: ToolSearchConfig::default(),
55 effort: default_effort(),
56 count_tokens_enabled: false,
57 }
58 }
59}
60
61#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
64#[derive(Debug, Clone, Deserialize, Serialize)]
65pub struct ToolSearchConfig {
66 #[serde(default)]
68 pub enabled: bool,
69
70 #[serde(default = "default_tool_search_algorithm")]
72 pub algorithm: String,
73
74 #[serde(default = "default_defer_by_default")]
76 pub defer_by_default: bool,
77
78 #[serde(default = "default_max_results")]
80 pub max_results: u32,
81
82 #[serde(default)]
84 pub always_available_tools: Vec<String>,
85}
86
87impl Default for ToolSearchConfig {
88 fn default() -> Self {
89 Self {
90 enabled: false,
91 algorithm: default_tool_search_algorithm(),
92 defer_by_default: default_defer_by_default(),
93 max_results: default_max_results(),
94 always_available_tools: vec![],
95 }
96 }
97}
98
99#[inline]
100fn default_tool_search_algorithm() -> String {
101 "regex".to_string()
102}
103
104#[inline]
105fn default_defer_by_default() -> bool {
106 true
107}
108
109#[inline]
110fn default_max_results() -> u32 {
111 5
112}
113
114#[inline]
115fn default_extended_thinking_enabled() -> bool {
116 true
117}
118
119#[inline]
120fn default_interleaved_thinking_beta() -> String {
121 "interleaved-thinking-2025-05-14".to_string()
122}
123
124#[inline]
125fn default_interleaved_thinking_budget_tokens() -> u32 {
126 12000
127}
128
129#[inline]
130fn default_interleaved_thinking_type() -> String {
131 "enabled".to_string()
132}
133
134#[inline]
135fn default_effort() -> String {
136 "low".to_string()
137}