mirror of
https://github.com/davidkaya/aryx.git
synced 2026-07-28 23:48:39 +02:00
feat: add model dropdown with provider logos and tier badges
- Create model catalog (src/shared/domain/models.ts) with 12 models from OpenAI, Anthropic, and Google including tier metadata - Replace free-text model input with custom ModelSelect dropdown grouped by provider with colored provider icons (green AI for OpenAI, orange A for Anthropic, blue G for Google) - Show tier badges (premium/standard/fast) on each model option - Highlight currently selected model with indigo accent - Update ActivityPanel to show provider icons on model badges for visual consistency across the app Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
export type ModelProvider = 'openai' | 'anthropic' | 'google';
|
||||
|
||||
export interface ModelDefinition {
|
||||
id: string;
|
||||
name: string;
|
||||
provider: ModelProvider;
|
||||
tier: 'premium' | 'standard' | 'fast';
|
||||
}
|
||||
|
||||
export const modelCatalog: ModelDefinition[] = [
|
||||
{ id: 'gpt-5.4', name: 'GPT-5.4', provider: 'openai', tier: 'standard' },
|
||||
{ id: 'gpt-5.4-mini', name: 'GPT-5.4 Mini', provider: 'openai', tier: 'fast' },
|
||||
{ id: 'gpt-5.3-codex', name: 'GPT-5.3 Codex', provider: 'openai', tier: 'standard' },
|
||||
{ id: 'gpt-5.2-codex', name: 'GPT-5.2 Codex', provider: 'openai', tier: 'standard' },
|
||||
{ id: 'gpt-5.2', name: 'GPT-5.2', provider: 'openai', tier: 'standard' },
|
||||
{ id: 'gpt-5.1', name: 'GPT-5.1', provider: 'openai', tier: 'standard' },
|
||||
{ id: 'gpt-4.1', name: 'GPT-4.1', provider: 'openai', tier: 'fast' },
|
||||
|
||||
{ id: 'claude-opus-4.5', name: 'Claude Opus 4.5', provider: 'anthropic', tier: 'premium' },
|
||||
{ id: 'claude-sonnet-4.5', name: 'Claude Sonnet 4.5', provider: 'anthropic', tier: 'standard' },
|
||||
{ id: 'claude-sonnet-4', name: 'Claude Sonnet 4', provider: 'anthropic', tier: 'standard' },
|
||||
{ id: 'claude-haiku-4.5', name: 'Claude Haiku 4.5', provider: 'anthropic', tier: 'fast' },
|
||||
|
||||
{ id: 'gemini-3-pro-preview', name: 'Gemini 3 Pro', provider: 'google', tier: 'standard' },
|
||||
];
|
||||
|
||||
export const providerMeta: { id: ModelProvider; label: string }[] = [
|
||||
{ id: 'openai', label: 'OpenAI' },
|
||||
{ id: 'anthropic', label: 'Anthropic' },
|
||||
{ id: 'google', label: 'Google' },
|
||||
];
|
||||
|
||||
export function findModel(id: string): ModelDefinition | undefined {
|
||||
return modelCatalog.find((m) => m.id === id);
|
||||
}
|
||||
|
||||
export function inferProvider(modelId: string): ModelProvider | undefined {
|
||||
if (modelId.startsWith('gpt-')) return 'openai';
|
||||
if (modelId.startsWith('claude-')) return 'anthropic';
|
||||
if (modelId.startsWith('gemini-')) return 'google';
|
||||
return undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user