UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

137 lines (136 loc) 7.38 kB
import { o as getPluginCacheRoot, s as getPluginCacheSource } from "./plugin-cache-DGWspMEc.js"; import { i as resolveBundledPluginsDir, t as areBundledPluginsDisabled } from "./bundled-dir-BEfbEeCF.js"; import { n as getCachedPluginSourceModuleLoader } from "./plugin-module-loader-cache-lf3kAaBw.js"; import { s as resolveLoaderPackageRoot } from "./sdk-alias-BMTmaiMP.js"; import { a as loadFacadeModuleAtLocationSync, c as resolveBundledMetadataManifestRecord, i as loadBundledPluginPublicSurfaceModuleSyncCore, o as createFacadeResolutionKey$1, s as resolveBundledFacadeModuleLocation } from "./facade-loader-CVT-xVW5.js"; import { createRequire } from "node:module"; import { fileURLToPath } from "node:url"; import path from "node:path"; //#region src/plugin-sdk/facade-runtime.ts const OPENCLAW_PACKAGE_ROOT = resolveLoaderPackageRoot({ modulePath: fileURLToPath(import.meta.url), moduleUrl: import.meta.url }) ?? fileURLToPath(new URL("../..", import.meta.url)); const CURRENT_MODULE_PATH = fileURLToPath(import.meta.url); const OPENCLAW_SOURCE_EXTENSIONS_ROOT = path.resolve(OPENCLAW_PACKAGE_ROOT, "extensions"); function createFacadeResolutionKey(params) { const bundledPluginsDir = resolveBundledPluginsDir(params.env ?? process.env); return createFacadeResolutionKey$1({ ...params, bundledPluginsDir, ...params.env ? { env: params.env } : {} }); } function resolveRegistryPluginModuleLocation(params) { return loadFacadeActivationCheckRuntime().resolveRegistryPluginModuleLocation(params); } function resolveFacadeModuleLocationUncached(params) { const env = params.env ?? process.env; if (!areBundledPluginsDisabled(env)) { const bundledPluginsDir = resolveBundledPluginsDir(env); const bundledLocation = resolveBundledFacadeModuleLocation({ ...params, currentModulePath: CURRENT_MODULE_PATH, packageRoot: OPENCLAW_PACKAGE_ROOT, bundledPluginsDir }); if (bundledLocation) return bundledLocation; } return resolveRegistryPluginModuleLocation(params); } function resolveFacadeModuleLocation(params) { if (params.env !== void 0 && params.env !== process.env) return resolveFacadeModuleLocationUncached(params); const resolutionKey = `facade-registry:${createFacadeResolutionKey(params)}`; const artifacts = getPluginCacheRoot(OPENCLAW_PACKAGE_ROOT).artifacts; const cached = artifacts.get(resolutionKey); if (cached !== void 0) return cached; const location = resolveFacadeModuleLocationUncached(params); artifacts.set(resolutionKey, location); return location; } const nodeRequire = createRequire(import.meta.url); const FACADE_ACTIVATION_CHECK_RUNTIME_CANDIDATES = ["./facade-activation-check.runtime.js", "./facade-activation-check.runtime.ts"]; function getFacadeActivationCheckRuntimeModule() { return getPluginCacheSource(CURRENT_MODULE_PATH).variants.get("activation-runtime")?.exports?.value; } function setFacadeActivationCheckRuntimeModule(module) { getPluginCacheSource(CURRENT_MODULE_PATH).variants.set("activation-runtime", { exports: { value: module } }); } function getFacadeActivationCheckRuntimeSourceLoader(modulePath) { return getCachedPluginSourceModuleLoader({ modulePath, importerUrl: import.meta.url, loaderFilename: import.meta.url }); } function loadFacadeActivationCheckRuntimeFromCandidates(loadCandidate) { for (const candidate of FACADE_ACTIVATION_CHECK_RUNTIME_CANDIDATES) try { return loadCandidate(candidate); } catch {} } function throwFacadeActivationCheckRuntimeUnavailable() { throw new Error("Unable to load facade activation check runtime"); } function loadFacadeActivationCheckRuntime() { let facadeActivationCheckRuntimeModule = getFacadeActivationCheckRuntimeModule(); if (facadeActivationCheckRuntimeModule) return facadeActivationCheckRuntimeModule; facadeActivationCheckRuntimeModule = loadFacadeActivationCheckRuntimeFromCandidates((candidate) => nodeRequire(candidate)); if (facadeActivationCheckRuntimeModule) { setFacadeActivationCheckRuntimeModule(facadeActivationCheckRuntimeModule); return facadeActivationCheckRuntimeModule; } facadeActivationCheckRuntimeModule = loadFacadeActivationCheckRuntimeFromCandidates((candidate) => getFacadeActivationCheckRuntimeSourceLoader(candidate)(candidate)); if (facadeActivationCheckRuntimeModule) { setFacadeActivationCheckRuntimeModule(facadeActivationCheckRuntimeModule); return facadeActivationCheckRuntimeModule; } return throwFacadeActivationCheckRuntimeUnavailable(); } async function loadFacadeActivationCheckRuntimeAsync() { const module = getFacadeActivationCheckRuntimeModule() ?? await import("./facade-activation-check.runtime.js"); setFacadeActivationCheckRuntimeModule(module); return module; } function buildFacadeActivationCheckParams(params, location = resolveFacadeModuleLocation(params)) { return { ...params, location, sourceExtensionsRoot: OPENCLAW_SOURCE_EXTENSIONS_ROOT }; } /** Load a bundled or registry-backed plugin public surface, tracking activation ownership. */ function loadBundledPluginPublicSurfaceModuleSync(params) { const location = resolveFacadeModuleLocation(params); const trackingParams = buildFacadeActivationCheckParams(params, location); const trackedPluginId = () => resolveBundledMetadataManifestRecord(trackingParams)?.id ?? loadFacadeActivationCheckRuntime().resolveTrackedFacadePluginId(trackingParams); if (!location) return loadBundledPluginPublicSurfaceModuleSyncCore({ ...params, trackedPluginId }); return loadFacadeModuleAtLocationSync({ location, trackedPluginId }); } /** Load an activated plugin public surface or throw when activation policy blocks access. */ function loadActivatedBundledPluginPublicSurfaceModuleSync(params) { loadFacadeActivationCheckRuntime().resolveActivatedBundledPluginPublicSurfaceAccessOrThrow(buildFacadeActivationCheckParams(params)); return loadBundledPluginPublicSurfaceModuleSync(params); } /** Load activation asynchronously; allowed public artifacts still use the synchronous loader. */ async function loadActivatedBundledPluginPublicSurfaceModule(params) { (await loadFacadeActivationCheckRuntimeAsync().catch(throwFacadeActivationCheckRuntimeUnavailable)).resolveActivatedBundledPluginPublicSurfaceAccessOrThrow(buildFacadeActivationCheckParams(params)); return loadBundledPluginPublicSurfaceModuleSync(params); } /** Load an activated plugin public surface, returning null when activation policy blocks access. */ function tryLoadActivatedBundledPluginPublicSurfaceModuleSync(params) { if (!loadFacadeActivationCheckRuntime().resolveBundledPluginPublicSurfaceAccess(buildFacadeActivationCheckParams(params)).allowed) return null; return loadBundledPluginPublicSurfaceModuleSync(params); } /** Async variant of tryLoadActivatedBundledPluginPublicSurfaceModuleSync for async call sites. */ async function tryLoadActivatedBundledPluginPublicSurfaceModule(params) { if (!(await loadFacadeActivationCheckRuntimeAsync()).resolveBundledPluginPublicSurfaceAccess(buildFacadeActivationCheckParams(params)).allowed) return null; return loadBundledPluginPublicSurfaceModuleSync(params); } //#endregion export { tryLoadActivatedBundledPluginPublicSurfaceModuleSync as a, tryLoadActivatedBundledPluginPublicSurfaceModule as i, loadActivatedBundledPluginPublicSurfaceModuleSync as n, loadBundledPluginPublicSurfaceModuleSync as r, loadActivatedBundledPluginPublicSurfaceModule as t };