WMOS

Guide

Mail that stops at a draft

Mail is the most common first integration, and the easiest one to get wrong: a mailbox is other people's data, and a reply is an action taken in someone's name. This adapter reads, proposes, and stops. A person approves, and only then does a draft exist.

How a message becomes a draft

Gmail calls the watch, the watch publishes to a topic, and the web endpoint verifies the OIDC token before forwarding the mailbox to the adapter. The adapter wakes a triage seat, which proposes a reply. The proposal waits until a person approves it; approval creates a draft.

Nothing in the adapter can send. The scope it holds is read-only plus compose, and the compose call only ever creates a draft.

IMAP, honestly

Naver exposes no mail API and does not advertise IDLE, so that mailbox is polled every sixty seconds after a UID cursor. It is not real time and the documentation says so.

The IMAP mailbox is handled by its own seat so a slower path never delays Gmail.

Controls an administrator gets

The mailbox page shows each profile, its watch expiry and the pending proposals. A kill switch pauses processing, a runtime seat allowlist decides which agents may receive work, and the audit tail shows what was touched. Pausing survives a restart.

What this does not claim

The OAuth application is unverified, so Google shows a warning screen and caps the pilot at one hundred users until verification completes. Drafts only: no automatic replies, no campaigns, no send. The mailbox content lives in the adapter's state, not in the router.