import type { ModelTemplate } from './assignment'; /** * Built-in model templates, defined in code and merged with the user's stored * templates at read time (see configManager.getModelTemplates). They are never * persisted, so editing this file updates every user's presets on next load — * the same pattern as built-in skills and project templates. * * Built-ins are read-only: configManager refuses to save or delete them, and the * UI offers "Save as" to clone one into an editable template. Keep the model ids * current — these are curated recommendations, not a stable contract. */ const RECOMMENDED_DESCRIPTION = 'A recommended starting point, updated over time as better models appear. Save as a copy to customize.'; export const BUILT_IN_MODEL_TEMPLATES: ModelTemplate[] = [ { id: 'or-recommended', name: 'OpenRouter · Recommended', builtin: true, description: RECOMMENDED_DESCRIPTION, assignment: { agent: { provider: 'openrouter', model: 'deepseek/deepseek-v4-flash' }, imageGen: { provider: 'openrouter', model: 'google/gemini-3.1-flash-image' }, voiceInput: 'browser', autoCompact: true, compactLimit: null, }, }, { id: 'hf-recommended', name: 'HuggingFace · Recommended', builtin: true, description: RECOMMENDED_DESCRIPTION, assignment: { agent: { provider: 'huggingface', model: 'deepseek-ai/DeepSeek-V4-Flash' }, imageGen: null, voiceInput: 'browser', autoCompact: true, compactLimit: null, }, }, ]; /** True if `id` belongs to a built-in (read-only, code-defined) template. */ export function isBuiltInTemplateId(id: string): boolean { return BUILT_IN_MODEL_TEMPLATES.some((t) => t.id === id); }