fix(openai-codex): match codex replay identity

This commit is contained in:
Peter Steinberger
2026-05-05 00:25:49 +01:00
parent 27e467ad23
commit 15d3fd83bb
6 changed files with 25 additions and 23 deletions

View File

@@ -67,7 +67,7 @@ describe("openai transport policy", () => {
).toBeUndefined();
});
it("uses turn-scoped request identity for ChatGPT Codex stream turns", () => {
it("keeps Codex request identity session-scoped while adding turn metadata", () => {
expect(
resolveOpenAITransportTurnState({
provider: "openai-codex",
@@ -85,7 +85,7 @@ describe("openai transport policy", () => {
}),
).toMatchObject({
headers: {
"x-client-request-id": "turn-123",
"x-client-request-id": "session-123",
"x-openclaw-session-id": "session-123",
"x-openclaw-turn-id": "turn-123",
"x-openclaw-turn-attempt": "2",

View File

@@ -46,13 +46,6 @@ function usesKnownNativeOpenAIRoute(provider: string, baseUrl?: string): boolean
return false;
}
function usesNativeOpenAICodexRoute(provider: string, baseUrl?: string): boolean {
const normalizedProvider = normalizeProviderId(provider);
return (
normalizedProvider === OPENAI_CODEX_PROVIDER_ID && (!baseUrl || isOpenAICodexBaseUrl(baseUrl))
);
}
function resolveSessionHeaders(params: {
provider: string;
baseUrl?: string;
@@ -85,14 +78,10 @@ export function resolveOpenAITransportTurnState(
const turnId = normalizeIdentityValue(ctx.turnId);
const attempt = String(Math.max(1, ctx.attempt));
const requestId = usesNativeOpenAICodexRoute(ctx.provider, ctx.model?.baseUrl)
? turnId || `${sessionHeaders["x-openclaw-session-id"] ?? "session"}:${attempt}`
: sessionHeaders["x-client-request-id"];
return {
headers: {
...sessionHeaders,
"x-client-request-id": requestId,
"x-openclaw-turn-id": turnId,
"x-openclaw-turn-attempt": attempt,
},