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
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"]),
|
|
};
|
|
}
|
|
|