diff --git a/packages/cli/src/config/extensions/github_fetch.test.ts b/packages/cli/src/config/extensions/github_fetch.test.ts index fe6edbedb2..c1eca8c9c7 100644 --- a/packages/cli/src/config/extensions/github_fetch.test.ts +++ b/packages/cli/src/config/extensions/github_fetch.test.ts @@ -62,6 +62,7 @@ describe('fetchJson', () => { const res = new EventEmitter() as IncomingMessage; res.statusCode = 302; res.headers = { location: 'https://example.com/final' }; + res.resume = vi.fn(); (callback as (res: IncomingMessage) => void)(res); res.emit('end'); return new EventEmitter() as ClientRequest; @@ -85,6 +86,7 @@ describe('fetchJson', () => { const res = new EventEmitter() as IncomingMessage; res.statusCode = 301; res.headers = { location: 'https://example.com/final-permanent' }; + res.resume = vi.fn(); (callback as (res: IncomingMessage) => void)(res); res.emit('end'); return new EventEmitter() as ClientRequest; diff --git a/packages/cli/src/config/extensions/github_fetch.ts b/packages/cli/src/config/extensions/github_fetch.ts index 33a9cb674f..7afd235605 100644 --- a/packages/cli/src/config/extensions/github_fetch.ts +++ b/packages/cli/src/config/extensions/github_fetch.ts @@ -31,7 +31,11 @@ export async function fetchJson( if (!res.headers.location) { return reject(new Error('No location header in redirect response')); } - fetchJson(res.headers.location, redirectCount++) + res.resume(); + fetchJson( + new URL(res.headers.location, url).toString(), + redirectCount + 1, + ) .then(resolve) .catch(reject); return; diff --git a/packages/core/src/routing/modelRouterService.ts b/packages/core/src/routing/modelRouterService.ts index a62deacd31..30e2bb9f8d 100644 --- a/packages/core/src/routing/modelRouterService.ts +++ b/packages/core/src/routing/modelRouterService.ts @@ -74,7 +74,7 @@ export class ModelRouterService { */ async route(context: RoutingContext): Promise { const startTime = Date.now(); - let decision: RoutingDecision; + let decision: RoutingDecision | undefined; const [enableNumericalRouting, thresholdValue] = await Promise.all([ this.config.getNumericalRoutingEnabled(), @@ -117,10 +117,10 @@ export class ModelRouterService { ); } finally { const event = new ModelRoutingEvent( - decision!.model, - decision!.metadata.source, - decision!.metadata.latencyMs, - decision!.metadata.reasoning, + decision?.model || 'unknown', + decision?.metadata?.source || 'unknown', + decision?.metadata?.latencyMs || 0, + decision?.metadata?.reasoning, failed, error_message, this.config.getApprovalMode(),