const DEFAULT_CODEX_CLIENT_VERSION = "0.120.0"; const DEFAULT_CODEX_USER_AGENT_PLATFORM = "Windows 10.0.26100"; const DEFAULT_CODEX_USER_AGENT_ARCH = "x64"; const CODEX_VERSION_OVERRIDE_ENV = "CODEX_CLIENT_VERSION"; const CODEX_USER_AGENT_OVERRIDE_ENV = "CODEX_USER_AGENT"; const SAFE_HEADER_TOKEN_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$/; const SAFE_HEADER_VALUE_PATTERN = /^[\x20-\x7E]{1,200}$/; function getSafeEnvValue(name: string, pattern: RegExp): string | null { const raw = process.env[name]; if (typeof raw !== "string") return null; const normalized = raw.trim(); if (!normalized || !pattern.test(normalized)) { return null; } return normalized; } export function getCodexClientVersion(): string { return ( getSafeEnvValue(CODEX_VERSION_OVERRIDE_ENV, SAFE_HEADER_TOKEN_PATTERN) || DEFAULT_CODEX_CLIENT_VERSION ); } export function getCodexUserAgent(): string { const override = getSafeEnvValue(CODEX_USER_AGENT_OVERRIDE_ENV, SAFE_HEADER_VALUE_PATTERN); if (override) { return override; } return `codex-cli/${getCodexClientVersion()} (${DEFAULT_CODEX_USER_AGENT_PLATFORM}; ${DEFAULT_CODEX_USER_AGENT_ARCH})`; } export function getCodexDefaultHeaders(): Record { return { Version: getCodexClientVersion(), "Openai-Beta": "responses=experimental", "User-Agent": getCodexUserAgent(), }; }