hermes-agent/tests/gateway
MassiveMassimo 7972ff2a2c feat(whatsapp): add dm_policy and group_policy parity with WeCom/Weixin/QQ adapters
Add dm_policy and group_policy to the WhatsApp adapter, bringing parity
with WeCom/Weixin/QQ. Allows independent control of DM and group access:
disable DMs entirely, allowlist specific senders/groups, or keep open.

- dm_policy: open (default) | allowlist | disabled
- group_policy: open (default) | allowlist | disabled
- Config bridging for YAML → env vars
- 22 tests covering all policy combinations

Backward compatible — defaults preserve existing behavior.

Cherry-picked from PR #11597 by @MassiveMassimo.
Dropped the run.py group auth bypass (would have skipped user auth
for ALL platforms, not just WhatsApp).
2026-04-20 11:56:19 -07:00
..
__init__.py
conftest.py
restart_test_helpers.py fix(gateway): use persisted session origin for shutdown notifications 2026-04-20 05:15:54 -07:00
test_agent_cache.py fix(gateway): bound _agent_cache with LRU cap + idle TTL eviction (#11565) 2026-04-17 06:36:34 -07:00
test_allowlist_startup_check.py
test_api_server_bind_guard.py
test_api_server_jobs.py
test_api_server_multimodal.py feat(api-server): inline image inputs on /v1/chat/completions and /v1/responses (#12969) 2026-04-20 04:16:13 -07:00
test_api_server_normalize.py
test_api_server_toolset.py
test_api_server.py
test_approve_deny_commands.py
test_async_memory_flush.py
test_auto_continue.py
test_background_command.py
test_background_process_notifications.py
test_base_topic_sessions.py
test_bluebubbles.py
test_busy_session_ack.py
test_cancel_background_drain.py fix(gateway): cancel_background_tasks must drain late-arrivals (#12471) 2026-04-19 01:48:42 -07:00
test_channel_directory.py feat(discord): support forum channels 2026-04-17 20:25:48 -07:00
test_clean_shutdown_marker.py
test_command_bypass_active_session.py fix(gateway): slash commands never interrupt a running agent (#12334) 2026-04-18 18:53:22 -07:00
test_compress_command.py
test_compress_focus.py
test_config_cwd_bridge.py
test_config.py test(dingtalk): cover get_connected_platforms + null platform_toolsets 2026-04-17 06:26:18 -07:00
test_delivery.py
test_dingtalk.py feat(dingtalk): AI Cards streaming, emoji reactions, and media handling 2026-04-17 19:26:53 -07:00
test_discord_allowed_mentions.py
test_discord_attachment_download.py fix(discord): route attachment downloads through authenticated bot session (#11568) 2026-04-17 04:59:03 -07:00
test_discord_bot_auth_bypass.py fix(discord): harden DISCORD_ALLOWED_ROLES and cover gateway layer 2026-04-17 05:48:26 -07:00
test_discord_bot_filter.py
test_discord_channel_controls.py
test_discord_channel_prompts.py refactor: remove smart_model_routing feature (#12732) 2026-04-19 18:12:55 -07:00
test_discord_channel_skills.py
test_discord_connect.py
test_discord_document_handling.py
test_discord_free_response.py fix(discord): skip auto-threading reply messages 2026-04-17 06:46:52 -07:00
test_discord_imports.py
test_discord_media_metadata.py
test_discord_opus.py
test_discord_race_polish.py refactor(discord): slim down the race-polish fix (#12644) 2026-04-19 11:08:10 -07:00
test_discord_reactions.py
test_discord_reply_mode.py test(discord): update reply_mode fixture for new to_reference() wrapping 2026-04-17 04:17:56 -07:00
test_discord_send.py fix(discord): forum channel media + polish 2026-04-17 20:25:48 -07:00
test_discord_slash_commands.py fix(discord): strip mention syntax from auto-thread names 2026-04-17 06:46:52 -07:00
test_discord_system_messages.py
test_discord_thread_persistence.py
test_display_config.py
test_dm_topics.py fix(gateway): make Telegram DM topic config writes atomic 2026-04-20 00:57:53 -07:00
test_document_cache.py
test_duplicate_reply_suppression.py
test_email.py
test_extract_local_files.py
test_fallback_eviction.py
test_fast_command.py refactor: remove smart_model_routing feature (#12732) 2026-04-19 18:12:55 -07:00
test_feishu_approval_buttons.py
test_feishu_comment_rules.py feat: add Feishu document comment intelligent reply with 3-tier access control 2026-04-17 19:04:11 -07:00
test_feishu_comment.py feat: add Feishu document comment intelligent reply with 3-tier access control 2026-04-17 19:04:11 -07:00
test_feishu_onboard.py
test_feishu.py feat(feishu): show processing state via reactions on user messages 2026-04-20 02:04:57 -07:00
test_flush_memory_stale_guard.py
test_gateway_inactivity_timeout.py
test_gateway_shutdown.py
test_homeassistant.py
test_hooks.py
test_insights_unicode_flags.py
test_internal_event_bypass_pairing.py
test_interrupt_key_match.py
test_matrix_mention.py
test_matrix_voice.py
test_matrix.py
test_mattermost.py
test_media_download_retry.py
test_media_extraction.py
test_message_deduplicator.py
test_mirror.py
test_model_command_custom_providers.py
test_model_switch_persistence.py
test_pairing.py
test_pending_drain_race.py fix(gateway): close pending-drain and late-arrival races in base adapter (#12371) 2026-04-18 19:32:26 -07:00
test_pending_event_none.py fix(gateway): stop typing loops on session interrupt 2026-04-19 03:03:57 -07:00
test_pii_redaction.py
test_plan_command.py
test_platform_base.py
test_platform_reconnect.py
test_proxy_mode.py fix: tighten gateway interrupt salvage follow-ups 2026-04-19 03:03:57 -07:00
test_qqbot.py fix(qqbot): add back-compat for env var rename; drop qrcode core dep 2026-04-17 15:31:14 -07:00
test_queue_consumption.py
test_reasoning_command.py
test_restart_drain.py fix(gateway): use persisted session origin for shutdown notifications 2026-04-20 05:15:54 -07:00
test_restart_notification.py
test_restart_redelivery_dedup.py fix(gateway): ignore redelivered /restart after PTB offset ACK fails (#11940) 2026-04-17 21:17:33 -07:00
test_restart_resume_pending.py fix(gateway): mark only still-running sessions resume_pending on drain timeout (#12332) 2026-04-18 17:40:34 -07:00
test_resume_command.py
test_retry_replacement.py
test_retry_response.py
test_run_progress_topics.py fix(gateway): stop typing loops on session interrupt 2026-04-19 03:03:57 -07:00
test_runner_fatal_adapter.py
test_runner_startup_failures.py fix: tighten telegram docker-media salvage follow-ups 2026-04-19 01:55:33 -07:00
test_running_agent_session_toggles.py test(gateway): lock in /yolo /verbose bypass and /fast /reasoning catch-all 2026-04-20 03:03:07 -07:00
test_safe_adapter_disconnect.py fix(gateway): close adapter resources when connect() fails or raises (#12339) 2026-04-18 18:53:31 -07:00
test_send_image_file.py
test_send_retry.py
test_session_boundary_hooks.py
test_session_dm_thread_seeding.py
test_session_env.py
test_session_hygiene.py
test_session_info.py
test_session_model_override_routing.py
test_session_model_reset.py
test_session_race_guard.py fix(gateway): stop typing loops on session interrupt 2026-04-19 03:03:57 -07:00
test_session_reset_notify.py
test_session_state_cleanup.py fix(gateway): consolidate per-session cleanup; close SessionDB on shutdown (#11800) 2026-04-17 15:18:23 -07:00
test_session_store_prune.py fix(gateway): pass session_key (not session_id) to active-process check during prune 2026-04-20 03:10:19 -07:00
test_session.py
test_setup_feishu.py
test_signal.py fix(gateway): prevent scoped lock and resource leaks on connection failure 2026-04-20 01:44:36 -07:00
test_slack_approval_buttons.py
test_slack_mention.py
test_slack.py fix(gateway): prevent scoped lock and resource leaks on connection failure 2026-04-20 01:44:36 -07:00
test_sms.py
test_sse_agent_cancel.py
test_ssl_certs.py
test_status_command.py fix: tighten gateway interrupt salvage follow-ups 2026-04-19 03:03:57 -07:00
test_status.py fix(gateway): detect legacy hermes.service + mark --replace SIGTERM as planned (#11909) 2026-04-17 19:27:58 -07:00
test_steer_command.py feat(steer): /steer <prompt> injects a mid-run note after the next tool call (#12116) 2026-04-18 04:17:18 -07:00
test_step_callback_compat.py
test_sticker_cache.py
test_stream_consumer.py fix(gateway): accept finalize kwarg in all platform edit_message overrides 2026-04-19 22:46:47 -07:00
test_stt_config.py
test_stuck_loop.py
test_telegram_approval_buttons.py
test_telegram_caption_merge.py
test_telegram_conflict.py
test_telegram_documents.py fix(telegram): cache inbound videos and accept mp4 uploads 2026-04-20 05:10:23 -07:00
test_telegram_format.py feat(telegram): auto-wrap markdown tables in code blocks (#11794) 2026-04-17 14:27:26 -07:00
test_telegram_group_gating.py
test_telegram_mention_boundaries.py refactor(telegram): use entity-only mention detection 2026-04-20 00:10:22 -07:00
test_telegram_network_reconnect.py
test_telegram_network.py
test_telegram_photo_interrupts.py
test_telegram_reactions.py
test_telegram_reply_mode.py
test_telegram_text_batching.py
test_telegram_thread_fallback.py
test_text_batching.py fix(discord): shield text-batch flush from follow-up cancel (#12444) 2026-04-19 00:09:38 -07:00
test_title_command.py
test_transcript_offset.py
test_unauthorized_dm_behavior.py fix(gateway): include QQBOT in allowlist-aware unauthorized DM map 2026-04-19 22:16:37 -07:00
test_unknown_command.py
test_update_command.py
test_update_streaming.py
test_usage_command.py
test_verbose_command.py
test_voice_command.py test(voice): update existing voice_mode tests for platform-prefixed keys 2026-04-19 22:36:00 -07:00
test_voice_mode_platform_isolation.py test(voice): update existing voice_mode tests for platform-prefixed keys 2026-04-19 22:36:00 -07:00
test_weak_credential_guard.py
test_webhook_adapter.py
test_webhook_deliver_only.py feat(webhook): direct delivery mode for zero-LLM push notifications (#12473) 2026-04-19 05:18:19 -07:00
test_webhook_dynamic_routes.py
test_webhook_integration.py
test_webhook_signature_rate_limit.py fix(webhook): validate HMAC signature before rate limiting (#12544) 2026-04-19 22:45:08 -07:00
test_wecom_callback.py
test_wecom.py fix(wecom): bound req_id cache, revert undocumented is_group change, add tests 2026-04-17 19:03:29 -07:00
test_weixin.py Fix Weixin media uploads and refresh lockfile 2026-04-17 06:50:36 -07:00
test_whatsapp_connect.py fix(gateway): prevent scoped lock and resource leaks on connection failure 2026-04-20 01:44:36 -07:00
test_whatsapp_formatting.py
test_whatsapp_group_gating.py feat(whatsapp): add dm_policy and group_policy parity with WeCom/Weixin/QQ adapters 2026-04-20 11:56:19 -07:00
test_whatsapp_reply_prefix.py
test_ws_auth_retry.py
test_yolo_command.py