UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

36 lines (35 loc) 1.76 kB
import { i as resolveGlobalSingleton } from "./global-singleton-Dc_stLtU.js"; import { d as resolveConfigDir } from "./utils-P__uGsPB.js"; import { w as resolveStateDir } from "./paths-D2sRr1a_.js"; import path from "node:path"; import { AsyncLocalStorage } from "node:async_hooks"; import os from "node:os"; //#region src/plugins/install-root-context.ts const pluginInstallRootContext = resolveGlobalSingleton(Symbol.for("openclaw.pluginInstallRootContext"), () => new AsyncLocalStorage()); /** Resolve the ordinary operator-owned plugin roots before a run redirects state. */ function resolvePluginInstallRoots(env = process.env, homedir = os.homedir) { const configDir = resolveConfigDir(env, homedir); return Object.freeze({ extensionsDir: path.join(configDir, "extensions"), gitDir: path.join(configDir, "git"), npmDir: path.join(configDir, "npm"), stateDir: resolveStateDir(env, homedir) }); } /** Return run-pinned install roots, or resolve the caller's ordinary roots. */ function resolveActivePluginInstallRoots(env = process.env, homedir = os.homedir) { return pluginInstallRootContext.getStore() ?? resolvePluginInstallRoots(env, homedir); } /** Return whether the current run pinned operator-owned plugin install roots. */ function hasActivePluginInstallRoots() { return pluginInstallRootContext.getStore() !== void 0; } /** * Keep plugin discovery on one operator-owned install generation while a run * redirects OPENCLAW_STATE_DIR for ephemeral sessions and runtime state. */ function withPluginInstallRoots(roots, run) { return pluginInstallRootContext.run(roots, run); } //#endregion export { withPluginInstallRoots as i, resolveActivePluginInstallRoots as n, resolvePluginInstallRoots as r, hasActivePluginInstallRoots as t };