vtcode_config/core/
provider.rs

1use serde::{Deserialize, Serialize};
2
3/// Anthropic-specific provider configuration
4#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5#[derive(Debug, Clone, Deserialize, Serialize)]
6pub struct AnthropicConfig {
7    /// Beta header for interleaved thinking feature
8    #[serde(default = "default_interleaved_thinking_beta")]
9    pub interleaved_thinking_beta: String,
10
11    /// Budget tokens for interleaved thinking
12    #[serde(default = "default_interleaved_thinking_budget_tokens")]
13    pub interleaved_thinking_budget_tokens: u32,
14
15    /// Type value for enabling interleaved thinking
16    #[serde(default = "default_interleaved_thinking_type")]
17    pub interleaved_thinking_type_enabled: String,
18}
19
20impl Default for AnthropicConfig {
21    fn default() -> Self {
22        Self {
23            interleaved_thinking_beta: default_interleaved_thinking_beta(),
24            interleaved_thinking_budget_tokens: default_interleaved_thinking_budget_tokens(),
25            interleaved_thinking_type_enabled: default_interleaved_thinking_type(),
26        }
27    }
28}
29
30#[inline]
31fn default_interleaved_thinking_beta() -> String {
32    "interleaved-thinking-2025-05-14".to_string()
33}
34
35#[inline]
36fn default_interleaved_thinking_budget_tokens() -> u32 {
37    12000
38}
39
40#[inline]
41fn default_interleaved_thinking_type() -> String {
42    "enabled".to_string()
43}