NAiOSOmni Email
omnichat-emailv0.6.0Adiciona um canal de email (IMAP/SMTP) ao NAiOSOmni. A tua caixa de entrada aparece como mais um canal dentro do Inbox unificado, com resposta automática por IA, agentes verticais e todas as capacidades do NAiOSOmni.
Descrição
Plugin acoplado ao NAiOSOmni: regista um novo driver 'email-imap' no ChannelRegistry do NAiOSOmni para que qualquer conta IMAP/SMTP (Gmail com palavra-passe de aplicação, IONOS, Outlook pessoal, corporativo) possa ser ligada como canal. Os emails recebidos aparecem no Inbox unificado, agrupados por remetente (peer = endereço de email). Os elementos específicos do email (subject, message-id, threading, cc/bcc, corpo HTML, anexos) são serializados em media_meta JSON sem modificar o esquema do NAiOSOmni. As respostas são enviadas por SMTP com threading correto (In-Reply-To + Subject: Re:). O corpo HTML é servido através de 'ver original' a partir do publicRouter do próprio plugin (com verificação de autenticação).
Funcionalidades (3)
A tua caixa IMAP aparece junto ao WhatsApp e ao Telegram no Inbox unificado.
Compatível com Gmail (palavra-passe de aplicação), IONOS, Outlook pessoal e corporativo. OAuth Google/Microsoft na fase 2.
As respostas mantêm In-Reply-To + Subject: Re: para que o cliente do destinatário as agrupe corretamente.
Changelog
- FASE 10 · HUMAN-IN-THE-LOOP + integração de ferramentas RAG
- MODO RASCUNHO — alternância por canal no separador General (apenas email-imap). Quando ativo, as respostas automáticas da IA NÃO são enviadas: ficam guardadas com status='draft' para revisão. Balão especial com contorno tracejado âmbar e 3 ações: Enviar (SMTP real agora) / Editar (carrega o texto no compositor + descarta) / Descartar (limpa a BD + ficheiros). PATCH /channels/:id/draft-mode para ativar/desativar
- Endpoints de rascunho: GET /api/drafts/:msgId (obter para o compositor), POST /api/drafts/:msgId/send (promove a envio real), DELETE /api/drafts/:msgId (limpa com eliminação dos anexos do disco)
- Renderizador do inbox: deteta status='draft', mostra cabeçalho 🤖 Rascunho IA pendente + balão com estilo diferente + linha de ações com 3 botões. Zero alterações nos drivers de chat (WA/TG não emitem status='draft')
- FERRAMENTA search_inbox para agentes — registada em TOOLS do OmniChat através de mutação do objeto exportado (zero alterações no core). Esquema OpenAI tool com parâmetros {query, top_k}. ctx.invokePlugin delega no searchInbox() do plugin, que chama o EmbeddingsStore. Os agentes podem agora pesquisar semanticamente na caixa de entrada quando um cliente o pede
- Método público searchInbox(args) no plugin: gera embedding da query, executa pesquisa por cosseno, devolve o top-K formatado para o LLM (sem buffers, scores com 2 casas decimais, snippet truncado)