Referencia

Operaciones de edición

apply_operations recibe una lista de operaciones y las aplica como una transacción: si una falla, no se aplica ninguna.

Ejemplo completo

mcp__canvappen__apply_operations
{
  "path": "~/proyecto/design.pen",
  "label": "Botón principal en negro",
  "operations": [
    { "op": "update", "id": "btn-primario", "props": { "fill": "#000000" } },
    { "op": "update", "id": "btn-primario/etiqueta", "props": { "content": "Empezar" } }
  ]
}

En la CLI, las operaciones van en un archivo JSON, en línea o por stdin con -:

CLI
canvappen apply-operations design.pen --operations cambios.json
echo '[{"op":"delete","id":"nota"}]' | canvappen apply-operations design.pen --operations -

Nodos

insert

Agrega un nodo dentro de parent (o en la raíz con null), opcionalmente en la posición index. Si insertas un frame raíz sin x/y, canvappen lo coloca a la derecha del contenido existente.

JSON
{ "op": "insert", "parent": "home", "index": 0, "node": { "type": "text", "content": "Hola" } }

update

Cambia propiedades. null elimina una propiedad. No cambia id, type ni children.

JSON
{ "op": "update", "id": "titulo", "props": { "fontSize": 32, "letterSpacing": null } }

delete

JSON
{ "op": "delete", "id": "nota" }

move

JSON
{ "op": "move", "id": "tarjeta", "parent": "lista", "index": 2 }

replace

Reemplaza el nodo completo, conservando su id.

JSON
{ "op": "replace", "id": "logo", "node": { "type": "icon", "library": "lucide", "icon": "star" } }

copy

Duplica un nodo en otro lugar, con propiedades opcionales para la copia.

JSON
{ "op": "copy", "id": "tarjeta", "parent": "lista", "props": { "name": "Tarjeta 2" } }

detach

Separa una instancia de su componente: la reemplaza por una copia editable con sus overrides y conserva el id.

JSON
{ "op": "detach", "id": "boton-compra" }

Documento

set_variables

Crea, cambia o elimina (null) variables. Con replace: true reemplaza todas.

JSON
{ "op": "set_variables", "variables": { "primario": { "type": "color", "value": "#000000" }, "viejo": null } }

set_themes

JSON
{ "op": "set_themes", "themes": { "modo": ["claro", "oscuro"] } }

set_imports

Adjunta o quita librerías .lib.pen con un alias.

JSON
{ "op": "set_imports", "imports": { "ui": "librerias/ui.lib.pen" } }

set_fonts

Reemplaza las fuentes propias del documento. Para agregar una sola, es más simple usar import_font.

JSON
{ "op": "set_fonts", "fonts": [{ "name": "Marca", "url": "fonts/marca.ttf", "weight": 400, "style": "normal" }] }

Simular antes de aplicar

Con dryRun: true (en la CLI, --dry-run) canvappen valida y simula los cambios sin guardar nada.