/** * @deprecated LEGACY MIGRATION ONLY * * This map exists solely for migrating old configs that used hardcoded model strings. * It maps legacy model strings to semantic category names, allowing users to migrate * from explicit model configs to category-based configs. * * DO NOT add new entries here. New agents should use: * - Category-based config (preferred): { category: "unspecified-high" } * - Or inherit from OpenCode's config.model * * This map will be removed in a future major version once migration period ends. */ export const MODEL_TO_CATEGORY_MAP: Record = { "google/gemini-3-pro": "visual-engineering", "google/gemini-3-flash": "writing", "openai/gpt-5.2": "ultrabrain", "anthropic/claude-haiku-4-5": "quick", "anthropic/claude-opus-4-6": "unspecified-high", "anthropic/claude-sonnet-4-5": "unspecified-low", } export function migrateAgentConfigToCategory(config: Record): { migrated: Record changed: boolean } { const { model, ...rest } = config if (typeof model !== "string") { return { migrated: config, changed: false } } const category = MODEL_TO_CATEGORY_MAP[model] if (!category) { return { migrated: config, changed: false } } return { migrated: { category, ...rest }, changed: true, } } export function shouldDeleteAgentConfig( config: Record, category: string ): boolean { const { DEFAULT_CATEGORIES } = require("../../tools/delegate-task/constants") const defaults = DEFAULT_CATEGORIES[category] if (!defaults) return false const keys = Object.keys(config).filter((k) => k !== "category") if (keys.length === 0) return true for (const key of keys) { if (config[key] !== (defaults as Record)[key]) { return false } } return true }