Commit Graph

2 Commits

Author SHA1 Message Date
curo1305 fac6e7e77e chore(email): sharpen tool descriptions and rename email_list_inbox
- Rename email_list_inbox → email_list_folder (works on any folder, not just inbox)
- email_list_folder / email_search: distinguish browse-by-recency vs filter-by-query
- email_move / email_delete: clarify single-email scope; point to email_bulk_action for multiple
- email_bulk_action: clarify it handles multiple emails; point to move/delete for single
- email_create_folder: remove redundant "ask user" instruction (requires_approval handles it)
- Update tests to reflect renamed tool

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 23:50:24 +02:00
curo1305 d3fc4e2d42 feat(email): implement full email plugin
Supports Gmail (OAuth + filter API), Microsoft 365 (OAuth + full rule CRUD via
O365), ProtonMail (Bridge, paid only), and generic IMAP/SMTP providers.

16 tools: list_inbox, read, send, reply, forward, move, delete, mark_read,
search, list_folders, create_folder, inbox_summary, list_rules, create_rule,
delete_rule, bulk_action.

Background daemon task monitors inbox via IMAP IDLE and publishes new-email
events to daemon/events.py for messaging bot pickup. Setup wizard warns
explicitly about ProtonMail Bridge + paid plan requirement and recommends
a messaging bot if none is configured.

36 unit tests covering: HTML stripping, header decoding, raw message parsing,
IMAP search builder, Gmail/Outlook rule normalisation, folder-not-found path,
events bus, Bridge connectivity guard, and tool approval flags.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 23:26:39 +02:00