diff --git a/AgentCompany-New/src/renderer/src/pages/settings/ProvidersPanel.tsx b/AgentCompany-New/src/renderer/src/pages/settings/ProvidersPanel.tsx index 6cd94b1a..ad2b7862 100644 --- a/AgentCompany-New/src/renderer/src/pages/settings/ProvidersPanel.tsx +++ b/AgentCompany-New/src/renderer/src/pages/settings/ProvidersPanel.tsx @@ -354,21 +354,43 @@ function ProviderOAuthFields({ } function ModelPicker({ entry, provider }: { entry: ProviderCatalogEntry; provider: ProviderRecord }) { - const defaultValue = provider.model ?? entry.defaultModel ?? entry.models[0]?.id ?? ""; - if (entry.models.length === 0) { - return ( - - - - ); - } + const [fetched, setFetched] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [value, setValue] = useState(provider.model ?? entry.defaultModel ?? entry.models[0]?.id ?? ""); + const models = fetched ?? entry.models; + const connected = Boolean(provider.credentialId) && provider.enabled && provider.authState === "configured"; + + const refresh = async () => { + setLoading(true); + setError(null); + const result = await window.agentCompany.listProviderModels({ providerKey: entry.key, orgId: provider.orgId, providerId: provider.id }); + setLoading(false); + if (!result.ok) { + setError(result.error.message); + return; + } + setFetched(result.data); + if (result.data[0] && !result.data.some((model) => model.id === value)) setValue(result.data[0].id); + }; + return ( - + {models.length ? ( + + ) : ( + setValue(event.target.value)} /> + )} + {connected && ( + + )} + {error &&
{error}
}
); }