mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-30 16:01:49 +08:00
The /model picker currently renders one row per ``custom_providers`` entry. When several entries share the same provider name (e.g. four ``ollama-cloud`` entries for ``qwen3-coder``, ``glm-5.1``, ``kimi-k2``, ``minimax-m2.7``), users see four separate "Ollama Cloud" rows in the picker, which is confusing UX — there is only one Ollama Cloud provider, so there should be one row containing four models. This PR groups ``custom_providers`` entries that share the same provider name into a single picker row while keeping entries with distinct names as separate rows. So: * Four entries named ``Ollama Cloud`` → one "Ollama Cloud" row with four models inside. * One entry named ``Ollama Cloud`` and one named ``Moonshot`` → two separate rows, one model each. Implementation -------------- Replaces the single-pass loop in ``list_authenticated_providers()`` with a two-pass approach: 1. First pass: build an ``OrderedDict`` keyed by ``custom_provider_slug(name)``, accumulating ``models`` per group while preserving discovery order. 2. Second pass: iterate the groups and append one result row per group, skipping any slug that already appeared in an earlier provider source (the existing ``seen_slugs`` guard). Insertion order is preserved via ``OrderedDict``, so providers and their models still appear in the order the user listed them in ``custom_providers``. No new dependencies. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>