Repository navigation
fix(providers): discover and route new models - #143
Merged
Merged
Conversation
Pin upstream metadata and record its digest so ordinary generation cannot silently refresh from a moving branch. Validate source records before replacing outputs and roll back the artifact if provenance replacement fails. Refresh the embedded metadata and cover provider-specific limits. Use a pinned PR updater on a reserved branch so repeated automation stays safe. Document reproduction, refresh, recovery, and metadata limitations.
List Codex app-server models without starting an inference turn. Keep collected native model IDs with per-call completeness and errors, so a later page or source failure does not discard useful results. Refresh conservative Gemini chat hints from the pinned catalog. Cover discovery failures and session propagation with local fixtures.
Custom native endpoints must not inherit stored vendor logins or ambient keys. Resolve only explicit keys for overrides while preserving normal authentication at registered provider endpoints. Keep Vertex catalog suggestions off custom API-key endpoints. Cover credential isolation and per-call discovery completeness with local fixtures, and document these endpoint boundaries.
Discover capabilities on the completion adapter before choosing a protocol. Explicit endpoints override model-name heuristics, including future IDs. Keep the previous routing when discovery is unavailable or lacks metadata. Bound the adapter-local cache by identity, size, and expiry. Do not retry failed inference requests on another protocol. Cover lazy discovery, cache isolation, cancellation, and protocol failures with fake servers.
Pass Copilot summary capabilities to the shared Responses translator. Explicit false overrides catalog defaults and model-name heuristics. Restrict catalog fallback to exact models on known official routes. Preserve legacy summary exclusions and pass reasoning efforts unchanged. Cover GPT-6 catalog entries, custom endpoints, and picker independence.
Use exact official catalog context before legacy or generic defaults. Keep explicit settings and provider-reported current limits authoritative. Custom endpoints and Azure aliases must not inherit vendor limits by name. Clear learned limits atomically when switching models or providers, even when both endpoints use the same model ID. Cover cold starts, route isolation, overrides and switching with offline regression tests.
An old turn can report overflow after a same-name provider switch. Scope learned windows to the provider generation captured with its client so the old endpoint cannot overwrite the new endpoint's limits. Add synchronized regression tests for context and budget overflow, including same-generation learning.
Let users select exact IDs absent from endpoint listings without making ordinary model selection permissive. Mark explicit selections unverified; the provider decides whether the model is usable. Share parsing across the REPL and TUI, and reject canceled switches before mutation. Preserve advertised lists and child-model allowlists. Document the override and test selection without inference probes.
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.
Summary
New model IDs can appear before nib's bundled metadata catches up. Incomplete discovery results can also reject valid selections.
c8913466dd7bf92040de911f8e00e30b8f4e48a2, with validated provenance and reproducible generation.model/list, including pagination, cancellation, and process cleanup, instead of returning only the configured model./model --unlisted <exact-id>for explicit, unverified selection without weakening normal validation.Catalog entries and successful discovery do not establish account access. This PR does not change the default model or Codex compatibility version.
Why this is a draft
Native Claude adaptive/manual thinking and reasoning-configuration integration remain blocked and are not implemented here.
The pinned cogito message representation cannot preserve native signed/redacted thinking across the complete tool lifecycle. Local fake-server tests through the actual loop show:
A same-instance cache might support a narrower normal path. It does not establish safe replay after correction, adapter recreation, or resume. This PR deliberately adds no such cache and does not enable unsafe partial thinking support. Completing that scope requires a lossless message carrier and separate lifecycle tests.
The catalog already contains newer Claude metadata; native model discovery remains dynamic. Neither implies the missing thinking capability works.
Verification
Passed locally:
Additional focused regression and race tests cover selection, endpoint isolation, protocol routing, pagination, cancellation, and stale context learning. Two generations from the pinned catalog source produce identical artifact and provenance hashes.
The catalog workflow tests are offline contract checks plus inspection of the pinned action, not live GitHub workflow execution. No real-provider inference, account-access test, or CLI installation was performed.
Public references