export type SupportedProvider = 'openai' | 'amd' | 'groq' | 'gemini' | 'local'; export const providerOptions: Array<{ id: SupportedProvider; label: string; models: string[]; }> = [ { id: 'groq', label: 'Groq', models: [ 'llama-3.3-70b-versatile', 'llama-3.1-8b-instant', 'openai/gpt-oss-120b', 'openai/gpt-oss-20b', 'openai/gpt-oss-safeguard-20b', 'meta-llama/llama-4-scout-17b-16e-instruct', 'qwen/qwen3-32b', 'groq/compound', 'groq/compound-mini', 'allam-2-7b', 'meta-llama/llama-prompt-guard-2-22m', 'meta-llama/llama-prompt-guard-2-86m', 'canopylabs/orpheus-arabic-saudi', 'canopylabs/orpheus-v1-english', 'mixtral-8x7b-32768' ] }, { id: 'openai', label: 'OpenAI', models: ['gpt-4o', 'gpt-4o-mini'] }, { id: 'gemini', label: 'Google Gemini', models: ['gemini-2.0-flash', 'gemini-1.5-pro'] }, { id: 'amd', label: 'AMD Inference', models: ['gpt-4o'] }, { id: 'local', label: 'Local (Ollama)', models: ['llama3.1:8b', 'mistral', 'qwen2.5'] } ]; export const providerStorageKeys = { provider: 'aubm.defaultProvider', model: 'aubm.defaultModel' }; export const getDefaultProvider = (): SupportedProvider => { const stored = localStorage.getItem(providerStorageKeys.provider); const validProviders: SupportedProvider[] = ['openai', 'amd', 'groq', 'gemini', 'local']; return (stored && validProviders.includes(stored as SupportedProvider)) ? (stored as SupportedProvider) : 'groq'; }; export const getDefaultModel = (provider: SupportedProvider): string => { const stored = localStorage.getItem(providerStorageKeys.model); const providerModels = providerOptions.find((option) => option.id === provider)?.models ?? ['llama-3.3-70b-versatile']; return stored && providerModels.includes(stored) ? stored : providerModels[0]; }; export const saveProviderDefaults = (provider: SupportedProvider, model: string) => { localStorage.setItem(providerStorageKeys.provider, provider); localStorage.setItem(providerStorageKeys.model, model); };