import { test } from "node:test"; import assert from "node:assert/strict"; import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { addMcpServerToConfigFile, mcpConfigJson, mcpServerConfig, } from "../out/agent/setup.js"; test("mcpServerConfig and mcpConfigJson use the stable launcher", () => { const config = mcpServerConfig("C:/Users/me/.ra3modxml/ra3-mod-xml-mcp.cmd", "D:/Mods/Example"); assert.deepEqual(config.mcpServers["ra3-mod-xml"].args, ["--project", "D:/Mods/Example"]); const json = mcpConfigJson("C:/launcher.cmd", "D:/Proj"); assert.ok(json.includes("C:/launcher.cmd")); assert.ok(json.includes("D:/Proj")); }); test("addMcpServerToConfigFile creates and merges config", async () => { const dir = mkdtempSync(join(tmpdir(), "ra3-setup-test-")); try { const file = join(dir, "mcp.json"); await addMcpServerToConfigFile(file, "C:/launcher.cmd", "D:/Proj"); const first = JSON.parse(readFileSync(file, "utf8")); assert.ok(first.mcpServers["ra3-mod-xml"]); writeFileSync(file, JSON.stringify({ mcpServers: { other: { command: "x" } } }, null, 2)); await addMcpServerToConfigFile(file, "C:/launcher.cmd", "D:/Proj"); const merged = JSON.parse(readFileSync(file, "utf8")); assert.ok(merged.mcpServers.other); assert.ok(merged.mcpServers["ra3-mod-xml"]); } finally { rmSync(dir, { recursive: true, force: true }); } });