openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
27 lines (26 loc) • 1.48 kB
JavaScript
import "./src-vebZIeLe.js";
import { t as stableStringify } from "./stable-stringify-C8X7niaI.js";
//#region src/gateway/session-tool-overrides.ts
function normalizeSessionToolOverrides(raw) {
if (!raw) return;
const normalizeBooleanMap = (value) => {
const entries = Object.entries(value ?? {}).toSorted(([left], [right]) => left.localeCompare(right));
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
};
const mcpToolsDeny = Object.fromEntries(Object.entries(raw.mcpToolsDeny ?? {}).map(([serverName, toolNames]) => [serverName, [...new Set(toolNames)].toSorted((left, right) => left.localeCompare(right))]).filter(([, toolNames]) => toolNames.length > 0).toSorted(([left], [right]) => left.localeCompare(right)));
const mcpServers = normalizeBooleanMap(raw.mcpServers);
const skills = normalizeBooleanMap(raw.skills);
const normalized = {
...mcpServers ? { mcpServers } : {},
...Object.keys(mcpToolsDeny).length > 0 ? { mcpToolsDeny } : {},
...skills ? { skills } : {},
...raw.webSearch === false ? { webSearch: false } : {}
};
return Object.keys(normalized).length > 0 ? normalized : void 0;
}
/** Compare sparse tool policy overlays by their canonical stored meaning. */
function sessionToolOverridesEqual(left, right) {
return stableStringify(normalizeSessionToolOverrides(left)) === stableStringify(normalizeSessionToolOverrides(right));
}
//#endregion
export { sessionToolOverridesEqual as n, normalizeSessionToolOverrides as t };