Add key-name-based regex patterns (master_key, database_url, auth_token,
etc.) to SecretRedactionFilter so secrets embedded in dict/config dumps
are redacted by key name, regardless of value format.
Fixes a leak where general_settings containing master_key and
database_url was logged in full because the secret values didn't match
any existing value-format regex pattern.
Address Greptile review feedback:
1. Replace opt-out `disable_default_reasoning_summary` with existing opt-in
`reasoning_auto_summary` flag — avoids backwards-incompatible change where
all users routing thinking-enabled requests would silently get a changed
reasoning_effort shape (string -> dict) on upgrade.
2. Add default summary injection to `_translate_thinking_to_openai` — this path
was the only one missing it, causing inconsistent behavior for
litellm.completion() callers using the Anthropic adapter.
3. Narrow `except Exception` to `except (ValueError, TypeError, AttributeError)`
in tests to avoid masking genuine failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove incorrect supports_prompt_caching from gpt-4-0314 (predates the feature)
- Make data-URL detection case-insensitive in Gemini tool call result conversion
- Mock show_banner/generate_feedback_box in max_budget tests to prevent real I/O
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Native models like openrouter/auto, openrouter/free have no extra '/'
after the prefix. Provider-routed models like openrouter/anthropic/claude
have extra segments and need prefix stripping.
Condition: only early-return when model after 'openrouter/' has no '/'.
Remove early return in get_llm_provider_logic.py that prevented
the 'openrouter/' prefix from being stripped. The early return was
intended for 'native OpenRouter models' like 'openrouter/free',
but no such models exist in the model registry — all OpenRouter
models are multi-segment (e.g. 'openrouter/anthropic/claude-3.5-sonnet')
and need the prefix stripped before being sent to the OpenRouter API.
This regression was introduced in v1.82.3 and caused 400 Bad Request
errors for all OpenRouter models.
The create key form used getPredefinedTags() which only extracted tags
from existing keys' metadata. If no keys had tags, the dropdown was
empty. Switch to the existing useTags() React Query hook that fetches
from /tag/list, matching the edit key form behavior.
- Update load_local_model_cost_map to use project root fallback for dev
- Keep main's validation, aliases, and source info tracking
- Remove backup JSON (purpose of this PR)
The special name check (all_team_servers, all_proxy_servers) was an elif
after the server_id-is-not-None check, making it unreachable since special
names are non-None strings. Split into separate if blocks so the special
name guard runs before the duplicate-ID check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>