From bc4354ea208284dbce45ea4f8df81e4f993553be Mon Sep 17 00:00:00 2001 From: Mike Fortman Date: Mon, 24 Nov 2025 16:46:16 -0600 Subject: [PATCH] Detect and default to provider with env set --- .../_components/onboarding-card.tsx | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/frontend/app/onboarding/_components/onboarding-card.tsx b/frontend/app/onboarding/_components/onboarding-card.tsx index 3dffb21e..7ac2e85c 100644 --- a/frontend/app/onboarding/_components/onboarding-card.tsx +++ b/frontend/app/onboarding/_components/onboarding-card.tsx @@ -2,7 +2,7 @@ import { useQueryClient } from "@tanstack/react-query"; import { AnimatePresence, motion } from "framer-motion"; -import { Info, X } from "lucide-react"; +import { X } from "lucide-react"; import { useEffect, useState } from "react"; import { toast } from "sonner"; import { @@ -74,6 +74,42 @@ const OnboardingCard = ({ // Fetch current settings to check if providers are already configured const { data: currentSettings } = useGetSettingsQuery(); + // Auto-select the first provider that has an API key set in env vars + useEffect(() => { + if (!currentSettings?.providers) return; + + // Define provider order based on whether it's embedding or not + const providerOrder = isEmbedding + ? ["openai", "watsonx", "ollama"] + : ["anthropic", "openai", "watsonx", "ollama"]; + + // Find the first provider with an API key + for (const provider of providerOrder) { + if ( + provider === "anthropic" && + currentSettings.providers.anthropic?.has_api_key + ) { + setModelProvider("anthropic"); + return; + } else if (provider === "openai" && currentSettings.providers.openai?.has_api_key) { + setModelProvider("openai"); + return; + } else if ( + provider === "watsonx" && + currentSettings.providers.watsonx?.has_api_key + ) { + setModelProvider("watsonx"); + return; + } else if ( + provider === "ollama" && + currentSettings.providers.ollama?.endpoint + ) { + setModelProvider("ollama"); + return; + } + } + }, [currentSettings, isEmbedding]); + const handleSetModelProvider = (provider: string) => { setIsLoadingModels(false); setModelProvider(provider); @@ -305,7 +341,7 @@ const OnboardingCard = ({