NAiOSOmni Email
omnichat-emailv0.6.0Ajoute un canal email (IMAP/SMTP) à NAiOSOmni. Votre boîte apparaît comme un canal supplémentaire dans l'Inbox unifié, avec réponse automatique IA, agents verticaux et toutes les capacités de NAiOSOmni.
Description
Plugin intégré à NAiOSOmni : enregistre un nouveau driver 'email-imap' dans le ChannelRegistry de NAiOSOmni afin que tout compte IMAP/SMTP (Gmail avec mot de passe d'application, IONOS, Outlook personnel, professionnel) puisse être branché comme canal. Les emails entrants apparaissent dans l'Inbox unifié, regroupés par expéditeur (peer = adresse email). Les éléments propres à l'email (subject, message-id, threading, cc/bcc, corps HTML, attachments) sont sérialisés dans media_meta au format JSON sans modifier le schéma de NAiOSOmni. Les réponses sont envoyées par SMTP avec un threading correct (In-Reply-To + Subject: Re:). Le corps HTML est servi via « voir l'original » depuis le publicRouter du plugin (authentification vérifiée).
Fonctionnalités (3)
Votre boîte IMAP apparaît à côté de WhatsApp et Telegram dans l'Inbox unifié.
Compatible avec Gmail (mot de passe d'application), IONOS, Outlook personnel et professionnel. OAuth Google/Microsoft en phase 2.
Les réponses conservent In-Reply-To + Subject: Re: afin que le client du destinataire les regroupe correctement.
Changelog
- PHASE 10 · HUMAN-IN-THE-LOOP + intégration d'outils RAG
- MODE BROUILLON — bascule par canal dans l'onglet Général (email-imap uniquement). Lorsqu'il est activé, les auto-réponses IA ne sont PAS envoyées : elles sont enregistrées avec status='draft' pour relecture. Bulle spéciale avec bordure en pointillés ambre + 3 actions : Envoyer (SMTP réel maintenant) / Modifier (charge le texte dans le composeur + supprime le brouillon) / Supprimer (nettoie la BD + les fichiers). PATCH /channels/:id/draft-mode pour activer/désactiver
- Endpoints brouillon : GET /api/drafts/:msgId (récupération pour le composeur), POST /api/drafts/:msgId/send (promeut en envoi réel), DELETE /api/drafts/:msgId (nettoie avec suppression des pièces jointes sur le disque)
- Rendu de l'inbox : détecte status='draft', affiche l'en-tête 🤖 Brouillon IA en attente + bulle au style distinct + ligne d'actions avec 3 boutons. Aucun changement pour les drivers de chat (WA/TG n'émettent pas status='draft')
- OUTIL search_inbox pour les agents — enregistré dans TOOLS d'OmniChat par mutation de l'objet exporté (aucun changement dans le cœur). Schéma d'outil OpenAI avec les paramètres {query, top_k}. ctx.invokePlugin délègue à la méthode searchInbox() du plugin, qui appelle EmbeddingsStore. Les agents peuvent désormais interroger l'inbox sémantiquement lorsqu'un client le demande
- Méthode publique searchInbox(args) dans le plugin : génère l'embedding de la requête, exécute une recherche par similarité cosinus, renvoie le top-K formaté pour le LLM (sans buffers, scores à 2 décimales, extrait tronqué)