{
  "schema_version": 1,
  "diagram_type": "lifecycle",
  "meta": {
    "title": "Ciclo de vida del agente",
    "output": "examples/lifecycle-agent-run.html",
    "viewBox": [
      1030,
      630
    ],
    "animation": "trace",
    "quality_profile": "showcase",
    "views": [
      {
        "id": "main-lifecycle",
        "label": "Ciclo principal",
        "focus": [
          "queued",
          "planning",
          "executing",
          "reviewing",
          "completed"
        ],
        "note": "Sigue las fases desde la solicitud aceptada hasta la respuesta final."
      },
      {
        "id": "human-waits",
        "label": "Esperas de aprobación y datos",
        "focus": [
          "executing",
          "approval",
          "reviewing",
          "blocked"
        ],
        "note": "Observa dónde se pausa la ejecución sin finalizar."
      },
      {
        "id": "recovery-and-exits",
        "label": "Recuperación y salidas finales",
        "focus": [
          "executing",
          "failed",
          "blocked",
          "cancelled",
          "expired"
        ],
        "note": "Distingue los errores recuperables de la cancelación y la expiración."
      }
    ],
    "locale": "es"
  },
  "lanes": [
    {
      "id": "main",
      "label": "Fases del ciclo de vida"
    },
    {
      "id": "waiting",
      "label": "Interrupciones"
    },
    {
      "id": "exceptions",
      "label": "Ciclo de recuperación"
    },
    {
      "id": "terminal",
      "label": "Salidas finales"
    }
  ],
  "states": [
    {
      "id": "queued",
      "type": "start",
      "label": "En cola",
      "sublabel": "solicitud aceptada",
      "lane": "main",
      "col": 0,
      "step": "01",
      "tag": "entrada"
    },
    {
      "id": "planning",
      "type": "active",
      "label": "Planificando",
      "sublabel": "organizar tareas",
      "lane": "main",
      "col": 1,
      "step": "02",
      "tag": "modelo"
    },
    {
      "id": "executing",
      "type": "active",
      "label": "Ejecutando",
      "sublabel": "uso de herramientas",
      "lane": "main",
      "col": 2,
      "step": "03",
      "tag": "trabajo"
    },
    {
      "id": "reviewing",
      "type": "decision",
      "label": "Revisando",
      "sublabel": "control de calidad",
      "lane": "main",
      "col": 3,
      "step": "04",
      "tag": "revisión"
    },
    {
      "id": "completed",
      "type": "success",
      "label": "Completado",
      "sublabel": "respuesta final",
      "lane": "main",
      "col": 4,
      "step": "05",
      "tag": "listo"
    },
    {
      "id": "approval",
      "type": "waiting",
      "label": "Por aprobar",
      "sublabel": "control humano",
      "lane": "waiting",
      "col": 0,
      "tag": "pausa"
    },
    {
      "id": "blocked",
      "type": "waiting",
      "label": "Bloqueado",
      "sublabel": "faltan datos",
      "lane": "waiting",
      "col": 1,
      "tag": "espera"
    },
    {
      "id": "failed",
      "type": "failure",
      "label": "Fallido",
      "sublabel": "error recuperable",
      "lane": "exceptions",
      "col": 0,
      "yOffset": 78,
      "tag": "reintentable"
    },
    {
      "id": "cancelled",
      "type": "failure",
      "label": "Cancelado",
      "sublabel": "canceló el usuario",
      "lane": "terminal",
      "col": 0,
      "tag": "final"
    },
    {
      "id": "expired",
      "type": "failure",
      "label": "Expirado",
      "sublabel": "tiempo agotado",
      "lane": "terminal",
      "col": 1,
      "tag": "final"
    }
  ],
  "transitions": [
    {
      "id": "approval-needed",
      "from": "executing",
      "to": "approval",
      "variant": "security",
      "fromSide": "bottom",
      "toSide": "top",
      "route": "straight"
    },
    {
      "id": "review-blocked",
      "from": "reviewing",
      "to": "blocked",
      "variant": "default",
      "route": "drop"
    },
    {
      "id": "execution-failed",
      "from": "executing",
      "to": "failed",
      "variant": "security",
      "fromSide": "left",
      "toSide": "left",
      "via": [
        [
          320,
          157
        ],
        [
          320,
          385
        ]
      ]
    },
    {
      "id": "failed-retry",
      "from": "failed",
      "to": "executing",
      "variant": "emphasis",
      "fromSide": "left",
      "toSide": "top",
      "via": [
        [
          20,
          385
        ],
        [
          20,
          80
        ],
        [
          402,
          80
        ]
      ]
    },
    {
      "id": "block-expired",
      "from": "blocked",
      "to": "expired",
      "variant": "security",
      "fromSide": "bottom",
      "toSide": "top",
      "route": "straight"
    },
    {
      "id": "approval-cancelled",
      "from": "approval",
      "to": "cancelled",
      "variant": "security",
      "fromSide": "bottom",
      "toSide": "top",
      "via": [
        [
          480,
          336
        ],
        [
          480,
          432
        ],
        [
          402,
          432
        ]
      ]
    }
  ],
  "cards": [
    {
      "dot": "emerald",
      "title": "Ruta principal y esperas",
      "items": [
        "La ejecución tiene cinco fases ordenadas desde la cola hasta la finalización",
        "La aprobación y la falta de datos pausan la ejecución sin finalizarla"
      ]
    },
    {
      "dot": "rose",
      "title": "Recuperación y salidas finales",
      "items": [
        "Los errores permiten volver a intentar mientras queden reintentos",
        "Cancelado y Expirado son estados finales sin ruta de retorno"
      ]
    }
  ]
}
