muthuk1's picture
Convert OpenMAIC from Next.js to React (Vite)
f56a29b verified
import type { ProviderId, ProviderType } from '@/lib/types/provider';
import type { ProviderSettings } from '@/lib/types/settings';
interface NewCustomProviderConfig {
name: string;
type: ProviderType;
baseUrl: string;
icon: string;
requiresApiKey: boolean;
}
export function formatContextWindow(size?: number): string {
if (!size) return '-';
// For M: prefer decimal (use decimal for exact thousands)
if (size >= 1000000) {
if (size % 1000000 === 0) {
return `${size / 1000000}M`;
}
return `${(size / 1000000).toFixed(1)}M`;
}
// For K: prefer decimal if divisible by 1000, otherwise use binary
if (size >= 1000) {
if (size % 1000 === 0) {
return `${size / 1000}K`;
}
return `${Math.floor(size / 1024)}K`;
}
return size.toString();
}
export function getProviderTypeLabel(type: string, t: (key: string) => string): string {
const translationKey = `settings.providerTypes.${type}`;
const translated = t(translationKey);
// If translation exists (not equal to key), use it; otherwise fallback to type
return translated !== translationKey ? translated : type;
}
export function createCustomProviderSettings(
providerData: NewCustomProviderConfig,
): ProviderSettings {
return {
apiKey: '',
baseUrl: providerData.baseUrl || '',
models: [],
name: providerData.name,
type: providerData.type,
defaultBaseUrl: providerData.baseUrl || undefined,
icon: providerData.icon || undefined,
requiresApiKey: providerData.requiresApiKey,
isBuiltIn: false,
};
}
interface VerifyModelRequestConfig {
providerId: ProviderId;
modelId: string;
apiKey?: string;
baseUrl?: string;
providerType?: ProviderType | string;
requiresApiKey?: boolean;
}
export function createVerifyModelRequest(config: VerifyModelRequestConfig) {
return {
apiKey: config.apiKey || '',
baseUrl: config.baseUrl || '',
model: `${config.providerId}:${config.modelId}`,
providerType: config.providerType,
requiresApiKey: config.requiresApiKey,
};
}