feat(combos): default-enable vision/audio adapter with mimo fallback

- Enable vision + audioInput capacity-adapter pools by default for new
  and existing users (mergeWithDefaults backward-compat)
- Fall back to oc/mimo-v2.5-free when an enabled pool has no models
  configured, both in the backend resolver and the combos UI (auto
  refill on removing the last model from a pool)
- Hide PDF/Video from the Vision Adapter UI (PDF never implemented,
  Video lacks translator support) while keeping the settings shape
- Exclude combos from the model picker when opened from the Vision
  Adapter section
- mimo-v2.5 registry entry now declares audioInput/videoInput
- Simplify combo strategy and Vision Adapter descriptions
This commit is contained in:
decolua
2026-08-05 16:09:42 +07:00
parent cd13d904d7
commit 8e59093db7
5 changed files with 391 additions and 4 deletions

View File

@@ -30,6 +30,7 @@ export default function ModelSelectModal({
title = "Select Model",
modelAliases = {},
kindFilter = null,
capFilter = null,
addedModelValues = [],
closeOnSelect = true,
}) {
@@ -397,7 +398,7 @@ export default function ModelSelectModal({
// Filter combos by search query (and hide combos when kindFilter is set — combos are LLM-only by design)
const filteredCombos = useMemo(() => {
if (kindFilter) return [];
if (kindFilter || capFilter) return [];
if (!searchQuery.trim()) return combos;
const query = searchQuery.toLowerCase();
return combos.filter(c => c.name.toLowerCase().includes(query));
@@ -417,6 +418,11 @@ export default function ModelSelectModal({
const filtered = {};
Object.entries(groupedModels).forEach(([providerId, group]) => {
let models = group.models;
// Filter by input-modality capability (vision/pdf/audioInput/videoInput).
if (capFilter) {
models = models.filter((m) => getCaps(m.value)?.[capFilter] === true);
if (models.length === 0) return;
}
if (query) {
const providerNameMatches = group.name.toLowerCase().includes(query);
models = models.filter(