Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.0 kB · 57 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent,} from '../services/analytics/index.js'import { saveGlobalConfig } from '../utils/config.js'import { isLegacyModelRemapEnabled } from '../utils/model/model.js'import { getAPIProvider } from '../utils/model/providers.js'import { getSettingsForSource, updateSettingsForSource,} from '../utils/settings/settings.js'
/** * Migrate first-party users off explicit Opus 4.0/4.1 model strings. * * The 'opus' alias already resolves to Opus 4.6 for 1P, so anyone still * on an explicit 4.0/4.1 string pinned it in settings before 4.5 launched. * parseUserSpecifiedModel now silently remaps these at runtime anyway — * this migration cleans up the settings file so /model shows the right * thing, and sets a timestamp so the REPL can show a one-time notification. * * Only touches userSettings. Legacy strings in project/local/policy settings * are left alone (we can't/shouldn't rewrite those) and are still remapped at * runtime by parseUserSpecifiedModel. Reading and writing the same source * keeps this idempotent without a completion flag, and avoids silently * promoting 'opus' to the global default for users who only pinned it in one * project. */export function migrateLegacyOpusToCurrent(): void { if (getAPIProvider() !== 'firstParty') { return }
if (!isLegacyModelRemapEnabled()) { return }
const model = getSettingsForSource('userSettings')?.model if ( model !== 'claude-opus-4-20250514' && model !== 'claude-opus-4-1-20250805' && model !== 'claude-opus-4-0' && model !== 'claude-opus-4-1' ) { return }
updateSettingsForSource('userSettings', { model: 'opus' }) saveGlobalConfig(current => ({ ...current, legacyOpusMigrationTimestamp: Date.now(), })) logEvent('tengu_legacy_opus_migration', { from_model: model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, })}