diff --git a/package.json b/package.json index c0c3b6f242..5cccd96128 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@radix-ui/react-tabs": "^1.1.12", "@radix-ui/react-toast": "^1.2.14", "@radix-ui/react-tooltip": "^1.2.7", - "@roo-code/types": "^1.22.0", + "@roo-code/types": "^1.23.0", "@sentry/nextjs": "^9.23.0", "@t3-oss/env-nextjs": "^0.13.6", "@tailwindcss/postcss": "^4.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38379bee4e..4e831679cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^1.2.7 version: 1.2.7(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@roo-code/types': - specifier: ^1.22.0 - version: 1.22.0 + specifier: ^1.23.0 + version: 1.23.0 '@sentry/nextjs': specifier: ^9.23.0 version: 9.23.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.3.3(@babel/core@7.27.3)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.99.9(@swc/core@1.11.29)(esbuild@0.25.5)) @@ -1845,8 +1845,8 @@ packages: bundledDependencies: - '@libsql/libsql-wasm-experimental' - '@libsql/core@0.15.7': - resolution: {integrity: sha512-hW1++8iKAEnb7Y3EZ2zXRR+1K0MKdRT7SLaNgFkfwz6CmiIBY3sYN7VSftNS7IR6xKRvFBpoz10CC63NoFGkaQ==} + '@libsql/core@0.15.8': + resolution: {integrity: sha512-oX2fQqDbZkaBUvFMGvJq1Jh+mVzJrgNbEwK6Wzvp91z3uMe9iaIIXgO8yxB72RpUf7BqzjiKHjEiRXytfTdbUw==} '@logtail/core@0.5.4': resolution: {integrity: sha512-UlbxvUg5MDroqk6gEhtfKuuBShrvD/VaXl3T3jGU1U6I19Y1OwfB7e681LvH7RbsCAnOJFziM/7rMQib/CJTdg==} @@ -2917,8 +2917,8 @@ packages: cpu: [x64] os: [win32] - '@roo-code/types@1.22.0': - resolution: {integrity: sha512-yTBVf/bp3vMBLIBL+wWMWg4NFjYyEv8SygnjZMN5StEFxVojDOASS4MRWHM821UaJrnGSB/tpf0UJoRf7o41fA==} + '@roo-code/types@1.23.0': + resolution: {integrity: sha512-CFZ2UFlrNdHymUKrqB7iu7U6X6WwoDncvkrAidMcMzQU175o/GkLLgetIIVFVuYXyvRu01xUkReU0r9esQJVeg==} '@schummar/icu-type-parser@1.21.5': resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==} @@ -10563,11 +10563,11 @@ snapshots: '@libsql/client-wasm@0.15.5': dependencies: - '@libsql/core': 0.15.7 + '@libsql/core': 0.15.8 js-base64: 3.7.7 optional: true - '@libsql/core@0.15.7': + '@libsql/core@0.15.8': dependencies: js-base64: 3.7.7 optional: true @@ -11656,7 +11656,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.41.1': optional: true - '@roo-code/types@1.22.0': {} + '@roo-code/types@1.23.0': {} '@schummar/icu-type-parser@1.21.5': {} diff --git a/src/app/(authenticated)/providers/ProviderForm.tsx b/src/app/(authenticated)/providers/ProviderForm.tsx index 53bf61c737..09d651ac05 100644 --- a/src/app/(authenticated)/providers/ProviderForm.tsx +++ b/src/app/(authenticated)/providers/ProviderForm.tsx @@ -7,7 +7,8 @@ import type { ProviderName } from '@roo-code/types'; import { type OrganizationSettings, ORGANIZATION_ALLOW_ALL } from '@/types'; import { providers } from '@/lib/providers'; import { updateOrganization } from '@/actions/organizationSettings'; -import { Badge, Button, Checkbox, Label } from '@/components/ui'; +import { cn } from '@/lib/utils'; +import { Switch, Button, Checkbox, Label } from '@/components/ui'; import { MultipleSelector } from '@/components/ui/ecosystem'; import { Loading } from '@/components/layout'; @@ -20,21 +21,17 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => { const fullProviderMetadata = useMemo( () => - providers.map((provider) => { - const models = orgSettings.allowList.providers[provider.id]?.models; + Object.entries(providers).map(([id, provider]) => { + const models = + orgSettings.allowList.providers[id as ProviderName]?.models; if (models) { - const providerModels = new Set(provider.models); - - const difference = models.filter( - (model) => !providerModels.has(model), - ); + const providerModels = Object.keys(provider.models || {}); + const set = new Set(providerModels); + const difference = models.filter((model) => !set.has(model)); if (difference.length > 0) { - return { - ...provider, - models: [...provider.models, ...difference], - }; + return { ...provider, models: [...providerModels, ...difference] }; } } @@ -60,7 +57,12 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => { const [providerModels, setProviderModels] = useState( fullProviderMetadata.reduce((acc, meta) => { - acc.set(meta.id, orgSettings.allowList.providers[meta.id]?.models || []); + const models = Object.keys( + orgSettings.allowList.providers[meta.id]?.models || {}, + ); + + acc.set(meta.id, models); + return acc; }, new Map()), ); @@ -71,12 +73,6 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => { const isProviderAllowAll = (providerId: ProviderName) => providerAllowAll.has(providerId); - const toggleAllowAll = () => { - setAllowAll(!allowAll); - - setHasChanges(true); - }; - const toggleProvider = (providerId: ProviderName) => { const newProviderAllowAll = new Set(providerAllowAll); @@ -133,35 +129,37 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => { const result = await updateOrganization({ allowList: allowList }); if (!result.success) { - throw new Error(result.error || 'Failed to update settings'); + throw new Error(result.error || 'Failed to update settings.'); } queryClient.invalidateQueries({ queryKey: ['organizationSettings'] }); - - toast.success('Provider settings saved successfully'); + toast.success('Changes will be deployed within 30 seconds.'); setHasChanges(false); } catch (error) { - console.error('Failed to save provider settings', error); - toast.error('Failed to save provider settings'); + console.error('Failed to save provider settings.', error); + toast.error('Failed to save provider settings.'); } finally { setIsSaving(false); } }; return ( - <> +
- -
-
+ +
{fullProviderMetadata.map((provider) => (
@@ -180,11 +178,13 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => {
({ - label: model, - value: model, - disable: providerModels.get(provider.id)?.includes(model), - }))} + defaultOptions={Object.keys(provider.models || {}).map( + (model) => ({ + label: model, + value: model, + disable: providerModels.get(provider.id)?.includes(model), + }), + )} value={(providerModels.get(provider.id) || []).map((model) => ({ label: model, value: model, @@ -203,25 +203,18 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => {
))}
-
- - {`Policy v${orgSettings?.version || 1}`} - - - {isSaving - ? 'Updating provider whitelist...' - : hasChanges - ? 'You have unsaved changes' - : 'Changes will be pushed to SSE stream within 30 seconds'} - -
- - +
+ +
+
+
); }; diff --git a/src/app/(authenticated)/providers/ProviderSettings.tsx b/src/app/(authenticated)/providers/ProviderSettings.tsx index 76ac95f47b..a42a166cc8 100644 --- a/src/app/(authenticated)/providers/ProviderSettings.tsx +++ b/src/app/(authenticated)/providers/ProviderSettings.tsx @@ -4,7 +4,14 @@ import { useTranslations } from 'next-intl'; import { useQuery } from '@tanstack/react-query'; import { getOrganizationSettings } from '@/actions/organizationSettings'; -import { Card, CardHeader, CardTitle, CardDescription } from '@/components/ui'; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, + Badge, +} from '@/components/ui'; import { Loading } from '@/components/layout'; import { ProviderForm } from './ProviderForm'; @@ -24,6 +31,11 @@ export const ProviderSettings = () => { {t('title')} {t('description')} + + + {`Policy v${orgSettings?.version || 1}`} + + {orgSettings ? : } diff --git a/src/lib/data/anthropic.json b/src/lib/data/anthropic.json deleted file mode 100644 index 50b071bada..0000000000 --- a/src/lib/data/anthropic.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - "claude-3-7-sonnet-20250219:thinking", - "claude-3-7-sonnet-20250219", - "claude-3-5-sonnet-20241022", - "claude-3-5-haiku-20241022", - "claude-3-opus-20240229", - "claude-3-haiku-20240307" -] \ No newline at end of file diff --git a/src/lib/data/bedrock.json b/src/lib/data/bedrock.json deleted file mode 100644 index 651b6d853c..0000000000 --- a/src/lib/data/bedrock.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - "amazon.nova-pro-v1:0", - "amazon.nova-pro-latency-optimized-v1:0", - "amazon.nova-lite-v1:0", - "amazon.nova-micro-v1:0", - "anthropic.claude-3-7-sonnet-20250219-v1:0", - "anthropic.claude-3-5-sonnet-20241022-v2:0", - "anthropic.claude-3-5-haiku-20241022-v1:0", - "anthropic.claude-3-5-sonnet-20240620-v1:0", - "anthropic.claude-3-opus-20240229-v1:0", - "anthropic.claude-3-sonnet-20240229-v1:0", - "anthropic.claude-3-haiku-20240307-v1:0", - "anthropic.claude-2-1-v1:0", - "anthropic.claude-2-0-v1:0", - "anthropic.claude-instant-v1:0", - "deepseek.r1-v1:0", - "meta.llama3-3-70b-instruct-v1:0", - "meta.llama3-2-90b-instruct-v1:0", - "meta.llama3-2-11b-instruct-v1:0", - "meta.llama3-2-3b-instruct-v1:0", - "meta.llama3-2-1b-instruct-v1:0", - "meta.llama3-1-405b-instruct-v1:0", - "meta.llama3-1-70b-instruct-v1:0", - "meta.llama3-1-70b-instruct-latency-optimized-v1:0", - "meta.llama3-1-8b-instruct-v1:0", - "meta.llama3-70b-instruct-v1:0", - "meta.llama3-8b-instruct-v1:0", - "amazon.titan-text-lite-v1:0", - "amazon.titan-text-express-v1:0", - "amazon.titan-text-embeddings-v1:0", - "amazon.titan-text-embeddings-v2:0" -] \ No newline at end of file diff --git a/src/lib/data/chutes.json b/src/lib/data/chutes.json deleted file mode 100644 index 624f4f36ef..0000000000 --- a/src/lib/data/chutes.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - "deepseek-ai/DeepSeek-R1", - "deepseek-ai/DeepSeek-V3", - "unsloth/Llama-3.3-70B-Instruct", - "chutesai/Llama-4-Scout-17B-16E-Instruct", - "unsloth/Mistral-Nemo-Instruct-2407", - "unsloth/gemma-3-12b-it", - "NousResearch/DeepHermes-3-Llama-3-8B-Preview", - "unsloth/gemma-3-4b-it", - "nvidia/Llama-3_3-Nemotron-Super-49B-v1", - "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", - "chutesai/Llama-4-Maverick-17B-128E-Instruct-FP8", - "deepseek-ai/DeepSeek-V3-Base", - "deepseek-ai/DeepSeek-R1-Zero", - "deepseek-ai/DeepSeek-V3-0324", - "Qwen/Qwen3-235B-A22B", - "Qwen/Qwen3-32B", - "Qwen/Qwen3-30B-A3B", - "Qwen/Qwen3-14B", - "Qwen/Qwen3-8B", - "microsoft/MAI-DS-R1-FP8", - "tngtech/DeepSeek-R1T-Chimera" -] \ No newline at end of file diff --git a/src/lib/data/deepseek.json b/src/lib/data/deepseek.json deleted file mode 100644 index ba28a8940b..0000000000 --- a/src/lib/data/deepseek.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "deepseek-chat", - "deepseek-reasoner" -] \ No newline at end of file diff --git a/src/lib/data/gemini.json b/src/lib/data/gemini.json deleted file mode 100644 index 8049893505..0000000000 --- a/src/lib/data/gemini.json +++ /dev/null @@ -1,21 +0,0 @@ -[ - "gemini-2.5-flash-preview-04-17:thinking", - "gemini-2.5-flash-preview-04-17", - "gemini-2.5-flash-preview-05-20:thinking", - "gemini-2.5-flash-preview-05-20", - "gemini-2.5-pro-exp-03-25", - "gemini-2.5-pro-preview-03-25", - "gemini-2.5-pro-preview-05-06", - "gemini-2.0-flash-001", - "gemini-2.0-flash-lite-preview-02-05", - "gemini-2.0-pro-exp-02-05", - "gemini-2.0-flash-thinking-exp-01-21", - "gemini-2.0-flash-thinking-exp-1219", - "gemini-2.0-flash-exp", - "gemini-1.5-flash-002", - "gemini-1.5-flash-exp-0827", - "gemini-1.5-flash-8b-exp-0827", - "gemini-1.5-pro-002", - "gemini-1.5-pro-exp-0827", - "gemini-exp-1206" -] \ No newline at end of file diff --git a/src/lib/data/glama.json b/src/lib/data/glama.json deleted file mode 100644 index 4c4f4b4096..0000000000 --- a/src/lib/data/glama.json +++ /dev/null @@ -1,96 +0,0 @@ -[ - "alibaba/qwen-plus", - "alibaba/qwen-turbo", - "anthropic/claude-3-5-haiku-20241022", - "anthropic/claude-3-5-haiku", - "anthropic/claude-3-5-sonnet-20240620", - "anthropic/claude-3-5-sonnet-20241022", - "anthropic/claude-3-5-sonnet", - "anthropic/claude-3-7-sonnet-20250219", - "anthropic/claude-3-7-sonnet", - "anthropic/claude-3-opus-20240229", - "anthropic/claude-3-opus", - "avian/deepseek-r1", - "avian/llama-3.1-405b-instruct", - "avian/llama-3.1-70b-instruct", - "avian/llama-3.1-8b-instruct", - "avian/llama-3.3-70b-instruct", - "cloudflare/deepseek-r1-distill-qwen-32b", - "cohere/command-r-08-2024", - "cohere/command-r-plus-08-2024", - "cohere/command-r-plus", - "cohere/command-r", - "cohere/command-r7b-12-2024", - "cohere/command-r7b", - "deepinfra/qwq-32b-preview", - "deepseek/deepseek-chat-v3", - "deepseek/deepseek-chat", - "deepseek/deepseek-r1", - "fireworks/deepseek-chat-v3", - "fireworks/deepseek-chat", - "google-ai-studio/gemini-2.0-flash-001", - "google-ai-studio/gemini-2.0-flash-lite-preview-02-05", - "google-ai-studio/gemini-2.0-flash-lite", - "google-ai-studio/gemini-2.0-flash", - "google-ai-studio/gemini-2.5-flash-preview-04-17", - "google-ai-studio/gemini-2.5-flash", - "google-ai-studio/gemini-2.5-pro-exp-03-25", - "google-ai-studio/gemini-2.5-pro-preview-05-06", - "google-ai-studio/gemini-2.5-pro", - "google-vertex/gemini-1.5-flash-001", - "google-vertex/gemini-1.5-flash-002", - "google-vertex/gemini-1.5-flash", - "google-vertex/gemini-1.5-pro-001", - "google-vertex/gemini-1.5-pro-002", - "google-vertex/gemini-1.5-pro", - "google-vertex/gemini-2.0-flash-001", - "google-vertex/gemini-2.0-flash-lite-preview-02-05", - "google-vertex/gemini-2.0-flash-lite", - "google-vertex/gemini-2.0-flash-thinking-exp-01-21", - "google-vertex/gemini-2.0-flash-thinking", - "google-vertex/gemini-2.0-flash", - "google-vertex/gemini-2.5-flash-preview-04-17", - "google-vertex/gemini-2.5-flash", - "google-vertex/gemini-2.5-pro-preview-05-06", - "google-vertex/gemini-2.5-pro", - "groq/deepseek-r1-distill-llama-70b", - "mistral/ministral-3b-2410", - "mistral/ministral-3b", - "mistral/ministral-8b-2410", - "mistral/ministral-8b", - "mistral/mistral-large-2411", - "mistral/mistral-large", - "openai/gpt-4.1-2025-04-14", - "openai/gpt-4.1-mini-2025-04-14", - "openai/gpt-4.1-mini", - "openai/gpt-4.1-nano-2025-04-14", - "openai/gpt-4.1-nano", - "openai/gpt-4.1", - "openai/gpt-4.5-preview-2025-02-27", - "openai/gpt-4.5", - "openai/gpt-4o-2024-05-13", - "openai/gpt-4o-2024-08-06", - "openai/gpt-4o-2024-11-20", - "openai/gpt-4o-mini-2024-07-18", - "openai/gpt-4o-mini", - "openai/gpt-4o", - "openai/o1-2024-12-17", - "openai/o1-mini-2024-09-12", - "openai/o3-2025-04-16", - "openai/o3-mini-2025-01-31", - "openai/o3-mini-high", - "openai/o3-mini", - "openai/o3", - "openai/o4-mini-2025-04-16", - "openai/o4-mini", - "perplexity/r1-1776", - "perplexity/r1", - "xai/grok-2-1212", - "xai/grok-2", - "xai/grok-3-beta", - "xai/grok-3-fast-beta", - "xai/grok-3-mini-beta", - "xai/grok-3-mini-fast-beta", - "xai/grok-beta", - "xai/grok" -] diff --git a/src/lib/data/groq.json b/src/lib/data/groq.json deleted file mode 100644 index b22131b2ed..0000000000 --- a/src/lib/data/groq.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - "llama-3.1-8b-instant", - "llama-3.3-70b-versatile", - "meta-llama/llama-4-scout-17b-16e-instruct", - "meta-llama/llama-4-maverick-17b-128e-instruct", - "mistral-saba-24b", - "qwen-qwq-32b", - "deepseek-r1-distill-llama-70b" -] \ No newline at end of file diff --git a/src/lib/data/mistral.json b/src/lib/data/mistral.json deleted file mode 100644 index 864b17070a..0000000000 --- a/src/lib/data/mistral.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - "codestral-latest", - "mistral-large-latest", - "ministral-8b-latest", - "ministral-3b-latest", - "mistral-small-latest", - "pixtral-large-latest" -] \ No newline at end of file diff --git a/src/lib/data/openai-native.json b/src/lib/data/openai-native.json deleted file mode 100644 index 09d26fc420..0000000000 --- a/src/lib/data/openai-native.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - "gpt-4.1", - "gpt-4.1-mini", - "gpt-4.1-nano", - "o3", - "o3-high", - "o3-low", - "o4-mini", - "o4-mini-high", - "o4-mini-low", - "o3-mini", - "o3-mini-high", - "o3-mini-low", - "o1", - "o1-preview", - "o1-mini", - "gpt-4.5-preview", - "gpt-4o", - "gpt-4o-mini" -] \ No newline at end of file diff --git a/src/lib/data/openrouter-models.json b/src/lib/data/openrouter-models.json deleted file mode 100644 index a4a0c43eca..0000000000 --- a/src/lib/data/openrouter-models.json +++ /dev/null @@ -1,321 +0,0 @@ -[ - "aetherwiing/mn-starcannon-12b", - "agentica-org/deepcoder-14b-preview:free", - "ai21/jamba-1.6-large", - "ai21/jamba-1.6-mini", - "ai21/jamba-instruct", - "aion-labs/aion-1.0-mini", - "aion-labs/aion-1.0", - "aion-labs/aion-rp-llama-3.1-8b", - "alfredpros/codellama-7b-instruct-solidity", - "all-hands/openhands-lm-32b-v0.1", - "allenai/olmo-7b-instruct", - "alpindale/goliath-120b", - "alpindale/magnum-72b", - "amazon/nova-lite-v1", - "amazon/nova-micro-v1", - "amazon/nova-pro-v1", - "anthracite-org/magnum-v2-72b", - "anthracite-org/magnum-v4-72b", - "anthropic/claude-2:beta", - "anthropic/claude-2.0:beta", - "anthropic/claude-2.0", - "anthropic/claude-2.1:beta", - "anthropic/claude-2.1", - "anthropic/claude-2", - "anthropic/claude-3-haiku:beta", - "anthropic/claude-3-haiku", - "anthropic/claude-3-opus:beta", - "anthropic/claude-3-opus", - "anthropic/claude-3-sonnet:beta", - "anthropic/claude-3-sonnet", - "anthropic/claude-3.5-haiku-20241022:beta", - "anthropic/claude-3.5-haiku-20241022", - "anthropic/claude-3.5-haiku:beta", - "anthropic/claude-3.5-haiku", - "anthropic/claude-3.5-sonnet-20240620:beta", - "anthropic/claude-3.5-sonnet-20240620", - "anthropic/claude-3.5-sonnet:beta", - "anthropic/claude-3.5-sonnet", - "anthropic/claude-3.7-sonnet:beta", - "anthropic/claude-3.7-sonnet:thinking", - "anthropic/claude-3.7-sonnet", - "arcee-ai/arcee-blitz", - "arcee-ai/caller-large", - "arcee-ai/coder-large", - "arcee-ai/maestro-reasoning", - "arcee-ai/spotlight", - "arcee-ai/virtuoso-large", - "arcee-ai/virtuoso-medium-v2", - "arliai/qwq-32b-arliai-rpr-v1:free", - "cognitivecomputations/dolphin-mixtral-8x22b", - "cognitivecomputations/dolphin3.0-mistral-24b:free", - "cognitivecomputations/dolphin3.0-r1-mistral-24b:free", - "cohere/command-a", - "cohere/command-r-03-2024", - "cohere/command-r-08-2024", - "cohere/command-r-plus-04-2024", - "cohere/command-r-plus-08-2024", - "cohere/command-r-plus", - "cohere/command-r", - "cohere/command-r7b-12-2024", - "cohere/command", - "deepseek/deepseek-chat-v3-0324:free", - "deepseek/deepseek-chat-v3-0324", - "deepseek/deepseek-chat:free", - "deepseek/deepseek-chat", - "deepseek/deepseek-coder", - "deepseek/deepseek-prover-v2:free", - "deepseek/deepseek-prover-v2", - "deepseek/deepseek-r1-distill-llama-70b:free", - "deepseek/deepseek-r1-distill-llama-70b", - "deepseek/deepseek-r1-distill-llama-8b", - "deepseek/deepseek-r1-distill-qwen-1.5b", - "deepseek/deepseek-r1-distill-qwen-14b:free", - "deepseek/deepseek-r1-distill-qwen-14b", - "deepseek/deepseek-r1-distill-qwen-32b:free", - "deepseek/deepseek-r1-distill-qwen-32b", - "deepseek/deepseek-r1-zero:free", - "deepseek/deepseek-r1:free", - "deepseek/deepseek-r1", - "deepseek/deepseek-v3-base:free", - "eleutherai/llemma_7b", - "eva-unit-01/eva-llama-3.33-70b", - "eva-unit-01/eva-qwen-2.5-32b", - "eva-unit-01/eva-qwen-2.5-72b", - "featherless/qwerky-72b:free", - "google/gemini-2.0-flash-001", - "google/gemini-2.0-flash-exp:free", - "google/gemini-2.0-flash-lite-001", - "google/gemini-2.5-flash-preview-05-20:thinking", - "google/gemini-2.5-flash-preview-05-20", - "google/gemini-2.5-flash-preview:thinking", - "google/gemini-2.5-flash-preview", - "google/gemini-2.5-pro-exp-03-25", - "google/gemini-2.5-pro-preview", - "google/gemini-flash-1.5-8b", - "google/gemini-flash-1.5", - "google/gemini-pro-1.5", - "google/gemma-2-27b-it", - "google/gemma-2-9b-it:free", - "google/gemma-2-9b-it", - "google/gemma-3-12b-it:free", - "google/gemma-3-12b-it", - "google/gemma-3-1b-it:free", - "google/gemma-3-27b-it:free", - "google/gemma-3-27b-it", - "google/gemma-3-4b-it:free", - "google/gemma-3-4b-it", - "gryphe/mythomax-l2-13b", - "inception/mercury-coder-small-beta", - "infermatic/mn-inferor-12b", - "inflection/inflection-3-pi", - "inflection/inflection-3-productivity", - "jondurbin/airoboros-l2-70b", - "liquid/lfm-3b", - "liquid/lfm-40b", - "liquid/lfm-7b", - "mancer/weaver", - "meta-llama/llama-2-70b-chat", - "meta-llama/llama-3-70b-instruct", - "meta-llama/llama-3-8b-instruct", - "meta-llama/llama-3.1-405b-instruct", - "meta-llama/llama-3.1-405b:free", - "meta-llama/llama-3.1-405b", - "meta-llama/llama-3.1-70b-instruct", - "meta-llama/llama-3.1-8b-instruct:free", - "meta-llama/llama-3.1-8b-instruct", - "meta-llama/llama-3.2-11b-vision-instruct:free", - "meta-llama/llama-3.2-11b-vision-instruct", - "meta-llama/llama-3.2-1b-instruct:free", - "meta-llama/llama-3.2-1b-instruct", - "meta-llama/llama-3.2-3b-instruct:free", - "meta-llama/llama-3.2-3b-instruct", - "meta-llama/llama-3.2-90b-vision-instruct", - "meta-llama/llama-3.3-70b-instruct:free", - "meta-llama/llama-3.3-70b-instruct", - "meta-llama/llama-3.3-8b-instruct:free", - "meta-llama/llama-4-maverick:free", - "meta-llama/llama-4-maverick", - "meta-llama/llama-4-scout:free", - "meta-llama/llama-4-scout", - "meta-llama/llama-guard-2-8b", - "meta-llama/llama-guard-3-8b", - "meta-llama/llama-guard-4-12b", - "microsoft/mai-ds-r1:free", - "microsoft/phi-3-medium-128k-instruct", - "microsoft/phi-3-mini-128k-instruct", - "microsoft/phi-3.5-mini-128k-instruct", - "microsoft/phi-4-multimodal-instruct", - "microsoft/phi-4-reasoning-plus:free", - "microsoft/phi-4-reasoning-plus", - "microsoft/phi-4-reasoning:free", - "microsoft/phi-4", - "microsoft/wizardlm-2-8x22b", - "minimax/minimax-01", - "mistralai/codestral-2501", - "mistralai/codestral-mamba", - "mistralai/ministral-3b", - "mistralai/ministral-8b", - "mistralai/mistral-7b-instruct-v0.1", - "mistralai/mistral-7b-instruct-v0.2", - "mistralai/mistral-7b-instruct-v0.3", - "mistralai/mistral-7b-instruct:free", - "mistralai/mistral-7b-instruct", - "mistralai/mistral-large-2407", - "mistralai/mistral-large-2411", - "mistralai/mistral-large", - "mistralai/mistral-medium-3", - "mistralai/mistral-medium", - "mistralai/mistral-nemo:free", - "mistralai/mistral-nemo", - "mistralai/mistral-saba", - "mistralai/mistral-small-24b-instruct-2501:free", - "mistralai/mistral-small-24b-instruct-2501", - "mistralai/mistral-small-3.1-24b-instruct:free", - "mistralai/mistral-small-3.1-24b-instruct", - "mistralai/mistral-small", - "mistralai/mistral-tiny", - "mistralai/mixtral-8x22b-instruct", - "mistralai/mixtral-8x7b-instruct", - "mistralai/pixtral-12b", - "mistralai/pixtral-large-2411", - "moonshotai/kimi-vl-a3b-thinking:free", - "moonshotai/moonlight-16b-a3b-instruct:free", - "neversleep/llama-3-lumimaid-70b", - "neversleep/llama-3-lumimaid-8b:extended", - "neversleep/llama-3-lumimaid-8b", - "neversleep/llama-3.1-lumimaid-70b", - "neversleep/llama-3.1-lumimaid-8b", - "neversleep/noromaid-20b", - "nothingiisreal/mn-celeste-12b", - "nousresearch/deephermes-3-llama-3-8b-preview:free", - "nousresearch/deephermes-3-mistral-24b-preview:free", - "nousresearch/hermes-2-pro-llama-3-8b", - "nousresearch/hermes-3-llama-3.1-405b", - "nousresearch/hermes-3-llama-3.1-70b", - "nousresearch/nous-hermes-2-mixtral-8x7b-dpo", - "nvidia/llama-3.1-nemotron-70b-instruct", - "nvidia/llama-3.1-nemotron-ultra-253b-v1:free", - "nvidia/llama-3.3-nemotron-super-49b-v1:free", - "nvidia/llama-3.3-nemotron-super-49b-v1", - "open-r1/olympiccoder-32b:free", - "openai/chatgpt-4o-latest", - "openai/codex-mini", - "openai/gpt-3.5-turbo-0125", - "openai/gpt-3.5-turbo-0613", - "openai/gpt-3.5-turbo-1106", - "openai/gpt-3.5-turbo-16k", - "openai/gpt-3.5-turbo-instruct", - "openai/gpt-3.5-turbo", - "openai/gpt-4-0314", - "openai/gpt-4-1106-preview", - "openai/gpt-4-32k-0314", - "openai/gpt-4-32k", - "openai/gpt-4-turbo-preview", - "openai/gpt-4-turbo", - "openai/gpt-4.1-mini", - "openai/gpt-4.1-nano", - "openai/gpt-4.1", - "openai/gpt-4.5-preview", - "openai/gpt-4", - "openai/gpt-4o-2024-05-13", - "openai/gpt-4o-2024-08-06", - "openai/gpt-4o-2024-11-20", - "openai/gpt-4o-mini-2024-07-18", - "openai/gpt-4o-mini-search-preview", - "openai/gpt-4o-mini", - "openai/gpt-4o-search-preview", - "openai/gpt-4o:extended", - "openai/gpt-4o", - "openai/o1-mini-2024-09-12", - "openai/o1-mini", - "openai/o1-preview-2024-09-12", - "openai/o1-preview", - "openai/o1-pro", - "openai/o1", - "openai/o3-mini-high", - "openai/o3-mini", - "openai/o3", - "openai/o4-mini-high", - "openai/o4-mini", - "opengvlab/internvl3-14b:free", - "opengvlab/internvl3-2b:free", - "openrouter/auto", - "perplexity/llama-3.1-sonar-large-128k-online", - "perplexity/llama-3.1-sonar-small-128k-online", - "perplexity/r1-1776", - "perplexity/sonar-deep-research", - "perplexity/sonar-pro", - "perplexity/sonar-reasoning-pro", - "perplexity/sonar-reasoning", - "perplexity/sonar", - "pygmalionai/mythalion-13b", - "qwen/qwen-2-72b-instruct", - "qwen/qwen-2.5-72b-instruct:free", - "qwen/qwen-2.5-72b-instruct", - "qwen/qwen-2.5-7b-instruct:free", - "qwen/qwen-2.5-7b-instruct", - "qwen/qwen-2.5-coder-32b-instruct:free", - "qwen/qwen-2.5-coder-32b-instruct", - "qwen/qwen-2.5-vl-7b-instruct:free", - "qwen/qwen-2.5-vl-7b-instruct", - "qwen/qwen-max", - "qwen/qwen-plus", - "qwen/qwen-turbo", - "qwen/qwen-vl-max", - "qwen/qwen-vl-plus", - "qwen/qwen2.5-coder-7b-instruct", - "qwen/qwen2.5-vl-32b-instruct:free", - "qwen/qwen2.5-vl-32b-instruct", - "qwen/qwen2.5-vl-3b-instruct:free", - "qwen/qwen2.5-vl-72b-instruct:free", - "qwen/qwen2.5-vl-72b-instruct", - "qwen/qwen3-0.6b-04-28:free", - "qwen/qwen3-1.7b:free", - "qwen/qwen3-14b:free", - "qwen/qwen3-14b", - "qwen/qwen3-235b-a22b:free", - "qwen/qwen3-235b-a22b", - "qwen/qwen3-30b-a3b:free", - "qwen/qwen3-30b-a3b", - "qwen/qwen3-32b:free", - "qwen/qwen3-32b", - "qwen/qwen3-4b:free", - "qwen/qwen3-8b:free", - "qwen/qwen3-8b", - "qwen/qwq-32b-preview", - "qwen/qwq-32b:free", - "qwen/qwq-32b", - "raifle/sorcererlm-8x22b", - "rekaai/reka-flash-3:free", - "sao10k/fimbulvetr-11b-v2", - "sao10k/l3-euryale-70b", - "sao10k/l3-lunaris-8b", - "sao10k/l3.1-euryale-70b", - "sao10k/l3.3-euryale-70b", - "scb10x/llama3.1-typhoon2-70b-instruct", - "scb10x/llama3.1-typhoon2-8b-instruct", - "shisa-ai/shisa-v2-llama3.3-70b:free", - "sophosympatheia/midnight-rose-70b", - "thedrummer/anubis-pro-105b-v1", - "thedrummer/rocinante-12b", - "thedrummer/skyfall-36b-v2", - "thedrummer/unslopnemo-12b", - "thudm/glm-4-32b:free", - "thudm/glm-4-32b", - "thudm/glm-4-9b:free", - "thudm/glm-z1-32b:free", - "thudm/glm-z1-32b", - "thudm/glm-z1-9b:free", - "thudm/glm-z1-rumination-32b", - "tngtech/deepseek-r1t-chimera:free", - "undi95/remm-slerp-l2-13b", - "undi95/toppy-m-7b", - "x-ai/grok-2-1212", - "x-ai/grok-2-vision-1212", - "x-ai/grok-3-beta", - "x-ai/grok-3-mini-beta", - "x-ai/grok-beta", - "x-ai/grok-vision-beta" -] diff --git a/src/lib/data/requesty-models.json b/src/lib/data/requesty-models.json deleted file mode 100644 index 886b5c6844..0000000000 --- a/src/lib/data/requesty-models.json +++ /dev/null @@ -1,230 +0,0 @@ -[ - "alibaba/qwen-plus", - "alibaba/qwen-turbo", - "anthropic/claude-3-5-haiku-20241022", - "anthropic/claude-3-5-haiku-latest", - "anthropic/claude-3-5-sonnet-20240620", - "anthropic/claude-3-5-sonnet-20241022", - "anthropic/claude-3-5-sonnet-latest", - "anthropic/claude-3-7-sonnet-20250219", - "anthropic/claude-3-7-sonnet-latest", - "anthropic/claude-3-haiku-20240307", - "anthropic/claude-3-opus-20240229", - "anthropic/claude-3-opus-latest", - "anthropic/claude-3-sonnet-20240229", - "cline/claude-3-5-sonnet:alpha-v2", - "cline/claude-3-5-sonnet:alpha", - "cline/claude-3-5-sonnet", - "cline/claude-3-7-sonnet:1024", - "cline/claude-3-7-sonnet:16384", - "cline/claude-3-7-sonnet:64000", - "cline/claude-3-7-sonnet:8192", - "cline/claude-3-7-sonnet:high", - "cline/claude-3-7-sonnet:low", - "cline/claude-3-7-sonnet:max", - "cline/claude-3-7-sonnet:medium", - "cline/claude-3-7-sonnet", - "cline/deepseek-reasoner:alpha", - "cline/o3-mini:high", - "cline/o3-mini:low", - "cline/o3-mini:medium", - "cline/o3-mini", - "coding/claude-3-7-sonnet", - "coding/gemini-2.5-pro-preview-03-25", - "coding/gemini-2.5-pro-preview-05-06", - "deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B", - "deepinfra/deepseek-ai/DeepSeek-R1", - "deepinfra/deepseek-ai/DeepSeek-V3", - "deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct", - "deepinfra/meta-llama/Llama-3.2-90B-Vision-Instruct", - "deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo", - "deepinfra/meta-llama/Llama-3.3-70B-Instruct", - "deepinfra/meta-llama/Meta-Llama-3.1-405B-Instruct", - "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct", - "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "deepinfra/microsoft/phi-4", - "deepinfra/microsoft/WizardLM-2-8x22B", - "deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct", - "deepinfra/Qwen/Qwen2.5-72B-Instruct", - "deepinfra/Qwen/Qwen2.5-Coder-32B-Instruct", - "deepinfra/Qwen/Qwen3-235B-A22B", - "deepinfra/Qwen/Qwen3-32B", - "deepinfra/Qwen/QwQ-32B", - "deepseek/deepseek-chat", - "deepseek/deepseek-reasoner", - "google/gemini-1.5-flash-8b-latest", - "google/gemini-1.5-flash-8b", - "google/gemini-1.5-flash-latest", - "google/gemini-1.5-flash", - "google/gemini-1.5-pro-latest", - "google/gemini-1.5-pro", - "google/gemini-2.0-flash-001", - "google/gemini-2.0-flash-exp", - "google/gemini-2.0-flash-thinking-exp-01-21", - "google/gemini-2.0-pro-exp-02-05", - "google/gemini-2.5-flash-preview-04-17", - "google/gemini-2.5-pro-exp-03-25", - "google/gemini-2.5-pro-preview-03-25", - "google/gemini-2.5-pro-preview-05-06", - "google/gemma-3-27b-it", - "groq/qwen-qwq-32b", - "minimaxi/DeepSeek-R1", - "minimaxi/MiniMax-Text-01", - "mistral/mistral-large-latest", - "mistral/mistral-small-latest", - "mistral/open-mistral-7b", - "nebius/deepseek-ai/DeepSeek-R1-fast", - "nebius/deepseek-ai/DeepSeek-R1", - "nebius/deepseek-ai/DeepSeek-V3-0324-fast", - "nebius/deepseek-ai/DeepSeek-V3-0324", - "nebius/deepseek-ai/DeepSeek-V3", - "nebius/meta-llama/Llama-3.3-70B-Instruct", - "nebius/Qwen/QwQ-32B-fast", - "nebius/Qwen/QwQ-32B", - "novita/deepseek/deepseek_v3", - "novita/deepseek/deepseek-prover-v2-671b", - "novita/deepseek/deepseek-r1-distill-llama-70b", - "novita/deepseek/deepseek-r1-distill-qwen-14b", - "novita/deepseek/deepseek-r1-distill-qwen-32b", - "novita/deepseek/deepseek-r1-turbo", - "novita/deepseek/deepseek-r1", - "novita/deepseek/deepseek-v3-0324", - "novita/deepseek/deepseek-v3-turbo", - "novita/google/gemma-2-9b-it", - "novita/gryphe/mythomax-l2-13b", - "novita/jondurbin/airoboros-l2-70b", - "novita/meta-llama/llama-3-70b-instruct", - "novita/meta-llama/llama-3-8b-instruct", - "novita/meta-llama/llama-3.1-70b-instruct", - "novita/meta-llama/llama-3.1-8b-instruct-bf16", - "novita/meta-llama/llama-3.1-8b-instruct-max", - "novita/meta-llama/llama-3.1-8b-instruct", - "novita/meta-llama/llama-3.2-11b-vision-instruct", - "novita/meta-llama/llama-3.2-1b-instruct", - "novita/meta-llama/llama-3.2-3b-instruct", - "novita/meta-llama/llama-3.3-70b-instruct", - "novita/meta-llama/llama-4-maverick-17b-128e-instruct-fp8", - "novita/microsoft/wizardlm-2-8x22b", - "novita/mistralai/mistral-7b-instruct", - "novita/mistralai/mistral-nemo", - "novita/nousresearch/hermes-2-pro-llama-3-8b", - "novita/nousresearch/nous-hermes-llama2-13b", - "novita/openchat/openchat-7b", - "novita/qwen/qwen-2-7b-instruct", - "novita/qwen/qwen-2-vl-72b-instruct", - "novita/qwen/qwen-2.5-72b-instruct", - "novita/qwen/qwen2.5-vl-72b-instruct", - "novita/qwen/qwen3-235b-a22b-fp8", - "novita/qwen/qwq-32b", - "novita/sao10k/l3-70b-euryale-v2.1", - "novita/sao10k/l3-8b-lunaris", - "novita/Sao10K/L3-8B-Stheno-v3.2", - "novita/sao10k/l31-70b-euryale-v2.2", - "novita/sophosympatheia/midnight-rose-70b", - "novita/teknium/openhermes-2.5-mistral-7b", - "openai/chatgpt-4o-latest", - "openai/gpt-4.1-2025-04-14", - "openai/gpt-4.1-mini-2025-04-14", - "openai/gpt-4.1-mini", - "openai/gpt-4.1-nano-2025-04-14", - "openai/gpt-4.1-nano", - "openai/gpt-4.1", - "openai/gpt-4.5-preview", - "openai/gpt-4o-2024-05-13", - "openai/gpt-4o-2024-08-06", - "openai/gpt-4o-2024-11-20", - "openai/gpt-4o-mini-2024-07-18", - "openai/gpt-4o-mini", - "openai/gpt-4o", - "openai/o1-2024-12-17", - "openai/o1-mini-2024-09-12", - "openai/o1-mini:high", - "openai/o1-mini:low", - "openai/o1-mini:medium", - "openai/o1-mini", - "openai/o1:high", - "openai/o1:low", - "openai/o1:medium", - "openai/o1", - "openai/o3-2025-04-16", - "openai/o3-mini-2025-01-31", - "openai/o3-mini:high", - "openai/o3-mini:low", - "openai/o3-mini:medium", - "openai/o3-mini", - "openai/o4-mini-2025-04-16", - "openai/o4-mini:high", - "openai/o4-mini:low", - "openai/o4-mini:medium", - "openai/o4-mini", - "parasail/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8", - "parasail/meta-llama/Llama-4-Scout-17B-16E-Instruct", - "parasail/parasail-anubis-pro", - "parasail/parasail-deepseek-r1", - "parasail/parasail-eva-25-72b-v02-fp8", - "parasail/parasail-gemma3-27b-it", - "parasail/parasail-mistral-7b-instruct-03", - "parasail/parasail-mistral-nemo", - "parasail/parasail-mythomax-13b", - "parasail/parasail-qwen-coder32b-longcontext-128", - "parasail/parasail-qwen25-vl-72b-instruct", - "parasail/parasail-skyfall-36b-v2-fp8", - "parasail/parasail-wayfarer-70b-llama33-fp8", - "perplexity/sonar-pro", - "perplexity/sonar-reasoning-pro", - "perplexity/sonar", - "together/deepseek-ai/DeepSeek-R1", - "together/deepseek-ai/DeepSeek-V3", - "together/deepseek-llm-67b-chat", - "together/meta-llama/Llama-2-13b-chat-hf", - "together/meta-llama/Llama-2-70b-hf", - "together/meta-llama/Llama-2-7b-chat-hf", - "together/meta-llama/Llama-3-70b-chat-hf", - "together/meta-llama/Llama-3-8b-chat-hf", - "together/meta-llama/Llama-3.2-3B-Instruct-Turbo", - "together/meta-llama/Llama-3.3-70B-Instruct-Turbo", - "together/meta-llama/LlamaGuard-2-8b", - "together/meta-llama/Meta-Llama-3-70B-Instruct-Lite", - "together/meta-llama/Meta-Llama-3-70B-Instruct-Turbo", - "together/meta-llama/Meta-Llama-3-8B-Instruct-Lite", - "together/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo", - "together/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo", - "together/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "together/meta-llama/Meta-Llama-Guard-3-8B", - "together/NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", - "together/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF", - "together/Qwen/Qwen2-72B-Instruct", - "together/Qwen/Qwen2.5-72B-Instruct-Turbo", - "together/Qwen/Qwen2.5-7B-Instruct-Turbo", - "together/Qwen/Qwen2.5-Coder-32B-Instruct", - "together/Qwen/QwQ-32B-Preview", - "together/upstage/SOLAR-10.7B-Instruct-v1.0", - "vertex/anthropic/claude-3-5-sonnet-20241022", - "vertex/anthropic/claude-3-5-sonnet-20241022@europe-west1", - "vertex/anthropic/claude-3-5-sonnet-20241022@us-east5", - "vertex/anthropic/claude-3-5-sonnet-latest", - "vertex/anthropic/claude-3-5-sonnet-latest@europe-west1", - "vertex/anthropic/claude-3-5-sonnet-latest@us-east5", - "vertex/anthropic/claude-3-5-sonnet", - "vertex/anthropic/claude-3-5-sonnet@europe-west1", - "vertex/anthropic/claude-3-5-sonnet@us-east5", - "vertex/anthropic/claude-3-7-sonnet-20250219", - "vertex/anthropic/claude-3-7-sonnet-20250219@europe-west1", - "vertex/anthropic/claude-3-7-sonnet-20250219@us-east5", - "vertex/anthropic/claude-3-7-sonnet-latest", - "vertex/anthropic/claude-3-7-sonnet-latest@europe-west1", - "vertex/anthropic/claude-3-7-sonnet-latest@us-east5", - "vertex/anthropic/claude-3-7-sonnet", - "vertex/anthropic/claude-3-7-sonnet@europe-west1", - "vertex/anthropic/claude-3-7-sonnet@us-east5", - "xai/grok-2-1212", - "xai/grok-2-latest", - "xai/grok-3-beta", - "xai/grok-3-fast-beta", - "xai/grok-3-mini-beta:high", - "xai/grok-3-mini-beta:low", - "xai/grok-3-mini-beta", - "xai/grok-3-mini-fast-beta:high", - "xai/grok-3-mini-fast-beta:low", - "xai/grok-3-mini-fast-beta" -] diff --git a/src/lib/data/unbound.json b/src/lib/data/unbound.json deleted file mode 100644 index fefc0f0c6c..0000000000 --- a/src/lib/data/unbound.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - "anthropic/claude-3-5-haiku-20241022", - "anthropic/claude-3-5-sonnet-20241022", - "anthropic/claude-3-7-sonnet-20250219", - "anthropic/claude-3-haiku-20240307", - "anthropic/claude-3-opus-20240229", - "anthropic/claude-3-sonnet-20240229", - "bedrock/us.anthropic.claude-3-5-sonnet-20240620-v1:0", - "bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0", - "dashscope/qwen2.5-7b-instruct", - "dashscope/qwen2.5-vl-72b-instruct", - "google/gemini-1.5-flash", - "google/gemini-2.0-flash", - "google/gemini-2.0-flash-lite", - "google/gemini-2.0-pro-exp-02-05", - "google/gemini-2.5-flash-preview-04-17", - "google/gemini-2.5-pro-exp-03-25", - "google/gemini-2.5-pro-preview-05-06", - "meta/meta-llama-3.3-70b-instruct", - "mistral-ai/codestral-latest", - "openai/gpt-3.5-turbo", - "openai/gpt-4.1", - "openai/gpt-4.1-mini", - "openai/gpt-4.1-nano", - "openai/gpt-4.5-preview", - "openai/gpt-4o", - "openai/gpt-4o-mini", - "openai/o1-mini", - "openai/o1-preview", - "openai/o3", - "openai/o3-mini", - "openai/o4-mini", - "vertex-ai/custom.deepseek-distill-llama-3-8b-instruct", - "vertex-ai/deepseek-distill-llama-3-8b-instruct", - "x-ai/grok-2-latest", - "x-ai/grok-3-beta", - "x-ai/grok-3-fast-beta", - "x-ai/grok-3-mini-beta", - "x-ai/grok-3-mini-fast-beta", - "x-ai/grok-beta" -] diff --git a/src/lib/data/vertex.json b/src/lib/data/vertex.json deleted file mode 100644 index 79ff6db672..0000000000 --- a/src/lib/data/vertex.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - "gemini-2.5-flash-preview-05-20:thinking", - "gemini-2.5-flash-preview-05-20", - "gemini-2.5-flash-preview-04-17:thinking", - "gemini-2.5-flash-preview-04-17", - "gemini-2.5-pro-preview-03-25", - "gemini-2.5-pro-preview-05-06", - "gemini-2.5-pro-exp-03-25", - "gemini-2.0-pro-exp-02-05", - "gemini-2.0-flash-001", - "gemini-2.0-flash-lite-001", - "gemini-2.0-flash-thinking-exp-01-21", - "gemini-1.5-flash-002", - "gemini-1.5-pro-002", - "claude-3-7-sonnet@20250219:thinking", - "claude-3-7-sonnet@20250219", - "claude-3-5-sonnet-v2@20241022", - "claude-3-5-sonnet@20240620", - "claude-3-5-haiku@20241022", - "claude-3-opus@20240229", - "claude-3-haiku@20240307" -] \ No newline at end of file diff --git a/src/lib/data/xai.json b/src/lib/data/xai.json deleted file mode 100644 index 59e1079346..0000000000 --- a/src/lib/data/xai.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - "grok-3-beta", - "grok-3-fast-beta", - "grok-3-mini-beta", - "grok-3-mini-fast-beta", - "grok-2-latest", - "grok-2", - "grok-2-1212", - "grok-2-vision-latest", - "grok-2-vision", - "grok-2-vision-1212", - "grok-vision-beta", - "grok-beta" -] \ No newline at end of file diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 38f4a6e9aa..c12d5230f7 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -1,47 +1,51 @@ -import { type ProviderName } from '@roo-code/types'; +import { + type ProviderName, + type ModelInfo, + anthropicModels, + bedrockModels, + chutesModels, + deepSeekModels, + geminiModels, + groqModels, + vertexModels, + mistralModels, + openAiNativeModels, + vscodeLlmModels, + xaiModels, +} from '@roo-code/types'; -import openRouterModels from '@/lib/data/openrouter-models.json'; -import anthropicModels from '@/lib/data/anthropic.json'; -import geminiModels from '@/lib/data/gemini.json'; -import deepseekModels from '@/lib/data/deepseek.json'; -import openaiNativeModels from '@/lib/data/openai-native.json'; -import vertexModels from '@/lib/data/vertex.json'; -import bedrockModels from '@/lib/data/bedrock.json'; -import mistralModels from '@/lib/data/mistral.json'; -import requestyModels from '@/lib/data/requesty-models.json'; -import groqModels from '@/lib/data/groq.json'; -import xaiModels from '@/lib/data/xai.json'; -import unboundModels from '@/lib/data/unbound.json'; -import glamaModels from '@/lib/data/glama.json'; -import chutesModels from '@/lib/data/chutes.json'; +export const providers: Record< + Exclude, + { id: ProviderName; label: string; models?: Record } +> = { + anthropic: { id: 'anthropic', label: 'Anthropic', models: anthropicModels }, + bedrock: { id: 'bedrock', label: 'Amazon Bedrock', models: bedrockModels }, + chutes: { id: 'chutes', label: 'Chutes AI', models: chutesModels }, + deepseek: { id: 'deepseek', label: 'DeepSeek', models: deepSeekModels }, + gemini: { id: 'gemini', label: 'Google Gemini', models: geminiModels }, + 'openai-native': { + id: 'openai-native', + label: 'OpenAI', + models: openAiNativeModels, + }, + vertex: { id: 'vertex', label: 'GCP Vertex AI', models: vertexModels }, + 'vscode-lm': { + id: 'vscode-lm', + label: 'VS Code LM API', + models: vscodeLlmModels, + }, + mistral: { id: 'mistral', label: 'Mistral', models: mistralModels }, + xai: { id: 'xai', label: 'xAI (Grok)', models: xaiModels }, + groq: { id: 'groq', label: 'Groq', models: groqModels }, -type BaseProvider = { - id: ProviderName; - label: string; - models: string[]; + openai: { id: 'openai', label: 'OpenAI Compatible' }, // Models are manually added. + ollama: { id: 'ollama', label: 'Ollama' }, // Models pulled locally from the Ollama server. + lmstudio: { id: 'lmstudio', label: 'LM Studio' }, // Not sure... + + // Models pulled from the respective APIs. + openrouter: { id: 'openrouter', label: 'OpenRouter' }, + requesty: { id: 'requesty', label: 'Requesty' }, + litellm: { id: 'litellm', label: 'LiteLLM' }, + unbound: { id: 'unbound', label: 'Unbound' }, + glama: { id: 'glama', label: 'Glama' }, }; - -export const providers = ( - [ - { id: 'openrouter', label: 'OpenRouter', models: openRouterModels }, - { id: 'anthropic', label: 'Anthropic', models: anthropicModels }, - { id: 'gemini', label: 'Google Gemini', models: geminiModels }, - { id: 'deepseek', label: 'DeepSeek', models: deepseekModels }, - { id: 'openai-native', label: 'OpenAI', models: openaiNativeModels }, - { id: 'openai', label: 'OpenAI Compatible', models: [] }, - { id: 'vertex', label: 'GCP Vertex AI', models: vertexModels }, - { id: 'bedrock', label: 'Amazon Bedrock', models: bedrockModels }, - { id: 'glama', label: 'Glama', models: glamaModels }, - { id: 'vscode-lm', label: 'VS Code LM API', models: [] }, - { id: 'mistral', label: 'Mistral', models: mistralModels }, - { id: 'lmstudio', label: 'LM Studio', models: [] }, - { id: 'ollama', label: 'Ollama', models: [] }, - { id: 'unbound', label: 'Unbound', models: unboundModels }, - { id: 'requesty', label: 'Requesty', models: requestyModels }, - { id: 'human-relay', label: 'Human Relay', models: [] }, - { id: 'xai', label: 'xAI (Grok)', models: xaiModels }, - { id: 'groq', label: 'Groq', models: groqModels }, - { id: 'chutes', label: 'Chutes AI', models: chutesModels }, - { id: 'litellm', label: 'LiteLLM', models: [] }, - ] satisfies BaseProvider[] -).sort((a, b) => a.label.localeCompare(b.label));