{
  "overview": "AGENA es una **plataforma de IA agéntica** que genera código de forma autónoma, crea pull requests y gestiona tu flujo de trabajo de desarrollo de software. Está diseñada para equipos de desarrollo que desean acelerar las entregas sin sacrificar la calidad del código.\n\n### Qué hace AGENA\n- **Toma una tarea** de tu backlog (Azure DevOps, Jira o creada manualmente)\n- **Ejecuta un pipeline de agentes de IA**: PM → Desarrollador → Revisor → Finalizador\n- **Genera código de producción**, crea una rama, hace commits y abre un PR\n- **Revisa su propio resultado** con un agente Revisor dedicado antes de enviarlo\n- **Notifica a tu equipo** vía Slack, Teams o Telegram\n- **Aprende de tu base de código** usando memoria vectorial para generación contextualizada\n\n### Conceptos Clave\n| Concepto | Descripción |\n|----------|-------------|\n| **Task** | Un elemento de trabajo importado de Jira/Azure DevOps o creado manualmente. Contiene título, descripción, criterios de aceptación y contexto. |\n| **Agent** | Un rol de IA (PM, Desarrollador, Revisor, QA, Finalizador) con su propio modelo LLM, prompt de sistema y comportamiento. Configurable por organización. |\n| **Flow** | Un pipeline de automatización visual (estilo n8n) que conecta agentes, condiciones, llamadas HTTP e integraciones en flujos de trabajo personalizados. |\n| **Pixel Agent** | El espacio de trabajo visual animado que muestra a los agentes como personajes pixel trabajando en tareas en tiempo real. |\n| **Organization** | Un espacio de trabajo multi-tenant. Cada organización tiene sus propias integraciones, miembros de equipo, tareas y facturación. |\n| **Repo Mapping** | Vincula un repositorio de GitHub/Azure DevOps a tu organización para que AGENA sepa dónde crear ramas y PRs. |\n| **Playbook** | Reglas y convenciones de codificación de toda la organización. Los agentes consultan el playbook al generar código. |\n| **Sprint** | Sprint activo de Azure DevOps o Jira. Las tareas pueden importarse del sprint y rastrearse en el tablero de sprint. |\n\n### Cómo Funciona — De Principio a Fin\n1. Creas una tarea (manualmente, desde Jira/Azure, o vía ChatOps: \\",
  "signup": "### Creación de tu Cuenta\n\n1. Ve a [agena.dev/signup](${SITE}/signup)\n2. Ingresa tu correo electrónico y contraseña\n3. Serás asignado a una nueva organización automáticamente\n4. Completa el asistente de incorporación para configurar tu primera integración\n\n### Después del Registro\n- Eres el **propietario** de tu organización\n- Invita a miembros del equipo desde **Dashboard → Team**\n- Configura integraciones desde **Dashboard → Integrations**",
  "quickstart-saas": "### Uso de AGENA SaaS (agena.dev)\n\n**Paso 1 — Regístrate** en [agena.dev/signup](${SITE}/signup)\n\n**Paso 2 — Configura Integraciones** (Dashboard → Integrations)\n- **Pestaña AI**: Agrega tu clave API de OpenAI (requerida) y opcionalmente Gemini\n- **Pestaña Task**: Conecta GitHub (para creación de PRs) y opcionalmente Azure DevOps / Jira\n\n**Paso 3 — Mapea un Repositorio** (Dashboard → Mappings)\n- Selecciona tu propietario y repositorio de GitHub\n- Esto le indica a AGENA dónde crear ramas y PRs\n\n**Paso 4 — Establece el Sprint Activo** (Dashboard → Profile)\n- Selecciona tu proyecto, equipo y sprint de Azure/Jira\n- El sprint activo se detecta automáticamente\n\n**Paso 5 — Crea tu Primera Tarea**\n- Ve a **Dashboard → Tasks** → Create Task\n- Ingresa un título y descripción (sé específico sobre lo que deseas)\n- Haz clic en **Assign to AI** — AGENA la pondrá en cola, ejecutará el pipeline y creará un PR\n\n**Paso 6 — Monitorea el Progreso**\n- Observa el estado de la tarea en la lista de tareas o en la vista **Office**\n- Cuando termine, verás el enlace al PR",
  "quickstart-selfhost": "### Despliegue Autoalojado\n\n#### Requisitos Previos\n- Docker & Docker Compose\n- Un servidor con al menos 4GB de RAM\n- Dominio con SSL (para callbacks de webhooks)\n\n#### Instalación\n\n\\",
  "office": "### Office — Espacio de Trabajo del Pixel Agent\n\nEl **Office** es el espacio de trabajo visual de AGENA donde tus agentes de IA aparecen como personajes pixel animados. Cada agente tiene un escritorio, se desplaza y muestra visualmente en qué está trabajando.\n\n#### Lo que Ves\n- **Personajes de Agentes** — Cada rol de IA (PM, Desarrollador, Revisor, etc.) es un personaje pixel en su escritorio\n- **Indicadores de Actividad** — Los agentes brillan o se animan cuando están procesando una tarea activamente\n- **Barra de Progreso de Tarea** — Progreso del pipeline en tiempo real: obtener → analizar → generar → revisar → finalizar\n- **Contador de Cola** — Muestra cuántas tareas están esperando en la cola\n- **Completados Recientes** — Acceso rápido a tareas terminadas recientemente y sus enlaces de PR\n\n#### Elementos Interactivos\n- **Haz clic en un agente** para ver su tarea actual y estado\n- **Pasa el cursor sobre los escritorios** para información rápida del agente\n- Botón **Create Task** para creación rápida de tareas sin salir de la vista de oficina\n- El diseño de la oficina se actualiza en tiempo real vía WebSocket — no necesitas refrescar\n\n#### Cuándo Usar el Office\nEl Office es ideal para:\n- Monitorear el trabajo activo de los agentes en tiempo real\n- Modo de demostración/presentación para mostrar AGENA a las partes interesadas\n- Vista rápida del estado de tu fuerza de trabajo de IA\n\n#### Navegación\nDashboard → Office (primer elemento en la sección Workspace de la barra lateral)",
  "tasks": "### Tareas\n\nEl centro de gestión de tareas para todos tus elementos de trabajo generados por IA.\n\n#### Creación de Tareas\n1. **Manual**: Haz clic en \"Create Task\" → ingresa título + descripción → Assign to AI\n2. **Importar desde Azure DevOps**: Selecciona proyecto/equipo/sprint → Importar\n3. **Importar desde Jira**: Selecciona proyecto/tablero/sprint → Importar\n4. **ChatOps**: Envía \\",
  "sprints": "### Tablero de Sprint\n\nTablero estilo Kanban que muestra todas las tareas de tu sprint activo, agrupadas por estado.\n\n#### Configuración\n1. Ve a **Dashboard → Profile**\n2. Selecciona tu proyecto, equipo y sprint de Azure DevOps o Jira\n3. El tablero de sprint carga automáticamente los elementos de trabajo del sprint seleccionado\n\n#### Funcionalidades\n- **Arrastrar y soltar** para cambiar el estado de las tareas\n- **Importar todos los elementos del sprint** con un solo clic\n- **Asignar a IA** directamente desde el tablero\n- **Filtrar** por estado, asignado o tipo de elemento de trabajo\n- **Actualizaciones en tiempo real** vía WebSocket",
  "sprint-performance": "### Rendimiento del Sprint\n\nPanel de análisis para la velocidad de tu sprint y la efectividad de los agentes de IA.\n\n#### Métricas\n- **Tasa de completado** — Porcentaje de tareas completadas vs total\n- **Tasa de éxito de IA** — Con qué frecuencia el pipeline de IA tiene éxito sin errores\n- **Tiempo de ciclo promedio** — Desde la creación de la tarea hasta el merge del PR\n- **Eficiencia de tokens** — Costo por tarea exitosa\n- **Tasa de merge de PRs** — Cuántos PRs generados por IA se fusionan",
  "refinement": "### Refinamiento\n\nHerramienta de refinamiento de sprint impulsada por IA que analiza elementos del backlog y sugiere puntos de historia.\n\n#### Cómo Funciona\n1. Selecciona tu fuente (Azure DevOps o Jira)\n2. Selecciona proyecto → equipo/tablero → sprint\n3. Haz clic en **Load Items** — muestra todos los elementos sin estimar\n4. Selecciona elementos a analizar → Haz clic en **Run Refinement**\n5. La IA analiza cada elemento y proporciona:\n   - **Puntos de historia sugeridos** con puntuación de confianza\n   - **Resumen** de lo que implica el elemento\n   - **Ambigüedades** y **Preguntas** a aclarar\n   - Indicador de **Listo para planificación**\n\n#### Escritura de Vuelta\nDespués de revisar las sugerencias, haz clic en **Write Back** para actualizar los puntos de historia directamente en Azure DevOps o Jira.",
  "agents": "### Agentes de IA\n\nConfigura los agentes de IA que impulsan tu pipeline.\n\n#### Roles de Agentes por Defecto\n| Rol | Descripción |\n|-----|-------------|\n| **PM** | Analiza requisitos, recopila contexto, crea plan de implementación |\n| **Developer** | Genera código de producción basado en el plan |\n| **Reviewer** | Revisa el código en busca de calidad, seguridad y buenas prácticas |\n| **QA** | Prueba y valida el código generado |\n| **Finalizer** | Crea ramas, hace commits y abre pull requests |\n\n#### Configuración por Agente\n- **Provider**: OpenAI o Gemini\n- **Model**: gpt-5, gpt-4o, gemini-2.5-pro, etc.\n- **Habilitado/Deshabilitado**: Activa o desactiva cada agente\n- **Create PR**: Si esta ejecución del agente debe crear un PR\n\n#### Modelos Personalizados por Agente\nCada agente puede usar un modelo diferente. Por ejemplo:\n- PM: gpt-4o-mini (rápido, económico para análisis)\n- Developer: gpt-5 (mejor calidad para generación de código)\n- Reviewer: gpt-4o (buen equilibrio para revisión)",
  "prompt-studio": "### Prompt Studio\n\nEdita y gestiona los prompts de sistema utilizados por cada agente de IA. Todos los prompts se almacenan en la base de datos y pueden modificarse en tiempo de ejecución sin necesidad de redesplegar.\n\n#### Funcionalidades\n- **Edición en vivo** — Los cambios surten efecto inmediatamente\n- **Historial de versiones** — Consulta cuándo se modificaron los prompts por última vez\n- **Prompts por agente** — Cada rol de agente tiene su propia plantilla de prompt\n- **Interpolación de variables** — Usa \\",
  "flows": "### Constructor de Flujos\n\nConstructor de automatización visual para crear flujos de trabajo de IA personalizados (estilo n8n).\n\n#### Tipos de Nodos\n| Nodo | Descripción |\n|------|-------------|\n| **Trigger** | Punto de entrada del flujo |\n| **Agent** | Análisis/generación impulsado por LLM (seleccionar modelo, proveedor, prompt) |\n| **Azure DevOps** | Crear rama, crear PR, completar PR, abandonar PR |\n| **GitHub** | Crear rama, crear PR, fusionar PR |\n| **HTTP** | Llamadas a API REST con autenticación (bearer, API key, basic) |\n| **Condition** | Lógica de bifurcación (eq, neq, contains, regex, etc.) |\n| **Notify** | Notificaciones por webhook, Slack o correo electrónico |\n| **Azure Update** | Actualizar estado de elemento de trabajo + agregar comentario |\n\n#### Comunicación entre Nodos\nLos nodos pasan datos vía \\",
  "templates": "### Plantillas\n\nPlantillas reutilizables de tareas y flujos para patrones de desarrollo comunes.\n\n#### Uso\n- Explora plantillas predefinidas para tareas comunes (corrección de errores, funcionalidad, refactorización)\n- Crea tus propias plantillas a partir de configuraciones de tareas exitosas\n- Aplica plantillas al crear nuevas tareas para prellenar descripción, contexto y configuración",
  "dora": "### Métricas DORA\n\nPanel de métricas de DevOps Research and Assessment (DORA).\n\n#### Vistas Disponibles\n- **Overview** — Resumen de DORA de alto nivel\n- **Project** — Métricas de entrega por proyecto\n- **Development** — Velocidad de código, frecuencia de commits, rendimiento de PRs\n- **Quality** — Tiempo de revisión de código, densidad de defectos, cobertura de pruebas\n- **Bugs** — Seguimiento de errores, tiempo de resolución, distribución de severidad\n- **Team** — Rendimiento por desarrollador y balance de carga de trabajo\n\n#### Métricas Rastreadas\n- **Deployment Frequency** — Con qué frecuencia se despliega el código\n- **Lead Time for Changes** — Tiempo desde el commit hasta producción\n- **Change Failure Rate** — Porcentaje de despliegues que causan fallos\n- **Mean Time to Recovery** — Qué tan rápido se resuelven los fallos",
  "integrations": "### Configuración de Integraciones\n\nConfigura servicios externos en **Dashboard → Integrations**.\n\n#### Pestaña AI\n- **OpenAI** — Clave API + URL base (requerido para generación de código)\n- **Gemini** — Clave API de Google AI (proveedor de respaldo opcional)\n- **Playbook** — Reglas y convenciones de codificación de toda la organización. Los agentes de IA consultan estas reglas al generar código.\n\n#### Pestaña Task\n- **GitHub** — Propietario + Token de Acceso Personal (PAT) con \\",
  "repo-mapping": "### Mapeo de Repositorios\n\nEl mapeo de repositorios le indica a AGENA con qué base de código trabajar para cada tarea. Sin un mapeo, AGENA no sabe dónde crear ramas y PRs.\n\n#### Configuración\n1. Ve a **Dashboard → Mappings**\n2. Haz clic en **Add Mapping**\n3. Configura los siguientes campos:\n\n| Campo | Descripción | Ejemplo |\n|-------|-------------|----------|\n| **Provider** | GitHub o Azure DevOps | GitHub |\n| **Owner** | Organización/usuario de GitHub o proyecto de Azure | \\",
  "team-management": "### Equipo y Permisos\n\nGestiona los miembros del equipo de tu organización y sus niveles de acceso.\n\n#### Roles\n| Rol | Permisos |\n|-----|----------|\n| **Owner** | Acceso completo, facturación, eliminar organización |\n| **Admin** | Gestionar equipo, integraciones, configuración |\n| **Member** | Crear tareas, ver resultados, usar agentes |\n| **Viewer** | Acceso de solo lectura a tareas y paneles |\n\n#### Invitar Miembros\n1. Ve a **Dashboard → Team**\n2. Haz clic en **Invite** → ingresa la dirección de correo electrónico\n3. Selecciona el rol a asignar\n4. El invitado recibe un correo electrónico con un enlace de registro/unión\n\n#### Permisos\nPermisos detallados disponibles en **Dashboard → Permissions**:\n- \\",
  "profile-settings": "### Perfil y Preferencias\n\nConfigura tus preferencias personales del espacio de trabajo en **Dashboard → Profile**.\n\n#### Selección de Sprint Activo\n- **Azure DevOps**: Selecciona Proyecto → Equipo → Sprint (sprint activo detectado automáticamente)\n- **Jira**: Selecciona Proyecto → Tablero → Sprint (sprint activo detectado automáticamente)\n\n#### Preferencias del Espacio de Trabajo\n- **Notificaciones por correo / Web Push / en la aplicación** — Activa o desactiva por canal\n- **Correo de resumen diario** — Recibe un resumen diario de la actividad de tareas\n- **Auto-asignar nuevas tareas** — Poner en cola automáticamente las tareas importadas para IA\n- **Crear PR por defecto** — Si las tareas de IA deben crear PRs por defecto\n- **Proveedor y modelo preferido** — Modelo de IA predeterminado para nuevas tareas\n\n#### Patrón de Nombres de Ramas\nElige entre presets o define un patrón personalizado:\n- \\",
  "chatops": "### ChatOps — Teams / Slack / Telegram\n\nControla AGENA directamente desde tu plataforma de chat.\n\n#### Comandos Disponibles\n| Comando | Descripción |\n|---------|-------------|\n| \\",
  "pipeline": "### Pipeline de Agentes de IA\n\nAGENA utiliza un sistema de orquestación de dos capas:\n\n#### CrewAI — Roles de Agentes\nCada agente tiene un rol específico, modelo y prompt de sistema:\n- **Agente PM**: Analiza la tarea, recopila contexto de la base de código, crea un plan de implementación detallado\n- **Agente Developer**: Genera código de producción siguiendo el plan y las convenciones del repositorio\n- **Agente Reviewer**: Revisa el código generado en busca de errores, problemas de seguridad y buenas prácticas\n- **Agente Finalizer**: Crea una rama git, hace commit del código y abre un pull request\n\n#### LangGraph — Pipeline de Ejecución\n\\",
  "services": "### Arquitectura de Servicios\n\nAGENA es un monorepo con 6 paquetes Python instalables vía pip:\n\n| Paquete | Descripción |\n|---------|-------------|\n| \\",
  "selfhost-deploy": "### Despliegue Autoalojado\n\n#### Servicios de Docker Compose\n\\",
  "admin-panel": "### Panel de Administración de la Plataforma\n\nEl panel de administración es la interfaz de superadministrador para gestionar toda la plataforma AGENA en todas las organizaciones. Es accesible en **Dashboard → Admin**.\n\n#### Quién Puede Acceder\nSolo los usuarios con \\",
  "admin-orgs": "### Gestión de Organizaciones\n\n#### Visualización de Organizaciones\nNavega a la pestaña **Admin → Organizations** para ver todas las organizaciones registradas.\n\nCada tarjeta de organización muestra:\n- **Nombre de la organización** e ID\n- **Cantidad de miembros** — Cuántos usuarios pertenecen a esta organización\n- **Cantidad de tareas** — Total de tareas creadas por esta organización\n- **Fecha de creación** — Cuándo se registró la organización\n- **Propietario** — El correo electrónico del propietario de la organización\n\n#### Multi-Tenancy\nAGENA es completamente multi-tenant. Cada organización está completamente aislada:\n- **Datos separados** — Tareas, flujos, agentes e integraciones están limitados a la organización\n- **Facturación separada** — Cada organización tiene su propio plan de suscripción\n- **Integraciones separadas** — Cada organización conecta sus propios GitHub, Jira, Slack, etc.\n- **Sin visibilidad entre organizaciones** — Los usuarios de la Organización A no pueden ver nada de la Organización B\n\n#### Tareas Comunes de Administración\n- **Investigar problemas** — Si un usuario reporta un problema, encuentra su organización y revisa los registros de tareas\n- **Monitorear el crecimiento** — Rastrear nuevos registros de organizaciones y la cantidad de tenants activos\n- **Identificar abusos** — Detectar organizaciones con cantidades inusualmente altas de tareas o uso de API",
  "admin-users": "### Gestión de Usuarios\n\n#### Visualización de Usuarios\nNavega a la pestaña **Admin → Users** para ver todos los usuarios registrados en toda la plataforma.\n\nCada entrada de usuario muestra:\n- **Nombre completo** y dirección de correo electrónico\n- **Organización** a la que pertenecen\n- **Rol** dentro de su organización (owner, admin, member, viewer)\n- **Indicador de administrador de plataforma** — Si tienen acceso de administrador de plataforma\n- **Último inicio de sesión** — Cuándo se autenticaron por última vez\n\n#### Ciclo de Vida del Usuario\n1. El usuario se registra en \\",
  "auth-api": "### API de Autenticación\n\n\\",
  "tasks-api": "### API de Tareas\n\n\\",
  "flows-api": "### API de Flujos\n\n\\",
  "integrations-api": "### API de Integraciones\n\n\\",
  "sdk-install": "### Instalación\n\nInstala el SDK de AGENA a través de npm:\n\n\\`\\`\\`bash\nnpm install @agena/sdk\n\\`\\`\\`\n\nO con yarn:\n\n\\`\\`\\`bash\nyarn add @agena/sdk\n\\`\\`\\`\n\n#### Requisitos\n- Node.js 18+ o cualquier entorno con soporte para `fetch`\n- Una cuenta AGENA con un token de API\n\n#### Obtener tu Token de API\n1. Inicia sesión en tu panel de AGENA\n2. Ve a **Perfil y Preferencias**\n3. Copia tu token de API\n\nO usa el SDK para iniciar sesión programáticamente:\n\n\\`\\`\\`typescript\nconst { access_token } = await AgenaClient.auth.login(\n  'https://api.agena.dev',\n  'you@email.com',\n  'your-password'\n);\n\\`\\`\\`",
  "sdk-quickstart": "### Inicio Rápido\n\n\\`\\`\\`typescript\nimport { AgenaClient } from '@agena/sdk';\n\n// Inicializar el cliente\nconst agena = new AgenaClient({\n  apiKey: 'your-token-here',\n});\n\n// Crear una tarea — los agentes de IA generarán código y abrirán un PR\nconst task = await agena.tasks.create({\n  title: 'Add user avatar upload',\n  description: 'Allow users to upload and crop a profile avatar image',\n});\n\nconsole.log('Task created:', task.id, task.status);\n\n// Consultar el estado periódicamente\nconst interval = setInterval(async () => {\n  const updated = await agena.tasks.get(task.id);\n  console.log('Status:', updated.status);\n\n  if (updated.status === 'completed') {\n    console.log('PR ready:', updated.pr_url);\n    clearInterval(interval);\n  }\n}, 5000);\n\\`\\`\\`\n\n#### Ejecutar un Flujo\n\n\\`\\`\\`typescript\n// Ejecutar un flujo de automatización visual\nconst run = await agena.flows.run({ flow_id: 1 });\n\n// Verificar el resultado\nconst result = await agena.flows.getRun(run.id);\nconsole.log('Steps:', result.steps.map(s => s.status));\n\\`\\`\\`\n\n#### Monitorear Agentes\n\n\\`\\`\\`typescript\n// Observar los agentes de IA trabajando en tiempo real\nconst live = await agena.agents.liveStatus(task.id);\nlive.agents.forEach(agent => {\n  console.log(agent.role, '→', agent.status);\n});\n// PM → completed\n// Developer → running\n// Reviewer → pending\n\\`\\`\\`",
  "multi-repo": "### Orquestación Multi-Repositorio\n\nAGENA soporta **orquestación multi-repo** — una sola tarea puede apuntar a múltiples repositorios simultáneamente. En lugar de crear tareas separadas para cada repo, describes el cambio una vez y AGENA ejecuta pipelines de agentes independientes para cada repositorio, produciendo pull requests separados.\n\n#### ¿Qué es Multi-Repo?\nEn proyectos del mundo real, una sola funcionalidad o corrección de errores a menudo abarca múltiples bases de código — una API backend, una app frontend, una librería compartida o configuración de infraestructura. La orquestación multi-repo te permite asignar una tarea a todos los repositorios afectados a la vez.\n\n#### Cómo Configurarlo\n1. **Agrega mapeos de repositorios** — Ve a **Dashboard → Mappings** y agrega cada repositorio con el que quieras que AGENA trabaje (GitHub o Azure DevOps).\n2. **Selecciona múltiples repos al crear una tarea** — Al crear o asignar una tarea, selecciona dos o más repositorios mapeados como destino.\n3. **AGENA se encarga del resto** — Cada repositorio seleccionado obtiene su propia ejecución de pipeline independiente.\n\n#### Cómo Funciona\n- Cada repositorio ejecuta su propio **pipeline completo de agentes** (PM → Developer → Reviewer → Finalizer)\n- Cada pipeline tiene **contexto independiente** — el agente PM obtiene la base de código específica del repo, convenciones y estructura de archivos\n- Cada repositorio obtiene su **propia rama y pull request**\n- Todos los pipelines se ejecutan en **paralelo** para máxima velocidad\n- El panel de tareas muestra **estado por repo** para que puedas rastrear el progreso de cada repositorio independientemente\n\n#### Ejemplo de Caso de Uso\n**Tarea**: *\"Agregar rate limiting al endpoint de login\"*\n\n| Repositorio | Qué Hace AGENA |\n|------------|----------------|\n| `backend-api` | Agrega middleware de rate limiting, actualiza la ruta de login, agrega lógica de contador Redis |\n| `frontend-app` | Agrega lógica de reintento con backoff exponencial, muestra mensaje de error de rate limit a usuarios |\n| `shared-types` | Agrega definición de tipo `RateLimitError` a los tipos de error compartidos |\n\nResultado: 3 PRs separados, uno por repo, todos desde una sola tarea.\n\n#### Mejores Prácticas\n- **Sé específico en la descripción de tu tarea** — menciona qué aspectos aplican a qué repos cuando sea posible\n- **Usa un playbook** — las reglas de codificación a nivel de organización ayudan a los agentes a mantener consistencia entre repos\n- **Revisa los PRs juntos** — como todos los PRs se relacionan con la misma tarea, revísalos y fusiónalos como grupo",
  "task-dependencies": "### Dependencias de Tareas\n\nAGENA soporta **dependencias de tareas** — define el orden de ejecución entre tareas para que se ejecuten en la secuencia correcta automáticamente. Cuando una dependencia se completa, la siguiente tarea en la cadena se encola automáticamente y comienza sin intervención manual.\n\n#### ¿Qué Son las Dependencias de Tareas?\nEn proyectos complejos, las tareas a menudo tienen requisitos de orden natural. Una migración de base de datos debe completarse antes de la actualización de la API backend. La actualización del frontend depende de que los nuevos endpoints de API estén listos. Las pruebas E2E solo deben ejecutarse después de que todos los cambios de código estén desplegados. Las dependencias de tareas te permiten expresar estas relaciones explícitamente.\n\n#### Cómo Establecer Dependencias\n1. **Al momento de la creación** — Al crear una nueva tarea, selecciona una o más tareas existentes como dependencias en el campo \"Depende De\".\n2. **Desde la página de detalle de la tarea** — Abre cualquier tarea y agrega dependencias en la sección de Dependencias.\n3. **Desde el popup de asignación** — Al asignar una tarea, también puedes establecer sus dependencias.\n\n#### Cómo Funciona\n- El **worker verifica las dependencias** antes de ejecutar cualquier tarea — si los bloqueadores están incompletos, la tarea permanece en estado `waiting`\n- Cuando una tarea bloqueadora se completa, todas las tareas dependientes son **automáticamente reevaluadas**\n- Las tareas cuyas dependencias ahora están satisfechas se **encolan automáticamente** y comienzan la ejecución\n- La cadena de dependencias puede ser tan larga como sea necesario: Tarea A → Tarea B → Tarea C → Tarea D\n- La **detección de ciclos** se ejecuta cuando agregas una dependencia — las cadenas circulares (A → B → C → A) se rechazan con un mensaje de error claro\n\n#### Flujo Visual de Dependencias\nEl panel de tareas muestra una representación visual de las cadenas de dependencias:\n- **Verde** (completada) — Tarea completada exitosamente\n- **Amarillo** (ejecutando) — Tarea siendo procesada actualmente por agentes de IA\n- **Gris** (esperando) — Tarea esperando que sus dependencias se completen\n- Las flechas entre tareas muestran la dirección del flujo de ejecución\n\n#### Ejemplo\n```\n#31 DB Migration        ✓ completada\n     ↓\n#32 Backend API Update  ✓ completada\n     ↓\n#33 Frontend Update     ⟳ ejecutando\n     ↓\n#34 E2E Tests           ⏳ esperando\n```\nEn este ejemplo, #33 fue auto-encolada después de que #32 se completó. #34 se auto-encolará una vez que #33 termine.\n\n#### Mejores Prácticas\n- **Mantén las cadenas enfocadas** — las dependencias funcionan mejor para trabajo naturalmente secuencial dentro de la misma funcionalidad\n- **Usa con multi-repo** — combina dependencias con orquestación multi-repo para flujos de trabajo complejos entre repositorios\n- **Verifica el flujo visual** — usa la visualización de dependencias para verificar tu orden de ejecución antes de iniciar la cadena",
  "sdk-reference": "### Referencia de la API\n\n#### AgenaClient\n\n| Método | Descripción |\n|--------|-------------|\n| `new AgenaClient({ apiKey, baseUrl?, timeout? })` | Crear una instancia del cliente |\n| `AgenaClient.auth.login(baseUrl, email, password)` | Estático: iniciar sesión y obtener token |\n\n#### Tasks\n\n| Método | Descripción |\n|--------|-------------|\n| `agena.tasks.create(params)` | Crear una nueva tarea de IA |\n| `agena.tasks.get(id)` | Obtener tarea por ID |\n| `agena.tasks.list({ status?, page?, per_page? })` | Listar tareas |\n| `agena.tasks.cancel(id)` | Cancelar una tarea en ejecución |\n| `agena.tasks.rerun(id)` | Reejecutar una tarea completada/fallida |\n\n#### Flows\n\n| Método | Descripción |\n|--------|-------------|\n| `agena.flows.run({ flow_id, context? })` | Ejecutar un flujo |\n| `agena.flows.getRun(runId)` | Obtener detalles de una ejecución de flujo |\n| `agena.flows.listRuns()` | Listar ejecuciones recientes |\n| `agena.flows.listTemplates()` | Listar plantillas de flujo |\n\n#### Agents\n\n| Método | Descripción |\n|--------|-------------|\n| `agena.agents.run({ task_id })` | Ejecutar agentes en una tarea |\n| `agena.agents.liveStatus(taskId)` | Obtener estado en vivo de los agentes |\n\n#### Integrations\n\n| Método | Descripción |\n|--------|-------------|\n| `agena.integrations.list()` | Listar todas las integraciones |\n| `agena.integrations.get(provider)` | Obtener integración específica |\n| `agena.integrations.githubRepos()` | Listar repositorios de GitHub |\n| `agena.integrations.githubBranches(owner, repo)` | Listar ramas |\n\n#### Manejo de Errores\n\nTodos los métodos lanzan `AgenaApiError` en caso de fallo:\n\n\\`\\`\\`typescript\ntry {\n  await agena.tasks.get(999);\n} catch (err) {\n  if (err.name === 'AgenaApiError') {\n    console.error(err.status, err.detail);\n  }\n}\n\\`\\`\\`"
}
