mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-24 16:12:23 +03:00
Validated on the combined 8-PR board: ollama-local-capabilities-routing 3/3, managed-model-import 9/9 (including the integration with the carried Gemini-3.5-Flash cleanup from #11259), 88/88 across the board's focused suites, typecheck:core + dashboard-typecheck clean, gates within baseline. This brings #11088 to the release line — it had squash-merged to main by base error (mine) — AND fixes the two defects the port caught: the global filter drop that leaked image/video models into OpenAI chat selections (now scoped to self-hosted providers) and the unregistered hard-lease credential site. Exemplary port discipline: byte-identical carry + the corrections in a separate reviewable commit + the superpowers docs deliberately left out. main still needs the same two-line fix. Thank you @yourspraveen!
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { getSyncedAvailableModelsByConnection } from "@/lib/db/models";
|
|
import { isSelfHostedChatProvider, resolveProviderId } from "@/shared/constants/providers";
|
|
|
|
export type LocalSyncedEndpointRoute = {
|
|
provider: string;
|
|
model: string;
|
|
connectionIds: string[];
|
|
};
|
|
|
|
export async function resolveLocalSyncedEndpointRoute(
|
|
modelStr: string,
|
|
endpoint: "embeddings" | "images"
|
|
): Promise<LocalSyncedEndpointRoute | null> {
|
|
const slashIndex = modelStr.indexOf("/");
|
|
if (slashIndex <= 0 || slashIndex === modelStr.length - 1) return null;
|
|
|
|
const provider = resolveProviderId(modelStr.slice(0, slashIndex));
|
|
const model = modelStr.slice(slashIndex + 1);
|
|
if (!isSelfHostedChatProvider(provider)) return null;
|
|
|
|
const byConnection = await getSyncedAvailableModelsByConnection(provider);
|
|
const connectionIds = Object.entries(byConnection)
|
|
.filter(([, models]) =>
|
|
models.some(
|
|
(candidate) => candidate.id === model && candidate.supportedEndpoints?.includes(endpoint)
|
|
)
|
|
)
|
|
.map(([connectionId]) => connectionId);
|
|
|
|
return connectionIds.length > 0 ? { provider, model, connectionIds } : null;
|
|
}
|