Sobre el proyecto

Este es un Hub de protocolo de chat grupal implementado según el «AG-UI Group Chat Extension Protocol v1.0», escrito utilizando ASP.NET Core Minimal API en C# / .NET 10. Convierte el «chat grupal» en una capa de protocolo accesible para aplicaciones de terceros: el ciclo de vida de grupos y miembros, la difusión de mensajes, las suscripciones y el downlink en tiempo real siguen un conjunto uniforme de convenciones de eventos y códigos de error, donde los agentes de IA participan como miembros del grupo. Capacidades del Protocolo - Ciclo de vida del grupo: creación, actualización y disolución, correspondientes a GROUP_CREATED / GROUP_UPDATED / GROUP_DISBANDED. - Gestión de miembros: unión, eliminación, salida voluntaria, cambios de rol y perfil (GROUP_MEMBER_*). - Difusión de mensajes: los mensajes de usuario se transmiten como tríos de TEXT_MESSAGE_START/CONTENT/END, con tres alcances de visibilidad (all, mentioned, private), y soporte para revocación, confirmaciones de lectura y estado de «escribiendo». - Mecanismo de suscripción: GROUP_SUBSCRIBE / GROUP_UNSUBSCRIBE / GROUP_SUBSCRIBE_ACK / GROUP_STATE_SNAPSHOT. - Transporte dual: WebSocket full-duplex (/ws) y SSE downlink unidireccional (/sse), con mantenimiento de conexión mediante heartbeat; SSE permite suscripciones y cancelaciones dinámicas vía interfaz HTTP. - Reglas de activación de agentes (Protocolo §6): activación por mención, escucha total, activación por palabras clave y activación por contexto (determinada por el modelo según el contexto). - La API de uplink HTTP cubre la creación de grupos, descubrimiento/entrada a Customer Knowledge Hub, generación automática de nombres de grupo, gestión de miembros, envío de mensajes, carga/descarga de adjuntos, revocación, lectura, toma de decisiones humano-máquina, snapshots y listas de miembros; los errores devuelven un formato uniforme de code + message, mapeados a estados 403/404/409/400. Las interfaces de escritura sobrescriben los campos de identidad en el cuerpo de la solicitud según el token, y las de lectura verifican que el llamador sea miembro del grupo. Agentes y Memoria - AguiGroupChat.Agents implementa IAgentGateway basado en Microsoft Agent Framework: incluye un proveedor mock listo para usar o configuración de endpoints compatibles con OpenAI (Ollama / vLLM / Azure OpenAI / DeepSeek). Tras la activación, los eventos de texto se reintegran mediante streaming y las llamadas a funciones se difunden como TOOL_CALL_START. - Interacción Humano-Máquina (HITL): las herramientas pueden marcarse como ApprovalRequiredAIFunction; cuando el modelo las invoca, la ejecución se interrumpe y se difunde una tarjeta de interacción AGENT_INTERACTION_REQUEST. Solo el activador puede aprobar o rechazar, reanudando la sesión tras la decisión. - Memoria Semántica RAG: MemoryContextProvider inyecta contexto de recuperación; los vectores se almacenan en pgvector y el embedding puede usar endpoints HTTP o modelos locales LLamaSharp (como bge-m3). La base de conocimientos soporta fragmentación y recuperación de documentos, con parámetros ajustables de alcance de memoria, TopK y umbral de similitud. - Tipos de memoria personificada: cada empleado digital puede configurarse con cinco ajustes preestablecidos de memoria y modos de tono; si no se configuran, se utiliza el global de la plataforma para mantener la compatibilidad hacia atrás. - El conjunto de herramientas integradas incluye calculadora, conversión de unidades, recuperación de memoria grupal y lectura de adjuntos; web_search / read_url están desactivados por defecto. - Comprensión de imágenes: las respuestas con adjuntos de imagen se enrutan a un modelo visual, transmitiendo la imagen como contenido multimodal base64. - Puente de modo de pensamiento: el contenido REASONING_MESSAGE_CONTENT de servicios externos viaja por un canal independiente, permitiendo que el frontend renderice bloques de proceso de pensamiento colapsables. Aplicaciones y Funciones Extendidas - Gestión de usuarios: registro, inicio de sesión, cierre de sesión, cambio de contraseña y mantenimiento de perfil, con hash de contraseña PBKDF2 y tokens de sesión; WS/SSE soportan autenticación por token. La interfaz de login incluye protección contra enumeración de usuarios y limitación de velocidad por fallos. - RBAC a nivel de plataforma: cuatro niveles (SuperAdmin / Admin / Operator / User), configurables mediante listas de bootstrapping o asignados en línea por el SuperAdmin; incluye grupos de usuarios y autorización por grupo para listas blancas de visibilidad de empleados digitales y habilidades. - Biblioteca de habilidades: dividida en cuatro categorías (prompt / shell / http / dotnet), donde solo los administradores del sistema pueden gestionar aquellas con capacidad de ejecución; soporta la generación de definiciones de habilidades y pruebas de ejecución mediante lenguaje natural. - Orquestación de organización en un clic: genera esquemas de puestos mediante streaming SSE a partir de un requerimiento textual; permite previsualizar la estructura organizativa, habilidades y relaciones de asignación antes de persistirlos, creando grupos simultáneamente. - Chat individual y Customer Knowledge Hub: permite crear chats privados bidireccionales idempotentes para empleados digitales; en el Customer Knowledge Hub, los usuarios comunes entran como participantes con sesiones aisladas. - Búsqueda global a través de mensajes, memoria semántica y base de conocimientos, filtrando resultados por visibilidad. - Capacidades de cumplimiento empresarial como proxy de enlaces, exportación/importación de datos, configuración de modelos en tiempo de ejecución, logs de auditoría y cancelación de cuentas. Despliegue y Formato del Proyecto - Ofrece cuatro modos de ejecución: Demo Web, Hub de protocolo puro, Escritorio Windows (WPF + WebView2) y Escritorio multiplataforma (Avalonia); la versión de escritorio soporta múltiples instancias compartiendo el mismo proceso de backend. - Persistencia opcional mediante snapshots de archivo JSON único o bases de datos postgres / mysql / sqlite; docker compose permite el inicio rápido de postgres(pgvector) + Ollama integrado + Web, activando la memoria semántica por defecto. - Incluye SDKs de acceso para terceros (AguiClient + AguiRealtimeClient, soporte net8.0/net10.0), clientes de ejemplo, pruebas unitarias y end-to-end, así como scripts de automatización de navegador con Playwright.