openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
22 lines (21 loc) • 1.28 kB
JavaScript
//#region src/agents/configured-provider-fallback.ts
/** Resolve the first configured provider/model that can replace a missing default. */
function resolveConfiguredProviderFallback(params) {
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 = Boolean(defaultProviderConfig) && Boolean(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;
const models = providerCfg.models;
if (!Array.isArray(models) || !models[0]?.id) return null;
return {
provider,
model: models[0].id
};
}
//#endregion
export { resolveConfiguredProviderFallback as t };