use composio_sdk::{ToolkitVersion, ToolkitVersionParam, ToolkitVersions};
use std::collections::HashMap;
fn main() {
println!("=== Composio SDK: Toolkit Versioning Example ===\n");
println!("1. Using 'latest' for all toolkits:");
let config = ToolkitVersionParam::Latest;
println!(" Config: {:?}", config);
println!(" Serialized: {}\n", serde_json::to_string(&config).unwrap());
println!("2. Using specific versions:");
let mut versions: ToolkitVersions = HashMap::new();
versions.insert(
"github".to_string(),
ToolkitVersion::Specific("20250906_01".to_string()),
);
versions.insert("gmail".to_string(), ToolkitVersion::Latest);
versions.insert(
"slack".to_string(),
ToolkitVersion::Specific("20250801_01".to_string()),
);
let config = ToolkitVersionParam::Versions(versions);
println!(" Config: {:?}", config);
println!(" Serialized: {}\n", serde_json::to_string_pretty(&config).unwrap());
println!("3. Not specifying versions (server default):");
let config = ToolkitVersionParam::None;
println!(" Config: {:?}", config);
println!(" Serialized: {}\n", serde_json::to_string(&config).unwrap());
println!("4. Using environment variables:");
println!(" Set COMPOSIO_TOOLKIT_VERSION_GITHUB=20250906_01");
std::env::set_var("COMPOSIO_TOOLKIT_VERSION_GITHUB", "20250906_01");
use composio_sdk::utils::toolkit_version::get_toolkit_version;
let version = get_toolkit_version("github", None);
println!(" Resolved version for github: {}", version.as_str());
std::env::remove_var("COMPOSIO_TOOLKIT_VERSION_GITHUB");
println!("\n5. Version resolution precedence:");
println!(" 1. COMPOSIO_TOOLKIT_VERSION_{{TOOLKIT}} (highest)");
println!(" 2. User-provided configuration");
println!(" 3. COMPOSIO_TOOLKIT_VERSION (global)");
println!(" 4. 'latest' (default)");
println!("\n6. Extracting versions from environment:");
std::env::set_var("COMPOSIO_TOOLKIT_VERSION_GITHUB", "20250906_01");
std::env::set_var("COMPOSIO_TOOLKIT_VERSION_GMAIL", "latest");
use composio_sdk::utils::toolkit_version::get_versions_from_env;
let env_versions = get_versions_from_env();
println!(" Found {} toolkit versions in environment:", env_versions.len());
for (toolkit, version) in &env_versions {
println!(" - {}: {}", toolkit, version.as_str());
}
std::env::remove_var("COMPOSIO_TOOLKIT_VERSION_GITHUB");
std::env::remove_var("COMPOSIO_TOOLKIT_VERSION_GMAIL");
println!("\n=== Example Complete ===");
}