From b20da9ab58d5352bf98c7b84d28b2fde7c7ce7ae Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Wed, 3 Dec 2025 17:27:08 -0300 Subject: [PATCH] format --- .../_components/ollama-onboarding.tsx | 312 +++++++++--------- .../_components/openai-onboarding.tsx | 306 ++++++++--------- 2 files changed, 309 insertions(+), 309 deletions(-) diff --git a/frontend/app/onboarding/_components/ollama-onboarding.tsx b/frontend/app/onboarding/_components/ollama-onboarding.tsx index 70b7b363..d5c7428c 100644 --- a/frontend/app/onboarding/_components/ollama-onboarding.tsx +++ b/frontend/app/onboarding/_components/ollama-onboarding.tsx @@ -11,170 +11,170 @@ import { useUpdateSettings } from "../_hooks/useUpdateSettings"; import { ModelSelector } from "./model-selector"; export function OllamaOnboarding({ - setSettings, - sampleDataset, - setSampleDataset, - setIsLoadingModels, - isEmbedding = false, - alreadyConfigured = false, - existingEndpoint, + setSettings, + sampleDataset, + setSampleDataset, + setIsLoadingModels, + isEmbedding = false, + alreadyConfigured = false, + existingEndpoint, }: { - setSettings: Dispatch>; - sampleDataset: boolean; - setSampleDataset: (dataset: boolean) => void; - setIsLoadingModels?: (isLoading: boolean) => void; - isEmbedding?: boolean; - alreadyConfigured?: boolean; - existingEndpoint?: string; + setSettings: Dispatch>; + sampleDataset: boolean; + setSampleDataset: (dataset: boolean) => void; + setIsLoadingModels?: (isLoading: boolean) => void; + isEmbedding?: boolean; + alreadyConfigured?: boolean; + existingEndpoint?: string; }) { - const [endpoint, setEndpoint] = useState( - alreadyConfigured - ? undefined - : existingEndpoint || `http://localhost:11434`, - ); - const [showConnecting, setShowConnecting] = useState(false); - const debouncedEndpoint = useDebouncedValue(endpoint, 500); + const [endpoint, setEndpoint] = useState( + alreadyConfigured + ? undefined + : existingEndpoint || `http://localhost:11434`, + ); + const [showConnecting, setShowConnecting] = useState(false); + const debouncedEndpoint = useDebouncedValue(endpoint, 500); - // Fetch models from API when endpoint is provided (debounced) - const { - data: modelsData, - isLoading: isLoadingModels, - error: modelsError, - } = useGetOllamaModelsQuery( - debouncedEndpoint ? { endpoint: debouncedEndpoint } : undefined, - { enabled: !!debouncedEndpoint || alreadyConfigured || alreadyConfigured }, - ); + // Fetch models from API when endpoint is provided (debounced) + const { + data: modelsData, + isLoading: isLoadingModels, + error: modelsError, + } = useGetOllamaModelsQuery( + debouncedEndpoint ? { endpoint: debouncedEndpoint } : undefined, + { enabled: !!debouncedEndpoint || alreadyConfigured || alreadyConfigured }, + ); - // Use custom hook for model selection logic - const { - languageModel, - embeddingModel, - setLanguageModel, - setEmbeddingModel, - languageModels, - embeddingModels, - } = useModelSelection(modelsData, isEmbedding); + // Use custom hook for model selection logic + const { + languageModel, + embeddingModel, + setLanguageModel, + setEmbeddingModel, + languageModels, + embeddingModels, + } = useModelSelection(modelsData, isEmbedding); - // Handle delayed display of connecting state - useEffect(() => { - let timeoutId: NodeJS.Timeout; + // Handle delayed display of connecting state + useEffect(() => { + let timeoutId: NodeJS.Timeout; - if (debouncedEndpoint && isLoadingModels) { - timeoutId = setTimeout(() => { - setIsLoadingModels?.(true); - setShowConnecting(true); - }, 500); - } else { - setShowConnecting(false); - setIsLoadingModels?.(false); - } + if (debouncedEndpoint && isLoadingModels) { + timeoutId = setTimeout(() => { + setIsLoadingModels?.(true); + setShowConnecting(true); + }, 500); + } else { + setShowConnecting(false); + setIsLoadingModels?.(false); + } - return () => { - if (timeoutId) { - clearTimeout(timeoutId); - } - }; - }, [debouncedEndpoint, isLoadingModels, setIsLoadingModels]); + return () => { + if (timeoutId) { + clearTimeout(timeoutId); + } + }; + }, [debouncedEndpoint, isLoadingModels, setIsLoadingModels]); - // Update settings when values change - useUpdateSettings( - "ollama", - { - endpoint, - languageModel, - embeddingModel, - }, - setSettings, - isEmbedding, - ); + // Update settings when values change + useUpdateSettings( + "ollama", + { + endpoint, + languageModel, + embeddingModel, + }, + setSettings, + isEmbedding, + ); - // Check validation state based on models query - const hasConnectionError = debouncedEndpoint && modelsError; - const hasNoModels = - modelsData && - !modelsData.language_models?.length && - !modelsData.embedding_models?.length; + // Check validation state based on models query + const hasConnectionError = debouncedEndpoint && modelsError; + const hasNoModels = + modelsData && + !modelsData.language_models?.length && + !modelsData.embedding_models?.length; - return ( -
-
- setEndpoint(e.target.value)} - disabled={alreadyConfigured} - /> - {alreadyConfigured && ( -

- Reusing endpoint from model provider selection. -

- )} - {showConnecting && ( -

- Connecting to Ollama server... -

- )} - {hasConnectionError && ( -

- Can't reach Ollama at {debouncedEndpoint}. Update the base URL or - start the server. -

- )} - {hasNoModels && ( -

- No models found. Install embedding and agent models on your Ollama - server. -

- )} -
- {isEmbedding && setEmbeddingModel && ( - - } - noOptionsPlaceholder={ - isLoadingModels - ? "Loading models..." - : "No embedding models detected. Install an embedding model to continue." - } - value={embeddingModel} - onValueChange={setEmbeddingModel} - /> - - )} - {!isEmbedding && setLanguageModel && ( - - } - noOptionsPlaceholder={ - isLoadingModels - ? "Loading models..." - : "No language models detected. Install a language model to continue." - } - value={languageModel} - onValueChange={setLanguageModel} - /> - - )} -
- ); + return ( +
+
+ setEndpoint(e.target.value)} + disabled={alreadyConfigured} + /> + {alreadyConfigured && ( +

+ Reusing endpoint from model provider selection. +

+ )} + {showConnecting && ( +

+ Connecting to Ollama server... +

+ )} + {hasConnectionError && ( +

+ Can't reach Ollama at {debouncedEndpoint}. Update the base URL or + start the server. +

+ )} + {hasNoModels && ( +

+ No models found. Install embedding and agent models on your Ollama + server. +

+ )} +
+ {isEmbedding && setEmbeddingModel && ( + + } + noOptionsPlaceholder={ + isLoadingModels + ? "Loading models..." + : "No embedding models detected. Install an embedding model to continue." + } + value={embeddingModel} + onValueChange={setEmbeddingModel} + /> + + )} + {!isEmbedding && setLanguageModel && ( + + } + noOptionsPlaceholder={ + isLoadingModels + ? "Loading models..." + : "No language models detected. Install a language model to continue." + } + value={languageModel} + onValueChange={setLanguageModel} + /> + + )} +
+ ); } diff --git a/frontend/app/onboarding/_components/openai-onboarding.tsx b/frontend/app/onboarding/_components/openai-onboarding.tsx index 69255b7a..d7272cde 100644 --- a/frontend/app/onboarding/_components/openai-onboarding.tsx +++ b/frontend/app/onboarding/_components/openai-onboarding.tsx @@ -5,9 +5,9 @@ import { LabelInput } from "@/components/label-input"; import { LabelWrapper } from "@/components/label-wrapper"; import { Switch } from "@/components/ui/switch"; import { - Tooltip, - TooltipContent, - TooltipTrigger, + Tooltip, + TooltipContent, + TooltipTrigger, } from "@/components/ui/tooltip"; import { useDebouncedValue } from "@/lib/debounce"; import type { OnboardingVariables } from "../../api/mutations/useOnboardingMutation"; @@ -17,161 +17,161 @@ import { useUpdateSettings } from "../_hooks/useUpdateSettings"; import { AdvancedOnboarding } from "./advanced"; export function OpenAIOnboarding({ - setSettings, - sampleDataset, - setSampleDataset, - setIsLoadingModels, - isEmbedding = false, - hasEnvApiKey = false, - alreadyConfigured = false, + setSettings, + sampleDataset, + setSampleDataset, + setIsLoadingModels, + isEmbedding = false, + hasEnvApiKey = false, + alreadyConfigured = false, }: { - setSettings: Dispatch>; - sampleDataset: boolean; - setSampleDataset: (dataset: boolean) => void; - setIsLoadingModels?: (isLoading: boolean) => void; - isEmbedding?: boolean; - hasEnvApiKey?: boolean; - alreadyConfigured?: boolean; + setSettings: Dispatch>; + sampleDataset: boolean; + setSampleDataset: (dataset: boolean) => void; + setIsLoadingModels?: (isLoading: boolean) => void; + isEmbedding?: boolean; + hasEnvApiKey?: boolean; + alreadyConfigured?: boolean; }) { - const [apiKey, setApiKey] = useState(""); - const [getFromEnv, setGetFromEnv] = useState( - hasEnvApiKey && !alreadyConfigured, - ); - const debouncedApiKey = useDebouncedValue(apiKey, 500); + const [apiKey, setApiKey] = useState(""); + const [getFromEnv, setGetFromEnv] = useState( + hasEnvApiKey && !alreadyConfigured, + ); + const debouncedApiKey = useDebouncedValue(apiKey, 500); - // Fetch models from API when API key is provided - const { - data: modelsData, - isLoading: isLoadingModels, - error: modelsError, - } = useGetOpenAIModelsQuery( - getFromEnv - ? { apiKey: "" } - : debouncedApiKey - ? { apiKey: debouncedApiKey } - : undefined, - { - // Only validate when the user opts in (env) or provides a key. - // If a key was previously configured, let the user decide to reuse or replace it - // without triggering an immediate validation error. - enabled: debouncedApiKey !== "" || getFromEnv || alreadyConfigured, - }, - ); - // Use custom hook for model selection logic - const { - languageModel, - embeddingModel, - setLanguageModel, - setEmbeddingModel, - languageModels, - embeddingModels, - } = useModelSelection(modelsData, isEmbedding); - const handleSampleDatasetChange = (dataset: boolean) => { - setSampleDataset(dataset); - }; + // Fetch models from API when API key is provided + const { + data: modelsData, + isLoading: isLoadingModels, + error: modelsError, + } = useGetOpenAIModelsQuery( + getFromEnv + ? { apiKey: "" } + : debouncedApiKey + ? { apiKey: debouncedApiKey } + : undefined, + { + // Only validate when the user opts in (env) or provides a key. + // If a key was previously configured, let the user decide to reuse or replace it + // without triggering an immediate validation error. + enabled: debouncedApiKey !== "" || getFromEnv || alreadyConfigured, + }, + ); + // Use custom hook for model selection logic + const { + languageModel, + embeddingModel, + setLanguageModel, + setEmbeddingModel, + languageModels, + embeddingModels, + } = useModelSelection(modelsData, isEmbedding); + const handleSampleDatasetChange = (dataset: boolean) => { + setSampleDataset(dataset); + }; - const handleGetFromEnvChange = (fromEnv: boolean) => { - setGetFromEnv(fromEnv); - if (fromEnv) { - setApiKey(""); - } - setEmbeddingModel?.(""); - setLanguageModel?.(""); - }; + const handleGetFromEnvChange = (fromEnv: boolean) => { + setGetFromEnv(fromEnv); + if (fromEnv) { + setApiKey(""); + } + setEmbeddingModel?.(""); + setLanguageModel?.(""); + }; - useEffect(() => { - setIsLoadingModels?.(isLoadingModels); - }, [isLoadingModels, setIsLoadingModels]); + useEffect(() => { + setIsLoadingModels?.(isLoadingModels); + }, [isLoadingModels, setIsLoadingModels]); - // Update settings when values change - useUpdateSettings( - "openai", - { - apiKey, - languageModel, - embeddingModel, - }, - setSettings, - isEmbedding, - ); + // Update settings when values change + useUpdateSettings( + "openai", + { + apiKey, + languageModel, + embeddingModel, + }, + setSettings, + isEmbedding, + ); - return ( - <> -
- {!alreadyConfigured && ( - - - -
- -
-
- {!hasEnvApiKey && ( - - OpenAI API key not detected in the environment. - - )} -
-
- )} - {(!getFromEnv || alreadyConfigured) && ( -
- setApiKey(e.target.value)} - // Even if a key exists, allow replacing it to avoid getting stuck on stale creds. - disabled={false} - /> - {alreadyConfigured && ( -

- Existing OpenAI key detected. You can reuse it or enter a new - one. -

- )} - {isLoadingModels && ( -

- Validating API key... -

- )} - {modelsError && ( -

- Invalid OpenAI API key. Verify or replace the key. -

- )} -
- )} -
- } - languageModels={languageModels} - embeddingModels={embeddingModels} - languageModel={languageModel} - embeddingModel={embeddingModel} - sampleDataset={sampleDataset} - setLanguageModel={setLanguageModel} - setSampleDataset={handleSampleDatasetChange} - setEmbeddingModel={setEmbeddingModel} - /> - - ); + return ( + <> +
+ {!alreadyConfigured && ( + + + +
+ +
+
+ {!hasEnvApiKey && ( + + OpenAI API key not detected in the environment. + + )} +
+
+ )} + {(!getFromEnv || alreadyConfigured) && ( +
+ setApiKey(e.target.value)} + // Even if a key exists, allow replacing it to avoid getting stuck on stale creds. + disabled={false} + /> + {alreadyConfigured && ( +

+ Existing OpenAI key detected. You can reuse it or enter a new + one. +

+ )} + {isLoadingModels && ( +

+ Validating API key... +

+ )} + {modelsError && ( +

+ Invalid OpenAI API key. Verify or replace the key. +

+ )} +
+ )} +
+ } + languageModels={languageModels} + embeddingModels={embeddingModels} + languageModel={languageModel} + embeddingModel={embeddingModel} + sampleDataset={sampleDataset} + setLanguageModel={setLanguageModel} + setSampleDataset={handleSampleDatasetChange} + setEmbeddingModel={setEmbeddingModel} + /> + + ); }