pub const CLAUDE_CODE_20250219_BETA_HEADER: &str = "claude-code-20250219";
pub const INTERLEAVED_THINKING_BETA_HEADER: &str = "interleaved-thinking-2025-05-14";
pub const CONTEXT_1M_BETA_HEADER: &str = "context-1m-2025-08-07";
pub const CONTEXT_MANAGEMENT_BETA_HEADER: &str = "context-management-2025-06-27";
pub const STRUCTURED_OUTPUTS_BETA_HEADER: &str = "structured-outputs-2025-12-15";
pub const WEB_SEARCH_BETA_HEADER: &str = "web-search-2025-03-05";
pub const TOOL_SEARCH_BETA_HEADER_1P: &str = "advanced-tool-use-2025-11-20";
pub const TOOL_SEARCH_BETA_HEADER_3P: &str = "tool-search-tool-2025-10-19";
pub const EFFORT_BETA_HEADER: &str = "effort-2025-11-24";
pub const TASK_BUDGETS_BETA_HEADER: &str = "task-budgets-2026-03-13";
pub const PROMPT_CACHING_SCOPE_BETA_HEADER: &str = "prompt-caching-scope-2026-01-05";
pub const FAST_MODE_BETA_HEADER: &str = "fast-mode-2026-02-01";
pub const REDACT_THINKING_BETA_HEADER: &str = "redact-thinking-2026-02-12";
pub const TOKEN_EFFICIENT_TOOLS_BETA_HEADER: &str = "token-efficient-tools-2026-03-28";
pub fn get_summarize_connector_text_beta_header() -> &'static str {
"summarize-connector-text-2026-03-13"
}
pub fn get_afk_mode_beta_header() -> &'static str {
"afk-mode-2026-01-31"
}
pub fn get_cli_internal_beta_header() -> &'static str {
""
}
pub const ADVISOR_BETA_HEADER: &str = "advisor-tool-2026-03-01";
use std::collections::HashSet;
pub fn get_bedrock_extra_params_headers() -> HashSet<&'static str> {
let mut set = HashSet::new();
set.insert(INTERLEAVED_THINKING_BETA_HEADER);
set.insert(CONTEXT_1M_BETA_HEADER);
set.insert(TOOL_SEARCH_BETA_HEADER_3P);
set
}
pub fn get_vertex_count_tokens_allowed_betas() -> HashSet<&'static str> {
let mut set = HashSet::new();
set.insert(CLAUDE_CODE_20250219_BETA_HEADER);
set.insert(INTERLEAVED_THINKING_BETA_HEADER);
set.insert(CONTEXT_MANAGEMENT_BETA_HEADER);
set
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bedrock_extra_params_headers() {
let headers = get_bedrock_extra_params_headers();
assert!(headers.contains(INTERLEAVED_THINKING_BETA_HEADER));
assert!(headers.contains(CONTEXT_1M_BETA_HEADER));
assert!(headers.contains(TOOL_SEARCH_BETA_HEADER_3P));
}
#[test]
fn test_vertex_count_tokens_allowed_betas() {
let betas = get_vertex_count_tokens_allowed_betas();
assert!(betas.contains(CLAUDE_CODE_20250219_BETA_HEADER));
assert!(betas.contains(INTERLEAVED_THINKING_BETA_HEADER));
assert!(betas.contains(CONTEXT_MANAGEMENT_BETA_HEADER));
}
}