UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

97 lines (96 loc) • 3.92 kB
import { l as normalizeOptionalString } from "./string-coerce-6kR-86XC.mjs"; import { n as formatByteSize } from "./format-C1IjPxxo.mjs"; import { r as asNullableRecord } from "./record-coerce-TIsquoVR.mjs"; import "./string-coerce-runtime-B1b8UNzb.mjs"; import { d as readPositiveIntegerParam } from "./common-CwfR3iO6.mjs"; import { t as callGatewayTool } from "./gateway-b_lf--A8.mjs"; import "./number-runtime-DyNDaYIV.mjs"; import { a as resolveNodeIdFromList, n as listNodes } from "./nodes-utils-DEiJdJlh.mjs"; import "./agent-harness-runtime-ADe6s8a3.mjs"; import "./param-readers-PfUsCMZz.mjs"; import { t as appendFileTransferAudit } from "./audit-CG1DcpFL.mjs"; import { t as throwFromNodePayload } from "./errors-BAlYwh52.mjs"; import crypto from "node:crypto"; //#region extensions/file-transfer/src/shared/params.ts function readGatewayCallOptions(params) { const opts = {}; if (typeof params.gatewayUrl === "string" && params.gatewayUrl.trim()) opts.gatewayUrl = params.gatewayUrl.trim(); if (typeof params.gatewayToken === "string" && params.gatewayToken.trim()) opts.gatewayToken = params.gatewayToken.trim(); opts.timeoutMs = readPositiveIntegerParam(params, "timeoutMs"); return opts; } function readClampedInt(params) { const requested = readPositiveIntegerParam(params.input, params.key) ?? params.defaultValue; return Math.max(params.hardMin, Math.min(requested, params.hardMax)); } function humanSize(bytes) { return formatByteSize(bytes, { style: "legacy-binary", maxUnit: "mega", separator: " ", fractionDigits: (_value, unit) => unit === "byte" ? null : unit === "kilo" ? 1 : 2 }); } //#endregion //#region extensions/file-transfer/src/tools/node-tool-invoke.ts function readRequiredNodePath(params) { const node = normalizeOptionalString(params.node); const requestedPath = normalizeOptionalString(params.path); if (!node) throw new Error("node required"); if (!requestedPath) throw new Error("path required"); return { node, requestedPath }; } async function invokeNodeToolPayload(input) { const gatewayOpts = readGatewayCallOptions(input.params); const nodes = await listNodes(gatewayOpts); if (nodes.length === 0) throw new Error("no paired nodes available; file-transfer tools require a paired node from nodes status. Use local file/exec tools for local workspace paths."); const nodeId = resolveNodeIdFromList(nodes, input.node, false); const nodeDisplayName = nodes.find((n) => n.nodeId === nodeId)?.displayName ?? input.node; const startedAt = Date.now(); const raw = await callGatewayTool("node.invoke", gatewayOpts, { nodeId, command: input.command, params: input.commandParams, idempotencyKey: crypto.randomUUID() }); const payload = asNullableRecord(raw?.payload); if (!payload) { await appendFileTransferAudit({ op: input.command, nodeId, nodeDisplayName, requestedPath: input.requestedPath, decision: "error", errorMessage: input.invalidPayloadMessage ?? "invalid payload", durationMs: Date.now() - startedAt, ...input.errorAuditExtra }); throw new Error(input.invalidPayloadError ?? `invalid ${input.command} payload`); } if (payload.ok === false || input.requireOk === true && payload.ok !== true) { await appendFileTransferAudit({ op: input.command, nodeId, nodeDisplayName, requestedPath: input.requestedPath, canonicalPath: typeof payload.canonicalPath === "string" ? payload.canonicalPath : void 0, decision: "error", errorCode: typeof payload.code === "string" ? payload.code : void 0, errorMessage: typeof payload.message === "string" ? payload.message : void 0, durationMs: Date.now() - startedAt, ...input.errorAuditExtra }); throwFromNodePayload(input.command, payload); } return { nodeDisplayName, nodeId, payload, startedAt }; } //#endregion export { readClampedInt as i, readRequiredNodePath as n, humanSize as r, invokeNodeToolPayload as t };