





















@@ -5,51 +5,14 @@ import { loadConfig, readConfigFileSnapshot, replaceConfigFile } from "../config
55import { resolveStateDir } from "../config/paths.js";
66import type { OpenClawConfig } from "../config/types.openclaw.js";
77import type { PluginInstallRecord } from "../config/types.plugins.js";
8-import { enablePluginInConfig } from "../plugins/enable.js";
9-import {
10-loadInstalledPluginIndexInstallRecords,
11-removePluginInstallRecordFromRecords,
12-withoutPluginInstallRecords,
13-withPluginInstallRecords,
14-} from "../plugins/installed-plugin-index-records.js";
15-import { listMarketplacePlugins } from "../plugins/marketplace.js";
16-import { inspectPluginRegistry, refreshPluginRegistry } from "../plugins/plugin-registry.js";
178import { formatPluginSourceForTable, resolvePluginSourceRoots } from "../plugins/source-display.js";
18-import {
19-buildAllPluginInspectReports,
20-buildPluginDiagnosticsReport,
21-buildPluginCompatibilityNotices,
22-buildPluginInspectReport,
23-buildPluginRegistrySnapshotReport,
24-formatPluginCompatibilityNotice,
25-} from "../plugins/status.js";
269import type { PluginLogger } from "../plugins/types.js";
27-import {
28-applyPluginUninstallDirectoryRemoval,
29-formatUninstallActionLabels,
30-formatUninstallSlotResetPreview,
31-planPluginUninstall,
32-resolveUninstallChannelConfigKeys,
33-UNINSTALL_ACTION_LABELS,
34-} from "../plugins/uninstall.js";
3510import { defaultRuntime } from "../runtime.js";
3611import { formatDocsLink } from "../terminal/links.js";
3712import { getTerminalTableWidth, renderTable } from "../terminal/table.js";
3813import { theme } from "../terminal/theme.js";
3914import { shortenHomeInString, shortenHomePath } from "../utils.js";
40-import {
41-applySlotSelectionForPlugin,
42-createPluginInstallLogger,
43-logSlotWarnings,
44-} from "./plugins-command-helpers.js";
45-import { setPluginEnabledInConfig } from "./plugins-config.js";
46-import { runPluginInstallCommand } from "./plugins-install-command.js";
47-import { commitPluginInstallRecordsWithConfig } from "./plugins-install-record-commit.js";
4815import { formatPluginLine } from "./plugins-list-format.js";
49-import { refreshPluginRegistryAfterConfigMutation } from "./plugins-registry-refresh.js";
50-import { resolvePluginUninstallId } from "./plugins-uninstall-selection.js";
51-import { runPluginUpdateCommand } from "./plugins-update-command.js";
52-import { promptYesNo } from "./prompt.js";
53165417export type PluginsListOptions = {
5518json?: boolean;
@@ -182,7 +145,8 @@ export function registerPluginsCli(program: Command) {
182145.option("--json", "Print JSON")
183146.option("--enabled", "Only show enabled plugins", false)
184147.option("--verbose", "Show detailed entries", false)
185-.action((opts: PluginsListOptions) => {
148+.action(async (opts: PluginsListOptions) => {
149+const { buildPluginRegistrySnapshotReport } = await import("../plugins/status.js");
186150const cfg = loadConfig();
187151const report = buildPluginRegistrySnapshotReport({
188152config: cfg,
@@ -290,6 +254,14 @@ export function registerPluginsCli(program: Command) {
290254.option("--all", "Inspect all plugins")
291255.option("--json", "Print JSON")
292256.action(async (id: string | undefined, opts: PluginInspectOptions) => {
257+const {
258+ buildAllPluginInspectReports,
259+ buildPluginDiagnosticsReport,
260+ buildPluginInspectReport,
261+ formatPluginCompatibilityNotice,
262+} = await import("../plugins/status.js");
263+const { loadInstalledPluginIndexInstallRecords } =
264+await import("../plugins/installed-plugin-index-records.js");
293265const cfg = loadConfig();
294266const installRecords = await loadInstalledPluginIndexInstallRecords();
295267const report = buildPluginDiagnosticsReport({
@@ -523,6 +495,11 @@ export function registerPluginsCli(program: Command) {
523495.description("Enable a plugin in config")
524496.argument("<id>", "Plugin id")
525497.action(async (id: string) => {
498+const { enablePluginInConfig } = await import("../plugins/enable.js");
499+const { applySlotSelectionForPlugin, logSlotWarnings } =
500+await import("./plugins-command-helpers.js");
501+const { refreshPluginRegistryAfterConfigMutation } =
502+await import("./plugins-registry-refresh.js");
526503const snapshot = await readConfigFileSnapshot();
527504const cfg = (snapshot.sourceConfig ?? snapshot.config) as OpenClawConfig;
528505const enableResult = enablePluginInConfig(cfg, id);
@@ -557,6 +534,9 @@ export function registerPluginsCli(program: Command) {
557534.description("Disable a plugin in config")
558535.argument("<id>", "Plugin id")
559536.action(async (id: string) => {
537+const { setPluginEnabledInConfig } = await import("./plugins-config.js");
538+const { refreshPluginRegistryAfterConfigMutation } =
539+await import("./plugins-registry-refresh.js");
560540const snapshot = await readConfigFileSnapshot();
561541const cfg = (snapshot.sourceConfig ?? snapshot.config) as OpenClawConfig;
562542const next = setPluginEnabledInConfig(cfg, id, false);
@@ -583,6 +563,27 @@ export function registerPluginsCli(program: Command) {
583563.option("--force", "Skip confirmation prompt", false)
584564.option("--dry-run", "Show what would be removed without making changes", false)
585565.action(async (id: string, opts: PluginUninstallOptions) => {
566+const {
567+ loadInstalledPluginIndexInstallRecords,
568+ removePluginInstallRecordFromRecords,
569+ withoutPluginInstallRecords,
570+ withPluginInstallRecords,
571+} = await import("../plugins/installed-plugin-index-records.js");
572+const { buildPluginDiagnosticsReport } = await import("../plugins/status.js");
573+const {
574+ formatUninstallActionLabels,
575+ formatUninstallSlotResetPreview,
576+ resolveUninstallChannelConfigKeys,
577+ resolveUninstallDirectoryTarget,
578+UNINSTALL_ACTION_LABELS,
579+ uninstallPlugin,
580+} = await import("../plugins/uninstall.js");
581+const { commitPluginInstallRecordsWithConfig } =
582+await import("./plugins-install-record-commit.js");
583+const { refreshPluginRegistryAfterConfigMutation } =
584+await import("./plugins-registry-refresh.js");
585+const { resolvePluginUninstallId } = await import("./plugins-uninstall-selection.js");
586+const { promptYesNo } = await import("./prompt.js");
586587const snapshot = await readConfigFileSnapshot();
587588const sourceConfig = (snapshot.sourceConfig ?? snapshot.config) as OpenClawConfig;
588589const installRecords = await loadInstalledPluginIndexInstallRecords();
@@ -744,6 +745,7 @@ export function registerPluginsCli(program: Command) {
744745marketplace?: string;
745746},
746747) => {
748+const { runPluginInstallCommand } = await import("./plugins-install-command.js");
747749await runPluginInstallCommand({ raw, opts });
748750},
749751);
@@ -760,6 +762,7 @@ export function registerPluginsCli(program: Command) {
760762false,
761763)
762764.action(async (id: string | undefined, opts: PluginUpdateOptions) => {
765+const { runPluginUpdateCommand } = await import("./plugins-update-command.js");
763766await runPluginUpdateCommand({ id, opts });
764767});
765768@@ -769,6 +772,8 @@ export function registerPluginsCli(program: Command) {
769772.option("--json", "Print JSON")
770773.option("--refresh", "Rebuild the persisted registry from current plugin manifests", false)
771774.action(async (opts: PluginRegistryOptions) => {
775+const { inspectPluginRegistry, refreshPluginRegistry } =
776+await import("../plugins/plugin-registry.js");
772777const cfg = loadConfig();
773778774779if (opts.refresh) {
@@ -825,7 +830,12 @@ export function registerPluginsCli(program: Command) {
825830plugins
826831.command("doctor")
827832.description("Report plugin load issues")
828-.action(() => {
833+.action(async () => {
834+const {
835+ buildPluginCompatibilityNotices,
836+ buildPluginDiagnosticsReport,
837+ formatPluginCompatibilityNotice,
838+} = await import("../plugins/status.js");
829839const report = buildPluginDiagnosticsReport();
830840const errors = report.plugins.filter((p) => p.status === "error");
831841const diags = report.diagnostics.filter((d) => d.level === "error");
@@ -880,6 +890,8 @@ export function registerPluginsCli(program: Command) {
880890.argument("<source>", "Local marketplace path/repo or git/GitHub source")
881891.option("--json", "Print JSON")
882892.action(async (source: string, opts: PluginMarketplaceListOptions) => {
893+const { listMarketplacePlugins } = await import("../plugins/marketplace.js");
894+const { createPluginInstallLogger } = await import("./plugins-command-helpers.js");
883895const result = await listMarketplacePlugins({
884896marketplace: source,
885897logger: createPluginInstallLogger(),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。