Connects the Hermes gateway to X's end-to-end encrypted direct messages
via the official X Chat API. All plaintext stays local: inbound
encoded_event blobs are decrypted with the Chat XDK (chatxdk) and
outbound replies are encrypted + signed before they reach X.
- plugins/platforms/xchat/: adapter (polling inbound, encrypted send,
typing, group mention gating, allowlist/pairing, cron standalone
sender), async httpx API client with OAuth2 refresh-token rotation,
Chat XDK crypto wrapper, and a resume-safe 'hermes xchat setup'
CLI (token -> user id -> keygen -> rate-limit-aware key registration)
- tools/lazy_deps.py + pyproject.toml: chatxdk lazy-install entry
(platform.xchat) + xchat extra for packagers
- hermes_cli/main.py: resolve a deferred bundled platform's CLI
subcommand when invoked as 'hermes <platform>' — also fixes
'hermes photon' being unreachable since the lazy-load perf change
(#54448)
- docs: messaging guide, env-var reference, sidebar, platform tables
- tests: 24 offline unit tests (dispatch, dedup, backlog seeding,
KeyChange handling, mention gating, registry parity, crypto wrapper)