import type { OpenClawConfig } from "../config/types.openclaw.js" ;
import { getActivePluginRegistry } from "../plugins/runtime.js" ;
let pluginRegistryLoaderModulePromise:
| Promise<typeof import ("../plugins/runtime/runtime-registry-loader.js" )>
| undefined;
async function loadPluginRegistryLoaderModule() {
pluginRegistryLoaderModulePromise ??= import ("../plugins/runtime/runtime-registry-loader.js" );
return await pluginRegistryLoaderModulePromise;
}
export async function ensureNodeHostPluginRegistry(params: {
config: OpenClawConfig;
env?: NodeJS.ProcessEnv;
}): Promise<void > {
(await loadPluginRegistryLoaderModule()).ensurePluginRegistryLoaded({
scope: "all" ,
config: params.config,
activationSourceConfig: params.config,
env: params.env,
});
}
export function listRegisteredNodeHostCapsAndCommands(): {
caps: string[];
commands: string[];
} {
const registry = getActivePluginRegistry();
const caps = new Set<string>();
const commands = new Set<string>();
for (const entry of registry?.nodeHostCommands ?? []) {
if (entry.command.cap) {
caps.add(entry.command.cap);
}
commands.add(entry.command.command);
}
return {
caps: [...caps].toSorted((left, right) => left.localeCompare(right)),
commands: [...commands].toSorted((left, right) => left.localeCompare(right)),
};
}
export async function invokeRegisteredNodeHostCommand(
command: string,
paramsJSON?: string | null ,
): Promise<string | null > {
const registry = getActivePluginRegistry();
const match = (registry?.nodeHostCommands ?? []).find(
(entry) => entry.command.command === command,
);
if (!match) {
return null ;
}
return await match.command.handle(paramsJSON);
}
Messung V0.5 in Prozent C=100 H=93 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland