From 43494c337f512aa6159deba76ea466b79cc90318 Mon Sep 17 00:00:00 2001 From: chrislangston Date: Mon, 26 Jan 2026 11:02:29 -0500 Subject: [PATCH 1/3] feat: support custom Opus model via ANTHROPIC_DEFAULT_OPUS_MODEL env var Allow Foundry and custom deployments to override the default Opus model by setting the ANTHROPIC_DEFAULT_OPUS_MODEL environment variable. Co-Authored-By: Claude Opus 4.5 --- registry.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/registry.py b/registry.py index 20d31df..2949bf6 100644 --- a/registry.py +++ b/registry.py @@ -39,7 +39,8 @@ AVAILABLE_MODELS = [ VALID_MODELS = [m["id"] for m in AVAILABLE_MODELS] # Default model and settings -DEFAULT_MODEL = "claude-opus-4-5-20251101" +# Respect ANTHROPIC_DEFAULT_OPUS_MODEL env var for Foundry/custom deployments +DEFAULT_MODEL = os.getenv("ANTHROPIC_DEFAULT_OPUS_MODEL", "claude-opus-4-5-20251101") DEFAULT_YOLO_MODE = False # SQLite connection settings From f2eb468c464ef929dc7990211b832615b30be750 Mon Sep 17 00:00:00 2001 From: chrislangston Date: Sat, 31 Jan 2026 10:51:04 -0500 Subject: [PATCH 2/3] fix: add env-provided DEFAULT_MODEL to VALID_MODELS for validation consistency When ANTHROPIC_DEFAULT_OPUS_MODEL env var is set to a custom model ID, that model was not present in VALID_MODELS (derived from AVAILABLE_MODELS), causing potential validation failures in server/schemas.py validators. This fix dynamically appends the env-provided DEFAULT_MODEL to VALID_MODELS when set, ensuring validators accept the runtime default. The merge is idempotent (only adds if missing) and doesn't alter AVAILABLE_MODELS semantics. Addresses CodeRabbit review feedback on PR #147. --- registry.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/registry.py b/registry.py index 2e67f3c..f53e8bd 100644 --- a/registry.py +++ b/registry.py @@ -41,6 +41,11 @@ VALID_MODELS = [m["id"] for m in AVAILABLE_MODELS] # Default model and settings # Respect ANTHROPIC_DEFAULT_OPUS_MODEL env var for Foundry/custom deployments DEFAULT_MODEL = os.getenv("ANTHROPIC_DEFAULT_OPUS_MODEL", "claude-opus-4-5-20251101") + +# Ensure env-provided DEFAULT_MODEL is in VALID_MODELS for validation consistency +# (idempotent: only adds if missing, doesn't alter AVAILABLE_MODELS semantics) +if DEFAULT_MODEL not in VALID_MODELS: + VALID_MODELS.append(DEFAULT_MODEL) DEFAULT_YOLO_MODE = False # SQLite connection settings From 4336252b30edb2625199232ed64424f01e3f9ece Mon Sep 17 00:00:00 2001 From: chrislangston Date: Sat, 31 Jan 2026 11:22:19 -0500 Subject: [PATCH 3/3] fix: guard against empty/whitespace ANTHROPIC_DEFAULT_OPUS_MODEL values Trim the env var value and fall back to the default model when the trimmed result is empty. This prevents invalid empty strings from being appended to VALID_MODELS. Addresses CodeRabbit review feedback on PR #147. --- registry.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/registry.py b/registry.py index f53e8bd..cd52c7b 100644 --- a/registry.py +++ b/registry.py @@ -40,11 +40,15 @@ VALID_MODELS = [m["id"] for m in AVAILABLE_MODELS] # Default model and settings # Respect ANTHROPIC_DEFAULT_OPUS_MODEL env var for Foundry/custom deployments -DEFAULT_MODEL = os.getenv("ANTHROPIC_DEFAULT_OPUS_MODEL", "claude-opus-4-5-20251101") +# Guard against empty/whitespace values by trimming and falling back when blank +_env_default_model = os.getenv("ANTHROPIC_DEFAULT_OPUS_MODEL") +if _env_default_model is not None: + _env_default_model = _env_default_model.strip() +DEFAULT_MODEL = _env_default_model or "claude-opus-4-5-20251101" # Ensure env-provided DEFAULT_MODEL is in VALID_MODELS for validation consistency # (idempotent: only adds if missing, doesn't alter AVAILABLE_MODELS semantics) -if DEFAULT_MODEL not in VALID_MODELS: +if DEFAULT_MODEL and DEFAULT_MODEL not in VALID_MODELS: VALID_MODELS.append(DEFAULT_MODEL) DEFAULT_YOLO_MODE = False