Files
OmniRoute/src/shared/constants/modelSupportedEndpoints.ts
Diego Rodrigues de Sa e Souza b4ec7807ab Release v3.8.50
Release v3.8.50 — see CHANGELOG.md for the full entry.
2026-08-26 14:25:01 -03:00

55 lines
1.8 KiB
TypeScript

export const MODEL_SUPPORTED_ENDPOINT_VALUES = [
"chat",
"embeddings",
"rerank",
"images",
"videos",
"audio-speech",
"audio-transcriptions",
"images-generations",
// Persisted legacy values remain valid input and normalize on write/edit.
"video",
"audio",
] as const;
export type ModelSupportedEndpoint = (typeof MODEL_SUPPORTED_ENDPOINT_VALUES)[number];
export function normalizeModelSupportedEndpoints(endpoints: readonly string[]): string[] {
const normalized: string[] = [];
const add = (endpoint: string) => {
if (!normalized.includes(endpoint)) normalized.push(endpoint);
};
for (const endpoint of endpoints) {
if (endpoint === "video") {
add("videos");
} else if (endpoint === "audio") {
add("audio-speech");
add("audio-transcriptions");
} else {
add(endpoint);
}
}
return normalized;
}
export function classifyModelSupportedEndpoints(endpoints: readonly string[]): {
type?: "embedding" | "rerank" | "image" | "video" | "audio";
subtype?: "speech" | "transcription";
} {
if (endpoints.includes("embeddings")) return { type: "embedding" };
if (endpoints.includes("rerank")) return { type: "rerank" };
if (endpoints.includes("images")) return { type: "image" };
if (endpoints.includes("videos") || endpoints.includes("video")) return { type: "video" };
const supportsSpeech = endpoints.includes("audio-speech");
const supportsTranscription =
endpoints.includes("audio-transcriptions") || endpoints.includes("audio");
if (!supportsSpeech && !supportsTranscription) return {};
if (supportsSpeech && !supportsTranscription) return { type: "audio", subtype: "speech" };
if (supportsTranscription && !supportsSpeech) {
return { type: "audio", subtype: "transcription" };
}
return { type: "audio" };
}