You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
1.6 KiB

import type { ProviderSettings, ProviderType } from "@/types/providers";
export const POPI_PROVIDER_ID: ProviderType = "popiserver";
export const POPI_PROVIDER_NAME = "Popi Models";
export const PROVIDER_IDS: ProviderType[] = [
"popiserver",
"newapiwg",
"gemini",
"openai",
"anthropic",
"replicate",
"fal",
"kie",
"wavespeed",
];
export function getProviderMode(): "popi" | "multi" {
const mode =
process.env.NEXT_PUBLIC_PROVIDER_MODE ||
process.env.PROVIDER_MODE ||
"popi";
return mode.toLowerCase() === "multi" ? "multi" : "popi";
}
export function isPopiProviderMode(): boolean {
return getProviderMode() === "popi";
}
export function getProviderDisplayName(provider: ProviderType): string {
switch (provider) {
case "popiserver":
return POPI_PROVIDER_NAME;
case "newapiwg":
return "NewApiWG";
case "gemini":
return "Gemini";
case "openai":
return "OpenAI";
case "anthropic":
return "Anthropic";
case "replicate":
return "Replicate";
case "fal":
return "fal.ai";
case "kie":
return "Kie.ai";
case "wavespeed":
return "WaveSpeed";
}
}
export function applyProviderModeToSettings(settings: ProviderSettings): ProviderSettings {
if (!isPopiProviderMode()) return settings;
return {
providers: PROVIDER_IDS.reduce((providers, providerId) => {
providers[providerId] = {
...settings.providers[providerId],
enabled: providerId === POPI_PROVIDER_ID,
name: getProviderDisplayName(providerId),
};
return providers;
}, {} as ProviderSettings["providers"]),
};
}