Implement Ava Telegram changes: 1) Replace all slash commands with a single /login command. 2) /login should mirror Omni/Agent login workflow: prompt for provider, then execute provider-specific login over Telegram messages. 3) Set static LLM policy: Ben uses Claude Opus 4.6; all other users use Claude Sonnet 4.6; both default to claude-code provider with fallback providers (e.g. openrouter) retained. 4) Heartbeat generation for Ben should use Sonnet 4.6.
Need code changes in Ava Telegram bot and any shared auth/model selection paths, with verification builds/tests.
Implemented and committed ead416d. Ava Telegram now exposes only /login in setMyCommands and command handling. Added provider-selection OAuth flow for /login mirroring agent login (claude-code or openai-codex) over Telegram messages, including pending state tracking and code/redirect exchange. Added non-interactive OpenAI Codex OAuth helpers in Omni/Agent/Auth.hs. Enforced static model policy: owner(ben)=anthropic/claude-opus-4.6, others=anthropic/claude-sonnet-4.6, heartbeat=anthropic/claude-sonnet-4.6. Runtime provider selection now always uses Provider.mkStandardChain (claude-code first, OpenRouter fallback) and reloads OAuth token each turn so /login takes effect immediately.