ai_api / src /shared /utils /providerDisplayLabel.ts
Yogesh
initial deploy
cd8bd0a
Raw
History Blame Contribute Delete
1.96 kB
/**
* Get a friendly display label for compatible providers.
* Converts long IDs like "openai-compatible-chat-02669115-2545-4896-b003-cb4dac09d441"
* to readable labels. If providerNodes are available, uses user-defined name;
* otherwise falls back to "OAI-COMPAT" / "ANT-COMPAT".
*
* @param provider - The raw provider ID string from a request log or active request.
* @param providerNodes - Optional array of provider node objects (from /api/provider-nodes).
* @returns A human-readable label for compatible providers, or `null` if the provider
* is not an openai-compatible-* or anthropic-compatible-* provider (caller
* should use its own default in that case).
*/
export function getProviderDisplayLabel(
provider: string,
providerNodes?: Array<{ id?: string; prefix?: string; name?: string }>
): string | null {
if (!provider) return "-";
if (provider.startsWith("openai-compatible-") || provider.startsWith("anthropic-compatible-")) {
// Try to find user-defined name from provider nodes
if (providerNodes?.length) {
const matchedNode = providerNodes.find(
(node) => node.id === provider || node.prefix === provider
);
if (matchedNode?.name) return matchedNode.name;
}
// Fallback to generic labels
if (provider.startsWith("openai-compatible-")) {
const suffix = provider.replace("openai-compatible-", "");
const parts = suffix.split("-");
if (parts.length > 1 && parts[1]?.length >= 8) return `OAI-COMPAT`;
return `OAI: ${suffix.slice(0, 16).toUpperCase()}`;
}
if (provider.startsWith("anthropic-compatible-")) {
const suffix = provider.replace("anthropic-compatible-", "");
const parts = suffix.split("-");
if (parts.length > 1 && parts[1]?.length >= 8) return `ANT-COMPAT`;
return `ANT: ${suffix.slice(0, 16).toUpperCase()}`;
}
}
return null; // Not a compatible provider, use default PROVIDER_COLORS
}