diff --git a/lib/utils.ts b/lib/utils.ts index 18d0c6c..89ba67a 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -674,13 +674,18 @@ export function applyDiagramOperations( collectDescendants(op.cell_id) // Find edges referencing any of the cells to be deleted + // Also recursively collect children of those edges (e.g., edge labels) for (const cellId of cellsToDelete) { const referencingEdges = root.querySelectorAll( `mxCell[source="${cellId}"], mxCell[target="${cellId}"]`, ) referencingEdges.forEach((edge) => { const edgeId = edge.getAttribute("id") - if (edgeId) cellsToDelete.add(edgeId) + // Protect root cells from being added via edge references + if (edgeId && edgeId !== "0" && edgeId !== "1") { + // Recurse to collect edge's children (like labels) + collectDescendants(edgeId) + } }) } diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 7239235..c0d5b81 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@next-ai-drawio/mcp-server", - "version": "0.1.9", + "version": "0.1.10", "description": "MCP server for Next AI Draw.io - AI-powered diagram generation with real-time browser preview", "type": "module", "main": "dist/index.js", diff --git a/packages/mcp-server/src/diagram-operations.ts b/packages/mcp-server/src/diagram-operations.ts index 511bb4e..93225fc 100644 --- a/packages/mcp-server/src/diagram-operations.ts +++ b/packages/mcp-server/src/diagram-operations.ts @@ -223,13 +223,18 @@ export function applyDiagramOperations( collectDescendants(op.cell_id) // Find edges referencing any of the cells to be deleted + // Also recursively collect children of those edges (e.g., edge labels) for (const cellId of cellsToDelete) { const referencingEdges = root.querySelectorAll( `mxCell[source="${cellId}"], mxCell[target="${cellId}"]`, ) referencingEdges.forEach((edge) => { const edgeId = edge.getAttribute("id") - if (edgeId) cellsToDelete.add(edgeId) + // Protect root cells from being added via edge references + if (edgeId && edgeId !== "0" && edgeId !== "1") { + // Recurse to collect edge's children (like labels) + collectDescendants(edgeId) + } }) }