import { resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agents/agent-scope.js"; import { resolveDefaultAgentWorkspaceDir } from "../agents/workspace.js"; import { loadConfig } from "../config/config.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { loadOpenClawPlugins } from "./loader.js"; import { createPluginLoaderLogger } from "./logger.js"; import type { PluginRegistry } from "./registry.js"; export type PluginStatusReport = PluginRegistry & { workspaceDir?: string; }; const log = createSubsystemLogger("plugins"); export function buildPluginStatusReport(params?: { config?: ReturnType; workspaceDir?: string; /** Use an explicit env when plugin roots should resolve independently from process.env. */ env?: NodeJS.ProcessEnv; }): PluginStatusReport { const config = params?.config ?? loadConfig(); const workspaceDir = params?.workspaceDir ? params.workspaceDir : (resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config)) ?? resolveDefaultAgentWorkspaceDir()); const registry = loadOpenClawPlugins({ config, workspaceDir, env: params?.env, logger: createPluginLoaderLogger(log), }); return { workspaceDir, ...registry, }; }