mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 14:16:43 +00:00
fix(cliproxy): keep new live provider models selectable
This commit is contained in:
@@ -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' }];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user