export const DEFAULT_CHAT_MODEL = "gpt-5.4-mini"; export type ModelCapabilities = { tools: boolean; vision: boolean; reasoning: boolean; }; export type ChatModel = { id: string; name: string; provider: string; description: string; }; export const chatModels: ChatModel[] = [ { id: "claude-sonnet", name: "Claude Sonnet 4.6", provider: "anthropic", description: "Anthropic's flagship model — balanced reasoning and speed", }, { id: "claude-haiku", name: "Claude Haiku 4.5", provider: "anthropic", description: "Fast and cheap Anthropic model", }, { id: "gpt-5.4", name: "GPT-5.4", provider: "openai", description: "OpenAI's flagship", }, { id: "gpt-5.4-mini", name: "GPT-5.4 Mini", provider: "openai", description: "Fast and cheap OpenAI model", }, { id: "kimi-k2.6", name: "Kimi K2.6", provider: "moonshotai", description: "Moonshot AI flagship", }, { id: "minimax-m2.7", name: "MiniMax M2.7", provider: "minimax", description: "MiniMax open-source model", }, { id: "qwen3-coder", name: "Qwen3 Coder", provider: "alibaba", description: "Code-specialized model", }, ]; export const titleModel = chatModels.find((m) => m.id === "claude-haiku")!; export const allowedModelIds = new Set(chatModels.map((m) => m.id)); export const modelsByProvider = chatModels.reduce( (acc, model) => { if (!acc[model.provider]) { acc[model.provider] = []; } acc[model.provider].push(model); return acc; }, {} as Record ); export const modelCapabilities: Record = { "claude-sonnet": { tools: true, vision: true, reasoning: true }, "claude-haiku": { tools: true, vision: true, reasoning: false }, "gpt-5.4": { tools: true, vision: true, reasoning: true }, "gpt-5.4-mini": { tools: true, vision: true, reasoning: false }, "kimi-k2.6": { tools: true, vision: false, reasoning: false }, "minimax-m2.7": { tools: true, vision: false, reasoning: false }, "qwen3-coder": { tools: true, vision: false, reasoning: false }, }; export function getActiveModels(): ChatModel[] { return chatModels; }