From f755548b93b0711b0819f00157adee548bf45d58 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Wed, 29 Apr 2026 00:46:17 -0400 Subject: [PATCH] =?UTF-8?q?[eric]=20drop=20(Pro/Max)=20suffix=20from=20cc/?= =?UTF-8?q?=20model=20labels=20=E2=80=94=20group=20header=20already=20disa?= =?UTF-8?q?mbiguates=20from=20OpenSwarm=20Pro=20proxy;=20=20=20.gitattribu?= =?UTF-8?q?tes:=20split=20mcp-bundles=20vendored=20pattern=20into=20two?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 7 ++++++- backend/apps/agents/agents.py | 3 ++- backend/apps/agents/providers/registry.py | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitattributes b/.gitattributes index 0282f448..147b6c96 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,6 @@ -backend/mcp-bundles/** linguist-vendored +# Vendored MCP server bundles (esbuild output of upstream npm packages). +# Two patterns because Linguist's pathspec handling of bare `**` is +# inconsistent — `dir/*` covers files at the root, `dir/**/*` covers +# anything nested. Together they exclude all 3 bundles from language stats. +backend/mcp-bundles/* linguist-vendored +backend/mcp-bundles/**/* linguist-vendored diff --git a/backend/apps/agents/agents.py b/backend/apps/agents/agents.py index 3a24a238..0bca134a 100644 --- a/backend/apps/agents/agents.py +++ b/backend/apps/agents/agents.py @@ -406,7 +406,8 @@ async def list_models(): # Always show the OpenSwarm Pro group. Then layer on whatever # alternate Anthropic credentials the user has (claude-sub via cc/, # api-key via direct). Both variants live under "Anthropic" — the - # labels disambiguate ("(Pro/Max)" vs "(API key)"). + # group header disambiguates against "OpenSwarm Pro"; api-key + # variants keep an "(API key)" suffix to distinguish from cc/. result["OpenSwarm Pro"] = _serialize(adaptive) anth_alternates: list[dict] = [] if has_claude_sub: diff --git a/backend/apps/agents/providers/registry.py b/backend/apps/agents/providers/registry.py index a350f8c5..ff68146d 100644 --- a/backend/apps/agents/providers/registry.py +++ b/backend/apps/agents/providers/registry.py @@ -75,11 +75,11 @@ BUILTIN_MODELS: dict[str, list[dict[str, Any]]] = { # BOTH openswarm-pro active AND the 9Router `claude` subscription # connected — so the model picker can offer a per-call choice between # the managed OpenSwarm proxy and their own Claude subscription. - {"value": "sonnet-cc", "label": "Claude Sonnet 4.6 (Pro/Max)", "context_window": 1_000_000, + {"value": "sonnet-cc", "label": "Claude Sonnet 4.6", "context_window": 1_000_000, "model_id": "claude-sonnet-4-6", "router_model_id": "cc/claude-sonnet-4-6", "api": "anthropic", "reasoning": True, "route": "cc"}, - {"value": "opus-cc", "label": "Claude Opus 4.6 (Pro/Max)", "context_window": 1_000_000, + {"value": "opus-cc", "label": "Claude Opus 4.6", "context_window": 1_000_000, "model_id": "claude-opus-4-6", "router_model_id": "cc/claude-opus-4-6", "api": "anthropic", "reasoning": True, "route": "cc"}, - {"value": "haiku-cc", "label": "Claude Haiku 4.5 (Pro/Max)", "context_window": 200_000, + {"value": "haiku-cc", "label": "Claude Haiku 4.5", "context_window": 200_000, "model_id": "claude-haiku-4-5", "router_model_id": "cc/claude-haiku-4-5-20251001", "api": "anthropic", "reasoning": True, "route": "cc"}, {"value": "sonnet-api", "label": "Claude Sonnet 4.6 (API key)", "context_window": 1_000_000,