import assert from "node:assert/strict"; import test from "node:test"; import type { ExtensionAPI } from "@selesai/code"; import { CONFIG_DIR_NAME } from "@selesai/code"; import { applyCapabilityConfigGuards, detectToolDisplayCapabilities, } from "../src/capabilities.ts"; import { DEFAULT_TOOL_DISPLAY_CONFIG } from "../src/types.ts"; function createExtensionApiStub(allTools: unknown[]): ExtensionAPI { return { getAllTools(): unknown[] { return allTools; }, getCommands(): Array<{ name: string }> { return []; }, } as unknown as ExtensionAPI; } test("detectToolDisplayCapabilities recognises MCP adapter tools from their source metadata", () => { const api = createExtensionApiStub([ { name: "xcodebuild_list_sims", description: "List available iOS simulators.", parameters: {}, sourceInfo: { path: "C:/Users/Administrator/.selesai/agent/extensions/pi-mcp-adapter/index.ts", source: "local", scope: "user", origin: "top-level", }, }, ]); const capabilities = detectToolDisplayCapabilities(api, `C:/Users/Administrator/${CONFIG_DIR_NAME}`); assert.equal(capabilities.hasMcpTooling, true); }); test("applyCapabilityConfigGuards preserves MCP output when MCP tooling is not detected yet", () => { const guarded = applyCapabilityConfigGuards( { ...DEFAULT_TOOL_DISPLAY_CONFIG, mcpOutputMode: "preview" }, { hasMcpTooling: false, hasRtkOptimizer: true, }, ); assert.equal(guarded.mcpOutputMode, "preview"); assert.equal(guarded.showRtkCompactionHints, DEFAULT_TOOL_DISPLAY_CONFIG.showRtkCompactionHints); });