* fix(codex): forward the caller client version upstream instead of pinning 0.144.1
The Codex provider reported a hardcoded client version (DEFAULT_CODEX_CLIENT_VERSION)
to the ChatGPT backend. Newer gated models reject older clients, e.g.:
The 'gpt-6-astra' model requires a newer version of Codex.
so the pinned value silently rots on every CLI upgrade, and a user on the latest
CLI is still refused.
CodexExecutor.buildHeaders also dropped the clientHeaders/model/health arguments
that the base class accepts (base.ts:509), so the caller User-Agent never reached
the version resolution.
- codexClient.ts: add getCodexClientVersionFromHeaders(), which reads the version
the caller reports in its User-Agent (codex_cli_rs/<v>, codex_exec/<v>) or a
version header, validated against SAFE_HEADER_TOKEN_PATTERN. getCodexUserAgent()
now takes an optional version override.
- codex.ts: forward clientHeaders/model/health to super.buildHeaders(), and use
getCodexClientVersionFromHeaders(clientHeaders) ?? getCodexClientVersion().
Falls back to the existing env override / default when the caller sends nothing.
* test(codex): cover getCodexClientVersionFromHeaders and clientHeaders-aware buildHeaders
Adds unit coverage for the caller-version forwarding introduced in this PR:
real Codex CLI User-Agent parsing, the generic version header, missing/empty
headers, non-Codex User-Agent, and CRLF/oversized injection attempts safely
returning null/falling back to the default version.
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
---------
Co-authored-by: Zeeshan Haque <zeeshan@moonscape.local>
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>