import { defineTool } from '#core/tools/schema'

export const nodeReplaceWith = defineTool({
  name: 'node_replace_with',
  mutates: true,
  description: 'Replace a node with JSX content.',
  params: {
    id: { type: 'string', description: 'Node ID to replace', required: true },
    jsx: { type: 'string', description: 'JSX string for the replacement', required: true }
  },
  execute: async (figma, args) => {
    const node = figma.getNodeById(args.id)
    if (!node) return { error: `Node "${args.id}" not found` }
    const parentId = node.parent?.id ?? figma.currentPageId
    const x = node.x
    const y = node.y
    node.remove()
    const { renderJSX } = await import('#core/design-jsx/render.js')
    const results = await renderJSX(figma.graph, args.jsx, { parentId, x, y })
    const result = results[0]
    return {
      id: result.id,
      name: result.name,
      type: result.type,
      ...(result.warnings ? { warnings: result.warnings } : {}),
      children: results
        .slice(1)
        .map((child) => ({ id: child.id, name: child.name, type: child.type }))
    }
  }
})
