diff --git a/src/main/apiServer/utils/index.ts b/src/main/apiServer/utils/index.ts index bd2a9aa927..d58c38f8ca 100644 --- a/src/main/apiServer/utils/index.ts +++ b/src/main/apiServer/utils/index.ts @@ -190,13 +190,21 @@ export async function validateModelId( export function transformModelToOpenAI(model: Model, providers: Provider[]): ApiModel { const provider = providers.find((p) => p.id === model.provider) + const providerDisplayName = + provider?.name ?? + (provider as { providerName?: string })?.providerName ?? + (provider as { displayName?: string })?.displayName ?? + (model as { providerName?: string; providerDisplayName?: string })?.providerName ?? + (model as { providerDisplayName?: string })?.providerDisplayName ?? + provider?.id return { id: `${model.provider}:${model.id}`, object: 'model', name: model.name, created: Math.floor(Date.now() / 1000), - owned_by: model.owned_by || model.provider, + owned_by: model.owned_by || providerDisplayName || model.provider, provider: model.provider, + provider_name: providerDisplayName, provider_type: provider?.type, provider_model_id: model.id } diff --git a/src/renderer/src/components/Popups/agent/AgentModal.tsx b/src/renderer/src/components/Popups/agent/AgentModal.tsx index 9a43906b5a..269ed2eb10 100644 --- a/src/renderer/src/components/Popups/agent/AgentModal.tsx +++ b/src/renderer/src/components/Popups/agent/AgentModal.tsx @@ -194,7 +194,8 @@ export const AgentModal: React.FC = ({ agent, trigger, isOpen: _isOpen, o key: model.id, label: model.name, avatar: getModelLogo(model.id), - providerId: model.provider + providerId: model.provider, + providerName: model.provider_name })) satisfies ModelOption[] }, [models]) diff --git a/src/renderer/src/components/Popups/agent/SessionModal.tsx b/src/renderer/src/components/Popups/agent/SessionModal.tsx index bc669f758b..1735c73d55 100644 --- a/src/renderer/src/components/Popups/agent/SessionModal.tsx +++ b/src/renderer/src/components/Popups/agent/SessionModal.tsx @@ -127,7 +127,8 @@ export const SessionModal: React.FC = ({ agentId, session, trigger, isOpe key: model.id, label: model.name, avatar: getModelLogo(model.id), - providerId: model.provider + providerId: model.provider, + providerName: model.provider_name })) satisfies ModelOption[] }, [models]) diff --git a/src/renderer/src/components/Popups/agent/shared.tsx b/src/renderer/src/components/Popups/agent/shared.tsx index 7fdcd2aecf..cc67a5a33b 100644 --- a/src/renderer/src/components/Popups/agent/shared.tsx +++ b/src/renderer/src/components/Popups/agent/shared.tsx @@ -12,6 +12,7 @@ export interface BaseOption { export interface ModelOption extends BaseOption { providerId?: string + providerName?: string } export function isModelOption(option: BaseOption): option is ModelOption { @@ -33,10 +34,18 @@ export const Option = ({ option }: { option?: BaseOption | null }) => { ) } + const providerLabel = (() => { + if (!isModelOption(option)) return null + if (option.providerName) return option.providerName + if (option.providerId) return getProviderLabel(option.providerId) + return null + })() + return (
- {option.label} {isModelOption(option) && option.providerId && `| ${getProviderLabel(option.providerId)}`} + {option.label} + {providerLabel ? | {providerLabel} : null}
) } diff --git a/src/renderer/src/hooks/agents/useAgent.ts b/src/renderer/src/hooks/agents/useAgent.ts index cff8d24a6a..01cdf05007 100644 --- a/src/renderer/src/hooks/agents/useAgent.ts +++ b/src/renderer/src/hooks/agents/useAgent.ts @@ -9,15 +9,15 @@ import { useAgentClient } from './useAgentClient' export const useAgent = (id: string | null) => { const { t } = useTranslation() const client = useAgentClient() - const key = client.agentPaths.base + const key = id ? client.agentPaths.withId(id) : null const fetcher = useCallback(async () => { - if (id === null) { + if (!id) { return null } const result = await client.getAgent(id) return result }, [client, id]) - const { data, error, isLoading, mutate } = useSWR(key, fetcher) + const { data, error, isLoading, mutate } = useSWR(key, id ? fetcher : null) const updateAgent = useCallback( async (form: UpdateAgentForm) => { diff --git a/src/renderer/src/types/apiModels.ts b/src/renderer/src/types/apiModels.ts index 252ebde912..d0f87864e9 100644 --- a/src/renderer/src/types/apiModels.ts +++ b/src/renderer/src/types/apiModels.ts @@ -17,6 +17,7 @@ export const ApiModelSchema = z.object({ name: z.string(), owned_by: z.string(), provider: z.string().optional(), + provider_name: z.string().optional(), provider_type: ProviderTypeSchema.optional(), provider_model_id: z.string().optional() })