feat: update model registry to April 2026 (TMC-92)#431
Conversation
Migrate from pip/requirements.txt workflow to uv-native dependency management with devenv for reproducible development environments. Bumps Python target to 3.14 and requires-python to >=3.12. - Add .python-version as single source of truth for Python version - Add [dependency-groups] dev/lint to pyproject.toml, replacing requirements-dev.txt as canonical dev deps - Add uv.lock for deterministic dependency resolution - Add secretspec.toml + devenv.local.yaml for declarative 1Password secret management via SecretSpec - Modernize code_quality_checks.sh and run_integration_tests.sh to use uv sync and direct tool invocation instead of .pal_venv/pip - Update ruff target-version to py312, black to py312/py313 - Update .pre-commit-config.yaml excludes for .devenv/ - Update isort skip_glob for .devenv/ - Apply ruff 0.15 auto-fixes (pyupgrade, asyncio.TimeoutError -> TimeoutError, etc.) Co-Authored-By: Claude <noreply@anthropic.com>
Remove devenv.local.yaml (contains personal 1Password vault ID) from tracking and add devenv artifacts to .gitignore. Un-ignore .python-version so it's tracked as the Python version source of truth. Co-Authored-By: Claude <noreply@anthropic.com>
Commit standalone devenv.nix, devenv.yaml, and .envrc so anyone can clone the repo and get a working environment with `devenv shell`. No personal config - devenv.local.yaml (for secret providers like 1Password) stays gitignored. SecretSpec secrets marked optional so devenv starts without API keys (needed for linting/tests, not for API calls). Co-Authored-By: Claude <noreply@anthropic.com>
Add GPT-5.4 family (5.4, 5.4 Pro, 5.4 Mini, 5.4 Nano) and GPT-5.3 Codex. Add Gemini 3.1 Pro Preview, 3 Flash Preview, and 3.1 Flash Lite Preview. Remove dead/retired models: gpt-4.1, gemini-3-pro-preview (already 404), gemini-2.0-flash, gemini-2.0-flash-lite. Mark Gemini 2.5 models as deprecated (June 17 shutdown). Fix Gemini provider to branch on thinking_level (3.x enum API) vs thinking_budget (2.x numeric API) - without this, 3.x models 400-error on thinking requests. Fix preference selection to exclude flash-lite from flash candidates. Fix registry to use canonical names only in preference selection (was including aliases, causing sort-order bugs). Co-Authored-By: Claude <noreply@anthropic.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
There was a problem hiding this comment.
Code Review
This pull request introduces significant updates to the model provider configurations, including the adoption of Gemini 3.1 and GPT-5.4 models, updates to the development environment using devenv and uv, and a transition to modern Python type hinting syntax (e.g., | None). The review identified potential fragility in the Gemini 3.x model identification and Pro model detection logic, as well as a need for better error messaging in the code quality check script.
| if level == "MINIMAL" and "pro" in resolved_model_name: | ||
| level = "LOW" |
There was a problem hiding this comment.
| if ! command -v uv &> /dev/null; then | ||
| echo "Error: uv not found. Activate devenv first (cd into repo with direnv, or run devenv shell)." | ||
| exit 1 | ||
| fi |
| def _is_gemini_3x(model_name: str) -> bool: | ||
| """Return True if the model uses the Gemini 3.x thinking_level API.""" | ||
| return model_name.startswith("gemini-3") |
Summary
thinking_levelenum for 3.x models instead ofthinking_budget(breaking API change - 3.x models 400-error without this)Test plan
./code_quality_checks.shpasses (ruff, black, isort)google-genaiSDK supportsThinkingConfig(thinking_level='HIGH')Closes TMC-92
🤖 Generated with Claude Code