fix(cliproxy): keep new live provider models selectable

This commit is contained in:
Tam Nhu Tran
2026-04-10 18:07:22 -04:00
parent 0e4677f558
commit 34d70442bf
2 changed files with 27 additions and 11 deletions
+19 -11
View File
@@ -936,39 +936,47 @@ export function getSupplementalCatalogModels(
.map((modelId) => normalizeModelId(modelId))
);
const seenCanonicalIds = new Set<string>();
const normalizedAvailableIds = new Set(
availableModels.map((model) => normalizeModelId(stripManagedModelPrefix(model.id)))
);
const normalizedRawIds = new Set(availableModels.map((model) => normalizeModelId(model.id)));
return availableModels.filter((availableModel) => {
const normalizedAvailableModelId = normalizeModelId(availableModel.id);
const strippedModelId = stripManagedModelPrefix(availableModel.id);
const baseModelId = stripCustomtoolsSuffix(strippedModelId);
const matchedModel =
findCatalogModelInCatalog(staticCatalog, strippedModelId) ??
findCatalogModelInCatalog(staticCatalog, baseModelId);
if (!matchedModel) return false;
if (recommendedIds.has(normalizeModelId(strippedModelId))) {
return false;
}
const canonicalId = normalizeModelId(matchedModel.id);
if (recommendedCanonicalIds.has(canonicalId)) {
return false;
}
if (seenCanonicalIds.has(canonicalId)) {
if (
normalizedAvailableModelId !== normalizeModelId(strippedModelId) &&
normalizedRawIds.has(normalizeModelId(strippedModelId))
) {
return false;
}
const normalizedBaseModelId = normalizeModelId(baseModelId);
if (
normalizedBaseModelId !== normalizeModelId(strippedModelId) &&
normalizedAvailableIds.has(normalizedBaseModelId)
normalizedRawIds.has(normalizedBaseModelId)
) {
return false;
}
const canonicalId = matchedModel ? normalizeModelId(matchedModel.id) : normalizedBaseModelId;
if (matchedModel && recommendedCanonicalIds.has(canonicalId)) {
return false;
}
if (seenCanonicalIds.has(canonicalId)) {
return false;
}
if (!matchedModel && normalizedProvider === 'agy') {
return false;
}
seenCanonicalIds.add(canonicalId);
return true;
});
@@ -173,6 +173,14 @@ describe('claude preset utils', () => {
);
});
it('preserves newly advertised non-Antigravity models in the supplemental list', () => {
const supplementalCodexModels = getSupplementalCatalogModels('codex', MODEL_CATALOGS.codex, [
{ id: 'gpt-5.9-codex', owned_by: 'openai' },
]);
expect(supplementalCodexModels).toEqual([{ id: 'gpt-5.9-codex', owned_by: 'openai' }]);
});
it('does not silently swap Gemini Flash presets to flash-lite', () => {
const availableModels = [{ id: 'gemini-3.1-flash-lite-preview', owned_by: 'google' }];