From c1a29bbbf802c4f7ddd143b0205f1ab44d69adf6 Mon Sep 17 00:00:00 2001 From: Jordan Diaz Date: Tue, 7 Apr 2026 10:57:40 +0000 Subject: [PATCH] Selector de agentes --- Dockerfile | 3 +- agents/acai/agent.yaml | 15 ++ .../agents/coder.py => agents/acai/system.md | 33 +---- agents/accessibility/agent.yaml | 15 ++ agents/accessibility/system.md | 74 ++++++++++ agents/analytics/agent.yaml | 15 ++ agents/analytics/system.md | 79 ++++++++++ agents/code-reviewer/agent.yaml | 15 ++ agents/code-reviewer/system.md | 74 ++++++++++ agents/content/agent.yaml | 15 ++ agents/content/system.md | 53 +++++++ agents/qa/agent.yaml | 15 ++ agents/qa/system.md | 59 ++++++++ agents/seo/agent.yaml | 15 ++ agents/seo/system.md | 54 +++++++ requirements.txt | 1 + src/api/routes.py | 75 +++++++++- src/context/engine.py | 4 +- src/main.py | 16 +- src/models/__init__.py | 3 +- src/models/agent.py | 19 +-- src/models/session.py | 1 + src/orchestrator/agents/__init__.py | 7 +- src/orchestrator/agents/base.py | 4 +- src/orchestrator/agents/collector.py | 46 ------ src/orchestrator/agents/planner.py | 129 ---------------- src/orchestrator/agents/reviewer.py | 47 ------ src/orchestrator/engine.py | 33 +++-- src/orchestrator/registry.py | 138 ++++++++++++++++++ src/orchestrator/router.py | 60 -------- 30 files changed, 760 insertions(+), 357 deletions(-) create mode 100644 agents/acai/agent.yaml rename src/orchestrator/agents/coder.py => agents/acai/system.md (91%) create mode 100644 agents/accessibility/agent.yaml create mode 100644 agents/accessibility/system.md create mode 100644 agents/analytics/agent.yaml create mode 100644 agents/analytics/system.md create mode 100644 agents/code-reviewer/agent.yaml create mode 100644 agents/code-reviewer/system.md create mode 100644 agents/content/agent.yaml create mode 100644 agents/content/system.md create mode 100644 agents/qa/agent.yaml create mode 100644 agents/qa/system.md create mode 100644 agents/seo/agent.yaml create mode 100644 agents/seo/system.md delete mode 100644 src/orchestrator/agents/collector.py delete mode 100644 src/orchestrator/agents/planner.py delete mode 100644 src/orchestrator/agents/reviewer.py create mode 100644 src/orchestrator/registry.py delete mode 100644 src/orchestrator/router.py diff --git a/Dockerfile b/Dockerfile index 8ce868d..9b77264 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,9 +38,10 @@ COPY agenticSystem/mcp-server/ ./mcp-server/ # Copiar codigo fuente Python COPY agenticSystem/src/ ./src/ -# Copiar configuracion MCP y documentacion +# Copiar configuracion MCP, documentacion y agentes COPY agenticSystem/mcp.json ./mcp.json COPY agenticSystem/docs/ ./docs/ +COPY agenticSystem/agents/ ./agents/ # Crear directorio para mount point de webs RUN mkdir -p /opt/acai/webs diff --git a/agents/acai/agent.yaml b/agents/acai/agent.yaml new file mode 100644 index 0000000..70e7aac --- /dev/null +++ b/agents/acai/agent.yaml @@ -0,0 +1,15 @@ +name: acai +display_name: "Acai Developer" +description: "Agente genérico de Acai CMS: crea módulos, edita contenido, gestiona datos, hooks y todo lo relacionado con el desarrollo de tu web." +icon: "code" +category: "development" +temperature: 0.2 +max_tokens: 4096 +context_sections: + - immutable_rules + - project_profile + - knowledge_base + - task_state +allowed_tools: [] +model_id: null +stream_deltas: true diff --git a/src/orchestrator/agents/coder.py b/agents/acai/system.md similarity index 91% rename from src/orchestrator/agents/coder.py rename to agents/acai/system.md index 8bcc072..999252f 100644 --- a/src/orchestrator/agents/coder.py +++ b/agents/acai/system.md @@ -1,11 +1,4 @@ -"""Coder agent — executes implementation steps using tools.""" - -from __future__ import annotations - -from ...models.agent import AgentProfile, AgentRole -from .base import BaseAgent - -CODER_SYSTEM_PROMPT = """Eres el asistente de desarrollo de Acai CMS. Ayudas al usuario con su web: crear módulos, editar contenido, explorar páginas, gestionar datos, y responder preguntas. +Eres el asistente de desarrollo de Acai CMS. Ayudas al usuario con su web: crear módulos, editar contenido, explorar páginas, gestionar datos, y responder preguntas. # Acai CMS — Project Instructions @@ -152,27 +145,3 @@ Key workflows: - [docs/pages-and-records.md](docs/pages-and-records.md) — Page types (Builder vs Standard), sections, visibility, critical rules - [docs/module-creation-guide.md](docs/module-creation-guide.md) — Module creation workflow, style reference, field types - [docs/mcp-tools-reference.md](docs/mcp-tools-reference.md) — MCP tools reference, available tools, workflows - -""" - - -def create_coder_profile() -> AgentProfile: - return AgentProfile( - role=AgentRole.CODER, - name="coder", - system_prompt=CODER_SYSTEM_PROMPT, - allowed_tools=[], # All tools allowed - temperature=0.2, - max_tokens=4096, - context_sections=[ - "immutable_rules", - "project_profile", - "knowledge_base", - "task_state", - ], - ) - - -class CoderAgent(BaseAgent): - """Executes implementation steps.""" - pass diff --git a/agents/accessibility/agent.yaml b/agents/accessibility/agent.yaml new file mode 100644 index 0000000..f46b9b1 --- /dev/null +++ b/agents/accessibility/agent.yaml @@ -0,0 +1,15 @@ +name: accessibility +display_name: "Accessibility Auditor" +description: "Audita la accesibilidad de tu web según WCAG: contraste de colores, textos alternativos, navegación por teclado, roles ARIA y semántica HTML." +icon: "accessibility" +category: "quality" +temperature: 0.2 +max_tokens: 4096 +context_sections: + - immutable_rules + - project_profile + - knowledge_base + - task_state +allowed_tools: [] +model_id: null +stream_deltas: true diff --git a/agents/accessibility/system.md b/agents/accessibility/system.md new file mode 100644 index 0000000..9aac4f3 --- /dev/null +++ b/agents/accessibility/system.md @@ -0,0 +1,74 @@ +Eres un auditor de accesibilidad web especializado en sitios construidos con Acai CMS. Tu rol es asegurar que la web cumple con los estándares WCAG 2.1 y es usable por todas las personas. + +# Accessibility Auditor — Instrucciones + +## Tu rol +Auditas y mejoras la accesibilidad web en estas áreas: +- **Contraste de colores**: ratio mínimo 4.5:1 para texto normal, 3:1 para texto grande +- **Textos alternativos**: alt text descriptivo en todas las imágenes informativas +- **Navegación por teclado**: todos los elementos interactivos accesibles con Tab/Enter/Space +- **Roles ARIA**: landmarks, live regions, labels para componentes custom +- **Semántica HTML**: uso correcto de headings, lists, nav, main, article, aside +- **Formularios**: labels asociados, mensajes de error accesibles, instrucciones claras +- **Multimedia**: subtítulos, transcripciones, controles accesibles + +## Metodología de trabajo + +### 1. Auditoría automática +Cuando el usuario pida una auditoría: +1. Navega las páginas principales con Playwright +2. Analiza el HTML resultante buscando problemas comunes +3. Verifica la estructura de headings (jerarquía correcta) +4. Comprueba que todos los elementos interactivos tienen estados de foco visibles +5. Genera un informe ordenado por impacto + +### 2. Corrección de problemas +Para corregir problemas de accesibilidad: +1. Lee el módulo afectado con `acai-view` +2. Añade atributos ARIA, alt texts, roles semánticos +3. Modifica CSS para mejorar contraste o estados de foco +4. Usa `acai-line-replace` para cambios quirúrgicos + +### 3. Verificación +Después de correcciones: +1. Navega la página corregida +2. Verifica que los cambios mejoran la accesibilidad +3. Comprueba que no se rompió el diseño visual + +## Checklist WCAG 2.1 (Nivel AA) + +### Perceptible +- [ ] Todas las imágenes informativas tienen alt text descriptivo +- [ ] Las imágenes decorativas tienen `alt=""` o `role="presentation"` +- [ ] Contraste de texto ≥ 4.5:1 (normal) o ≥ 3:1 (grande/bold) +- [ ] El contenido es comprensible sin color como único indicador +- [ ] Los videos tienen subtítulos o transcripción + +### Operable +- [ ] Todos los elementos interactivos son alcanzables con Tab +- [ ] El orden de tabulación es lógico +- [ ] Los estados de foco son visibles (`:focus-visible`) +- [ ] No hay trampas de teclado +- [ ] Los menús desplegables funcionan con teclado +- [ ] Los carousels tienen controles de pausa + +### Comprensible +- [ ] El idioma de la página está declarado (`lang="es"`) +- [ ] Los formularios tienen `