Get providers from @roo-code/types (#55)

This commit is contained in:
Chris Estreich 2025-05-30 20:19:16 -07:00 committed by GitHub
parent d5db42ddf3
commit d920576ae8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 122 additions and 962 deletions

View file

@ -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",

18
pnpm-lock.yaml generated
View file

@ -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': {}

View file

@ -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<ProviderName, string[]>()),
);
@ -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 (
<>
<div className="mb-[80px]">
<div className="mb-4 flex items-center space-x-2">
<Checkbox
id="allow-all-providers"
checked={allowAll}
onCheckedChange={toggleAllowAll}
disabled={isSaving}
/>
<Label htmlFor="allow-all-providers" className="text-sm font-medium">
Allow All Providers
<Label className="text-sm font-medium">
Restrict Providers
<Switch
checked={!allowAll}
onCheckedChange={() => {
setAllowAll(!allowAll);
setHasChanges(true);
}}
disabled={isSaving}
/>
</Label>
</div>
<div className={allowAll ? 'opacity-50' : ''}>
<div className={cn({ hidden: allowAll })}>
{fullProviderMetadata.map((provider) => (
<div key={provider.id} className="mb-4">
<div className="mb-2 flex items-center justify-between">
@ -180,11 +178,13 @@ export const ProviderForm = ({ orgSettings }: ProviderFormProps) => {
</div>
<div className="max-w-full">
<MultipleSelector
defaultOptions={provider.models.map((model) => ({
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) => {
</div>
))}
</div>
<div className="flex items-center space-x-2 pt-2">
<Badge variant="outline" className="text-xs">
{`Policy v${orgSettings?.version || 1}`}
</Badge>
<span className="text-xs text-muted-foreground">
{isSaving
? 'Updating provider whitelist...'
: hasChanges
? 'You have unsaved changes'
: 'Changes will be pushed to SSE stream within 30 seconds'}
</span>
</div>
<Button
onClick={saveChanges}
disabled={!hasChanges || isSaving}
className="mt-4"
<div
className={cn('fixed bottom-0 left-0 right-0', {
hidden: !hasChanges && !isSaving,
})}
>
{isSaving ? <Loading /> : 'Save Changes'}
</Button>
</>
<div className="flex items-center justify-end h-[80px] bg-card border-t px-6">
<Button onClick={saveChanges} disabled={!hasChanges || isSaving}>
{isSaving ? <Loading /> : 'Save Changes'}
</Button>
</div>
</div>
</div>
);
};

View file

@ -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 = () => {
<CardTitle>{t('title')}</CardTitle>
<CardDescription>{t('description')}</CardDescription>
</CardHeader>
<CardContent>
<Badge variant="outline" className="text-xs">
{`Policy v${orgSettings?.version || 1}`}
</Badge>
</CardContent>
</Card>
{orgSettings ? <ProviderForm orgSettings={orgSettings} /> : <Loading />}
</>

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -1,4 +0,0 @@
[
"deepseek-chat",
"deepseek-reasoner"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -1,8 +0,0 @@
[
"codestral-latest",
"mistral-large-latest",
"ministral-8b-latest",
"ministral-3b-latest",
"mistral-small-latest",
"pixtral-large-latest"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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"
]

View file

@ -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<ProviderName, 'fake-ai' | 'human-relay'>,
{ id: ProviderName; label: string; models?: Record<string, ModelInfo> }
> = {
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));