NAiOSOmni Email
omnichat-emailv0.6.0Añade un canal de email (IMAP/SMTP) a NAiOSOmni. Tu bandeja aparece como un canal más dentro del Inbox unificado, con auto-reply IA, agentes verticales y todas las capacidades de NAiOSOmni.
Descripción
Plugin acoplado a NAiOSOmni: registra un nuevo driver 'email-imap' en el ChannelRegistry de NAiOSOmni para que cualquier cuenta IMAP/SMTP (Gmail con app-password, IONOS, Outlook personal, corporativo) pueda enchufarse como canal. Los emails entrantes aparecen en el Inbox unificado, agrupados por remitente (peer = email address). Los específicos del email (subject, message-id, threading, cc/bcc, html body, attachments) se serializan en media_meta JSON sin modificar el esquema de NAiOSOmni. Los responses se envían por SMTP con threading correcto (In-Reply-To + Subject: Re:). HTML body se sirve por 'ver original' desde el publicRouter del propio plugin (auth-checked).
Funcionalidades (3)
Tu bandeja IMAP aparece junto a WhatsApp y Telegram en el Inbox unificado.
Compatible con Gmail (app-password), IONOS, Outlook personal, corporativo. OAuth Google/Microsoft en fase 2.
Las respuestas mantienen In-Reply-To + Subject: Re: para que el cliente del destinatario las hile bien.
Changelog
- PHASE 10 · HUMAN-IN-THE-LOOP + tool integration RAG
- DRAFT MODE — toggle per-canal en tab General (solo email-imap). Cuando ON, las auto-respuestas IA NO se envían: se guardan con status='draft' para revisión. Bubble especial con borde dashed amber + 3 acciones: Enviar (SMTP real ahora) / Editar (carga texto en composer + descarta) / Descartar (limpia BD + ficheros). PATCH /channels/:id/draft-mode para activar/desactivar
- Endpoints draft: GET /api/drafts/:msgId (fetch para composer), POST /api/drafts/:msgId/send (promociona a envío real), DELETE /api/drafts/:msgId (limpia con borrado de adjuntos en disco)
- Renderer del inbox: detecta status='draft', muestra header 🤖 Borrador IA pendiente + bubble styled distinto + action row con 3 botones. Cero cambios en chat drivers (WA/TG no emiten status='draft')
- TOOL search_inbox para agentes — registrada en TOOLS de OmniChat mediante mutación del objeto exportado (cero cambios en core). Schema OpenAI tool con params {query, top_k}. ctx.invokePlugin delega al plugin's searchInbox() que llama al EmbeddingsStore. Los agentes pueden ahora preguntar al inbox semánticamente cuando un cliente lo pide
- Método público searchInbox(args) en el plugin: genera embedding del query, ejecuta cosine search, devuelve top-K formateado para LLM (sin buffers, scores con 2 decimales, snippet truncado)