fix: harden Fireworks provider integration and stabilize CI - #8632
fix: harden Fireworks provider integration and stabilize CI#8632JSRRosenbaum wants to merge 2 commits into
Conversation
This squashes the Fireworks branch into one decision record on top of current main. It keeps Fireworks aligned with the existing API-key provider seams across auth, model catalogs, setup, CLI selection, runtime resolution, and the rebased test baselines needed to stay compatible with current upstream behavior. Constraint: Must preserve current main's provider architecture while keeping Fireworks usable end to end Rejected: Keep four-commit branch history | unnecessary review noise after repeated rebases Confidence: high Scope-risk: moderate Reversibility: clean Directive: On future rebases, keep current main behavior and reapply only Fireworks-specific provider deltas Tested: Fireworks provider pytest slice after squash Not-tested: Full pytest suite; known upstream failures remain outside the Fireworks slice
|
Likely duplicate of #8693 — same Fireworks provider hardening scope (API-key priority, model ID sanitization, pagination bounds, non-interactive stdin guard). Recommend consolidating. |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for the hardening work. Current main has since landed Fireworks through a different provider-profile path, so this branch is no longer a clean salvage target.
Problems
hermes_cli/models.py:75adds a Fire Pass router model. Current main deliberately uses PAYG/models/IDs instead (plugins/model-providers/fireworks/__init__.py:25-33), andtests/hermes_cli/test_fireworks_provider.py:167-172asserts Fireworks auxiliary models do not use/routers/. The later policy-alignment commit is31152ae108e8.- The PR's registry/catalog wiring duplicates the current plugin-derived registration path in
hermes_cli/auth.py:447-478and the current picker entry inhermes_cli/models.py:1083. - The Docker and supply-chain hunks are also stale: remote main already installs
git(Dockerfile:31) and has since redesigned the audit workflow (.github/workflows/supply-chain-audit.yml:37-160).
Suggested changes
- If any CI behavior is retained, re-scope it against the current audit workflow rather than applying this snapshot.
- Keep Fireworks changes within the current provider-profile architecture; do not restore Fire Pass routing without explicit maintainer direction.
Automated hermes-sweeper review.
| return _add_forward_compat_models(list(DEFAULT_CODEX_MODELS)) | ||
|
|
||
|
|
||
| FIREWORKS_FIRE_PASS_MODELS: list[str] = [ |
There was a problem hiding this comment.
Current main deliberately avoids Fire Pass router IDs: the landed Fireworks profile uses PAYG /models/ fallbacks, and its focused test requires the auxiliary model not to contain /routers/. Please do not reintroduce this router catalog without explicit maintainer approval.
|
|
||
| permissions: | ||
| pull-requests: write | ||
| issues: write |
There was a problem hiding this comment.
Please keep workflow permissions minimal. Current main's redesigned audit workflow retains pull-requests: write and contents: read; any added issues: write scope needs a concrete operation that cannot use the existing permission.
|
Thanks for the thorough hardening work here. Closing both this and #8693: they were built against the Fireworks integration from PR #3564, which was never merged — the Fireworks support that eventually landed on main (July 2026) is the official provider plugin using the standard ProviderProfile path, so the bespoke catalog-fetch code these PRs harden (pagination bounds, model-ID sanitization) doesn't exist in the tree. I also verified the autodetect-priority concern empirically on current main: fireworks is auto-extended AFTER the static registry entries, so with both XIAOMI_API_KEY and FIREWORKS_API_KEY set, resolve_provider('auto') returns xiaomi — no shadowing. The non-TTY API-key guard also exists on main now. If you spot a hardening gap that reproduces against the current plugin-based integration, a fresh focused PR is very welcome. |
Summary
Changes
input()_setup_provider_model_selection()normalize_opencode_model_idfrom the correct modulegitto the Docker image for likely git-backed npm dependency resolution issuesValidation
Targeted local validation:
tests/hermes_cli/test_xiaomi_provider.pytests/hermes_cli/test_api_key_providers.pytests/hermes_cli/test_setup_model_selection.pytests/hermes_cli/test_models.pytests/cli/test_cli_provider_resolution.py::test_model_flow_custom_saves_verified_v1_base_urltests/cli/test_cli_provider_resolution.py::test_model_flow_custom_requires_tty_for_api_key_entrytests/agent/test_model_metadata.pytests/agent/test_credential_pool.pyNotes
debian:13.4, so the Dockerfile fix is reasonable but not fully re-verified end-to-end here.