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}
}
);
}