diff --git a/packages/core/src/routing/strategies/approvalModeStrategy.test.ts b/packages/core/src/routing/strategies/approvalModeStrategy.test.ts index 123a2329a6..670c5c543e 100644 --- a/packages/core/src/routing/strategies/approvalModeStrategy.test.ts +++ b/packages/core/src/routing/strategies/approvalModeStrategy.test.ts @@ -43,6 +43,8 @@ describe('ApprovalModeStrategy', () => { getApprovedPlanPath: vi.fn().mockReturnValue(undefined), getPlanModeRoutingEnabled: vi.fn().mockResolvedValue(true), getGemini31Launched: vi.fn().mockResolvedValue(false), + getGemini31FlashLiteLaunched: vi.fn().mockResolvedValue(false), + getHasAccessToPreviewModel: vi.fn().mockReturnValue(true), getUseCustomToolModel: vi.fn().mockImplementation(async () => { const launched = await mockConfig.getGemini31Launched(); const authType = mockConfig.getContentGeneratorConfig?.()?.authType; diff --git a/packages/core/src/routing/strategies/approvalModeStrategy.ts b/packages/core/src/routing/strategies/approvalModeStrategy.ts index b7565f6dc3..8538aed054 100644 --- a/packages/core/src/routing/strategies/approvalModeStrategy.ts +++ b/packages/core/src/routing/strategies/approvalModeStrategy.ts @@ -48,9 +48,16 @@ export class ApprovalModeStrategy implements RoutingStrategy { const approvalMode = config.getApprovalMode(); const approvedPlanPath = config.getApprovedPlanPath(); - const [useGemini3_1, useCustomToolModel] = await Promise.all([ + const [ + useGemini3_1, + useGemini3_1FlashLite, + useCustomToolModel, + hasAccessToPreview, + ] = await Promise.all([ config.getGemini31Launched(), + config.getGemini31FlashLiteLaunched(), config.getUseCustomToolModel(), + config.getHasAccessToPreviewModel(), ]); // 1. Planning Phase: If ApprovalMode === PLAN, explicitly route to the Pro model. @@ -59,7 +66,10 @@ export class ApprovalModeStrategy implements RoutingStrategy { model, GEMINI_MODEL_ALIAS_PRO, useGemini3_1, + useGemini3_1FlashLite, useCustomToolModel, + hasAccessToPreview, + config, ); return { model: proModel, @@ -75,7 +85,10 @@ export class ApprovalModeStrategy implements RoutingStrategy { model, GEMINI_MODEL_ALIAS_FLASH, useGemini3_1, + useGemini3_1FlashLite, useCustomToolModel, + hasAccessToPreview, + config, ); return { model: flashModel, diff --git a/packages/core/src/routing/strategies/gemmaClassifierStrategy.test.ts b/packages/core/src/routing/strategies/gemmaClassifierStrategy.test.ts index 967a185eaf..c66112c406 100644 --- a/packages/core/src/routing/strategies/gemmaClassifierStrategy.test.ts +++ b/packages/core/src/routing/strategies/gemmaClassifierStrategy.test.ts @@ -38,6 +38,10 @@ describe('GemmaClassifierStrategy', () => { }), getModel: () => DEFAULT_GEMINI_MODEL, getPreviewFeatures: () => false, + getGemini31Launched: vi.fn().mockResolvedValue(false), + getGemini31FlashLiteLaunched: vi.fn().mockResolvedValue(false), + getUseCustomToolModel: vi.fn().mockResolvedValue(false), + getHasAccessToPreviewModel: vi.fn().mockReturnValue(true), } as unknown as Config; strategy = new GemmaClassifierStrategy(); diff --git a/packages/core/src/routing/strategies/gemmaClassifierStrategy.ts b/packages/core/src/routing/strategies/gemmaClassifierStrategy.ts index f1175cc101..bf1c1b1b43 100644 --- a/packages/core/src/routing/strategies/gemmaClassifierStrategy.ts +++ b/packages/core/src/routing/strategies/gemmaClassifierStrategy.ts @@ -209,9 +209,27 @@ ${formattedHistory} const reasoning = routerResponse.reasoning; const latencyMs = Date.now() - startTime; + + const [ + useGemini3_1, + useGemini3_1FlashLite, + useCustomToolModel, + hasAccessToPreview, + ] = await Promise.all([ + config.getGemini31Launched(), + config.getGemini31FlashLiteLaunched(), + config.getUseCustomToolModel(), + config.getHasAccessToPreviewModel?.() ?? true, + ]); + const selectedModel = resolveClassifierModel( context.requestedModel ?? config.getModel(), routerResponse.model_choice, + useGemini3_1, + useGemini3_1FlashLite, + useCustomToolModel, + hasAccessToPreview, + config, ); return {