import test from "node:test"; import assert from "node:assert/strict"; import { McpRegistry, createDefaultMcpRegistry, createMcpHandlerShell, } from "../src/mcp/handlers.js"; test("mcp registries are isolated instances", () => { const registryA = createDefaultMcpRegistry(); const registryB = createDefaultMcpRegistry(); registryA.register( createMcpHandlerShell({ id: "custom-a", description: "custom handler", matches: () => false, }), ); assert.equal(registryA.listHandlers().some((handler) => handler.id === "custom-a"), true); assert.equal(registryB.listHandlers().some((handler) => handler.id === "custom-a"), false); }); test("mcp registry resolves generic fallback by default", () => { const registry = createDefaultMcpRegistry(); const resolved = registry.resolveServerWithHandler({ serverName: "local-files", server: { type: "stdio", command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "."], }, context: {}, fullConfig: { servers: {}, }, }); assert.equal(resolved.handlerId, "generic"); assert.ok(resolved.codex); assert.ok(resolved.claude); }); test("mcp registry rejects unknown explicit handlers", () => { const registry = new McpRegistry(); assert.throws( () => registry.resolveServerWithHandler({ serverName: "broken", server: { type: "http", url: "http://localhost:3000/mcp", handler: "missing-handler", }, context: {}, fullConfig: { servers: {}, }, }), /Unknown MCP handler/, ); });