Repository navigation
feat(sse): add GPT-6 Sol and Luna to the Codex catalog - #14677
diegosouzapw merged 1 commit into
Conversation
The live Codex model catalog (client 0.155.1) now serves gpt-6-sol (efforts low..ultra) and gpt-6-luna (low..max) next to gpt-6-astra, but only Astra was wired in: - `gpt-6-sol-max` / `gpt-6-sol-ultra` / `gpt-6-sol(ultra)` were not split by splitCodexReasoningSuffix and reached the upstream as unknown model ids; - an explicit `reasoning.effort: "max"` (Responses or Chat `reasoning_effort`) on either model was clamped to `xhigh` because clampEffort fell back to the legacy xhigh cap; - the registry had no Sol/Luna entries, so no effort variants were listed and Codex usage for them was priced at nothing; - catalog effort metadata (`effort_tiers` in /v1/models, the VS Code picker, `-max`/`-ultra` suffix parsing, default effort) only knew GPT-5.6, so every GPT-6 model advertised none..max without ultra and defaulted to none. Changes: - registry: gpt-6-sol (+ ultra/max/xhigh/high/medium/low) and gpt-6-luna (+ max/xhigh/high/medium/low), same Codex windows as Astra; - reasoningSuffix: Sol joins the max+ultra alias sets, Luna the max set; new getCodexAliasEffortCap() derives the clamp cap from those sets, so the executor no longer keeps a second copy of the max/ultra-tier models; - translator: native max effort pattern covers gpt-6-sol/luna; - effort metadata: extendCodexGpt56EffortValues and the VS Code reasoning metadata cover gpt-6-(astra|sol|luna) for codex/cx (Luna without ultra, default medium as in the live catalog); Kiro keeps its GPT-5.6-only rule; - pricing: cx rates from the Codex credit card (Sol 50/5/250, Luna 2.5/0.25/12.5 credits per MTok at 25 credits per USD) and the 2.5x Fast multiplier the card lists for all GPT-6 models. minimal_client_version is null for both models in the live catalog, so the pinned Codex client version does not need a bump. Luna@max is not added to the Responses Lite delegation exception: the live catalog only describes `ultra` as "automatic task delegation".
5d1e9c8 to
61e922e
Compare
|
why not use models.dev as the main source of models? this kind of responsibility can be moved out of the omniroute.. thanks of that we are able to get new models without need to get new omniroute release - @diegosouzapw |
|
Thanks! OmniRoute already syncs models.dev for metadata (pricing, context windows, |
|
Thanks for this — verified the Sol/Luna model ids and credit rates against the live Codex |
Problem
The live Codex model catalog (ChatGPT OAuth, client 0.155.1) now serves GPT-6 Sol and GPT-6 Luna next to GPT-6 Astra. Model sync picks both base ids up, but the rest of the Codex path only knows Astra:
gpt-6-sol-max,gpt-6-sol-ultraandgpt-6-sol(ultra)are not split bysplitCodexReasoningSuffix(), so they reach the upstream as unknown model ids.reasoning.effort: "max"(Responses) orreasoning_effort: "max"(Chat Completions) on either model is silently clamped toxhigh:clampEffort()falls back to the legacy xhigh cap for models missing fromMAX_EFFORT_BY_MODEL, and the translator's native-max pattern only matches GPT-5.6 and Astra./v1/modelslists no effort variants for them and Codex usage for them is priced at nothing.effort_tiersin/v1/models, the VS Code picker,-max/-ultrasuffix parsing and the default effort. As a result, every GPT-6 Codex model (Astra included) advertisesnone..maxwithoutultraand defaults tonone.What the live catalog says
From the Codex
/modelsresponse:supported_reasoning_levelsmax_context_windowgpt-6-astragpt-6-solgpt-6-lunaOnly
ultrais described as "automatic task delegation", for both Sol and Astra.minimal_client_versionisnullfor Sol and Luna, so the pinned Codex client version does not need a bump.Codex credit rate card (https://developers.openai.com/codex/pricing), credits per 1M tokens (input / cached / output): Sol 50 / 5 / 250, Luna 2.5 / 0.25 / 12.5. The card also states: "Fast mode uses 2.5x the Standard credit rate for GPT-6 Astra, Sol, and Luna".
Changes
codex, andcodex-app-serverthrough its shared model list):gpt-6-solplus-ultra/-max/-xhigh/-high/-medium/-low, andgpt-6-lunaplus-max/-xhigh/-high/-medium/-low, with the same Codex windows as Astra.reasoningSuffix.ts: Sol joins both the max and ultra alias sets; Luna joins the max set only. The newgetCodexAliasEffortCap()derives the clamp cap from those sets, soMAX_EFFORT_BY_MODELincodex.tsno longer keeps a second copy of the max/ultra-tier models. Behavior is unchanged for Astra, GPT-5.6 Sol/Terra (ultra) and GPT-5.6 Luna (max), and it keepscodex.tsunder its frozen file size. The next Codex model needs one entry, not four.gpt-6-solandgpt-6-luna.extendCodexGpt56EffortValues()and the VS Code reasoning metadata now covergpt-6-(astra|sol|luna)forcodex/cx: Luna has noultra, and the default ismedium, as in the live catalog. Kiro keeps its GPT-5.6-onlymaxrule.cxrates at the repo's 25 credits per USD (Sol $2 / $0.20 / $10, Luna $0.10 / $0.01 / $0.50 per MTok;cache_creation= 1.25× input, as for Astra). The 2.5× Fast multiplier now applies to all three GPT-6 models.Out of scope:
modelSpecs: I have no API data for Sol or Luna.ultraas delegation. A test pins this.src/lib/reasoningRouting/policy.ts) and the bare-id list (CODEX_NATIVE_UNPREFIXED_MODELS) still name only GPT-5.6. Astra has the same gap there, so both are left for a follow-up.#14591 (closed by its author) touched the same area together with OAuth account-binding changes. This PR covers only the catalog and effort wiring.
Tests
New
tests/unit/codex-gpt6-sol-luna.test.ts(10 tests) covers:codexandcodex-app-server;parallel_tool_callsfor Sol ultra versus Sol max / Luna max;cache_creation) and the Fast multiplier.Every test that covers new behavior fails on the base commit.
Neighbouring unit tests (138 files covering the Codex executor, registry, suffixes, pricing, effort metadata and the Responses translator): 1400 pass. The rest fail or are cancelled identically with this change reverted to the base:
antigravity-oauth-postexchange-nonblocking,opencode-executor,specialty-model-catalog-routes, plus the timing-sensitiveoauth-connection-test-timeoutandproxyfetch-direct-response-start-timeout-10214.npm run test:vitest: 482 passed.ESLint (with suppressions), Prettier,
check:file-size, andcheck:provider-consistencyare clean.typecheck:corereports only the pre-existing TS2322 insrc/lib/services/cliproxyAccountHealth.ts:157, which is unchanged from the base.