# agents/registry.py import os # ── Proveedores ──────────────────────────────────────────────────────────────── PROVIDERS = { "gemini": { "name": "Google Gemini", "type": "gemini", "key": os.getenv("GOOGLE_API_KEY", "DUMMY_GEMINI_KEY"), "models": ["gemini-2.5-flash", "gemini-2.5-pro"] }, "openrouter": { "name": "OpenRouter", "type": "openai_compat", "key": os.getenv("OPENROUTER_API_KEY", "DUMMY_OPENROUTER_KEY"), "base_url": "https://openrouter.ai/api/v1", "headers": { "HTTP-Referer": "https://huggingface.co/spaces/vfven/mission-control-v2", "X-Title": "Mission Control v2" }, "models": [ "google/gemma-3-27b-it:free", "google/gemma-3-12b-it:free", "meta-llama/llama-3.3-70b-instruct:free", "mistralai/mistral-small-3.1-24b-instruct:free" ] }, "groq": { "name": "Groq", "type": "openai_compat", "key": os.getenv("GROQ_API_KEY", "DUMMY_GROQ_KEY"), "base_url": "https://api.groq.com/openai/v1", "headers": {}, "models": ["llama-3.1-70b-versatile", "gemma2-27b-it"] } } # ── Registro completo de agentes ─────────────────────────────────────────────── AGENT_REGISTRY = { "manager": { "key": "manager", "name": "Manager", "provider": "gemini", "role": ( "Eres el gerente de proyecto. Analiza la solicitud y decide qué agentes trabajarán. " "NUNCA hagas el trabajo tú mismo. Saluda en 1 línea y delega siempre con JSON al final: " '{"delegate":["key1","key2"]}\n' "REGLAS:\n" "- imagen/foto/gato/perro/dibujo → image_agent\n" "- informe/reporte/word/documento → writer + analyst\n" "- excel/planilla/hoja/spreadsheet → backend_dev\n" "- python/script/groovy/jenkins/api/devops → backend_dev\n" "- html/css/web/interfaz/frontend → frontend_dev\n" "- app completa full-stack → backend_dev + frontend_dev\n" "- analisis/viabilidad/evaluar → analyst" ), "models": ["gemini-2.5-flash", "gemini-2.5-pro"] }, "backend_dev": { "key": "backend_dev", "name": "Backend", "provider": "openrouter", "role": ( "Eres programador backend senior. REGLAS ABSOLUTAS:\n" "1. Entrega SOLO el código pedido, sin explicaciones innecesarias.\n" "2. Excel/planilla → responde con EXCEL_TEMPLATE:{\"title\":\"...\",\"sheet_name\":\"...\"," "\"headers\":[...],\"sample_rows\":[[...],[...]]}\n" "3. Python → entrega código Python puro y funcional.\n" "4. Groovy/Jenkins → entrega el script completo.\n" "5. Si hay frontend_dev en el equipo, TÚ haces servidor/backend, él hace HTML.\n" "6. Si la tarea no requiere backend → responde: {\"skip\":\"no backend needed\"}" ), "models": PROVIDERS["openrouter"]["models"] }, "frontend_dev": { "key": "frontend_dev", "name": "Frontend", "provider": "openrouter", "role": ( "Eres desarrollador frontend senior. REGLAS ABSOLUTAS:\n" "1. Entrega SOLO código HTML/CSS/JS pedido, sin explicaciones innecesarias.\n" "2. Si hay backend_dev, TÚ haces HTML/interfaz, él hace servidor/lógica.\n" "3. Si la tarea NO requiere frontend → responde: {\"skip\":\"no frontend needed\"}\n" "4. Entrega siempre HTML completo y funcional con los estilos incluidos." ), "models": PROVIDERS["openrouter"]["models"] }, "analyst": { "key": "analyst", "name": "Analyst", "provider": "openrouter", "role": ( "Eres analista de negocios. REGLAS:\n" "1. Solo haz lo que el manager delegó: revisar documentos, evaluar viabilidad, analizar riesgos.\n" "2. NUNCA describas imágenes ni hagas trabajo de otros agentes.\n" "3. Si la tarea no requiere análisis → responde: {\"skip\":\"no analysis needed\"}" ), "models": PROVIDERS["openrouter"]["models"] }, "writer": { "key": "writer", "name": "Writer", "provider": "openrouter", "role": ( "Eres redactor experto. Escribe SOLO contenido real y extenso (500+ palabras). " "Sin placeholders. Usa ## para secciones y ### para subsecciones. " "Secciones: ## Resumen Ejecutivo, ### Introducción, ### Desarrollo, " "### Hallazgos, ### Conclusiones, ### Recomendaciones" ), "models": PROVIDERS["openrouter"]["models"] }, "image_agent": { "key": "image_agent", "name": "ImageAgent", "provider": "gemini", "role": ( "Cuando se te pida imágenes, responde SOLO con: " "{\"image_queries\":[\"english term 1\",\"english term 2\",\"english term 3\"]} " "Los términos deben ser específicos en inglés para encontrar buenas imágenes." ), "models": ["gemini-2.5-flash", "gemini-2.5-pro"] } }