openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
65 lines (64 loc) • 2.85 kB
JavaScript
import { n as loadBundledPluginPublicArtifactModuleSync, r as loadPluginPublicArtifactModuleSync } from "./public-surface-loader-i-BsDNoA.js";
//#region src/plugins/provider-policy-surface.ts
const PROVIDER_POLICY_ARTIFACT_CANDIDATES = ["provider-policy-api.js"];
const PROVIDER_POLICY_HOOK_KEYS = [
"normalizeConfig",
"applyConfigDefaults",
"resolveConfigApiKey",
"resolveThinkingProfile",
"resolveModelRoutes",
"normalizeModelCatalogId",
"isResponseModelEquivalent",
"inspectEmbeddingProviderSetup"
];
function extractProviderPolicySurface(mod) {
const surface = {};
if (Array.isArray(mod.deprecatedProfileIds) && mod.deprecatedProfileIds.every((value) => typeof value === "string")) surface.deprecatedProfileIds = mod.deprecatedProfileIds;
for (const key of PROVIDER_POLICY_HOOK_KEYS) {
const hook = mod[key];
if (typeof hook === "function") Object.assign(surface, { [key]: hook });
}
return Object.keys(surface).length > 0 ? surface : null;
}
function extractBundledProviderPolicySurface(mod) {
const surface = extractProviderPolicySurface(mod) ?? {};
if (typeof mod.projectConfiguredModelRow === "function") surface.projectConfiguredModelRow = mod.projectConfiguredModelRow;
return Object.keys(surface).length > 0 ? surface : null;
}
function resolveProviderPolicySurface(params) {
for (const artifactBasename of PROVIDER_POLICY_ARTIFACT_CANDIDATES) try {
const mod = params.loadModule(artifactBasename);
const surface = params.extractSurface(mod);
if (surface) return surface;
} catch (error) {
if (error instanceof Error && error.message.startsWith(params.missingSurfacePrefix)) continue;
throw error;
}
return null;
}
/** Loads policy hooks directly by canonical bundled plugin id. */
function resolveDirectBundledProviderPolicySurface(pluginId) {
if (pluginId === "." || pluginId === ".." || pluginId.includes("/") || pluginId.includes("\\") || pluginId.includes(":")) return null;
return resolveProviderPolicySurface({
loadModule: (artifactBasename) => loadBundledPluginPublicArtifactModuleSync({
dirName: pluginId,
artifactBasename
}),
missingSurfacePrefix: "Unable to resolve bundled plugin public surface ",
extractSurface: extractBundledProviderPolicySurface
});
}
/** Loads policy hooks from a host-verified official external plugin install. */
function resolveTrustedExternalProviderPolicySurface(params) {
if (params.trustedOfficialInstall !== true) return null;
return resolveProviderPolicySurface({
loadModule: (artifactBasename) => loadPluginPublicArtifactModuleSync({
pluginRoot: params.pluginRoot,
artifactBasename
}),
missingSurfacePrefix: "Unable to resolve plugin public surface ",
extractSurface: extractProviderPolicySurface
});
}
//#endregion
export { resolveTrustedExternalProviderPolicySurface as n, resolveDirectBundledProviderPolicySurface as t };