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.
nccommitted parent 043227a24102e781171e4ccd6cca2ef79bf7dc32c8edb06Browse files
9 files changed+714−1

Rendering diff…