Add Slack adapter
Slash commands (/cm-new, /cm-list, /cm-extend, /cm-note, /cm-torch, /cm-remind) instead of Slack's Messages Tab/Events API, so the app needs no message-content read scopes -- just commands and chat:write. Prefixed with cm- since Slack rejects bare generic command names and /remind collides with a real Slack built-in. Request signature verification uses Slack's v0 HMAC-SHA256 scheme over the raw body via Web Crypto, with the standard 5-minute replay window. Delivery and expiry-reminder notify go through chat.postMessage (a user ID works directly as the DM channel), attachments through the current three-step external upload flow.
9 files changed+714−1
Rendering diff…