{
  "schema_version": 2,
  "diagram_type": "workflow",
  "meta": {
    "title": "Flujo de herramientas del agente",
    "animation": "trace",
    "visual_preset": "signal-flow",
    "quality_profile": "showcase",
    "views": [
      {
        "id": "happy-path",
        "label": "De solicitud a resultado",
        "focus": [
          "user",
          "chat",
          "planner",
          "router",
          "approval",
          "tool",
          "external",
          "final"
        ],
        "note": "Sigue una solicitud correcta desde la intención del usuario hasta la respuesta final."
      },
      {
        "id": "safety-gate",
        "label": "Política y recuperación",
        "focus": [
          "router",
          "approval",
          "blocked",
          "retry"
        ],
        "note": "Observa dónde una tarea se detiene, espera autorización o vuelve a revisión."
      },
      {
        "id": "evidence-loop",
        "label": "Evidencia y memoria",
        "focus": [
          "external",
          "store",
          "trace"
        ],
        "note": "Explora las trazas persistentes y el contexto que sustentan la respuesta."
      }
    ],
    "output": "examples/workflow-agent-tool-call-rendered.html",
    "locale": "es"
  },
  "lanes": [
    {
      "id": "ui",
      "label": "Interfaz de usuario"
    },
    {
      "id": "agent",
      "label": "Ejecución del agente"
    },
    {
      "id": "policy",
      "label": "Política y recuperación",
      "variant": "exception"
    },
    {
      "id": "tools",
      "label": "Herramientas y evidencia"
    }
  ],
  "phases": [
    {
      "id": "intake",
      "label": "Recepción",
      "fromCol": 0,
      "toCol": 1
    },
    {
      "id": "reasoning",
      "label": "Planear y dirigir",
      "fromCol": 2,
      "toCol": 3,
      "variant": "emphasis"
    },
    {
      "id": "execution",
      "label": "Ejecutar e informar",
      "fromCol": 4,
      "toCol": 5,
      "variant": "dashed"
    }
  ],
  "groups": [
    {
      "id": "agent_loop",
      "label": "Ciclo de planificación",
      "lane": "agent",
      "fromCol": 2,
      "toCol": 3,
      "variant": "emphasis"
    },
    {
      "id": "exception_path",
      "label": "Control humano o de política",
      "lane": "policy",
      "fromCol": 3,
      "toCol": 5,
      "variant": "security"
    },
    {
      "id": "evidence_path",
      "label": "Ruta de evidencia",
      "lane": "tools",
      "fromCol": 1,
      "toCol": 2,
      "variant": "dashed"
    },
    {
      "id": "tool_work",
      "label": "Uso de herramientas",
      "lane": "tools",
      "fromCol": 4,
      "toCol": 5,
      "variant": "dashed"
    }
  ],
  "mainPath": [
    "user",
    "chat",
    "planner",
    "router",
    "approval",
    "tool",
    "external",
    "final"
  ],
  "nodes": [
    {
      "id": "user",
      "lane": "ui",
      "col": 0,
      "type": "external",
      "label": "Usuario",
      "sublabel": "solicita una tarea",
      "width": 132
    },
    {
      "id": "chat",
      "lane": "ui",
      "col": 1,
      "type": "frontend",
      "label": "Conversación",
      "sublabel": "hilo y archivos",
      "width": 132
    },
    {
      "id": "final",
      "lane": "ui",
      "col": 5,
      "type": "backend",
      "label": "Respuesta final",
      "sublabel": "respuesta y cambios",
      "width": 132
    },
    {
      "id": "planner",
      "lane": "agent",
      "col": 2,
      "type": "backend",
      "label": "Planificador",
      "sublabel": "planear siguiente paso",
      "tag": "con contexto",
      "width": 132
    },
    {
      "id": "router",
      "lane": "agent",
      "col": 3,
      "type": "backend",
      "label": "Enrutador",
      "sublabel": "elegir capacidad",
      "width": 132
    },
    {
      "id": "approval",
      "lane": "policy",
      "col": 3,
      "type": "security",
      "label": "Aprobación",
      "sublabel": "alcance y permiso",
      "tag": "control de riesgos",
      "width": 132
    },
    {
      "id": "blocked",
      "lane": "policy",
      "col": 4,
      "type": "security",
      "label": "Bloqueado",
      "sublabel": "esperar o rechazar",
      "width": 132
    },
    {
      "id": "retry",
      "lane": "policy",
      "col": 5,
      "type": "messagebus",
      "label": "Reintento",
      "sublabel": "revisar solicitud",
      "width": 132
    },
    {
      "id": "tool",
      "lane": "tools",
      "col": 4,
      "type": "messagebus",
      "label": "Herramienta",
      "sublabel": "terminal / navegador / MCP",
      "tag": "resultado estructurado",
      "width": 132
    },
    {
      "id": "external",
      "lane": "tools",
      "col": 5,
      "type": "cloud",
      "label": "API externa",
      "sublabel": "servicio de red",
      "width": 132
    },
    {
      "id": "store",
      "lane": "tools",
      "col": 1,
      "type": "database",
      "label": "Contexto",
      "sublabel": "repositorio y memoria",
      "width": 132
    },
    {
      "id": "trace",
      "lane": "tools",
      "col": 2,
      "type": "database",
      "label": "Trazas",
      "sublabel": "eventos y resultados",
      "width": 132
    }
  ],
  "edges": [
    {
      "id": "request-chat",
      "from": "user",
      "to": "chat",
      "variant": "default"
    },
    {
      "id": "plan-request",
      "from": "chat",
      "to": "planner",
      "label": "planear",
      "variant": "emphasis"
    },
    {
      "id": "planner-route",
      "from": "planner",
      "to": "router",
      "variant": "default"
    },
    {
      "id": "approval-check",
      "from": "router",
      "to": "approval",
      "label": "¿requiere permiso?",
      "variant": "security"
    },
    {
      "id": "approved-tool",
      "from": "approval",
      "to": "tool",
      "variant": "emphasis"
    },
    {
      "id": "approval-denied",
      "from": "approval",
      "to": "blocked",
      "label": "rechazado",
      "variant": "security",
      "role": "error"
    },
    {
      "id": "retry-request",
      "from": "blocked",
      "to": "retry",
      "variant": "dashed",
      "role": "branch"
    },
    {
      "id": "tool-external-call",
      "from": "tool",
      "to": "external",
      "variant": "default"
    },
    {
      "id": "external-reply",
      "from": "external",
      "to": "final",
      "variant": "emphasis",
      "role": "return",
      "fromSide": "right",
      "toSide": "right",
      "route": "outside-right",
      "width": 1.2
    },
    {
      "id": "record-result",
      "from": "external",
      "to": "trace",
      "label": "registrar resultado",
      "variant": "dashed",
      "fromSide": "bottom",
      "toSide": "bottom",
      "route": "bottom-channel",
      "labelSegment": 1
    },
    {
      "id": "write-trace-memory",
      "from": "store",
      "to": "trace",
      "label": "trazas y memoria",
      "variant": "dashed"
    }
  ],
  "cards": [
    {
      "dot": "cyan",
      "title": "Reglas de compilación",
      "items": [
        "Los carriles y columnas determinan la posición de los nodos",
        "Las etiquetas reservan espacio; las rutas mantienen ángulos rectos"
      ]
    },
    {
      "dot": "rose",
      "title": "Reglas de ejecución",
      "items": [
        "La aprobación controla las tareas de riesgo antes de usar herramientas",
        "La evidencia regresa mediante trazas y memoria separadas"
      ]
    }
  ]
}
