aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/triage-intake.cmail.org
diff options
context:
space:
mode:
Diffstat (limited to '.ai/workflows/triage-intake.cmail.org')
-rw-r--r--.ai/workflows/triage-intake.cmail.org53
1 files changed, 53 insertions, 0 deletions
diff --git a/.ai/workflows/triage-intake.cmail.org b/.ai/workflows/triage-intake.cmail.org
new file mode 100644
index 0000000..d818c72
--- /dev/null
+++ b/.ai/workflows/triage-intake.cmail.org
@@ -0,0 +1,53 @@
+#+TITLE: Triage Intake — cmail (Proton) Source
+#+AUTHOR: Craig Jennings & Claude
+#+DATE: 2026-05-26
+
+# Source plugin for the triage-intake engine. See triage-intake.org for the
+# contract and the Phase A-D orchestration. This file declares ONE source.
+
+* Source: cmail
+:PROPERTIES:
+:ORDER: 25
+:ENABLED: test -f .ai/scripts/cmail-action.py
+:ANCHOR: none
+:SUBAGENT_OVER: 50
+:END:
+
+** Scan
+
+Proton (=c@cjennings.net=) via the bridge script. =ANCHOR: none= because this reports live IMAP unread *state*, not a since-window — the engine substitutes no cutoff. Phase B uses the anchor only to flag which of the current unread arrived since last check.
+
+#+begin_src bash
+python3 .ai/scripts/cmail-action.py list-unread
+#+end_src
+
+JSON output, keyed by UID. The script ignores messages already flagged =\Deleted= (those are pending-flush on the next Proton sync), so the list is the genuinely-live unread set.
+
+** Classify
+
+Bias: *trash-leaning*, like personal Gmail — cmail catches a lot of forwarded noise.
+
+- *Noise-trash:* newsletters, marketing, social, automated alerts.
+- *Noise-keep:* receipts, statements.
+- *FYI:* substantive mail, no action owed.
+- *Action:* an explicit ask or reply owed. Flag "new since last check" by comparing the message date against the engine's anchor.
+
+** Render
+
+#+begin_example
+**cmail (Proton) — N unread.** <one-line classification summary>
+- Action: <items, if any>
+- FYI: <items, if any>
+- Noise: N trash candidates, M keep
+#+end_example
+
+Omit if zero unread.
+
+** Actions
+
+All take one or more UIDs (from the =list-unread= JSON):
+
+- mark-read :: =python3 .ai/scripts/cmail-action.py mark-read <uid>=
+- star :: =python3 .ai/scripts/cmail-action.py star <uid>=
+- unstar :: =python3 .ai/scripts/cmail-action.py unstar <uid>=
+- trash :: =python3 .ai/scripts/cmail-action.py trash <uid>= (flags =\Deleted=; flushed on next Proton sync)