diff --git a/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/AgentLLMItem/index.jsx b/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/AgentLLMItem/index.jsx index 10bb03473c..02be032dc7 100644 --- a/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/AgentLLMItem/index.jsx +++ b/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/AgentLLMItem/index.jsx @@ -4,11 +4,12 @@ import { createPortal } from "react-dom"; import ModalWrapper from "@/components/ModalWrapper"; import { useModal } from "@/hooks/useModal"; -import { X } from "@phosphor-icons/react"; +import { X, Gear } from "@phosphor-icons/react"; import System from "@/models/system"; import showToast from "@/utils/toast"; +import { useEffect, useState } from "react"; -export default function WorkspaceLLM({ +export default function AgentLLMItem({ llm, availableLLMs, settings, @@ -17,18 +18,31 @@ export default function WorkspaceLLM({ }) { const { isOpen, openModal, closeModal } = useModal(); const { name, value, logo, description } = llm; + const [currentSettings, setCurrentSettings] = useState(settings); + + useEffect(() => { + async function getSettings() { + if (isOpen) { + const _settings = await System.keys(); + setCurrentSettings(_settings ?? {}); + } + } + getSettings(); + }, [isOpen]); function handleProviderSelection() { // Determine if provider needs additional setup because its minimum required keys are // not yet set in settings. - const requiresAdditionalSetup = (llm.requiredConfig || []).some( - (key) => !settings[key] - ); - if (requiresAdditionalSetup) { - openModal(); - return; + if (!checked) { + const requiresAdditionalSetup = (llm.requiredConfig || []).some( + (key) => !currentSettings[key] + ); + if (requiresAdditionalSetup) { + openModal(); + return; + } + onClick(value); } - onClick(value); } return ( @@ -47,16 +61,30 @@ export default function WorkspaceLLM({ readOnly={true} formNoValidate={true} /> -