{"repo": "acard0s0/missioncontrol", "files": {"applications/mission-control-server/src/main/java/io/hermes/missioncontrol/hermes/ModelProviderRegistry.java": {"ca3c7fb8216d804eee73f24c801d6925eae45301": {"t": 1786068305.8996313, "n": 2544, "h": "fb52d43c67b12153", "c": "package io.hermes.missioncontrol.hermes;\n\nimport java.util.List;\nimport java.util.Locale;\n\n/**\n * The model providers offered in the create-agent / template UIs and the single\n * source of truth for provider → API-key env var mapping. Keys and env vars\n * mirror hermes' own provider records (hermes_cli/auth.py); ollama instances are\n * handled separately (registered per-container, not listed here).\n *\n *
{@code hasCatalog} marks the providers Mission Control can list models for\n * ({@link io.hermes.missioncontrol.models.ModelCatalogService}); the rest take a\n * free-text model id in the UI. {@code oauth} providers (Nous Portal) need no API\n * key — they authenticate out-of-band via {@code hermes portal}.\n */\npublic final class ModelProviderRegistry {\n\n public record Provider(String key, String label, String envVar, boolean oauth, boolean hasCatalog) {\n /** True when the UI must collect an API key (key-based, non-OAuth providers). */\n public boolean needsKey() {\n return envVar != null && !oauth;\n }\n }\n\n private ModelProviderRegistry() {}\n\n /** Ordered for the picker — Nous first (the default account). */\n public static final List