8103829ef8
* fix(codex-native): honor Max/Ultra reasoning levels instead of coercing to xhigh Codex advertises a per-model reasoning ladder via model/list: Sol reaches `ultra`, Luna reaches `max`, and a turn at those levels completes (Sol's `ultra` runs subagents). Omnigent's picker surfaced them, but the codex-native effort override validated against the xhigh-capped CODEX_EFFORTS ladder, so a web-picked Max/Ultra was silently coerced to xhigh before the wire — and the TUI->web effort mirror stored `ultra` as `xhigh`, so the UI showed the wrong level. Validate codex-native efforts against the full codex ladder (CODEX_NATIVE_EFFORTS) and add `ultra` to the session-metadata vocabulary, so a picked level rides through unchanged and the UI shows the real level. The SDK/Responses codex path keeps the xhigh cap + ultra/max alias, preserving OMNI-1694's defensive fold on that backend. OMNI-4255 Co-authored-by: Isaac Signed-off-by: Pat Sukprasert <pattara.sk127@gmail.com> * fix(web): follow the drafted model's effort ladder in the Configure Codex modal The effort dropdown mapped a static effortLevels prop computed from the committed model, so switching the model inside the modal (Sol → Luna) still listed Sol's `ultra`, with the stale level left selected. Recompute the ladder from the drafted model and drop a picked level the new model doesn't offer, so the dropdown never shows a rung the model rejects and Save can't submit one. OMNI-4255 Co-authored-by: Isaac Signed-off-by: Pat Sukprasert <pattara.sk127@gmail.com> * chore(codex): ultra parity in REPL /effort, schema doc, and GLM effort cap Address Polly's non-blocking notes on #5217, now that `ultra` is a first-class effort value: - REPL `/effort` accepts and lists `ultra` (matched EFFORT_VALUES). - schemas.py reasoning_effort docstring enumerates `ultra`. - GLM effort cap treats `ultra` as unsupported — every rung above `high` — so a pinned `ultra` clamps to medium like `xhigh`/`max`. OMNI-4255 Co-authored-by: Isaac Signed-off-by: Pat Sukprasert <pattara.sk127@gmail.com> --------- Signed-off-by: Pat Sukprasert <pattara.sk127@gmail.com>