openpencil/packages/mcp/src/jsx-preprocess.ts
2026-05-03 21:03:40 +03:00

20 lines
774 B
TypeScript

import { buildComponent, createElement, resolveToTree } from '@open-pencil/core/design-jsx'
export function preprocessRpc(body: Record<string, unknown>): Record<string, unknown> {
if (body.command !== 'tool') return body
const args = body.args as { name?: string; args?: Record<string, unknown> } | undefined
if (args?.name !== 'render' || !args.args?.jsx) return body
try {
const Component = buildComponent(args.args.jsx as string)
const element = createElement(Component, null)
const tree = resolveToTree(element)
return {
...body,
args: { ...args, args: { ...args.args, jsx: undefined, tree } }
}
} catch (e) {
console.warn('JSX preprocessing failed, passing raw:', e instanceof Error ? e.message : e)
return body
}
}