Adds a new `require_mention_channels` config key (and corresponding env
vars) across all 7 gateway platforms that have mention-gating. This is
the inverse of `free_response_channels` — channels listed here always
require @mention even when the global `require_mention` setting is false.
Use case: a user runs multiple channels, most with a single agent where
no mention is needed, but a few 'agent group' channels where mentions
make sense to avoid noise. Previously this required require_mention=true
globally and listing every non-group channel in free_response_channels.
Priority logic (highest wins):
1. DMs → always respond
2. Channel in free_response_channels → never require mention
3. Channel in require_mention_channels → always require mention
4. Global require_mention setting → fallback
Also refactors:
- Mattermost: inline os.getenv() → proper helper methods matching
Discord/Slack pattern, adds config.yaml support via config.extra
- Matrix: cached __init__ vars → helper methods with config.extra
support
- Mattermost config bridging: adds missing YAML→env bridging in
gateway/config.py (was completely absent)
New env vars:
- DISCORD_REQUIRE_MENTION_CHANNELS
- SLACK_REQUIRE_MENTION_CHANNELS
- TELEGRAM_REQUIRE_MENTION_CHATS
- WHATSAPP_REQUIRE_MENTION_CHATS
- DINGTALK_REQUIRE_MENTION_CHATS
- MATTERMOST_REQUIRE_MENTION_CHANNELS
- MATRIX_REQUIRE_MENTION_ROOMS
Naming follows each platform's convention (channels/chats/rooms).
Fully backward compatible — empty by default, no behavior change.
Requested by community member neeldhara on PR #3664.