feat(core): implement towards policy-driven model fallback mechanism (#13781)

This commit is contained in:
Adam Weidman
2025-11-26 12:36:42 -08:00
committed by GitHub
parent 0f12d6c426
commit 87edeb4e32
8 changed files with 550 additions and 40 deletions

View File

@@ -59,6 +59,7 @@ import { StandardFileSystemService } from '../services/fileSystemService.js';
import { logRipgrepFallback } from '../telemetry/loggers.js';
import { RipgrepFallbackEvent } from '../telemetry/types.js';
import type { FallbackModelHandler } from '../fallback/types.js';
import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
import { ModelRouterService } from '../routing/modelRouterService.js';
import { OutputFormat } from '../output/types.js';
import type { ModelConfigServiceConfig } from '../services/modelConfigService.js';
@@ -347,6 +348,7 @@ export class Config {
private geminiClient!: GeminiClient;
private baseLlmClient!: BaseLlmClient;
private modelRouterService: ModelRouterService;
private readonly modelAvailabilityService: ModelAvailabilityService;
private readonly fileFiltering: {
respectGitIgnore: boolean;
respectGeminiIgnore: boolean;
@@ -483,6 +485,7 @@ export class Config {
this.model = params.model;
this.enableModelAvailabilityService =
params.enableModelAvailabilityService ?? false;
this.modelAvailabilityService = new ModelAvailabilityService();
this.previewFeatures = params.previewFeatures ?? undefined;
this.maxSessionTurns = params.maxSessionTurns ?? -1;
this.experimentalZedIntegration =
@@ -1044,6 +1047,10 @@ export class Config {
return this.modelRouterService;
}
getModelAvailabilityService(): ModelAvailabilityService {
return this.modelAvailabilityService;
}
getEnableRecursiveFileSearch(): boolean {
return this.fileFiltering.enableRecursiveFileSearch;
}