Skip to content

Commit 06f2c96

Browse files
committed
fix: update provider request resolution to respect custom base URLs and adjust transport logic
1 parent 1825b6e commit 06f2c96

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

src/commands/provider/provider.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ test('buildCurrentProviderSummary labels generic local openai-compatible provide
264264
expect(summary.endpointLabel).toBe('http://127.0.0.1:8080/v1')
265265
})
266266

267-
test('buildCurrentProviderSummary relabels local gpt-5.4 providers to Codex (via Codex transport)', () => {
267+
test('buildCurrentProviderSummary does not relabel local gpt-5.4 providers as Codex when custom base URL is set', () => {
268268
const summary = buildCurrentProviderSummary({
269269
processEnv: {
270270
CLAUDE_CODE_USE_OPENAI: '1',
@@ -274,9 +274,9 @@ test('buildCurrentProviderSummary relabels local gpt-5.4 providers to Codex (via
274274
persisted: null,
275275
})
276276

277-
expect(summary.providerLabel).toBe('Codex')
277+
expect(summary.providerLabel).toBe('Local OpenAI-compatible')
278278
expect(summary.modelLabel).toBe('gpt-5.4')
279-
expect(summary.endpointLabel).toBe('https://chatgpt.com/backend-api/codex')
279+
expect(summary.endpointLabel).toBe('http://127.0.0.1:8080/v1')
280280
})
281281

282282
test('buildCurrentProviderSummary recognizes GitHub Models mode', () => {

src/services/api/codexShim.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,14 @@ describe('Codex provider config', () => {
9898
expect(resolved.baseUrl).toBe('https://chatgpt.com/backend-api/codex')
9999
})
100100

101-
test('forces Codex transport when a local non-Codex base URL is explicit', () => {
101+
test('does not force Codex transport when a local non-Codex base URL is explicit', () => {
102102
const resolved = resolveProviderRequest({
103103
model: 'codexplan',
104104
baseUrl: 'http://127.0.0.1:8080/v1',
105105
})
106106

107-
expect(resolved.transport).toBe('codex_responses')
108-
expect(resolved.baseUrl).toBe('https://chatgpt.com/backend-api/codex')
107+
expect(resolved.transport).toBe('chat_completions')
108+
expect(resolved.baseUrl).toBe('http://127.0.0.1:8080/v1')
109109
expect(resolved.resolvedModel).toBe('gpt-5.4')
110110
})
111111

@@ -151,14 +151,14 @@ describe('Codex provider config', () => {
151151
expect(resolved.resolvedModel).toBe('gpt-5.4')
152152
})
153153

154-
test('overrides custom base URL for codexplan (e.g., local provider)', () => {
154+
test('does not override custom base URL for codexplan (e.g., local provider)', () => {
155155
process.env.OPENAI_MODEL = 'codexplan'
156156
process.env.OPENAI_BASE_URL = 'http://localhost:11434/v1'
157157
delete process.env.CLAUDE_CODE_USE_GITHUB
158158

159159
const resolved = resolveProviderRequest()
160-
expect(resolved.transport).toBe('codex_responses')
161-
expect(resolved.baseUrl).toBe('https://chatgpt.com/backend-api/codex')
160+
expect(resolved.transport).toBe('chat_completions')
161+
expect(resolved.baseUrl).toBe('http://localhost:11434/v1')
162162
})
163163

164164
test('loads Codex credentials from auth.json fallback', () => {

src/services/api/providerConfig.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,9 @@ export function resolveProviderRequest(options?: {
395395
descriptor.baseModel === envResolvedCodexModel
396396
const isCodexAliasModel =
397397
isOpenAICodexShortcutAlias(requestedModel) || requestedMatchesEnvCodexShortcut
398+
const hasUserSetBaseUrl = rawBaseUrl && rawBaseUrl !== DEFAULT_OPENAI_BASE_URL
398399
const finalBaseUrl =
399-
!isGithubMode && isCodexAliasModel
400+
!isGithubMode && isCodexAliasModel && !hasUserSetBaseUrl
400401
? DEFAULT_CODEX_BASE_URL
401402
: rawBaseUrl
402403

0 commit comments

Comments
 (0)