From 3fc3977eae48fcd5ecb893cfbf1f7fd2a4b8b6ef Mon Sep 17 00:00:00 2001 From: can1357 Date: Mon, 29 Jun 2026 08:05:02 +0200 Subject: [PATCH] feat(ai): implemented environment override for codex websockets - Added getCodexWebSocketEnvValue to evaluate the PI_CODEX_WEBSOCKET environment flag. - Updated shouldUseCodexWebSocket and getOpenAICodexTransportDetails to prioritize environment settings over model and session-level preferences. - Configured logic to treat negative preference overrides as authoritative to explicitly disable websocket usage. --- .../src/providers/openai-codex-responses.ts | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/ai/src/providers/openai-codex-responses.ts b/packages/ai/src/providers/openai-codex-responses.ts index db61ee383..2a15b7bc9 100644 --- a/packages/ai/src/providers/openai-codex-responses.ts +++ b/packages/ai/src/providers/openai-codex-responses.ts @@ -2151,14 +2151,29 @@ function recordCodexWebSocketFailure(state: CodexWebSocketSessionState, activate } } +function getCodexWebSocketEnvValue(): boolean | undefined { + const envVal = $env.PI_CODEX_WEBSOCKET; + if (envVal !== undefined) { + return $flag("PI_CODEX_WEBSOCKET"); + } + return undefined; +} + function shouldUseCodexWebSocket( model: Model<"openai-codex-responses">, state: CodexWebSocketSessionState | undefined, preferWebsockets?: boolean, ): boolean { + // Explicitly disabled by the model or session state. + if (model.preferWebsockets === false) return false; + // Explicitly disabled by the session state. if (!state || state.disableWebsocket) return false; + // Env val > Preference + const envVal = getCodexWebSocketEnvValue(); + if (envVal !== undefined) return envVal; + // Negative preference overrides model preference; otherwise use the model's preference. if (preferWebsockets === false) return false; - return $flag("PI_CODEX_WEBSOCKET") || preferWebsockets === true || model.preferWebsockets === true; + return true; } export interface OpenAICodexTransportDetails { @@ -2214,10 +2229,13 @@ export function getOpenAICodexTransportDetails( providerSessionState?: Map; }, ): OpenAICodexTransportDetails { + const envVal = getCodexWebSocketEnvValue(); const websocketPreferred = - options?.preferWebsockets === false - ? false - : $flag("PI_CODEX_WEBSOCKET") || options?.preferWebsockets === true || model.preferWebsockets === true; + envVal !== undefined + ? envVal + : options?.preferWebsockets === false + ? false + : options?.preferWebsockets === true || model.preferWebsockets === true; const state = getCodexWebSocketStateForPublicSession(model, options); return {