diff --git a/src/providers/mod.rs b/src/providers/mod.rs index 6f4f0ef..8684479 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -212,6 +212,15 @@ pub fn create_resilient_provider( continue; } + if api_key.is_some() && fallback != "ollama" { + tracing::warn!( + fallback_provider = fallback, + primary_provider = primary_name, + "Fallback provider will use the primary provider's API key — \ + this will fail if the providers require different keys" + ); + } + match create_provider(fallback, api_key) { Ok(provider) => providers.push((fallback.clone(), provider)), Err(e) => { diff --git a/src/providers/reliable.rs b/src/providers/reliable.rs index 7b0af14..5c20c52 100644 --- a/src/providers/reliable.rs +++ b/src/providers/reliable.rs @@ -26,9 +26,11 @@ impl ReliableProvider { #[async_trait] impl Provider for ReliableProvider { async fn warmup(&self) -> anyhow::Result<()> { - if let Some((name, provider)) = self.providers.first() { + for (name, provider) in &self.providers { tracing::info!(provider = name, "Warming up provider connection pool"); - provider.warmup().await?; + if let Err(e) = provider.warmup().await { + tracing::warn!(provider = name, "Warmup failed (non-fatal): {e}"); + } } Ok(()) } diff --git a/src/tools/shell.rs b/src/tools/shell.rs index a9c0bb7..a06558b 100644 --- a/src/tools/shell.rs +++ b/src/tools/shell.rs @@ -79,11 +79,8 @@ impl Tool for ShellTool { } } - let result = tokio::time::timeout( - Duration::from_secs(SHELL_TIMEOUT_SECS), - cmd.output(), - ) - .await; + let result = + tokio::time::timeout(Duration::from_secs(SHELL_TIMEOUT_SECS), cmd.output()).await; match result { Ok(Ok(output)) => {