use spider_agent::{Agent, SpiderBrowserToolConfig};
fn env_flag(name: &str) -> bool {
matches!(
std::env::var(name)
.unwrap_or_default()
.trim()
.to_ascii_lowercase()
.as_str(),
"1" | "true" | "yes"
)
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
let api_key = std::env::var("SPIDER_CLOUD_API_KEY").expect("SPIDER_CLOUD_API_KEY must be set");
let stealth = env_flag("SPIDER_BROWSER_STEALTH");
let country = std::env::var("SPIDER_BROWSER_COUNTRY").ok();
let mut cfg = SpiderBrowserToolConfig::new(&api_key).with_stealth(stealth);
if let Some(ref c) = country {
cfg = cfg.with_country(c);
}
println!("=== Spider Browser Cloud ===");
println!("WSS URL: {}", cfg.connection_url());
println!("Stealth: {}", stealth);
if let Some(ref c) = country {
println!("Country: {}", c);
}
let agent = Agent::builder().with_spider_browser_config(cfg).build()?;
let tools = agent.list_custom_tools();
println!("\nRegistered tools ({}):", tools.len());
for tool in &tools {
println!(" - {}", tool);
}
println!("\nExecuting spider_browser_navigate...");
let body = serde_json::json!({ "url": "https://example.com" });
let result = agent
.execute_custom_tool(
"spider_browser_navigate",
None,
None,
Some(&body.to_string()),
)
.await;
match result {
Ok(r) => {
println!("Status: {} (success={})", r.status, r.success);
let preview = if r.body.len() > 200 {
format!("{}...", &r.body[..200])
} else {
r.body.clone()
};
println!("Response: {}", preview);
}
Err(e) => {
println!("Error: {}", e);
println!("(This is expected if the WSS endpoint requires a live connection)");
}
}
println!("\n--- Combined with Spider Cloud API ---");
let combined = Agent::builder()
.with_spider_cloud(&api_key)
.with_spider_browser(&api_key)
.build()?;
let all_tools = combined.list_custom_tools();
println!("Total tools: {}", all_tools.len());
let cloud_tools: Vec<_> = all_tools
.iter()
.filter(|t| t.starts_with("spider_cloud_"))
.collect();
let browser_tools: Vec<_> = all_tools
.iter()
.filter(|t| t.starts_with("spider_browser_"))
.collect();
println!(" Spider Cloud API tools: {}", cloud_tools.len());
println!(" Spider Browser tools: {}", browser_tools.len());
Ok(())
}