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_interleaved_thinking_beta")]
9 pub interleaved_thinking_beta: String,
10
11 #[serde(default = "default_interleaved_thinking_budget_tokens")]
13 pub interleaved_thinking_budget_tokens: u32,
14
15 #[serde(default = "default_interleaved_thinking_type")]
17 pub interleaved_thinking_type_enabled: String,
18
19 #[serde(default)]
21 pub tool_search: ToolSearchConfig,
22
23 #[serde(default = "default_effort")]
28 pub effort: String,
29}
30
31impl Default for AnthropicConfig {
32 fn default() -> Self {
33 Self {
34 interleaved_thinking_beta: default_interleaved_thinking_beta(),
35 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
36 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
37 tool_search: ToolSearchConfig::default(),
38 effort: default_effort(),
39 }
40 }
41}
42
43#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
46#[derive(Debug, Clone, Deserialize, Serialize)]
47pub struct ToolSearchConfig {
48 #[serde(default)]
50 pub enabled: bool,
51
52 #[serde(default = "default_tool_search_algorithm")]
54 pub algorithm: String,
55
56 #[serde(default = "default_defer_by_default")]
58 pub defer_by_default: bool,
59
60 #[serde(default = "default_max_results")]
62 pub max_results: u32,
63
64 #[serde(default)]
66 pub always_available_tools: Vec<String>,
67}
68
69impl Default for ToolSearchConfig {
70 fn default() -> Self {
71 Self {
72 enabled: false,
73 algorithm: default_tool_search_algorithm(),
74 defer_by_default: default_defer_by_default(),
75 max_results: default_max_results(),
76 always_available_tools: vec![],
77 }
78 }
79}
80
81#[inline]
82fn default_tool_search_algorithm() -> String {
83 "regex".to_string()
84}
85
86#[inline]
87fn default_defer_by_default() -> bool {
88 true
89}
90
91#[inline]
92fn default_max_results() -> u32 {
93 5
94}
95
96#[inline]
97fn default_interleaved_thinking_beta() -> String {
98 "interleaved-thinking-2025-05-14".to_string()
99}
100
101#[inline]
102fn default_interleaved_thinking_budget_tokens() -> u32 {
103 12000
104}
105
106#[inline]
107fn default_interleaved_thinking_type() -> String {
108 "enabled".to_string()
109}
110
111#[inline]
112fn default_effort() -> String {
113 "low".to_string()
114}