




















@@ -50,6 +50,7 @@ type RoutedModel = {
50505151type CatalogSnapshot = {
5252apiBaseUrl: string;
53+authorizationHeader: string;
5354modelsByRoute: Map<string, ModelDefinitionConfig>;
5455nativeModelIds: Map<string, string>;
5556};
@@ -223,6 +224,7 @@ function buildRoutedModel(
223224function updateDiscoveredModels(
224225rootUrl: string,
225226providers: CatalogProvider[],
227+apiKey: string,
226228): ModelDefinitionConfig[] {
227229const models = new Map<string, ModelDefinitionConfig>();
228230const modelsByRoute = new Map<string, ModelDefinitionConfig>();
@@ -246,6 +248,7 @@ function updateDiscoveredModels(
246248// Keeping older credential-scoped catalogs would leak stale grants and grow forever.
247249catalogSnapshot = {
248250apiBaseUrl: `${rootUrl}/v1`,
251+authorizationHeader: `Bearer ${apiKey}`,
249252 modelsByRoute,
250253 nativeModelIds,
251254};
@@ -278,7 +281,7 @@ export async function buildClawRouterProviderConfig(params: {
278281api: "openai-responses",
279282apiKey: params.apiKey,
280283authHeader: true,
281-models: updateDiscoveredModels(rootUrl, providers),
284+models: updateDiscoveredModels(rootUrl, providers, params.apiKey),
282285};
283286}
284287@@ -297,8 +300,22 @@ export function resolveDiscoveredClawRouterModel(params: {
297300export function normalizeClawRouterResolvedModel(
298301model: ProviderRuntimeModel,
299302): ProviderRuntimeModel | undefined {
300-const upstreamModel = catalogSnapshot?.nativeModelIds.get(routeKey(model.baseUrl, model.id));
301-return upstreamModel && upstreamModel !== model.id ? { ...model, id: upstreamModel } : undefined;
303+const discovered = catalogSnapshot?.modelsByRoute.get(routeKey(model.baseUrl, model.id));
304+if (!catalogSnapshot || !discovered) {
305+return undefined;
306+}
307+const discoveredBaseUrl = discovered.baseUrl ?? catalogSnapshot.apiBaseUrl;
308+const upstreamModel = catalogSnapshot.nativeModelIds.get(routeKey(discoveredBaseUrl, model.id));
309+return {
310+ ...model,
311+api: discovered.api ?? model.api,
312+baseUrl: discoveredBaseUrl,
313+headers: {
314+ ...model.headers,
315+Authorization: catalogSnapshot.authorizationHeader,
316+},
317+ ...(upstreamModel && upstreamModel !== model.id ? { id: upstreamModel } : {}),
318+};
302319}
303320304321export function clearClawRouterCatalogForTests(): void {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。