import type { ProviderConfig } from "../config/persisted-config"; export const DEFAULT_CHAT_PROVIDER = "openai"; export interface ParsedProviderModel { provider: string; modelId: string;} export interface ProviderRouteConfig { baseUrl: string; apiKey: string;} export interface ControllerProviderRoutingConfig { providers?: ProviderConfig[];} export const parseProviderModel = (rawModel: string): ParsedProviderModel => { const trimmed = rawModel.trim(); if (!trimmed) { return { provider: DEFAULT_CHAT_PROVIDER, modelId: "" }; } const delimiter = trimmed.indexOf("/"); if (delimiter > 0 && delimiter < trimmed.length - 1) { const provider = trimmed.slice(0, delimiter).trim(); const modelId = trimmed.slice(delimiter + 1).trim(); if (modelId.length > 0) { return { provider: provider || DEFAULT_CHAT_PROVIDER, modelId }; } } return { provider: DEFAULT_CHAT_PROVIDER, modelId: trimmed };}; export const resolveConfiguredProviderConfig = ( providerId: string, providers: ProviderConfig[] = [],): ProviderRouteConfig | null => { const match = providers.find((p) => p.id.toLowerCase() === providerId.toLowerCase() && p.enabled); if (!match || !match.api_key) return null; return { baseUrl: match.base_url, apiKey: match.api_key };}; export const resolveProviderConfig = ( provider: string, config: ControllerProviderRoutingConfig = {},): ProviderRouteConfig | null => { return resolveConfiguredProviderConfig(provider, config.providers);};
import type { ProviderConfig } from "../config/persisted-config";
export const DEFAULT_CHAT_PROVIDER = "openai";
export interface ParsedProviderModel {
provider: string;
modelId: string;
}
export interface ProviderRouteConfig {
baseUrl: string;
apiKey: string;
}
export interface ControllerProviderRoutingConfig {
providers?: ProviderConfig[];
}
export const parseProviderModel = (rawModel: string): ParsedProviderModel => {
const trimmed = rawModel.trim();
if (!trimmed) {
return { provider: DEFAULT_CHAT_PROVIDER, modelId: "" };
}
const delimiter = trimmed.indexOf("/");
if (delimiter > 0 && delimiter < trimmed.length - 1) {
const provider = trimmed.slice(0, delimiter).trim();
const modelId = trimmed.slice(delimiter + 1).trim();
if (modelId.length > 0) {
return { provider: provider || DEFAULT_CHAT_PROVIDER, modelId };
}
}
return { provider: DEFAULT_CHAT_PROVIDER, modelId: trimmed };
};
export const resolveConfiguredProviderConfig = (
providerId: string,
providers: ProviderConfig[] = [],
): ProviderRouteConfig | null => {
const match = providers.find((p) => p.id.toLowerCase() === providerId.toLowerCase() && p.enabled);
if (!match || !match.api_key) return null;
return { baseUrl: match.base_url, apiKey: match.api_key };
};
export const resolveProviderConfig = (
provider: string,
config: ControllerProviderRoutingConfig = {},
): ProviderRouteConfig | null => {
return resolveConfiguredProviderConfig(provider, config.providers);
};