mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-20 00:14:58 +00:00
fix(cliproxy): refresh upstream model and quota surfaces (#1158)
* fix(cliproxy): refresh upstream model and quota surfaces * test(cliproxy): cover codex legacy model fallback
This commit is contained in:
1 parent
66865127d7
commit
50b0ffba75
7 files changed
+220
-97
No files matched your search
@@ -45,7 +45,7 @@ describe('ModelConfigSection presets', () => {
|
||||
ANTHROPIC_MODEL: 'gpt-5.4',
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: 'gpt-5.4',
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: 'gpt-5.4',
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'gpt-5-codex-mini',
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'gpt-5.4-mini',
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -130,6 +130,27 @@ describe('FlexibleModelSelector', () => {
|
||||
expect(screen.getAllByText('gpt-5.3-codex-high').length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('preserves saved legacy codex model IDs under the current-value fallback', async () => {
|
||||
render(
|
||||
<FlexibleModelSelector
|
||||
label="Primary model"
|
||||
value="gpt-5-codex"
|
||||
onChange={vi.fn()}
|
||||
catalog={MODEL_CATALOGS.codex}
|
||||
allModels={[]}
|
||||
/>
|
||||
);
|
||||
|
||||
expect(screen.getByRole('button', { name: /gpt-5-codex/i })).toBeInTheDocument();
|
||||
|
||||
await userEvent.click(screen.getByRole('button', { name: /gpt-5-codex/i }));
|
||||
|
||||
expect(screen.getByText('Current value')).toBeInTheDocument();
|
||||
expect(screen.getAllByText('gpt-5-codex').length).toBeGreaterThan(0);
|
||||
expect(screen.getByText('gpt-5.4')).toBeInTheDocument();
|
||||
expect(screen.getByText('gpt-5.4-mini')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('preserves explicit suffixes on supplemental codex models outside the static catalog', async () => {
|
||||
const onChange = vi.fn();
|
||||
|
||||
|
||||
@@ -2,17 +2,22 @@ import { describe, expect, it } from 'vitest';
|
||||
import { MODEL_CATALOGS } from '@/lib/model-catalogs';
|
||||
|
||||
describe('codex model catalog defaults', () => {
|
||||
it('uses gpt-5-codex-mini as the haiku mapping for cross-plan codex presets', () => {
|
||||
it('mirrors the current Codex runtime catalog and free-safe defaults', () => {
|
||||
const codexCatalog = MODEL_CATALOGS.codex;
|
||||
const codex55 = codexCatalog.models.find((model) => model.id === 'gpt-5.5');
|
||||
const codex53 = codexCatalog.models.find((model) => model.id === 'gpt-5.3-codex');
|
||||
const codex52 = codexCatalog.models.find((model) => model.id === 'gpt-5.2-codex');
|
||||
const codexMini = codexCatalog.models.find((model) => model.id === 'gpt-5-codex-mini');
|
||||
const codex52 = codexCatalog.models.find((model) => model.id === 'gpt-5.2');
|
||||
const codex54 = codexCatalog.models.find((model) => model.id === 'gpt-5.4');
|
||||
const codexMini = codexCatalog.models.find((model) => model.id === 'gpt-5.4-mini');
|
||||
|
||||
expect(codex55?.presetMapping?.haiku).toBe('gpt-5-codex-mini');
|
||||
expect(codexCatalog.defaultModel).toBe('gpt-5.4');
|
||||
expect(codex55?.tier).toBe('paid');
|
||||
expect(codex55?.presetMapping?.haiku).toBe('gpt-5.4-mini');
|
||||
expect(codex55?.codexMaxEffort).toBe('xhigh');
|
||||
expect(codex53?.presetMapping?.haiku).toBe('gpt-5-codex-mini');
|
||||
expect(codex52?.presetMapping?.haiku).toBe('gpt-5-codex-mini');
|
||||
expect(codex54?.tier).toBeUndefined();
|
||||
expect(codex54?.presetMapping?.haiku).toBe('gpt-5.4-mini');
|
||||
expect(codex53?.presetMapping?.haiku).toBe('gpt-5.4-mini');
|
||||
expect(codex52?.presetMapping?.haiku).toBe('gpt-5.4-mini');
|
||||
expect(codex53?.codexMaxEffort).toBe('xhigh');
|
||||
expect(codexMini?.codexMaxEffort).toBe('high');
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user