UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

28 lines (27 loc) 1.3 kB
//#region src/gateway/control-plane-audit.ts function normalizePart(value, fallback) { if (typeof value !== "string") return fallback; const normalized = value.trim(); return normalized.length > 0 ? normalized : fallback; } /** Extracts audit identity from a possibly missing or partially connected client. */ function resolveControlPlaneActor(client) { return { actor: normalizePart(client?.connect?.client?.id, "unknown-actor"), deviceId: normalizePart(client?.connect?.device?.id, "unknown-device"), clientIp: normalizePart(client?.clientIp, "unknown-ip"), connId: normalizePart(client?.connId, "unknown-conn") }; } /** Formats actor identity as compact key/value text for structured gateway logs. */ function formatControlPlaneActor(actor) { return `actor=${actor.actor} device=${actor.deviceId} ip=${actor.clientIp} conn=${actor.connId}`; } /** Summarizes changed config/state paths without letting audit logs grow unbounded. */ function summarizeChangedPaths(paths, maxPaths = 8) { if (paths.length === 0) return "<none>"; if (paths.length <= maxPaths) return paths.join(","); return `${paths.slice(0, maxPaths).join(",")},+${paths.length - maxPaths} more`; } //#endregion export { resolveControlPlaneActor as n, summarizeChangedPaths as r, formatControlPlaneActor as t };