openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
33 lines (32 loc) • 1.62 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js";
import { t as ErrorCodes } from "./gateway-error-details-w0nAGBBp.js";
import { d as errorShape } from "./error-codes-Bo8q2D1o.js";
import { t as formatForLog } from "./ws-log-Dkg9wKNU.js";
//#region src/gateway/server-methods/nodes.helpers.ts
/** Converts thrown node-handler failures into `UNAVAILABLE` protocol errors. */
async function respondUnavailableOnThrow(respond, fn) {
try {
await fn();
} catch (err) {
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
}
}
/** Narrows successful node invoke results or responds with the node error details. */
function respondUnavailableOnNodeInvokeError(respond, res) {
return respondUnavailableOnNodeInvokeErrorWithProvenance(respond, res);
}
function respondUnavailableOnNodeInvokeErrorWithProvenance(respond, res, provenance) {
if (res.ok) return true;
const nodeError = res.error && typeof res.error === "object" ? res.error : null;
const nodeCode = normalizeOptionalString(nodeError?.code) ?? "";
const nodeMessage = normalizeOptionalString(nodeError?.message) ?? "node invoke failed";
const message = nodeCode ? `${nodeCode}: ${nodeMessage}` : nodeMessage;
const details = {
nodeError: res.error ?? null,
...provenance ? { nodeCommandDispatched: provenance.nodeCommandDispatched } : {}
};
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, message, { details }));
return false;
}
//#endregion
export { respondUnavailableOnNodeInvokeErrorWithProvenance as n, respondUnavailableOnThrow as r, respondUnavailableOnNodeInvokeError as t };