/** * Model Default Constants - Single Source of Truth * * All model-related defaults should reference this file. * Backend (Rust) should use the same values in kernel_commands.rs */ import { LLM_PROVIDER_URLS } from './api-urls'; // === Default Model Configuration === /** * Default model ID when user hasn't configured one * Using gpt-4o-mini as it's cost-effective and capable */ export const DEFAULT_MODEL_ID = 'gpt-4o-mini' as const; /** * Default provider when user hasn't configured one */ export const DEFAULT_PROVIDER = 'openai' as const; /** * Default max tokens for responses */ export const DEFAULT_MAX_TOKENS = 4096 as const; /** * Default temperature for responses */ export const DEFAULT_TEMPERATURE = 0.7 as const; /** * Default base URL for OpenAI API */ export const DEFAULT_OPENAI_BASE_URL = LLM_PROVIDER_URLS.OPENAI as string; /** * Default base URL for Anthropic API */ export const DEFAULT_ANTHROPIC_BASE_URL = LLM_PROVIDER_URLS.ANTHROPIC as string; // === Provider-Specific Defaults === export const PROVIDER_DEFAULTS = { openai: { baseUrl: LLM_PROVIDER_URLS.OPENAI, defaultModel: 'gpt-4o-mini', }, anthropic: { baseUrl: LLM_PROVIDER_URLS.ANTHROPIC, defaultModel: 'claude-sonnet-4-20250514', }, zhipu: { baseUrl: LLM_PROVIDER_URLS.ZHIPU, defaultModel: 'glm-4-flash-250414', }, zhipu_coding: { baseUrl: LLM_PROVIDER_URLS.ZHIPU_CODING, defaultModel: 'glm-4-flash-250414', }, kimi: { baseUrl: LLM_PROVIDER_URLS.KIMI, defaultModel: 'moonshot-v1-8k', }, kimi_coding: { baseUrl: LLM_PROVIDER_URLS.KIMI_CODING, defaultModel: 'kimi-for-coding', }, qwen: { baseUrl: LLM_PROVIDER_URLS.QWEN, defaultModel: 'qwen-turbo', }, qwen_coding: { baseUrl: LLM_PROVIDER_URLS.QWEN_CODING, defaultModel: 'qwen3-coder-next', }, deepseek: { baseUrl: LLM_PROVIDER_URLS.DEEPSEEK, defaultModel: 'deepseek-chat', }, gemini: { baseUrl: LLM_PROVIDER_URLS.GEMINI, defaultModel: 'gemini-2.0-flash', }, local: { baseUrl: LLM_PROVIDER_URLS.OLLAMA, defaultModel: 'llama3', }, } as const; export type ProviderType = keyof typeof PROVIDER_DEFAULTS; // === Helper Functions === /** * Get provider default configuration */ export function getProviderDefaults(provider: string): { baseUrl: string; defaultModel: string; } { return PROVIDER_DEFAULTS[provider as ProviderType] || { baseUrl: DEFAULT_OPENAI_BASE_URL, defaultModel: DEFAULT_MODEL_ID, }; } /** * Check if a provider is a coding plan provider */ export function isCodingProvider(provider: string): boolean { return provider.endsWith('-coding') || provider === 'zhipu-coding'; }