mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-18 13:23:33 +08:00
101 lines
2.6 KiB
TypeScript
101 lines
2.6 KiB
TypeScript
export const OPENAI_DEFAULT_MAIN_MODEL = 'gpt-5.3-codex'
|
|
export const OPENAI_DEFAULT_SONNET_MODEL = 'gpt-5.4'
|
|
export const OPENAI_DEFAULT_HAIKU_MODEL = 'gpt-5.4-mini'
|
|
|
|
export type OpenAIModelCatalogEntry = {
|
|
value: string
|
|
label: string
|
|
description: string
|
|
descriptionForModel?: string
|
|
}
|
|
|
|
export const OPENAI_CODEX_MODEL_CATALOG: OpenAIModelCatalogEntry[] = [
|
|
{
|
|
value: OPENAI_DEFAULT_MAIN_MODEL,
|
|
label: 'GPT-5.3 Codex',
|
|
description: 'Best for coding and agentic work',
|
|
descriptionForModel: 'GPT-5.3 Codex - best for coding and agentic work',
|
|
},
|
|
{
|
|
value: OPENAI_DEFAULT_SONNET_MODEL,
|
|
label: 'GPT-5.4',
|
|
description: 'Strong general-purpose model',
|
|
descriptionForModel: 'GPT-5.4 - strong general-purpose model',
|
|
},
|
|
{
|
|
value: 'gpt-5.5',
|
|
label: 'GPT-5.5',
|
|
description: 'Latest general-purpose model',
|
|
descriptionForModel: 'GPT-5.5 - latest general-purpose model',
|
|
},
|
|
{
|
|
value: OPENAI_DEFAULT_HAIKU_MODEL,
|
|
label: 'GPT-5.4 Mini',
|
|
description: 'Fastest for quick tasks',
|
|
descriptionForModel: 'GPT-5.4 Mini - fastest for quick tasks',
|
|
},
|
|
]
|
|
|
|
export function isOpenAIResponsesModel(model: string): boolean {
|
|
const normalized = model.trim().toLowerCase()
|
|
return normalized.startsWith('gpt-') || /^o\d/.test(normalized)
|
|
}
|
|
|
|
export function resolveOpenAICodexModel(model: string): string {
|
|
if (process.env.OPENAI_CODEX_MODEL?.trim()) {
|
|
return process.env.OPENAI_CODEX_MODEL.trim()
|
|
}
|
|
|
|
const normalized = model.trim().toLowerCase()
|
|
if (isOpenAIResponsesModel(normalized)) {
|
|
return model
|
|
}
|
|
|
|
if (normalized.includes('haiku')) {
|
|
return (
|
|
process.env.OPENAI_CODEX_HAIKU_MODEL?.trim() ||
|
|
OPENAI_DEFAULT_HAIKU_MODEL
|
|
)
|
|
}
|
|
|
|
if (normalized.includes('sonnet')) {
|
|
return (
|
|
process.env.OPENAI_CODEX_SONNET_MODEL?.trim() ||
|
|
OPENAI_DEFAULT_SONNET_MODEL
|
|
)
|
|
}
|
|
|
|
if (normalized.includes('opus')) {
|
|
return (
|
|
process.env.OPENAI_CODEX_OPUS_MODEL?.trim() || OPENAI_DEFAULT_MAIN_MODEL
|
|
)
|
|
}
|
|
|
|
return OPENAI_DEFAULT_MAIN_MODEL
|
|
}
|
|
|
|
export function getOpenAIModelDisplayName(model: string): string | null {
|
|
switch (model.trim().toLowerCase()) {
|
|
case 'gpt-5.3-codex':
|
|
return 'GPT-5.3 Codex'
|
|
case 'gpt-5.5':
|
|
return 'GPT-5.5'
|
|
case 'gpt-5.4':
|
|
return 'GPT-5.4'
|
|
case 'gpt-5.4-mini':
|
|
return 'GPT-5.4 Mini'
|
|
case 'gpt-5.2':
|
|
return 'GPT-5.2'
|
|
case 'gpt-5.2-codex':
|
|
return 'GPT-5.2 Codex'
|
|
case 'gpt-5.1-codex':
|
|
return 'GPT-5.1 Codex'
|
|
case 'gpt-5.1-codex-max':
|
|
return 'GPT-5.1 Codex Max'
|
|
case 'gpt-5.1-codex-mini':
|
|
return 'GPT-5.1 Codex Mini'
|
|
default:
|
|
return null
|
|
}
|
|
}
|