feat(stage-ui): with sorted for providers
This commit is contained in:
@@ -17,6 +17,7 @@ type AI302Config = z.input<typeof ai302ConfigSchema>
|
||||
|
||||
export const provider302AI = defineProvider<AI302Config>({
|
||||
id: '302-ai',
|
||||
order: 7,
|
||||
name: '302.AI',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.302-ai.title'),
|
||||
description: '302.ai',
|
||||
|
||||
@@ -38,6 +38,7 @@ function createAnthropic(apiKey: string, baseURL: string = 'https://api.anthropi
|
||||
|
||||
export const providerAnthropic = defineProvider<AnthropicConfig>({
|
||||
id: 'anthropic',
|
||||
order: 5,
|
||||
name: 'Anthropic',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.anthropic.title'),
|
||||
description: 'anthropic.com',
|
||||
|
||||
@@ -17,6 +17,7 @@ type DeepSeekConfig = z.input<typeof deepSeekConfigSchema>
|
||||
|
||||
export const providerDeepSeek = defineProvider<DeepSeekConfig>({
|
||||
id: 'deepseek',
|
||||
order: 4,
|
||||
name: 'DeepSeek',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.deepseek.title'),
|
||||
description: 'deepseek.com',
|
||||
|
||||
@@ -17,6 +17,7 @@ type GoogleGenerativeConfig = z.input<typeof googleGenerativeConfigSchema>
|
||||
|
||||
export const providerGoogleGenerativeAI = defineProvider<GoogleGenerativeConfig>({
|
||||
id: 'google-generative-ai',
|
||||
order: 6,
|
||||
name: 'Google Gemini',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.google-generative-ai.title'),
|
||||
description: 'ai.google.dev',
|
||||
|
||||
@@ -6,6 +6,7 @@ import { defineProvider } from '../registry'
|
||||
|
||||
export const providerOllama = defineProvider({
|
||||
id: 'ollama',
|
||||
order: 2,
|
||||
name: 'Ollama',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.ollama.title'),
|
||||
description: 'Local Ollama server for fast model iteration.',
|
||||
|
||||
@@ -18,6 +18,7 @@ type OpenAICompatibleConfig = z.input<typeof openAICompatibleConfigSchema>
|
||||
|
||||
export const providerOpenAICompatible = defineProvider<OpenAICompatibleConfig>({
|
||||
id: 'openai-compatible',
|
||||
order: 3,
|
||||
name: 'OpenAI Compatible',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.openai-compatible.title'),
|
||||
description: 'OpenAI-compatible chat APIs with API key authentication.',
|
||||
|
||||
@@ -17,6 +17,7 @@ type OpenAICompatibleConfig = z.input<typeof openAICompatibleConfigSchema>
|
||||
|
||||
export const providerOpenAI = defineProvider<OpenAICompatibleConfig>({
|
||||
id: 'openai',
|
||||
order: 1,
|
||||
name: 'OpenAI',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.openai.title'),
|
||||
description: 'OpenAI',
|
||||
|
||||
@@ -17,6 +17,7 @@ type OpenRouterConfig = z.input<typeof openRouterConfigSchema>
|
||||
|
||||
export const providerOpenRouterAI = defineProvider<OpenRouterConfig>({
|
||||
id: 'openrouter-ai',
|
||||
order: 0,
|
||||
name: 'OpenRouter',
|
||||
nameLocalize: ({ t }) => t('settings.pages.providers.provider.openrouter.title'),
|
||||
description: 'openrouter.ai',
|
||||
|
||||
@@ -3,13 +3,14 @@ import type { $ZodType } from 'zod/v4/core'
|
||||
|
||||
import type { ProviderDefinition } from '../types'
|
||||
|
||||
import { sortBy } from 'es-toolkit'
|
||||
import { orderBy } from 'es-toolkit'
|
||||
|
||||
const providerRegistry = new Map<string, ProviderDefinition>()
|
||||
|
||||
export function listProviders(): ProviderDefinition[] {
|
||||
const providerDefs = Array.from(providerRegistry.values())
|
||||
return sortBy(providerDefs, [p => p.order, p => p.name.toLowerCase()])
|
||||
const providerDefs = Array.from(providerRegistry.values()).map(def => ({ order: 99999, ...def }))
|
||||
const sorted = orderBy(providerDefs, [p => p.order, 'name'], ['asc', 'asc'])
|
||||
return sorted
|
||||
}
|
||||
|
||||
export function getDefinedProvider(id: string): ProviderDefinition | undefined {
|
||||
|
||||
Reference in New Issue
Block a user