fix(cli): omit unobserved plugin harness ids (#112235)

This commit is contained in:
Dallin Romney
2026-07-21 22:33:36 +09:00
committed by GitHub
parent 048776d422
commit 9f2a747e32
2 changed files with 18 additions and 3 deletions
+9 -2
View File
@@ -45,7 +45,14 @@ describe("runPluginsListCommand", () => {
workspaceDir: "/workspace",
registrySource: "config",
registryDiagnostics: [],
plugins: [{ id: "demo", enabled: true }],
plugins: [
{
id: "demo",
enabled: true,
commands: ["demo"],
agentHarnessIds: ["runtime-only"],
},
],
diagnostics: [],
}),
}));
@@ -102,7 +109,7 @@ describe("runPluginsListCommand", () => {
source: "config",
diagnostics: [],
},
plugins: [{ id: "demo", enabled: true }],
plugins: [{ id: "demo", enabled: true, commands: ["demo"] }],
diagnostics: [],
},
]);
+9 -1
View File
@@ -1,5 +1,6 @@
// `openclaw plugins list`: builds registry reports and defers terminal-only formatting modules.
import { getRuntimeConfig } from "../config/config.js";
import type { PluginRecord } from "../plugins/registry.js";
import { defaultRuntime, writeRuntimeJson, type RuntimeEnv } from "../runtime.js";
import { quietPluginJsonLogger } from "./plugins-json-logger.js";
@@ -10,6 +11,13 @@ export type PluginsListOptions = {
verbose?: boolean;
};
function toPluginListJsonRecord(plugin: PluginRecord): Omit<PluginRecord, "agentHarnessIds"> {
// Snapshot listing never imports plugin runtimes, so it cannot observe harness registrations.
// Omit the field instead of serializing the registry-compatible empty placeholder.
const { agentHarnessIds: _agentHarnessIds, ...record } = plugin;
return record;
}
async function loadHumanListModules() {
const [sourceDisplay, table, themeModule, commandFormat, listFormat] = await Promise.all([
import("../plugins/source-display.js"),
@@ -50,7 +58,7 @@ export async function runPluginsListCommand(
source: report.registrySource,
diagnostics: report.registryDiagnostics,
},
plugins: list,
plugins: list.map(toPluginListJsonRecord),
diagnostics: report.diagnostics,
};
writeRuntimeJson(runtime, payload);