fix(openrouter): surface first-party router models (Fusion) in the model picker - #49188
Closed
yusekiotacode wants to merge 1 commit into
Closed
fix(openrouter): surface first-party router models (Fusion) in the model picker#49188yusekiotacode wants to merge 1 commit into
yusekiotacode wants to merge 1 commit into
Conversation
…cker OpenRouter's first-party deliberation routers — openrouter/fusion in particular — never appeared in the model picker for two stacked reasons: 1. The curated OpenRouter list (remote manifest, with OPENROUTER_MODELS as the in-repo fallback) didn't include openrouter/fusion, so it was never a candidate in preferred_ids. 2. Even when present, fetch_openrouter_models() hides any live model whose supported_parameters omits 'tools' (the tool-calling-first gate from Kilo-Org/kilocode#9068). Fusion reports supported_parameters: [] because it's a meta router, so it was filtered out. Fusion is a multi-model deliberation router: a panel answers in parallel, a judge synthesizes, and it returns a final answer. It doesn't need client-side tool calling — the panel runs web_search/web_fetch server-side — and drives the Hermes agent loop fine (verified end-to-end). Fix both layers: - Add openrouter/fusion to the OPENROUTER_MODELS fallback snapshot. - Always inject openrouter/* first-party routers into preferred_ids so they appear even when the remote curated manifest omits them. - Exempt openrouter/* router ids from the tools-support filter, since they are curated entries we vouch for that report empty supported_parameters. Verified: fetch_openrouter_models(force_refresh=True) now returns openrouter/fusion, and a one-shot Hermes run on openrouter/fusion completes through the normal agent loop.
Collaborator
|
Related: #46064 (the bug report — OpenRouter router models silently dropped by the tool-support filter), #46067 and #47485 (competing open fix PRs for the same issue). This is one of three open PRs surfacing
Marked related (not duplicate) — different mechanisms competing for the same fix. Maintainers should pick one approach. |
Contributor
|
Closing in favor of #46094, which adds configurable Fusion presets as the canonical OpenRouter Fusion implementation. Thanks for the contribution — the Fusion direction is being consolidated there. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
OpenRouter's first-party deliberation router
openrouter/fusionnever appears in the Hermes model picker, even with a validOPENROUTER_API_KEY. Users have to hand-edit config to select it.Two stacked causes in
hermes_cli/models.py:get_curated_openrouter_models(), with the in-repoOPENROUTER_MODELSsnapshot as fallback). Neither includedopenrouter/fusion, so it never enteredpreferred_idsinfetch_openrouter_models().supported_parametersomitstools(the tool-calling-first gate from fix(gateway): hide models without tool support from list Kilo-Org/kilocode#9068). Fusion reportssupported_parameters: []because it is a meta router, so it gets dropped.Why Fusion is a legitimate exception
Fusion is a multi-model deliberation router: a panel of models answers in parallel (with
openrouter:web_search/web_fetchrun server-side), a judge synthesizes consensus/contradictions/blind-spots, and it returns a final answer. It does not require client-side tool calling, and it drives the Hermes agent loop fine — verified end-to-end with a one-shothermes -z ... -m openrouter/fusionrun that completed normally.The same applies to OpenRouter's other first-party routers (
openrouter/auto,openrouter/pareto-code, etc.), which are curated entries we already vouch for.Fix (both layers)
openrouter/fusionto theOPENROUTER_MODELSfallback snapshot.openrouter/*first-party routers intopreferred_idsso they surface even when the remote curated manifest omits them.openrouter/*router ids from the_openrouter_model_supports_tools()filter (they are curated entries that report emptysupported_parameters).Verify
Notes
openrouter/*routers are always offered and bypass the tool gate), not a frozen model-list snapshot.