import { randomUUID } from "node:crypto" ;
import { callGateway } from "../gateway/call.js" ;
import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../gateway/protocol/client-info.js" ;
import type { PluginRuntime } from "./runtime/types.js" ;
export function createPluginCliGatewayNodesRuntime(): PluginRuntime["nodes" ] {
return {
async list(params) {
const payload = await callGateway({
method: "node.list" ,
params: {},
clientName: GATEWAY_CLIENT_NAMES.CLI,
mode: GATEWAY_CLIENT_MODES.CLI,
});
const nodes = Array.isArray(payload?.nodes) ? payload.nodes : [];
const filteredNodes =
params?.connected === true
? nodes.filter(
(node) =>
node !== null &&
typeof node === "object" &&
(node as { connected?: unknown }).connected === true ,
)
: nodes;
return {
nodes: filteredNodes as Awaited<ReturnType<PluginRuntime["nodes" ]["list" ]>>["nodes" ],
};
},
async invoke(params) {
return await callGateway({
method: "node.invoke" ,
params: {
nodeId: params.nodeId,
command: params.command,
...(params.params !== undefined && { params: params.params }),
timeoutMs: params.timeoutMs,
idempotencyKey: params.idempotencyKey || randomUUID(),
},
timeoutMs: params.timeoutMs ? params.timeoutMs + 5 _000 : undefined,
clientName: GATEWAY_CLIENT_NAMES.CLI,
mode: GATEWAY_CLIENT_MODES.CLI,
});
},
};
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland