fix(codex): normalize native cliproxy tuning aliases (#1254)

This commit is contained in:
Kai (Tam Nhu) Tran authored and GitHub committed 2026-05-15 09:51:42 -04:00
1 parent 53730c0165
commit 609bed0c39
5 files changed
+174 -14

No files matched your search

@@ -136,4 +136,65 @@ supports_websockets = false
expect(result.envKey).toBe('CLIPROXY_API_KEY');
expect(fs.readFileSync(configPath, 'utf8')).toBe(rawText);
});
it('normalizes a ready native Codex tuning alias before requests reach cliproxy', async () => {
fs.mkdirSync(codexHome, { recursive: true });
fs.writeFileSync(
configPath,
`model = "gpt-5.5-high-fast"
[model_providers.cliproxy]
name = "CLIProxy Codex"
base_url = "http://localhost:8317/api/provider/codex"
env_key = "CLIPROXY_API_KEY"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = false
`,
'utf8'
);
const result = await ensureCodexCliproxyProviderConfig(8317, env);
expect(result.changed).toBe(true);
const rawText = fs.readFileSync(configPath, 'utf8');
expect(rawText).toContain('model = "gpt-5.5"');
expect(rawText).toContain('model_reasoning_effort = "high"');
expect(rawText).toContain('service_tier = "priority"');
expect(rawText).toContain('[model_providers.cliproxy]');
expect(rawText).not.toContain('gpt-5.5-high-fast');
});
it('normalizes a native Codex effort alias when adding the missing provider', async () => {
fs.mkdirSync(codexHome, { recursive: true });
fs.writeFileSync(configPath, 'model = "gpt-5.5-xhigh"\n', 'utf8');
const result = await ensureCodexCliproxyProviderConfig(8317, env);
expect(result.changed).toBe(true);
const rawText = fs.readFileSync(configPath, 'utf8');
expect(rawText).toContain('model = "gpt-5.5"');
expect(rawText).toContain('model_reasoning_effort = "xhigh"');
expect(rawText).toContain('[model_providers.cliproxy]');
});
it('does not strip unknown top-level models that happen to end with effort tokens', async () => {
fs.mkdirSync(codexHome, { recursive: true });
const rawText = `model = "literal-high"
[model_providers.cliproxy]
name = "CLIProxy Codex"
base_url = "http://localhost:8317/api/provider/codex"
env_key = "CLIPROXY_API_KEY"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = false
`;
fs.writeFileSync(configPath, rawText, 'utf8');
const result = await ensureCodexCliproxyProviderConfig(8317, env);
expect(result.changed).toBe(false);
expect(fs.readFileSync(configPath, 'utf8')).toBe(rawText);
});
});
@@ -747,6 +747,36 @@ process.exit(0);
]);
});
it('normalizes ccsxp native Codex tuning aliases in config.toml', () => {
if (process.platform === 'win32') return;
const codexHome = path.join(tmpHome, '.codex');
fs.mkdirSync(codexHome, { recursive: true });
fs.writeFileSync(path.join(codexHome, 'config.toml'), 'model = "gpt-5.5-high-fast"\n');
const result = runCcsxpAlias(['fix failing tests'], {
...process.env,
CI: '1',
NO_COLOR: '1',
HOME: tmpHome,
CCS_HOME: tmpHome,
CCS_CODEX_PATH: fakeCodexPath,
CCS_TEST_CODEX_ARGS_OUT: codexArgsLogPath,
CCS_TEST_CODEX_ENV_OUT: codexEnvLogPath,
});
expect(result.status).toBe(0);
expect(readLoggedCodexCalls(codexArgsLogPath)).toEqual([
['--config', 'model_provider="cliproxy"', 'fix failing tests'],
]);
const codexConfig = fs.readFileSync(path.join(codexHome, 'config.toml'), 'utf8');
expect(codexConfig).toContain('model = "gpt-5.5"');
expect(codexConfig).toContain('model_reasoning_effort = "high"');
expect(codexConfig).toContain('service_tier = "priority"');
expect(codexConfig).toContain('[model_providers.cliproxy]');
expect(codexConfig).not.toContain('gpt-5.5-high-fast');
});
it('loads the configured cliproxy provider env_key for ccsxp launches', () => {
if (process.platform === 'win32') return;