From b103578d7045366c66425d5674d5f6f4f6bbb5c1 Mon Sep 17 00:00:00 2001 From: Paul Liu <20290410+Paulkm2006@users.noreply.github.com> Date: Thu, 6 Aug 2026 14:46:29 +0800 Subject: [PATCH 1/3] feat: filter provider by api type --- frontend/src/components/ProviderSegment.tsx | 10 ++++++++-- frontend/src/components/SelectField.tsx | 6 ++++-- frontend/src/pages/AgentProfilePage.tsx | 8 +++++--- frontend/src/pages/ProfilesPage.tsx | 8 +++++++- frontend/src/pages/ProviderKeyPage.tsx | 1 + frontend/src/pages/ProvidersPage.tsx | 2 +- frontend/src/state/wizardReducer.ts | 5 +++-- frontend/src/styles/base.css | 6 ++++++ internal/app/status.go | 2 +- internal/app/status_test.go | 11 +++++++++++ internal/provider/store.go | 9 +++++++-- internal/provider/store_test.go | 15 +++++++++++++++ 12 files changed, 69 insertions(+), 14 deletions(-) diff --git a/frontend/src/components/ProviderSegment.tsx b/frontend/src/components/ProviderSegment.tsx index 32228c0..1417189 100644 --- a/frontend/src/components/ProviderSegment.tsx +++ b/frontend/src/components/ProviderSegment.tsx @@ -2,7 +2,7 @@ import { Plus } from "lucide-react"; import { useI18n } from "../i18n"; import { byProviderCreatedAt } from "../state/ranking"; -import type { ProviderId, StatusResponse } from "../types/api"; +import type { ProtocolId, ProviderId, StatusResponse } from "../types/api"; import { SelectField } from "./SelectField"; export function ProviderSegment({ @@ -10,11 +10,13 @@ export function ProviderSegment({ providers, onAdd, onChange, + protocol, }: { value: ProviderId; providers: StatusResponse["providers"]; onAdd: () => void; onChange: (value: ProviderId) => void; + protocol?: ProtocolId | ""; }) { const { t } = useI18n(); return ( @@ -28,7 +30,11 @@ export function ProviderSegment({ label={t("模型服务")} value={value} onChange={onChange} - options={byProviderCreatedAt(providers).map(([id, provider]) => ({ value: id, label: provider.name }))} + options={byProviderCreatedAt(providers).map(([id, provider]) => ({ + value: id, + label: provider.name, + disabled: Boolean(protocol) && (protocol === "anthropic" ? !provider.anthropic_base_url : !provider.base_url), + }))} />