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
24impl Default for AnthropicConfig {
25 fn default() -> Self {
26 Self {
27 interleaved_thinking_beta: default_interleaved_thinking_beta(),
28 interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
29 interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
30 tool_search: ToolSearchConfig::default(),
31 }
32 }
33}
34
35#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
38#[derive(Debug, Clone, Deserialize, Serialize)]
39pub struct ToolSearchConfig {
40 #[serde(default)]
42 pub enabled: bool,
43
44 #[serde(default = "default_tool_search_algorithm")]
46 pub algorithm: String,
47
48 #[serde(default = "default_defer_by_default")]
50 pub defer_by_default: bool,
51
52 #[serde(default = "default_max_results")]
54 pub max_results: u32,
55
56 #[serde(default)]
58 pub always_available_tools: Vec<String>,
59}
60
61impl Default for ToolSearchConfig {
62 fn default() -> Self {
63 Self {
64 enabled: false,
65 algorithm: default_tool_search_algorithm(),
66 defer_by_default: default_defer_by_default(),
67 max_results: default_max_results(),
68 always_available_tools: vec![],
69 }
70 }
71}
72
73#[inline]
74fn default_tool_search_algorithm() -> String {
75 "regex".to_string()
76}
77
78#[inline]
79fn default_defer_by_default() -> bool {
80 true
81}
82
83#[inline]
84fn default_max_results() -> u32 {
85 5
86}
87
88#[inline]
89fn default_interleaved_thinking_beta() -> String {
90 "interleaved-thinking-2025-05-14".to_string()
91}
92
93#[inline]
94fn default_interleaved_thinking_budget_tokens() -> u32 {
95 12000
96}
97
98#[inline]
99fn default_interleaved_thinking_type() -> String {
100 "enabled".to_string()
101}