From 27569c94f2930f445e01b91a09d57ed957b16bae Mon Sep 17 00:00:00 2001 From: Doji Date: Wed, 17 Jun 2026 11:52:53 +0200 Subject: [PATCH] fix(stage-pages): add vision provider settings (#1987) --- packages/i18n/src/locales/en/settings.yaml | 3 + .../i18n/src/locales/zh-Hans/settings.yaml | 3 + .../src/pages/settings/modules/vision.vue | 18 +- .../src/pages/settings/providers/index.vue | 8 + .../providers/vision/[providerId].vue | 134 ++++++++++++ .../providers/vision/amazon-bedrock.vue | 130 +++++++++++ .../providers/vision/azure-ai-foundry.vue | 141 ++++++++++++ .../vision/cloudflare-workers-ai.vue | 106 +++++++++ .../settings/providers/vision/lm-studio.vue | 88 ++++++++ .../providers/vision/official-provider.vue | 98 +++++++++ .../settings/providers/vision/ollama.vue | 205 ++++++++++++++++++ .../src/composables/use-auth-provider-sync.ts | 21 +- .../vision/use-vision-inference.ts | 2 +- packages/stage-ui/src/stores/providers.ts | 37 +++- .../src/stores/providers/converters.ts | 3 + 15 files changed, 986 insertions(+), 11 deletions(-) create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/[providerId].vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/amazon-bedrock.vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/azure-ai-foundry.vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/cloudflare-workers-ai.vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/lm-studio.vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/official-provider.vue create mode 100644 packages/stage-pages/src/pages/settings/providers/vision/ollama.vue diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index 75c3c4733..f9c97a1e2 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -1006,6 +1006,9 @@ pages: chat: title: Chat description: Text generation model providers. e.g. OpenRouter, OpenAI, Ollama. + vision: + title: Vision + description: Vision model providers for image understanding. speech: title: Speech description: Speech (text-to-speech) model providers. e.g. ElevenLabs, Azure Speech. diff --git a/packages/i18n/src/locales/zh-Hans/settings.yaml b/packages/i18n/src/locales/zh-Hans/settings.yaml index c7a94a54a..0f04934c9 100644 --- a/packages/i18n/src/locales/zh-Hans/settings.yaml +++ b/packages/i18n/src/locales/zh-Hans/settings.yaml @@ -960,6 +960,9 @@ pages: chat: title: 聊天 description: Text generation model providers. e.g. OpenRouter, OpenAI, Ollama. + vision: + title: 视觉 + description: 用于图像理解的视觉模型服务来源。 speech: title: Speech description: Speech (text-to-speech) model providers. e.g. ElevenLabs, Azure Speech. diff --git a/packages/stage-pages/src/pages/settings/modules/vision.vue b/packages/stage-pages/src/pages/settings/modules/vision.vue index bbb8c34d5..4e1222970 100644 --- a/packages/stage-pages/src/pages/settings/modules/vision.vue +++ b/packages/stage-pages/src/pages/settings/modules/vision.vue @@ -12,7 +12,7 @@ import { RouterLink } from 'vue-router' const providersStore = useProvidersStore() const visionStore = useVisionStore() const visionProcessingStore = useVisionProcessingStore() -const { persistedChatProvidersMetadata, configuredProviders } = storeToRefs(providersStore) +const { persistedVisionProvidersMetadata, configuredProviders } = storeToRefs(providersStore) const { activeProvider, activeModel, @@ -61,7 +61,11 @@ function handleDeleteProvider(providerId: string) { const formattedLastCapture = computed(() => formatRelativeTime(lastCaptureAt.value)) const formattedLastContextUpdate = computed(() => formatRelativeTime(lastContextUpdateAt.value)) -const isOllamaVisionProvider = computed(() => activeProvider.value === 'ollama') +const isOllamaVisionProvider = computed(() => activeProvider.value === 'vision-ollama') + +function canDeleteProvider(providerId: string) { + return !providerId.startsWith('official-provider') && !providerId.startsWith('vision-official-provider') +} function formatRelativeTime(timestamp: number | null) { if (!timestamp) @@ -93,12 +97,12 @@ function formatRelativeTime(timestamp: number | null) {
-