fix(router): restore BYOK key injection for vector store endpoints with team-scoped deployments

When vector store endpoints (POST/GET /v1/vector_stores) are called, model=None
is passed to the router. map_team_model(None, team_id) was returning None
unchanged after the team model routing fix in #25148, so the router never found
the team's BYOK deployment and forwarded requests without the API key.

Fix: when team_model_name is None, return the matched deployment's
team_public_model_name (or model_name fallback) so the router can route to it
and inject the BYOK credentials. Does not affect the sibling-deployment
load-balancing fix since that only applies when a non-None model is passed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
shivam 2026-04-14 20:47:57 -07:00 committed by Ishaan Jaffer
parent cf045dc6d2
commit a81ceebfbf
No known key found for this signature in database

View file

@ -8281,7 +8281,9 @@ class Router:
# No match found
return None
def map_team_model(self, team_model_name: str, team_id: str) -> Optional[str]:
def map_team_model(
self, team_model_name: Optional[str], team_id: str
) -> Optional[str]:
"""
Check if team_model_name resolves to team-specific deployments.
@ -8289,6 +8291,11 @@ class Router:
sibling deployments via team_id filtering, instead of collapsing to a
single internal model_name.
When team_model_name is None (e.g. vector store / file endpoints that
don't include a model in their request), returns the first matching
team deployment's team_public_model_name so the router can inject BYOK
credentials from the team-scoped deployment.
Returns:
- str: the team_model_name if team deployments exist for this team
- None: if no team-specific model is found
@ -8298,6 +8305,13 @@ class Router:
return None
for model in models:
if model.get("model_info", {}).get("team_id") == team_id:
if team_model_name is None:
# No model was specified (e.g. vector store endpoints).
# Return the deployment's public model name so the router
# can route to it and inject the BYOK API key.
return model.get("model_info", {}).get(
"team_public_model_name"
) or model.get("model_name")
return team_model_name
# No team-scoped deployment found; wildcard/pattern routes are