49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
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,
|
|
}))
|
|
}
|