Repository navigation
feat(frontdoor): route provider-qualified model names on every session - #514
Merged
Merged
Conversation
A qualified model name was only resolved on a session that asked to route by name, so exposing another provider's models meant a launch flag or a router provider. The rule is now the naming scheme itself: a model name whose first slash-separated segment names a defined provider routes there on every session, with the request rewritten under the target's own model name, and a slash naming no provider (an aggregator's `vendor/model`) stays the session's own provider's business. A name for the provider the session is already on is served in place under its bare model name. Bare names keep their opt-in: only a session that routes by name (a router's included) resolves a virtual model's or a family's name, so nothing a session types bare is ever hijacked, and `--route-by-name` now means exactly that. `/model` follows: every session lists every provider's models qualified (its own provider's catalogue included), a provider session's rows replacing the built-in lineup and a provider-less session's following it; the virtual and family rows stay on the sessions that can serve them. The provider list the rows are built from is read through the launch's own filesystem port, so an invalid provider file lists no rows rather than failing the launch. One scan now runs for every routed request, so the name resolution's replay is carried into the `routes` matching that follows it; reading the original body twice left two consumers on one stream and hung the request.
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.
feat(frontdoor): route provider-qualified model names on every session
A qualified model name was only resolved on a session that asked to
route by name, so exposing another provider's models meant a launch flag
or a router provider. The rule is now the naming scheme itself: a model
name whose first slash-separated segment names a defined provider routes
there on every session, with the request rewritten under the target's own
model name, and a slash naming no provider (an aggregator's
vendor/model)stays the session's own provider's business. A name for the provider the
session is already on is served in place under its bare model name.
Bare names keep their opt-in: only a session that routes by name (a
router's included) resolves a virtual model's or a family's name, so
nothing a session types bare is ever hijacked, and
--route-by-namenow means exactly that.
/modelfollows: every session lists every provider's models qualified(its own provider's catalogue included), a provider session's rows
replacing the built-in lineup and a provider-less session's following it;
the virtual and family rows stay on the sessions that can serve them. The
provider list the rows are built from is read through the launch's own
filesystem port, so an invalid provider file lists no rows rather than
failing the launch.
One scan now runs for every routed request, so the name resolution's
replay is carried into the
routesmatching that follows it; reading theoriginal body twice left two consumers on one stream and hung the
request.