π File detail
migrations/migrateSonnet1mToSonnet45.ts
π§© .tsπ 49 linesπΎ 1,582 bytesπ text
β Back to All Filesπ― Use case
This file lives under βmigrations/β, which covers version migrations for settings or on-disk data. On the API surface it exposes migrateSonnet1mToSonnet45 β mainly functions, hooks, or classes. It composes internal code from bootstrap and utils (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { getMainLoopModelOverride, setMainLoopModelOverride, } from '../bootstrap/state.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
π€ Exports (heuristic)
migrateSonnet1mToSonnet45
π₯οΈ Source preview
import {
getMainLoopModelOverride,
setMainLoopModelOverride,
} from '../bootstrap/state.js'
import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
import {
getSettingsForSource,
updateSettingsForSource,
} from '../utils/settings/settings.js'
/**
* Migrate users who had "sonnet[1m]" saved to the explicit "sonnet-4-5-20250929[1m]".
*
* The "sonnet" alias now resolves to Sonnet 4.6, so users who previously set
* "sonnet[1m]" (targeting Sonnet 4.5 with 1M context) need to be pinned to the
* explicit version to preserve their intended model.
*
* This is needed because Sonnet 4.6 1M was offered to a different group of users than
* Sonnet 4.5 1M, so we needed to pin existing sonnet[1m] users to Sonnet 4.5 1M.
*
* Reads from userSettings specifically (not merged settings) so we don't
* promote a project-scoped "sonnet[1m]" to the global default. Runs once,
* tracked by a completion flag in global config.
*/
export function migrateSonnet1mToSonnet45(): void {
const config = getGlobalConfig()
if (config.sonnet1m45MigrationComplete) {
return
}
const model = getSettingsForSource('userSettings')?.model
if (model === 'sonnet[1m]') {
updateSettingsForSource('userSettings', {
model: 'sonnet-4-5-20250929[1m]',
})
}
// Also migrate the in-memory override if already set
const override = getMainLoopModelOverride()
if (override === 'sonnet[1m]') {
setMainLoopModelOverride('sonnet-4-5-20250929[1m]')
}
saveGlobalConfig(current => ({
...current,
sonnet1m45MigrationComplete: true,
}))
}