| import { | |
| getSettingsForSource, | |
| updateSettingsForSource, | |
| } from '../utils/settings/settings.js' | |
| /** | |
| * Migrate users on removed fennec model aliases to their new Opus 4.6 aliases. | |
| * - fennec-latest β opus | |
| * - fennec-latest[1m] β opus[1m] | |
| * - fennec-fast-latest β opus[1m] + fast mode | |
| * - opus-4-5-fast β opus + fast mode | |
| * | |
| * Only touches userSettings. Reading and writing the same source keeps this | |
| * idempotent without a completion flag. Fennec aliases in project/local/policy | |
| * settings are left alone β we can't rewrite those, and reading merged | |
| * settings here would cause infinite re-runs + silent global promotion. | |
| */ | |
| export function migrateFennecToOpus(): void { | |
| if (process.env.USER_TYPE !== 'ant') { | |
| return | |
| } | |
| const settings = getSettingsForSource('userSettings') | |
| const model = settings?.model | |
| if (typeof model === 'string') { | |
| if (model.startsWith('fennec-latest[1m]')) { | |
| updateSettingsForSource('userSettings', { | |
| model: 'opus[1m]', | |
| }) | |
| } else if (model.startsWith('fennec-latest')) { | |
| updateSettingsForSource('userSettings', { | |
| model: 'opus', | |
| }) | |
| } else if ( | |
| model.startsWith('fennec-fast-latest') || | |
| model.startsWith('opus-4-5-fast') | |
| ) { | |
| updateSettingsForSource('userSettings', { | |
| model: 'opus[1m]', | |
| fastMode: true, | |
| }) | |
| } | |
| } | |
| } | |