fix(cliproxy): prefer explicit Codex free fallbacks

This commit is contained in:
Kai (Tam Nhu) Tran
2026-05-30 14:57:04 -04:00
parent d49bbdaec3
commit 27e1694480
2 changed files with 16 additions and 1 deletions
@@ -78,6 +78,21 @@ describe('codex plan compatibility', () => {
).toBe('gpt-5.4-mini');
});
it('prefers a rejected model explicit free-plan fallback over saved paid-only models', () => {
expect(
resolveRuntimeCodexFallbackModel({
requestedModel: 'gpt-5.3-codex-spark',
modelMap: {
defaultModel: 'gpt-5.3-codex',
opusModel: 'gpt-5.3-codex',
sonnetModel: 'gpt-5.3-codex',
haikuModel: 'gpt-5.3-codex-spark',
},
excludeModels: ['gpt-5.3-codex-spark'],
})
).toBe('gpt-5.4-mini');
});
it('tracks Codex thinking caps for current safe defaults, paid models, and legacy aliases', () => {
expect(getModelMaxLevel('codex', 'gpt-5.5')).toBe('xhigh');
expect(getModelMaxLevel('codex', 'gpt-5.4')).toBe('xhigh');
@@ -114,8 +114,8 @@ export function resolveRuntimeCodexFallbackModel(options: {
(options.excludeModels ?? []).map((model) => normalizeCodexModelId(model)).filter(Boolean)
);
const candidates = [
options.modelMap.defaultModel,
getFreePlanFallbackCodexModel(requestedModel),
options.modelMap.defaultModel,
options.modelMap.opusModel,
options.modelMap.sonnetModel,
options.modelMap.haikuModel,