openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
97 lines (96 loc) • 4.86 kB
JavaScript
import { c as normalizeOptionalLowercaseString } from "./string-coerce-6kR-86XC.mjs";
import { l as normalizePluginsConfig } from "./config-state-1t-kMQI9.mjs";
import { f as hasNonEmptyPluginIdScope } from "./current-plugin-metadata-snapshot-BvP9Ow4r.mjs";
import { l as resolveConfiguredChannelPluginIds } from "./channel-presence-policy-DyxxRfG3.mjs";
import { r as loadOpenClawPlugins } from "./loader-runtime-load-lwNg_N_C.mjs";
import { n as buildPluginRuntimeLoadOptions } from "./load-context-CMDQ-dOD.mjs";
import { v as collectConfiguredMemoryEmbeddingProviderIds } from "./gateway-startup-plugin-config-J-HqkJwK.mjs";
import { r as resolveChannelPluginIds } from "./gateway-startup-plugin-loader-BUrDKoel.mjs";
import { t as createInstalledPluginIndexScopeLookup } from "./installed-plugin-index-scope-lookup-By4QTjbZ.mjs";
import "./gateway-startup-plugin-ids-CXPV_6da.mjs";
import "./channel-plugin-ids-BpFuIDEj.mjs";
import { n as withActivatedPluginIds } from "./activation-context-riYzEaGm.mjs";
import "./loader-DPiNpDHK.mjs";
import { t as resolvePluginRuntimeLoadContext } from "./load-context.resolve-Dub5an01.mjs";
import { t as resolveEffectivePluginIds } from "./effective-plugin-ids-D93D6sGH.mjs";
//#region src/plugins/runtime/runtime-registry-loader.ts
const CORE_SANDBOX_BACKEND_IDS = /* @__PURE__ */ new Set([
"docker",
"podman",
"ssh"
]);
function resolveMemoryPluginIds(context) {
const configuredProviderIds = [...collectConfiguredMemoryEmbeddingProviderIds(context.activationSourceConfig)];
const pluginIds = /* @__PURE__ */ new Set();
if (context.metadataSnapshot) createInstalledPluginIndexScopeLookup(context.metadataSnapshot.index).addProviderContributionOwners(pluginIds, configuredProviderIds);
else for (const providerId of configuredProviderIds) pluginIds.add(providerId);
const memoryPluginId = normalizePluginsConfig(context.config.plugins).slots.memory?.trim();
if (memoryPluginId) pluginIds.add(memoryPluginId);
return [...pluginIds].toSorted();
}
function resolveSandboxBackendPluginIds(context, persistedBackendIds = []) {
if (!context.metadataSnapshot) return [];
const agents = context.activationSourceConfig.agents;
const configuredBackendIds = [
agents?.defaults?.sandbox?.backend,
...Object.values(agents?.entries ?? {}).map((agent) => agent.sandbox?.backend),
...(agents?.list ?? []).map((agent) => agent.sandbox?.backend),
...persistedBackendIds
];
const lookup = createInstalledPluginIndexScopeLookup(context.metadataSnapshot.index);
const pluginIds = /* @__PURE__ */ new Set();
for (const backendId of configuredBackendIds) {
const normalizedBackendId = normalizeOptionalLowercaseString(backendId);
if (!normalizedBackendId || CORE_SANDBOX_BACKEND_IDS.has(normalizedBackendId) || !lookup.hasInstalledPluginIds([normalizedBackendId])) continue;
pluginIds.add(lookup.normalizePluginId(normalizedBackendId));
}
return [...pluginIds].toSorted();
}
function resolveScopePluginIds(params) {
if (params.scope === "configured-channels") return resolveConfiguredChannelPluginIds({
config: params.context.config,
activationSourceConfig: params.context.activationSourceConfig,
workspaceDir: params.context.workspaceDir,
env: params.context.env
});
if (params.scope === "channels") return resolveChannelPluginIds({
config: params.context.config,
workspaceDir: params.context.workspaceDir,
env: params.context.env
});
if (params.scope === "memory") return resolveMemoryPluginIds(params.context);
if (params.scope === "sandbox-backends") return resolveSandboxBackendPluginIds(params.context, params.persistedSandboxBackendIds);
return resolveEffectivePluginIds({
config: params.context.rawConfig,
workspaceDir: params.context.workspaceDir,
env: params.context.env
});
}
function ensurePluginRegistryLoaded(options) {
const scope = options?.scope ?? "all";
const context = resolvePluginRuntimeLoadContext(options);
const pluginIds = resolveScopePluginIds({
scope,
context,
persistedSandboxBackendIds: options?.persistedSandboxBackendIds
});
const activateConfigured = scope === "configured-channels" && pluginIds.length > 0;
const config = activateConfigured ? withActivatedPluginIds({
config: context.config,
pluginIds
}) ?? context.config : context.config;
const activationSourceConfig = activateConfigured ? withActivatedPluginIds({
config: context.activationSourceConfig,
pluginIds
}) ?? context.activationSourceConfig : context.activationSourceConfig;
loadOpenClawPlugins(buildPluginRuntimeLoadOptions({
...context,
config,
activationSourceConfig
}, {
throwOnLoadError: true,
...scope === "configured-channels" || scope === "memory" || scope === "sandbox-backends" || scope === "all" || hasNonEmptyPluginIdScope(pluginIds) ? { onlyPluginIds: pluginIds } : {}
}));
}
//#endregion
export { ensurePluginRegistryLoaded };