修复 Plus 会话导入策略选择

This commit is contained in:
QLHazyCoder
2026-05-20 17:03:03 +08:00
parent e6a7d1fa3f
commit 065607bc04
8 changed files with 238 additions and 38 deletions
+32 -8
View File
@@ -145,6 +145,28 @@
return PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
}
function getPlusAccountSessionStrategyForTarget(targetId = '') {
const normalizedTargetId = String(targetId || '').trim().toLowerCase();
if (normalizedTargetId === 'sub2api') {
return PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION;
}
if (normalizedTargetId === 'cpa') {
return PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION;
}
return PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
}
function normalizePlusAccountAccessStrategyForTarget(value = '', targetId = '') {
const normalizedStrategy = normalizePlusAccountAccessStrategy(value);
if (
normalizedStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|| normalizedStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
) {
return getPlusAccountSessionStrategyForTarget(targetId);
}
return normalizedStrategy;
}
function normalizeOpenAiTargetList(values = []) {
if (!Array.isArray(values)) {
return [];
@@ -375,21 +397,23 @@
: (effectiveSignupMethods.includes(SIGNUP_METHOD_EMAIL)
? SIGNUP_METHOD_EMAIL
: effectiveSignupMethods[0]);
const requestedPlusAccountAccessStrategy = normalizePlusAccountAccessStrategy(
options?.plusAccountAccessStrategy ?? state?.plusAccountAccessStrategy
const requestedPlusAccountAccessStrategy = normalizePlusAccountAccessStrategyForTarget(
options?.plusAccountAccessStrategy ?? state?.plusAccountAccessStrategy,
effectiveTargetId
);
const basePlusAccountAccessStrategies = [
PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH,
PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION,
PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION,
];
const targetPlusAccountAccessStrategies = (Array.isArray(targetState.supportedPlusAccountAccessStrategies)
&& targetState.supportedPlusAccountAccessStrategies.length > 0
? targetState.supportedPlusAccountAccessStrategies
: [PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH])
.map(normalizePlusAccountAccessStrategy)
.filter((strategy, index, strategies) => strategy && strategies.indexOf(strategy) === index);
const availablePlusAccountAccessStrategies = activeFlowId === 'openai'
&& Boolean(flowState.supportsPlusMode)
&& Boolean(runtimeLocks.plusModeEnabled)
&& effectiveSignupMethod === SIGNUP_METHOD_EMAIL
? (runtimeLocks.accountContribution
? [PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION]
: basePlusAccountAccessStrategies)
: targetPlusAccountAccessStrategies)
: [PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH];
const effectivePlusAccountAccessStrategy = runtimeLocks.accountContribution
&& runtimeLocks.plusModeEnabled