UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

83 lines (82 loc) 3.09 kB
import { c as normalizeSortedUniqueTrimmedStringList } from "./string-normalization-WNUDCpXX.js"; import { in as errorShape, rn as ErrorCodes } from "./schema-BwaBORnA.js"; import { X as validateEnvironmentsListParams, Z as validateEnvironmentsStatusParams } from "./src-oj0IwW6K.js"; import { r as listNodePairing } from "./node-pairing-BjnR-f-1.js"; import { r as respondUnavailableOnThrow, t as respondInvalidParams } from "./nodes.helpers-DeAuiiQp.js"; import { l as listDevicePairing } from "./device-pairing-Bcmp5CuV.js"; import { r as listKnownNodes, t as createKnownNodeCatalog } from "./node-catalog-DvVkr1YH.js"; //#region src/gateway/server-methods/environments.ts const GATEWAY_ENVIRONMENT = { id: "gateway", type: "local", label: "Gateway local", status: "available", capabilities: [ "agent.run", "sessions", "tools", "workspace" ] }; function uniqueSortedStrings(...items) { return normalizeSortedUniqueTrimmedStringList(items.flatMap((item) => item ?? [])); } /** Converts a known node entry into the public environment summary shape. */ function summarizeNodeEnvironment(node) { const capabilities = uniqueSortedStrings(node.caps, node.commands); return { id: `node:${node.nodeId}`, type: "node", label: node.displayName ?? node.nodeId, status: node.connected ? "available" : "unavailable", ...capabilities.length > 0 ? { capabilities } : {} }; } function listEnvironmentSummaries(nodes) { return [GATEWAY_ENVIRONMENT, ...nodes.map(summarizeNodeEnvironment)]; } /** Lists the local Gateway plus paired/connected node environments. */ async function listEnvironments(context) { const [devicePairing, nodePairing] = await Promise.all([listDevicePairing(), listNodePairing()]); return listEnvironmentSummaries(listKnownNodes(createKnownNodeCatalog({ pairedDevices: devicePairing.paired, pairedNodes: nodePairing.paired, connectedNodes: context.nodeRegistry.listConnected() }))); } /** Gateway handlers for querying local and node execution environments. */ const environmentsHandlers = { "environments.list": async ({ params, respond, context }) => { if (!validateEnvironmentsListParams(params)) { respondInvalidParams({ respond, method: "environments.list", validator: validateEnvironmentsListParams }); return; } await respondUnavailableOnThrow(respond, async () => { respond(true, { environments: await listEnvironments(context) }, void 0); }); }, "environments.status": async ({ params, respond, context }) => { if (!validateEnvironmentsStatusParams(params)) { respondInvalidParams({ respond, method: "environments.status", validator: validateEnvironmentsStatusParams }); return; } await respondUnavailableOnThrow(respond, async () => { const environment = (await listEnvironments(context)).find((entry) => entry.id === params.environmentId); if (!environment) { respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "unknown environmentId")); return; } respond(true, environment, void 0); }); } }; //#endregion export { environmentsHandlers };