mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 22:05:50 +00:00
feat: /login支持codex订阅登录
This commit is contained in:
52
src/utils/model/chatgptModels.ts
Normal file
52
src/utils/model/chatgptModels.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
export type ChatGPTCodexModelOption = {
|
||||
value: string
|
||||
label: string
|
||||
description: string
|
||||
}
|
||||
|
||||
export const CHATGPT_CODEX_DEFAULT_MODEL = 'gpt-5.5'
|
||||
export const CHATGPT_CODEX_FAST_MODEL = 'gpt-5.4-mini'
|
||||
|
||||
export const CHATGPT_CODEX_MODEL_OPTIONS: ChatGPTCodexModelOption[] = [
|
||||
{
|
||||
value: 'gpt-5.5',
|
||||
label: 'GPT-5.5',
|
||||
description: 'Frontier model for complex coding, research, and real-world work',
|
||||
},
|
||||
{
|
||||
value: 'gpt-5.4',
|
||||
label: 'GPT-5.4',
|
||||
description: 'Strong model for everyday coding',
|
||||
},
|
||||
{
|
||||
value: 'gpt-5.4-mini',
|
||||
label: 'GPT-5.4-Mini',
|
||||
description: 'Small, fast, and cost-efficient model for simpler coding tasks',
|
||||
},
|
||||
{
|
||||
value: 'gpt-5.3-codex',
|
||||
label: 'GPT-5.3-Codex',
|
||||
description: 'Coding-optimized model',
|
||||
},
|
||||
{
|
||||
value: 'gpt-5.3-codex-spark',
|
||||
label: 'GPT-5.3-Codex-Spark',
|
||||
description: 'Ultra-fast coding model',
|
||||
},
|
||||
{
|
||||
value: 'gpt-5.2',
|
||||
label: 'GPT-5.2',
|
||||
description: 'Optimized for professional work and long-running agents',
|
||||
},
|
||||
]
|
||||
|
||||
export function isChatGPTAuthMode(): boolean {
|
||||
return process.env.OPENAI_AUTH_MODE === 'chatgpt'
|
||||
}
|
||||
|
||||
export function isChatGPTCodexReasoningModel(model: string): boolean {
|
||||
const normalized = model.toLowerCase().replace(/\[1m\]$/, '')
|
||||
return CHATGPT_CODEX_MODEL_OPTIONS.some(
|
||||
option => option.value.toLowerCase() === normalized,
|
||||
)
|
||||
}
|
||||
@@ -29,6 +29,11 @@ import { LIGHTNING_BOLT } from '../../constants/figures.js'
|
||||
import { isModelAllowed } from './modelAllowlist.js'
|
||||
import { type ModelAlias, isModelAlias } from './aliases.js'
|
||||
import { capitalize } from '../stringUtils.js'
|
||||
import {
|
||||
CHATGPT_CODEX_DEFAULT_MODEL,
|
||||
CHATGPT_CODEX_FAST_MODEL,
|
||||
isChatGPTAuthMode,
|
||||
} from './chatgptModels.js'
|
||||
|
||||
export type ModelShortName = string
|
||||
export type ModelName = string
|
||||
@@ -36,6 +41,9 @@ export type ModelSetting = ModelName | ModelAlias | null
|
||||
|
||||
export function getSmallFastModel(): ModelName {
|
||||
const provider = getAPIProvider()
|
||||
if (provider === 'openai' && isChatGPTAuthMode()) {
|
||||
return process.env.OPENAI_SMALL_FAST_MODEL ?? CHATGPT_CODEX_FAST_MODEL
|
||||
}
|
||||
// Provider-specific small fast model
|
||||
if (provider === 'openai' && process.env.OPENAI_SMALL_FAST_MODEL) {
|
||||
return process.env.OPENAI_SMALL_FAST_MODEL
|
||||
@@ -115,6 +123,9 @@ export function getBestModel(): ModelName {
|
||||
// @[MODEL LAUNCH]: Update the default Opus model (3P providers may lag so keep defaults unchanged).
|
||||
export function getDefaultOpusModel(): ModelName {
|
||||
const provider = getAPIProvider()
|
||||
if (provider === 'openai' && isChatGPTAuthMode()) {
|
||||
return CHATGPT_CODEX_DEFAULT_MODEL
|
||||
}
|
||||
// For OpenAI provider, check OPENAI_DEFAULT_OPUS_MODEL first
|
||||
if (provider === 'openai' && process.env.OPENAI_DEFAULT_OPUS_MODEL) {
|
||||
return process.env.OPENAI_DEFAULT_OPUS_MODEL
|
||||
@@ -140,6 +151,9 @@ export function getDefaultOpusModel(): ModelName {
|
||||
// @[MODEL LAUNCH]: Update the default Sonnet model (3P providers may lag so keep defaults unchanged).
|
||||
export function getDefaultSonnetModel(): ModelName {
|
||||
const provider = getAPIProvider()
|
||||
if (provider === 'openai' && isChatGPTAuthMode()) {
|
||||
return CHATGPT_CODEX_DEFAULT_MODEL
|
||||
}
|
||||
// For OpenAI provider, check OPENAI_DEFAULT_SONNET_MODEL first
|
||||
if (provider === 'openai' && process.env.OPENAI_DEFAULT_SONNET_MODEL) {
|
||||
return process.env.OPENAI_DEFAULT_SONNET_MODEL
|
||||
@@ -162,6 +176,9 @@ export function getDefaultSonnetModel(): ModelName {
|
||||
// @[MODEL LAUNCH]: Update the default Haiku model (3P providers may lag so keep defaults unchanged).
|
||||
export function getDefaultHaikuModel(): ModelName {
|
||||
const provider = getAPIProvider()
|
||||
if (provider === 'openai' && isChatGPTAuthMode()) {
|
||||
return CHATGPT_CODEX_FAST_MODEL
|
||||
}
|
||||
// For OpenAI provider, check OPENAI_DEFAULT_HAIKU_MODEL first
|
||||
if (provider === 'openai' && process.env.OPENAI_DEFAULT_HAIKU_MODEL) {
|
||||
return process.env.OPENAI_DEFAULT_HAIKU_MODEL
|
||||
|
||||
@@ -33,6 +33,11 @@ import {
|
||||
} from './model.js'
|
||||
import { has1mContext } from '../context.js'
|
||||
import { getGlobalConfig } from '../config.js'
|
||||
import {
|
||||
CHATGPT_CODEX_DEFAULT_MODEL,
|
||||
CHATGPT_CODEX_MODEL_OPTIONS,
|
||||
isChatGPTAuthMode,
|
||||
} from './chatgptModels.js'
|
||||
|
||||
// @[MODEL LAUNCH]: Update all the available and default model option strings below.
|
||||
|
||||
@@ -336,6 +341,23 @@ function getOpusPlanOption(): ModelOption {
|
||||
}
|
||||
}
|
||||
|
||||
function getChatGPTCodexModelOptions(): ModelOption[] {
|
||||
return [
|
||||
{
|
||||
value: null,
|
||||
label: 'Default (recommended)',
|
||||
description: `Use the default ChatGPT Codex model (currently ${CHATGPT_CODEX_DEFAULT_MODEL})`,
|
||||
descriptionForModel: `Default ChatGPT Codex model (currently ${CHATGPT_CODEX_DEFAULT_MODEL})`,
|
||||
},
|
||||
...CHATGPT_CODEX_MODEL_OPTIONS.map(model => ({
|
||||
value: model.value,
|
||||
label: model.label,
|
||||
description: model.description,
|
||||
descriptionForModel: `${model.description} (${model.value})`,
|
||||
})),
|
||||
]
|
||||
}
|
||||
|
||||
// @[MODEL LAUNCH]: Update the model picker lists below to include/reorder options for the new model.
|
||||
// Each user tier (ant, Max/Team Premium, Pro/Team Standard/Enterprise, PAYG 1P, PAYG 3P) has its own list.
|
||||
function getModelOptionsBase(fastMode = false): ModelOption[] {
|
||||
@@ -357,6 +379,10 @@ function getModelOptionsBase(fastMode = false): ModelOption[] {
|
||||
]
|
||||
}
|
||||
|
||||
if (getAPIProvider() === 'openai' && isChatGPTAuthMode()) {
|
||||
return getChatGPTCodexModelOptions()
|
||||
}
|
||||
|
||||
if (isClaudeAISubscriber()) {
|
||||
if (isMaxSubscriber() || isTeamPremiumSubscriber()) {
|
||||
// Max and Team Premium users: Default = Opus 4.7 1M (merged), plus Opus 4.6 1M
|
||||
|
||||
Reference in New Issue
Block a user