Files
ycode/scripts/rea/css-mcp-regression.mjs
T

27 lines
1.6 KiB
JavaScript

// Test the public local REA MCP entry point without inspecting WorkBuddy.
import assert from 'node:assert/strict'
import path from 'node:path'
import { createRequire } from 'node:module'
import { pathToFileURL } from 'node:url'
const runtime = path.resolve('.tmp/rea-css-runtime')
const require = createRequire(path.join(runtime, 'package.json'))
const { Client } = await import(pathToFileURL(require.resolve('@modelcontextprotocol/client')).href)
const { StdioClientTransport } = await import(pathToFileURL(require.resolve('@modelcontextprotocol/client/stdio')).href)
const transport = new StdioClientTransport({ command: process.execPath, args: [path.join(runtime, 'scripts/rea.mjs'), 'mcp'], cwd: process.cwd(), stderr: 'pipe' })
const client = new Client({ name: 'ycode-local-rea-css-regression', version: '1' })
try {
await client.connect(transport)
assert.equal(client.getServerVersion()?.version, '6.5.0-visual.3')
const listing = await client.listTools()
const tool = listing.tools.find(tool => tool.name === 'inspect_electron_page')
assert.ok(tool, 'Electron inspection tool is advertised')
assert.ok(JSON.stringify(tool.inputSchema).includes('include_style_sources'), 'MCP input retains CSS option')
assert.ok(JSON.stringify(tool.inputSchema).includes('include_visuals'), 'MCP input retains viewport option')
assert.ok(JSON.stringify(tool.inputSchema).includes('visual_probe'), 'MCP input retains native visual probe option')
console.log('REA CSS public MCP passed: local version, tool listing, CSS input option')
} finally {
await client.close()
await transport.close()
}