Problema al guardar flujo de trabajo después de usar n8n AI Assistant para renombrar nodos

¡Hola a todos!

Hace poco me topé con esto y lo arreglé manualmente. Comparto mis hallazgos aquí por si no es el comportamiento previsto — o en caso de que el Asistente de IA necesite mejoras.

El Problema

Le pedí al Asistente de IA de n8n que renombrara algunos nodos en uno de mis flujos de trabajo. Hizo la edición y todo se veía bien en el lienzo. Pero justo después, el flujo de trabajo se volvió completamente imposible de guardar — cada edición que hice después falló con:

Problema al guardar el flujo de trabajo
Autosave falló: No se puede convertir indefinido o nulo a objeto

La consola del navegador mostró el mismo error disparándose repetidamente desde el renderizador del lienzo y el gestor de guardado:

Los Síntomas (IA)

  • Renombrar fue lo único que le pedí al Asistente de IA, pero después de su edición, el JSON del flujo de trabajo volvió con varios campos a nivel de nodo explícitamente establecidos en null — cosas como credentials, webhookId, notes, notesInFlow, executeOnce, retryOnFail, alwaysOutputData y onError.
  • Cualquier nodo que normalmente no necesitara esas propiedades simplemente omite la clave por completo en una exportación estándar de n8n. La edición del Asistente de IA en cambio las escribió como null.
  • Una vez que esa forma llegó al lienzo, cada acción subsecuente (mover un nodo, guardar, autoguardar) se bloqueó con el mismo error de Object.keys, porque nodeTransforms.ts intenta normalizar esos campos y no espera un null literal.

La Causa Raíz (IA)

nodeTransforms.ts (utilizado tanto por la lógica de diferencias del lienzo como por useWorkflowSaving.ts) llama a Object.keys(...) en ciertas propiedades de nodo (como credentials) al calcular la diferencia a guardar. Object.keys(null) lanza una excepción, así que tan pronto como un nodo en el flujo de trabajo tenga null en lugar de una clave omitida, guardar/autoguardar todo el flujo de trabajo se rompe — no solo ese nodo.

Parece que la ruta de edición de nodos del Asistente de IA serializa el objeto del nodo sin descartar las claves que se resolvieron en null, lo que produce una forma de nodo técnicamente JSON válida pero no segura para el frontend.

La Solución (manualmente)

Exporta el JSON del flujo de trabajo, elimina cualquier clave en cualquier nodo cuyo valor sea null (en lugar de establecerlo en null), y reimporta. Por ejemplo, en los nodos afectados, elimina claves como:

"credentials": null,
"webhookId": null,
"notes": null,
"notesInFlow": null,
"executeOnce": null,
"retryOnFail": null,
"alwaysOutputData": null,
"onError": null

para que el objeto del nodo simplemente no tenga esas claves si no las utiliza. Después de eliminar los campos null y reimportar (Importar desde Archivo en un flujo de trabajo nuevo, no pegar en el lienzo), el flujo de trabajo se guardó y autoguardó normalmente de nuevo.

¡Espero que esto te ahorre algunas horas de depuración!
Esto parece un error en cómo el Asistente de IA serializa las ediciones de nodos — agradecería confirmación del equipo de n8n, ya que cualquiera que edite nodos en lote con él podría encontrarse con el mismo problema.

¡Excelente descubrimiento, @mohamed3nan!!!
Suena como un bug de verdad

Buen artículo - reportar y documentar la causa raíz es genuinamente útil. Si esto vuelve a suceder y quieres evitar editar JSON manualmente, un pequeño nodo Code puede automatizar la limpieza:

const workflow = JSON.parse($input.item.json.workflowJson);
workflow.nodes = workflow.nodes.map(node =>
  Object.fromEntries(Object.entries(node).filter(([_, v]) => v !== null))
);
return { workflowJson: JSON.stringify(workflow) };

Pega el JSON del flujo exportado en un nodo Set, ejecútalo a través de este e importa el resultado - ahorras unos minutos si el bug afecta a un flujo complejo.

Una pregunta, @mohamed3nan.
¿Alojaste tu sandbox de IA en tu propio servidor?

Hola @kjooleng, aún no he intentado auto-alojar porque parece un poco complejo,

Actualmente estoy usando la opción Daytona porque es mucho más fácil de configurar..

@mohamed3nan Como la función del Asistente de IA aún está en versión preliminar y tiene este error, si se trata de tareas simples, es mucho mejor ajustar las cosas normalmente o manualmente.

He creado ADO-5601 como nuestro ticket interno para resolver esto.

Se lanzó la nueva versión n8n@2.33.0 que incluye el PR de GitHub 34668.