add model picker to create provider wizard

This commit is contained in:
miloschwartz
2026-08-13 15:08:10 -04:00
parent d9a9ae14fd
commit 9b10292e02
10 changed files with 341 additions and 81 deletions
+4 -31
View File
@@ -8,10 +8,7 @@ import logger from "@server/logger";
import { fromError } from "zod-validation-error";
import { OpenAPITags, registry } from "@server/openApi";
import { eq } from "drizzle-orm";
import {
aiModelCatalog,
getCatalogProviderForType
} from "@server/lib/aiModelCatalog";
import { listCatalogModelsForType } from "@server/lib/aiModelCatalog";
import type { AiProviderType } from "@server/lib/aiProviderDefaults";
import type { ListCatalogModelsResponse } from "@server/routers/aiProvider/types";
@@ -86,35 +83,11 @@ export async function listCatalogModels(
);
}
const catalogProvider = getCatalogProviderForType(
provider.type as AiProviderType
const models = listCatalogModelsForType(
provider.type as AiProviderType,
parsedQuery.data.query
);
let models = catalogProvider
? aiModelCatalog.list(catalogProvider).map((entry) => ({
model: entry.model
}))
: [];
const { query } = parsedQuery.data;
if (query) {
const q = query.toLowerCase();
models = models.filter((m) => m.model.toLowerCase().includes(q));
}
// Deduplicate model keys (catalog may have duplicates after provider
// normalization, e.g. bedrock + bedrock_converse).
const seen = new Set<string>();
models = models.filter((m) => {
if (seen.has(m.model)) {
return false;
}
seen.add(m.model);
return true;
});
models.sort((a, b) => a.model.localeCompare(b.model));
return response<ListCatalogModelsResponse>(res, {
data: { models },
success: true,