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")]
15 pub extended_thinking_enabled: bool,
16
17 #[serde(default = "default_interleaved_thinking_beta")]
19 pub interleaved_thinking_beta: String,
20
21 #[serde(default = "default_interleaved_thinking_budget_tokens")]
26 pub interleaved_thinking_budget_tokens: u32,
27
28 #[serde(default = "default_interleaved_thinking_type")]
30 pub interleaved_thinking_type_enabled: String,
31
32 #[serde(default)]
34 pub tool_search: ToolSearchConfig,
35
36 #[serde(default = "default_effort")]
41 pub effort: String,
42
43 #[serde(default)]
47 pub count_tokens_enabled: bool,
48}
49
50impl Default for AnthropicConfig {
51 fn default() -> Self {
52 Self {
53 extended_thinking_enabled: default_extended_thinking_enabled(),
54 interleaved_thinking_beta: default_interleaved_thinking_beta(),
55 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
56 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
57 tool_search: ToolSearchConfig::default(),
58 effort: default_effort(),
59 count_tokens_enabled: false,
60 }
61 }
62}
63
64#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
67#[derive(Debug, Clone, Deserialize, Serialize)]
68pub struct ToolSearchConfig {
69 #[serde(default)]
71 pub enabled: bool,
72
73 #[serde(default = "default_tool_search_algorithm")]
75 pub algorithm: String,
76
77 #[serde(default = "default_defer_by_default")]
79 pub defer_by_default: bool,
80
81 #[serde(default = "default_max_results")]
83 pub max_results: u32,
84
85 #[serde(default)]
87 pub always_available_tools: Vec<String>,
88}
89
90impl Default for ToolSearchConfig {
91 fn default() -> Self {
92 Self {
93 enabled: false,
94 algorithm: default_tool_search_algorithm(),
95 defer_by_default: default_defer_by_default(),
96 max_results: default_max_results(),
97 always_available_tools: vec![],
98 }
99 }
100}
101
102#[inline]
103fn default_tool_search_algorithm() -> String {
104 "regex".to_string()
105}
106
107#[inline]
108fn default_defer_by_default() -> bool {
109 true
110}
111
112#[inline]
113fn default_max_results() -> u32 {
114 5
115}
116
117#[inline]
118fn default_extended_thinking_enabled() -> bool {
119 true
120}
121
122#[inline]
123fn default_interleaved_thinking_beta() -> String {
124 "interleaved-thinking-2025-05-14".to_string()
125}
126
127#[inline]
128fn default_interleaved_thinking_budget_tokens() -> u32 {
129 31999
130}
131
132#[inline]
133fn default_interleaved_thinking_type() -> String {
134 "enabled".to_string()
135}
136
137#[inline]
138fn default_effort() -> String {
139 "low".to_string()
140}