codetether_agent/cli/
search.rs1use std::sync::Arc;
7
8use anyhow::Result;
9
10use crate::cli::SearchArgs;
11use crate::provider::ProviderRegistry;
12use crate::search::{model::DEFAULT_ROUTER_MODEL, run_router_search};
13
14pub async fn execute(args: SearchArgs) -> Result<()> {
19 let providers = Arc::new(ProviderRegistry::from_vault().await?);
20 let router_model = args
21 .router_model
22 .clone()
23 .or_else(|| std::env::var("CODETETHER_SEARCH_ROUTER_MODEL").ok())
24 .unwrap_or_else(|| DEFAULT_ROUTER_MODEL.to_string());
25 let top_n = args.top_n.max(1);
26 let result = run_router_search(providers, &router_model, &args.query, top_n).await?;
27 if args.json {
28 println!("{}", serde_json::to_string_pretty(&result)?);
29 } else {
30 super::search_render::render_human(&result);
31 }
32 Ok(())
33}