import type { OpenClawConfig } from "../config/types.js" ;
export type ProviderModelRef = {
provider: string;
model: string;
};
export function resolveConfiguredProviderFallback(params: {
cfg: Pick<OpenClawConfig, "models" >;
defaultProvider: string;
defaultModel?: string;
}): ProviderModelRef | null {
const configuredProviders = params.cfg.models?.providers;
if (!configuredProviders || typeof configuredProviders !== "object" ) {
return null ;
}
const defaultProviderConfig = configuredProviders[params.defaultProvider];
const defaultModel = params.defaultModel?.trim();
const defaultProviderHasDefaultModel =
!!defaultProviderConfig &&
!!defaultModel &&
Array.isArray(defaultProviderConfig.models) &&
defaultProviderConfig.models.some((model) => model?.id === defaultModel);
if (defaultProviderConfig && (!defaultModel || defaultProviderHasDefaultModel)) {
return null ;
}
const availableProvider = Object.entries(configuredProviders).find(
([, providerCfg]) =>
providerCfg &&
Array.isArray(providerCfg.models) &&
providerCfg.models.length > 0 &&
providerCfg.models[0 ]?.id,
);
if (!availableProvider) {
return null ;
}
const [provider, providerCfg] = availableProvider;
return { provider, model: providerCfg.models[0 ].id };
}
Messung V0.5 in Prozent C=99 H=98 G=98
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland