Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.5 kB · 101 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102/** * Model deprecation utilities * * Contains information about deprecated models and their retirement dates. */
import { type APIProvider, getAPIProvider } from './providers.js'
type DeprecatedModelInfo = { isDeprecated: true modelName: string retirementDate: string}
type NotDeprecatedInfo = { isDeprecated: false}
type DeprecationInfo = DeprecatedModelInfo | NotDeprecatedInfo
type DeprecationEntry = { /** Human-readable model name */ modelName: string /** Retirement dates by provider (null = not deprecated for that provider) */ retirementDates: Record<APIProvider, string | null>}
/** * Deprecated models and their retirement dates by provider. * Keys are substrings to match in model IDs (case-insensitive). * To add a new deprecated model, add an entry to this object. */const DEPRECATED_MODELS: Record<string, DeprecationEntry> = { 'claude-3-opus': { modelName: 'Claude 3 Opus', retirementDates: { firstParty: 'January 5, 2026', bedrock: 'January 15, 2026', vertex: 'January 5, 2026', foundry: 'January 5, 2026', }, }, 'claude-3-7-sonnet': { modelName: 'Claude 3.7 Sonnet', retirementDates: { firstParty: 'February 19, 2026', bedrock: 'April 28, 2026', vertex: 'May 11, 2026', foundry: 'February 19, 2026', }, }, 'claude-3-5-haiku': { modelName: 'Claude 3.5 Haiku', retirementDates: { firstParty: 'February 19, 2026', bedrock: null, vertex: null, foundry: null, }, },}
/** * Check if a model is deprecated and get its deprecation info */function getDeprecatedModelInfo(modelId: string): DeprecationInfo { const lowercaseModelId = modelId.toLowerCase() const provider = getAPIProvider()
for (const [key, value] of Object.entries(DEPRECATED_MODELS)) { const retirementDate = value.retirementDates[provider] if (!lowercaseModelId.includes(key) || !retirementDate) { continue } return { isDeprecated: true, modelName: value.modelName, retirementDate, } }
return { isDeprecated: false }}
/** * Get a deprecation warning message for a model, or null if not deprecated */export function getModelDeprecationWarning( modelId: string | null,): string | null { if (!modelId) { return null }
const info = getDeprecatedModelInfo(modelId) if (!info.isDeprecated) { return null }
return `⚠ ${info.modelName} will be retired on ${info.retirementDate}. Consider switching to a newer model.`}