openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
85 lines (84 loc) • 4.37 kB
JavaScript
import { r as normalizeProviderId } from "./provider-id-DMd-TDFp.js";
import { a as resolveMergedModelProviderModels, r as resolveMergedModelProviderConfig, t as createModelProviderRouteOverrideResolver } from "./model-provider-config-DX4Bzd5F.js";
import { t as projectConfigOntoRuntimeSourceSnapshot } from "./runtime-source-projection-DOHmC11j.js";
import { t as resolveDirectBundledProviderPolicySurface } from "./provider-policy-surface-D4OLLhsN.js";
//#region src/plugins/provider-model-routes.ts
/** Generic adapter for provider-owned model route public artifacts. */
/** Resolves provider-owned catalog id equivalence without loading its runtime. */
function resolveProviderModelCatalogId(params) {
const provider = normalizeProviderId(params.provider);
const normalized = (params.surface === void 0 ? resolveDirectBundledProviderPolicySurface(provider) : params.surface)?.normalizeModelCatalogId?.({
provider,
modelId: params.modelId
});
return typeof normalized === "string" && normalized.trim() ? normalized.trim() : null;
}
function normalizeModelId(provider, modelId, surface) {
const trimmed = modelId?.trim();
if (!trimmed) return;
const canonical = surface?.normalizeModelCatalogId?.({
provider,
modelId: trimmed
});
return typeof canonical === "string" && canonical.trim() ? canonical.trim() : trimmed;
}
function projectConfiguredModelRoute(model) {
return {
...Object.hasOwn(model, "api") ? { api: model.api } : {},
...Object.hasOwn(model, "baseUrl") ? { baseUrl: model.baseUrl } : {}
};
}
/** Captures one provider artifact and config view for repeated row resolution. */
function createProviderModelRoutesResolver(params) {
const provider = normalizeProviderId(params.provider);
if (!provider) return () => null;
const surface = params.surface === void 0 ? resolveDirectBundledProviderPolicySurface(provider) : params.surface;
const resolveModelRoutes = surface?.resolveModelRoutes;
if (!resolveModelRoutes) return () => null;
const providerConfig = resolveMergedModelProviderConfig(params.config, provider);
const authoredConfig = params.config ? projectConfigOntoRuntimeSourceSnapshot(params.config) : void 0;
const configuredProvider = providerConfig ? {
api: providerConfig.api,
baseUrl: providerConfig.baseUrl
} : void 0;
const canonicalizeModelId = (modelId) => normalizeModelId(provider, modelId, surface) ?? modelId.trim();
const configuredModels = new Map(Array.from(resolveMergedModelProviderModels({
models: providerConfig?.models,
normalizeModelId: canonicalizeModelId
}), ([modelId, model]) => [modelId, projectConfiguredModelRoute(model)]));
const resolveRouteOverridePresence = params.requestTransportOverrides === "present" ? () => "present" : createModelProviderRouteOverrideResolver({
provider,
authoredConfig,
canonicalizeModelId
});
const providerRouteOverridePresence = resolveRouteOverridePresence();
const routeOverridePresenceByModel = new Map(Array.from(configuredModels.keys(), (modelId) => [modelId, resolveRouteOverridePresence(modelId)]));
const env = params.env ?? process.env;
return (observed) => {
const modelId = normalizeModelId(provider, observed?.modelId, surface);
const configuredModel = modelId ? configuredModels.get(modelId) : void 0;
const requestTransportOverrides = modelId ? routeOverridePresenceByModel.get(modelId) ?? providerRouteOverridePresence : providerRouteOverridePresence;
const observedRoutes = observed?.observedRoutes?.filter((route) => route.api != null || route.baseUrl !== void 0 && route.baseUrl !== null);
return resolveModelRoutes({
provider,
...modelId ? { modelId } : {},
requestTransportOverrides,
...configuredModel ? { configuredModel } : {},
...configuredProvider ? { configuredProvider } : {},
env,
...observedRoutes && observedRoutes.length > 0 ? { observedRoutes } : {}
}) ?? null;
};
}
/** Resolves one model route through its bundled provider public artifact. */
function resolveProviderModelRoutes(params) {
return createProviderModelRoutesResolver(params)({
modelId: params.modelId,
observedRoutes: params.api != null || params.baseUrl !== void 0 && params.baseUrl !== null ? [{
api: params.api,
baseUrl: params.baseUrl
}] : void 0
});
}
//#endregion
export { resolveProviderModelCatalogId as n, resolveProviderModelRoutes as r, createProviderModelRoutesResolver as t };