Skip to content

Telegram: selecting native Codex Ultra in /models is persisted as Max #46

Description

@violetaini

Version

Pikiloom v0.4.71 / ghcr.io/xiaotonng/pikiloom:0.4.71 (verified in the published ARM64 image).

Summary

The GPT-5.6 adaptation is working in the model catalog, dashboard dispatch, and Codex driver. There appears to be one remaining Telegram-specific path that still converts native Codex ultra to max.

The Telegram /models confirmation path calls bot.switchEffortForChat(...):

switchEffortForChat() currently applies the old agent-agnostic conversion:

const ultra = effort === 'ultra';
const realEffort = ultra ? 'max' : effort;

Source: src/bot/bot.ts

For Codex, workflow capability is false, so selecting Ultra through Telegram stores max, the picker subsequently reports max, and the app-server receives max rather than native ultra.

The dashboard path already uses splitEffortForAgent(), which correctly returns:

splitEffortForAgent('codex', 'ultra')
// { effort: 'ultra', workflow: false }

Reproduction

  1. Select the codex agent and gpt-5.6-sol (or gpt-5.6-terra).
  2. In Telegram, open /models.
  3. Select Ultra and confirm.
  4. Reopen /models or inspect the next Codex turn.

The effective effort is max instead of ultra.

Expected behavior

  • Codex max remains max.
  • Codex ultra remains ultra and is sent verbatim to the app-server.
  • Claude keeps its existing display alias behavior: ultra -> max + workflow orchestration.

Suggested fix

Reuse splitEffortForAgent(cs.agent, effort) inside switchEffortForChat() instead of performing the unconditional ultra -> max conversion, and add a Telegram /models regression test for Codex Ultra.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions