fix(acp) refactor(core,cli): centralize model discovery logic in ModelConfigService (#24392)

This commit is contained in:
Sri Pasumarthi
2026-04-01 11:03:30 -07:00
committed by GitHub
parent 16468a855d
commit 6b303a13eb
7 changed files with 290 additions and 94 deletions
@@ -1018,4 +1018,41 @@ describe('ModelConfigService', () => {
expect(retry.generateContentConfig.temperature).toBe(1.0);
});
});
describe('getAvailableModelOptions', () => {
it('should filter out Pro models when hasAccessToProModel is false', () => {
const config: ModelConfigServiceConfig = {
modelDefinitions: {
'gemini-3-pro': { isVisible: true, tier: 'pro' },
'gemini-3-flash': { isVisible: true, tier: 'flash' },
},
};
const service = new ModelConfigService(config);
const options = service.getAvailableModelOptions({
hasAccessToProModel: false,
});
expect(options.map((o) => o.modelId)).not.toContain('gemini-3-pro');
expect(options.map((o) => o.modelId)).toContain('gemini-3-flash');
});
it('should include Pro models when hasAccessToProModel is true or undefined', () => {
const config: ModelConfigServiceConfig = {
modelDefinitions: {
'gemini-3-pro': { isVisible: true, tier: 'pro' },
},
};
const service = new ModelConfigService(config);
const optionsWithTrue = service.getAvailableModelOptions({
hasAccessToProModel: true,
});
expect(optionsWithTrue.map((o) => o.modelId)).toContain('gemini-3-pro');
const optionsWithUndefined = service.getAvailableModelOptions({});
expect(optionsWithUndefined.map((o) => o.modelId)).toContain(
'gemini-3-pro',
);
});
});
});