Add Chat Completions routing for Codex providers

- Add a Codex API format selector and routing badge for Chat Completions providers.
- Convert Codex Responses requests to upstream Chat Completions when routing is required.
- Convert Chat Completions JSON and SSE responses back to Responses format.
- Keep generated Codex wire_api values on Responses for Codex compatibility.
- Add i18n labels, provider metadata handling, and focused conversion tests.
This commit is contained in:
Jason
2026-05-19 10:23:48 +08:00
parent 61e68d754c
commit 1c82b8a3fa
19 changed files with 2230 additions and 35 deletions
+4
View File
@@ -178,6 +178,7 @@
"noRoutingSupport": "No Routing Support"
},
"codex": {
"needsRouting": "Needs Routing",
"noRoutingSupport": "No Routing Support"
},
"claudeDesktop": {
@@ -908,6 +909,9 @@
"apiFormatOpenAIChat": "OpenAI Chat Completions (Requires routing)",
"apiFormatOpenAIResponses": "OpenAI Responses API (Requires routing)",
"apiFormatGeminiNative": "Gemini Native generateContent (Requires routing)",
"codexApiFormatResponses": "OpenAI Responses API (Native)",
"codexApiFormatOpenAIChat": "OpenAI Chat Completions (Requires routing)",
"codexApiFormatHint": "Select the Codex API format actually supported by this provider; the config stays on Responses for newer Codex versions, while Chat Completions is converted through local routing.",
"authField": "Auth Field",
"authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN (Default)",
"authFieldApiKey": "ANTHROPIC_API_KEY",
+4
View File
@@ -178,6 +178,7 @@
"noRoutingSupport": "ルーティング非対応"
},
"codex": {
"needsRouting": "ルーティングが必要",
"noRoutingSupport": "ルーティング非対応"
},
"claudeDesktop": {
@@ -908,6 +909,9 @@
"apiFormatOpenAIChat": "OpenAI Chat Completions(ルーティングが必要)",
"apiFormatOpenAIResponses": "OpenAI Responses API(ルーティングが必要)",
"apiFormatGeminiNative": "Gemini Native generateContent(ルーティングが必要)",
"codexApiFormatResponses": "OpenAI Responses API(ネイティブ)",
"codexApiFormatOpenAIChat": "OpenAI Chat Completions(ルーティングが必要)",
"codexApiFormatHint": "このプロバイダーが実際に対応している Codex API フォーマットを選択します。新しい Codex との互換性のため設定は Responses のままにし、Chat Completions はローカルルーティングで変換します。",
"authField": "認証フィールド",
"authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN(デフォルト)",
"authFieldApiKey": "ANTHROPIC_API_KEY",
+4
View File
@@ -178,6 +178,7 @@
"noRoutingSupport": "不支持路由"
},
"codex": {
"needsRouting": "需要路由",
"noRoutingSupport": "不支持路由"
},
"claudeDesktop": {
@@ -908,6 +909,9 @@
"apiFormatOpenAIChat": "OpenAI Chat Completions (需开启路由)",
"apiFormatOpenAIResponses": "OpenAI Responses API (需开启路由)",
"apiFormatGeminiNative": "Gemini Native generateContent (需开启路由)",
"codexApiFormatResponses": "OpenAI Responses API (原生)",
"codexApiFormatOpenAIChat": "OpenAI Chat Completions (需开启路由)",
"codexApiFormatHint": "选择供应商真实支持的 Codex API 格式;配置仍保持 Responses 以兼容新版 CodexChat Completions 会通过本地路由自动转换。",
"authField": "认证字段",
"authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN(默认)",
"authFieldApiKey": "ANTHROPIC_API_KEY",