mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-16 03:31:10 +00:00
refactor: dedupe openai codex url helper
This commit is contained in:
@@ -27,6 +27,7 @@ import {
|
||||
cloneFirstTemplateModel,
|
||||
findCatalogTemplate,
|
||||
isOpenAIApiBaseUrl,
|
||||
isOpenAICodexBaseUrl,
|
||||
matchesExactOrPrefix,
|
||||
} from "./shared.js";
|
||||
import {
|
||||
@@ -83,14 +84,6 @@ const OPENAI_CODEX_MODERN_MODEL_IDS = [
|
||||
] as const;
|
||||
const OPENAI_RESPONSES_STREAM_HOOKS = buildProviderStreamFamilyHooks("openai-responses-defaults");
|
||||
|
||||
function isOpenAICodexBaseUrl(baseUrl?: string): boolean {
|
||||
const trimmed = baseUrl?.trim();
|
||||
if (!trimmed) {
|
||||
return false;
|
||||
}
|
||||
return /^https?:\/\/chatgpt\.com\/backend-api\/?$/i.test(trimmed);
|
||||
}
|
||||
|
||||
function normalizeCodexTransport(model: ProviderRuntimeModel): ProviderRuntimeModel {
|
||||
const useCodexTransport =
|
||||
!model.baseUrl || isOpenAIApiBaseUrl(model.baseUrl) || isOpenAICodexBaseUrl(model.baseUrl);
|
||||
|
||||
@@ -23,4 +23,12 @@ export function isOpenAIApiBaseUrl(baseUrl?: string): boolean {
|
||||
return /^https?:\/\/api\.openai\.com(?:\/v1)?\/?$/i.test(trimmed);
|
||||
}
|
||||
|
||||
export function isOpenAICodexBaseUrl(baseUrl?: string): boolean {
|
||||
const trimmed = baseUrl?.trim();
|
||||
if (!trimmed) {
|
||||
return false;
|
||||
}
|
||||
return /^https?:\/\/chatgpt\.com\/backend-api\/?$/i.test(trimmed);
|
||||
}
|
||||
|
||||
export { cloneFirstTemplateModel, findCatalogTemplate, matchesExactOrPrefix };
|
||||
|
||||
@@ -104,4 +104,26 @@ describe("openai transport policy", () => {
|
||||
degradeCooldownMs: 60_000,
|
||||
});
|
||||
});
|
||||
|
||||
it("treats ChatGPT Codex backend routes as native OpenAI-family transports", () => {
|
||||
expect(
|
||||
resolveOpenAIWebSocketSessionPolicy({
|
||||
provider: "openai-codex",
|
||||
modelId: "gpt-5.4",
|
||||
model: {
|
||||
...nativeModel,
|
||||
provider: "openai-codex",
|
||||
api: "openai-codex-responses",
|
||||
baseUrl: "https://chatgpt.com/backend-api",
|
||||
},
|
||||
sessionId: "session-123",
|
||||
}),
|
||||
).toMatchObject({
|
||||
headers: {
|
||||
"x-client-request-id": "session-123",
|
||||
"x-openclaw-session-id": "session-123",
|
||||
},
|
||||
degradeCooldownMs: 60_000,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,20 +5,12 @@ import type {
|
||||
ProviderWebSocketSessionPolicy,
|
||||
} from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared";
|
||||
import { isOpenAIApiBaseUrl } from "./shared.js";
|
||||
import { isOpenAIApiBaseUrl, isOpenAICodexBaseUrl } from "./shared.js";
|
||||
|
||||
const DEFAULT_OPENAI_WS_DEGRADE_COOLDOWN_MS = 60_000;
|
||||
const AZURE_PROVIDER_IDS = new Set(["azure-openai", "azure-openai-responses"]);
|
||||
const OPENAI_CODEX_PROVIDER_ID = "openai-codex";
|
||||
|
||||
function isOpenAICodexBaseUrl(baseUrl?: string): boolean {
|
||||
const trimmed = baseUrl?.trim();
|
||||
if (!trimmed) {
|
||||
return false;
|
||||
}
|
||||
return /^https?:\/\/chatgpt\.com\/backend-api\/?$/i.test(trimmed);
|
||||
}
|
||||
|
||||
function isAzureOpenAIBaseUrl(baseUrl?: string): boolean {
|
||||
const trimmed = baseUrl?.trim();
|
||||
if (!trimmed) {
|
||||
|
||||
Reference in New Issue
Block a user