π File detail
utils/model/deprecation.ts
π§© .tsπ 102 linesπΎ 2,534 bytesπ text
β Back to All Filesπ― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes getModelDeprecationWarning β mainly functions, hooks, or classes. It composes internal code from providers (relative imports). What the file header says: Model deprecation utilities Contains information about deprecated models and their retirement dates.
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
Model deprecation utilities Contains information about deprecated models and their retirement dates.
π€ Exports (heuristic)
getModelDeprecationWarning
π₯οΈ Source preview
/**
* 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.`
}