{"version":3,"file":"installMCP.mjs","names":["fs"],"sources":["../../../src/installMCP/installMCP.ts"],"sourcesContent":["import { promises as fs } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { PLATFORMS_METADATA, type Platform } from '../installSkills';\n\nexport type MCPTransport = 'stdio' | 'sse';\n\nconst MCP_CONFIG_FILENAME = 'mcp.json';\n\nconst CLAUDE_DESKTOP_CONFIG_PATH =\n  process.platform === 'win32'\n    ? path.join(\n        process.env.APPDATA || '',\n        'Claude',\n        'claude_desktop_config.json'\n      )\n    : path.join(\n        os.homedir(),\n        'Library',\n        'Application Support',\n        'Claude',\n        'claude_desktop_config.json'\n      );\n\n/**\n * Installs the Intlayer MCP server configuration for a specific platform.\n */\nexport const installMCP = async (\n  projectRoot: string,\n  platform: Platform,\n  transport: MCPTransport\n): Promise<string> => {\n  let configPath: string;\n  let configKey = 'mcpServers';\n\n  if (platform === 'Claude') {\n    configPath = CLAUDE_DESKTOP_CONFIG_PATH;\n  } else {\n    const relativeDir = path.dirname(PLATFORMS_METADATA[platform].dir); // e.g. .cursor or .vscode\n    configPath = path.join(projectRoot, relativeDir, MCP_CONFIG_FILENAME);\n\n    if (platform === 'VSCode') {\n      configKey = 'servers';\n    }\n  }\n\n  // Ensure the configuration directory exists\n  await fs.mkdir(path.dirname(configPath), { recursive: true });\n\n  let config: any = {};\n  try {\n    const content = await fs.readFile(configPath, 'utf-8');\n    config = JSON.parse(content);\n  } catch {\n    // File doesn't exist or is invalid JSON, start fresh\n  }\n\n  if (!config[configKey]) {\n    config[configKey] = {};\n  }\n\n  if (transport === 'stdio') {\n    const mcpConfig: any = {\n      command: 'npx',\n      args: ['-y', '@intlayer/mcp'],\n    };\n\n    if (platform === 'VSCode') {\n      mcpConfig.type = 'stdio';\n    }\n\n    config[configKey].intlayer = mcpConfig;\n  } else {\n    const mcpConfig: any = {\n      url: 'https://mcp.intlayer.org',\n    };\n\n    if (platform === 'VSCode') {\n      mcpConfig.type = 'sse';\n    } else {\n      mcpConfig.transport = 'sse';\n    }\n\n    config[configKey].intlayer = mcpConfig;\n  }\n\n  await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');\n\n  return `MCP server configuration updated in ${configPath}`;\n};\n"],"mappings":";;;;;;AAOA,MAAM,sBAAsB;AAE5B,MAAM,6BACJ,QAAQ,aAAa,UACjB,KAAK,KACH,QAAQ,IAAI,WAAW,IACvB,UACA,4BACF,IACA,KAAK,KACH,GAAG,QAAQ,GACX,WACA,uBACA,UACA,4BACF;;;;AAKN,MAAa,aAAa,OACxB,aACA,UACA,cACoB;CACpB,IAAI;CACJ,IAAI,YAAY;CAEhB,IAAI,aAAa,UACf,aAAa;MACR;EACL,MAAM,cAAc,KAAK,QAAQ,mBAAmB,UAAU,GAAG;EACjE,aAAa,KAAK,KAAK,aAAa,aAAa,mBAAmB;EAEpE,IAAI,aAAa,UACf,YAAY;CAEhB;CAGA,MAAMA,SAAG,MAAM,KAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;CAE5D,IAAI,SAAc,CAAC;CACnB,IAAI;EACF,MAAM,UAAU,MAAMA,SAAG,SAAS,YAAY,OAAO;EACrD,SAAS,KAAK,MAAM,OAAO;CAC7B,QAAQ,CAER;CAEA,IAAI,CAAC,OAAO,YACV,OAAO,aAAa,CAAC;CAGvB,IAAI,cAAc,SAAS;EACzB,MAAM,YAAiB;GACrB,SAAS;GACT,MAAM,CAAC,MAAM,eAAe;EAC9B;EAEA,IAAI,aAAa,UACf,UAAU,OAAO;EAGnB,OAAO,WAAW,WAAW;CAC/B,OAAO;EACL,MAAM,YAAiB,EACrB,KAAK,2BACP;EAEA,IAAI,aAAa,UACf,UAAU,OAAO;OAEjB,UAAU,YAAY;EAGxB,OAAO,WAAW,WAAW;CAC/B;CAEA,MAAMA,SAAG,UAAU,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;CAEvE,OAAO,uCAAuC;AAChD"}