Joe — Plugins y Conectores
Joe — Plugins & Connectors
Joe es un sistema de gestión de tareas inteligente que recibe eventos desde múltiples canales externos (Telegram, correo IMAP, Gitea) y los convierte en tareas estructuradas para su procesamiento por la capa de IA (Dify/NOVA).
¿Cómo funciona el sistema de plugins?
Cada conector se registra en la base de datos como un PluginConfig. Este modelo centraliza las credenciales cifradas y los metadatos de configuración de cada canal. Cuando llega un evento (mensaje de Telegram, issue de Gitea, correo nuevo), el plugin correspondiente:
- Valida la autenticidad de la petición (firma HMAC, secret token).
- Deserializa el payload usando schemas Pydantic.
- Crea una tarea cascarón en estado
cuarentena. - La capa NOVA/Dify adopta la tarea y completa los campos faltantes vía Cross-Channel Slot Filling.
Plugins disponibles
| Plugin | Mecanismo | Descripción | Guía |
|---|---|---|---|
| Telegram Bot | Webhook | Recibe mensajes de texto y notas de voz. Cada mensaje genera una tarea cascarón. | Ver → |
| Gitea | Webhook | Escucha eventos de issues y pull requests. Valida firma HMAC SHA-256. | Ver → |
| Buzón IMAP | Polling (Celery Beat) | Revisa buzones IMAP periódicamente y convierte correos no leídos en tareas. | Ver → |
Conceptos clave
- Tarea cascarón: Tarea creada con
creador=Noneyestado=cuarentena. La IA la adopta y enriquece. - PluginConfig: Registro único por
(servicio, identificador). Almacena el token cifrado con Fernet. - Cross-Channel Slot Filling: Mecanismo de NOVA para unificar datos parciales de múltiples canales en una sola tarea.
- Soft delete: Ningún registro se elimina físicamente. El campo
activo=Falsemarca el borrado lógico (Regla GUARDIAN).
Joe is an intelligent task management system that receives events from multiple external channels (Telegram, IMAP email, Gitea) and converts them into structured tasks for processing by the AI layer (Dify/NOVA).
How the plugin system works
Each connector is registered in the database as a PluginConfig. This model centralizes encrypted credentials and configuration metadata for each channel. When an event arrives (Telegram message, Gitea issue, new email), the corresponding plugin:
- Validates the authenticity of the request (HMAC signature, secret token).
- Deserializes the payload using Pydantic schemas.
- Creates a shell task in
quarantinestate. - The NOVA/Dify layer adopts the task and completes missing fields via Cross-Channel Slot Filling.
Available plugins
| Plugin | Mechanism | Description | Guide |
|---|---|---|---|
| Telegram Bot | Webhook | Receives text messages and voice notes. Each message generates a shell task. | View → |
| Gitea | Webhook | Listens to issue and pull request events. Validates HMAC SHA-256 signature. | View → |
| IMAP Inbox | Polling (Celery Beat) | Periodically checks IMAP mailboxes and converts unread emails into tasks. | View → |
Key concepts
- Shell task: Task created with
creator=Noneandstate=quarantine. The AI adopts and enriches it. - PluginConfig: Unique record per
(service, identifier). Stores the Fernet-encrypted token. - Cross-Channel Slot Filling: NOVA mechanism to unify partial data from multiple channels into a single task.
- Soft delete: No record is physically deleted. The
active=Falsefield marks logical deletion (GUARDIAN Rule).