UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

138 lines (137 loc) 4.42 kB
import { n as defaultRuntime, r as writeRuntimeJson } from "./runtime-B4lgFmsS.js"; import { i as getRuntimeConfig } from "./io-Gi7-pyU-.js"; import "./config-C9RxTsn1.js"; //#region src/cli/plugins-list-command.ts const quietPluginJsonLogger = { debug: () => void 0, info: () => void 0, warn: () => void 0, error: () => void 0 }; async function loadHumanListModules() { const [sourceDisplay, table, themeModule, commandFormat, listFormat] = await Promise.all([ import("./source-display-BJYYPpXR.js"), import("./terminal-core/table.js"), import("./terminal-core/theme.js"), import("./command-format-XdapRFrK.js"), import("./plugins-list-format-CLu7TPZo.js") ]); return { formatPluginLine: listFormat.formatPluginLine, formatPluginSourceForTable: sourceDisplay.formatPluginSourceForTable, formatCliCommand: commandFormat.formatCliCommand, getTerminalTableWidth: table.getTerminalTableWidth, renderTable: table.renderTable, resolvePluginSourceRoots: sourceDisplay.resolvePluginSourceRoots, theme: themeModule.theme }; } /** Render installed plugin discovery state as JSON, compact table, or verbose text. */ async function runPluginsListCommand(opts, runtime = defaultRuntime) { const { buildPluginRegistrySnapshotReport } = await import("./status-snapshot-D4Q8iG27.js"); const report = buildPluginRegistrySnapshotReport({ config: getRuntimeConfig(), ...opts.json ? { logger: quietPluginJsonLogger } : {} }); const list = opts.enabled ? report.plugins.filter((p) => p.enabled) : report.plugins; if (opts.json) { writeRuntimeJson(runtime, { workspaceDir: report.workspaceDir, registry: { source: report.registrySource, diagnostics: report.registryDiagnostics }, plugins: list, diagnostics: report.diagnostics }); return; } const { formatCliCommand, formatPluginLine, formatPluginSourceForTable, getTerminalTableWidth, renderTable, resolvePluginSourceRoots, theme } = await loadHumanListModules(); if (list.length === 0) { runtime.log(theme.muted(`No plugins found. Run ${formatCliCommand("openclaw plugins install <plugin>")} to add one, or ${formatCliCommand("openclaw plugins list --json")} to inspect raw discovery state.`)); return; } const enabled = list.filter((p) => p.enabled).length; runtime.log(`${theme.heading("Plugins")} ${theme.muted(`(${enabled}/${list.length} enabled)`)}`); if (!opts.verbose) { const tableWidth = getTerminalTableWidth(); const sourceRoots = resolvePluginSourceRoots({ workspaceDir: report.workspaceDir }); const usedRoots = /* @__PURE__ */ new Set(); const rows = list.map((plugin) => { const desc = plugin.description ? theme.muted(plugin.description) : ""; const formattedSource = formatPluginSourceForTable(plugin, sourceRoots); if (formattedSource.rootKey) usedRoots.add(formattedSource.rootKey); const sourceLine = desc ? `${formattedSource.value}\n${desc}` : formattedSource.value; return { Name: plugin.name || plugin.id, ID: plugin.name && plugin.name !== plugin.id ? plugin.id : "", Format: plugin.format ?? "openclaw", Status: plugin.status === "error" ? theme.error("error") : plugin.enabled ? theme.success("enabled") : theme.warn("disabled"), Source: sourceLine, Version: plugin.version ?? "" }; }); if (usedRoots.size > 0) { runtime.log(theme.muted("Source roots:")); for (const key of [ "stock", "workspace", "global" ]) { if (!usedRoots.has(key)) continue; const dir = sourceRoots[key]; if (!dir) continue; runtime.log(` ${theme.command(`${key}:`)} ${theme.muted(dir)}`); } runtime.log(""); } runtime.log(renderTable({ width: tableWidth, columns: [ { key: "Name", header: "Name", minWidth: 14, flex: true }, { key: "ID", header: "ID", minWidth: 10, flex: true }, { key: "Format", header: "Format", minWidth: 9 }, { key: "Status", header: "Status", minWidth: 10 }, { key: "Source", header: "Source", minWidth: 26, flex: true }, { key: "Version", header: "Version", minWidth: 8 } ], rows }).trimEnd()); return; } const lines = []; for (const plugin of list) { lines.push(formatPluginLine(plugin, true)); lines.push(""); } runtime.log(lines.join("\n").trim()); } //#endregion export { runPluginsListCommand };