UNPKG

@intellectronica/ruler

Version:

Ruler — apply the same rules to all coding agents

40 lines (39 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeMcp = mergeMcp; /** * Merge native and incoming MCP server configurations according to strategy. * @param base Existing native MCP config object. * @param incoming Ruler MCP config object. * @param strategy Merge strategy: 'merge' to union servers, 'overwrite' to replace. * @param serverKey The key to use for servers in the output (e.g., 'servers' for Copilot, 'mcpServers' for others). * @returns Merged MCP config object. */ function mergeMcp(base, incoming, strategy, serverKey) { if (strategy === 'overwrite') { // Ensure the incoming object uses the correct server key. // Transform from the standard (Crush) MCP config format const incomingServers = incoming[serverKey] || incoming.mcpServers || incoming.mcp || {}; return { [serverKey]: incomingServers, }; } const baseServers = base[serverKey] || base.mcpServers || base.mcp || {}; const incomingServers = incoming[serverKey] || incoming.mcpServers || incoming.mcp || {}; const mergedServers = { ...baseServers, ...incomingServers }; const newBase = { ...base }; delete newBase.mcpServers; // Remove old key if present return { ...newBase, [serverKey]: mergedServers, }; }