hermes-agent/tests/gateway
Teknium 06e1d9cdd4
fix: resolve three high-impact community bugs (#5819, #6893, #3388) (#7881)
Matrix gateway: fix sync loop never dispatching events (#5819)
- _sync_loop() called client.sync() but never called handle_sync()
  to dispatch events to registered callbacks — _on_room_message was
  registered but never fired for new messages
- Store next_batch token from initial sync and pass as since= to
  subsequent incremental syncs (was doing full initial sync every time)
- 17 comments, confirmed by multiple users on matrix.org

Feishu docs: add interactive card configuration for approvals (#6893)
- Error 200340 is a Feishu Developer Console configuration issue,
  not a code bug — users need to enable Interactive Card capability
  and configure Card Request URL
- Added required 3-step setup instructions to feishu.md
- Added troubleshooting entry for error 200340
- 17 comments from Feishu users

Copilot provider drift: detect GPT-5.x Responses API requirement (#3388)
- GPT-5.x models are rejected on /v1/chat/completions by both OpenAI
  and OpenRouter (unsupported_api_for_model error)
- Added _model_requires_responses_api() to detect models needing
  Responses API regardless of provider
- Applied in __init__ (covers OpenRouter primary users) and in
  _try_activate_fallback() (covers Copilot->OpenRouter drift)
- Fixed stale comment claiming gateway creates fresh agents per message
  (it caches them via _agent_cache since the caching was added)
- 7 comments, reported on Copilot+Telegram gateway
2026-04-11 11:12:20 -07:00
..
__init__.py
restart_test_helpers.py fix(gateway): address restart review feedback 2026-04-10 21:18:34 -07:00
test_agent_cache.py
test_allowlist_startup_check.py
test_api_server_bind_guard.py fix(security): enforce API_SERVER_KEY for non-loopback binding 2026-04-10 16:51:44 -07:00
test_api_server_jobs.py fix(gateway): wrap cron helpers with staticmethod to prevent self-binding 2026-04-05 12:31:10 -07:00
test_api_server_toolset.py refactor: remove browser_close tool — auto-cleanup handles it (#5792) 2026-04-07 03:28:44 -07:00
test_api_server.py fix(api): send tool progress as custom SSE event to prevent model corruption (#6972) 2026-04-10 18:55:26 -07:00
test_approve_deny_commands.py test(gateway): isolate blocking approval env 2026-04-11 02:03:20 -07:00
test_async_memory_flush.py fix(gateway): persist memory flush state to prevent redundant re-flushes on restart (#4481) 2026-04-01 12:05:02 -07:00
test_background_command.py fix(tests): repair three pre-existing gateway test failures 2026-04-10 03:52:00 -07:00
test_background_process_notifications.py
test_base_topic_sessions.py fix(gateway): avoid false failure reactions on restart cancellation 2026-04-10 03:52:00 -07:00
test_bluebubbles.py fix: improve bluebubbles webhook registration resilience 2026-04-10 03:21:45 -07:00
test_channel_directory.py Ensure atomic writes for gateway channel directory cache to prevent truncation 2026-04-06 13:20:01 -07:00
test_command_bypass_active_session.py test(gateway): add /background to active-session bypass tests 2026-04-10 03:52:00 -07:00
test_compress_command.py fix(gateway): make manual compression feedback truthful 2026-04-10 21:16:53 -07:00
test_config_cwd_bridge.py
test_config.py feat: shared thread sessions by default — multi-user thread support (#5391) 2026-04-05 19:46:58 -07:00
test_delivery.py fix: update 6 test files broken by dead code removal 2026-04-10 03:44:43 -07:00
test_dingtalk.py
test_discord_bot_filter.py
test_discord_channel_controls.py test: disable text batching in existing adapter tests 2026-04-09 23:25:27 -07:00
test_discord_channel_skills.py test(discord): add tests for channel_skill_bindings resolution 2026-04-10 05:19:26 -07:00
test_discord_connect.py feat(gateway): unified proxy support for Discord and Telegram with macOS auto-detection 2026-04-09 14:19:06 -07:00
test_discord_document_handling.py fix(discord): accept .log attachments and raise document size limit 2026-04-09 02:26:33 -07:00
test_discord_free_response.py test: disable text batching in existing adapter tests 2026-04-09 23:25:27 -07:00
test_discord_imports.py
test_discord_media_metadata.py
test_discord_opus.py
test_discord_reactions.py fix(gateway): avoid false failure reactions on restart cancellation 2026-04-10 03:52:00 -07:00
test_discord_reply_mode.py feat(discord): add DISCORD_REPLY_TO_MODE setting (#6333) 2026-04-08 17:08:40 -07:00
test_discord_send.py fix(discord): register /approve and /deny slash commands, wire up button-based approval UI (#4800) 2026-04-03 10:24:07 -07:00
test_discord_slash_commands.py test: disable text batching in existing adapter tests 2026-04-09 23:25:27 -07:00
test_discord_system_messages.py
test_discord_thread_persistence.py
test_dm_topics.py test+docs: add group_topics tests and documentation 2026-04-03 18:20:50 -07:00
test_document_cache.py feat: add .zip document support and auto-mount cache dirs into remote backends (#4846) 2026-04-03 13:16:26 -07:00
test_email.py
test_extract_local_files.py
test_fallback_eviction.py fix: don't evict cached agent on failed runs — prevents MCP restart loop (#7539) 2026-04-10 21:16:56 -07:00
test_fast_command.py fix: add _session_model_overrides to test runner fixture 2026-04-10 05:54:56 -07:00
test_feishu_approval_buttons.py feat(feishu): add interactive card approval buttons (#6043) 2026-04-07 22:45:14 -07:00
test_feishu.py feat(gateway): add per-group access control for Feishu 2026-04-06 16:54:16 -07:00
test_flush_memory_stale_guard.py fix(memory): profile-scoped memory isolation and clone support (#4845) 2026-04-03 13:10:11 -07:00
test_gateway_inactivity_timeout.py fix(gateway): add staged inactivity warning before timeout escalation 2026-04-08 20:01:06 -07:00
test_gateway_shutdown.py fix(gateway): address restart review feedback 2026-04-10 21:18:34 -07:00
test_homeassistant.py
test_hooks.py
test_internal_event_bypass_pairing.py fix(tests): repair three pre-existing gateway test failures 2026-04-10 03:52:00 -07:00
test_interrupt_key_match.py
test_matrix_mention.py fix: guard mautrix imports for gateway-safe fallback + fix test isolation 2026-04-10 21:15:59 -07:00
test_matrix_voice.py test(matrix): update all test mocks for mautrix-python API 2026-04-10 21:15:59 -07:00
test_matrix.py fix: resolve three high-impact community bugs (#5819, #6893, #3388) (#7881) 2026-04-11 11:12:20 -07:00
test_mattermost.py fix(security): consolidated security hardening — SSRF, timing attack, tar traversal, credential leakage (#5944) 2026-04-07 17:28:37 -07:00
test_media_download_retry.py fix: make safe_url_for_log public, add SSRF redirect guards to base.py cache helpers 2026-04-10 05:04:28 -07:00
test_media_extraction.py
test_mirror.py
test_model_command_custom_providers.py fix: extract custom_provider_slug() helper, harden gateway test 2026-04-10 03:07:00 -07:00
test_model_switch_persistence.py fix(gateway): apply /model session overrides so switch persists across messages 2026-04-10 02:58:42 -07:00
test_pairing.py
test_pii_redaction.py fix: remove 115 verified dead code symbols across 46 production files 2026-04-10 03:44:43 -07:00
test_plan_command.py
test_platform_base.py fix: make safe_url_for_log public, add SSRF redirect guards to base.py cache helpers 2026-04-10 05:04:28 -07:00
test_platform_reconnect.py fix: repair 57 failing CI tests across 14 files (#5823) 2026-04-07 09:58:45 -07:00
test_queue_consumption.py
test_reasoning_command.py fix: unify reasoning_effort to config.yaml only, remove HERMES_REASONING_EFFORT env var 2026-04-08 03:36:44 -07:00
test_restart_drain.py fix(gateway): address restart review feedback 2026-04-10 21:18:34 -07:00
test_resume_command.py fix: honor session-scoped gateway model overrides 2026-04-11 03:11:34 -07:00
test_retry_replacement.py
test_retry_response.py
test_run_progress_topics.py fix(tests): repair three pre-existing gateway test failures 2026-04-10 03:52:00 -07:00
test_runner_fatal_adapter.py
test_runner_startup_failures.py fix(gateway): implement platform-aware PID termination 2026-04-10 03:52:00 -07:00
test_send_image_file.py
test_send_retry.py fix(telegram): prevent duplicate message delivery on send timeout (#5153) 2026-04-04 19:05:34 -07:00
test_session_boundary_hooks.py fix(gateway): drain in-flight work before restart 2026-04-10 21:18:34 -07:00
test_session_dm_thread_seeding.py fix(gateway): remove DM thread session seeding to prevent cross-thread contamination (#7084) 2026-04-10 03:01:59 -07:00
test_session_env.py fix(gateway): replace os.environ session state with contextvars for concurrency safety 2026-04-10 17:04:38 -07:00
test_session_hygiene.py fix(gateway): remove user-facing compression warnings (#4139) 2026-03-30 19:17:07 -07:00
test_session_info.py
test_session_model_override_routing.py fix: honor session-scoped gateway model overrides 2026-04-11 03:11:34 -07:00
test_session_model_reset.py fix: clear session-scoped model overrides during session reset 2026-04-06 13:20:01 -07:00
test_session_race_guard.py fix(gateway): drain in-flight work before restart 2026-04-10 21:18:34 -07:00
test_session_reset_notify.py
test_session.py fix: update 6 test files broken by dead code removal 2026-04-10 03:44:43 -07:00
test_signal.py fix: Signal duplicate replies with streaming + per-platform tool_progress (#6348) 2026-04-08 17:39:45 -07:00
test_slack_approval_buttons.py feat(slack): thread engagement — auto-respond in bot-started and mentioned threads (#5897) 2026-04-07 11:12:08 -07:00
test_slack_mention.py feat(slack): add require_mention and free_response_channels config support 2026-04-09 14:07:32 -07:00
test_slack.py fix(security): prevent SSRF redirect bypass in Slack adapter 2026-04-10 05:04:28 -07:00
test_sms.py
test_sse_agent_cancel.py
test_ssl_certs.py
test_status_command.py fix(gateway): show full session id and title in /status 2026-04-07 17:27:09 -07:00
test_status.py fix(gateway): implement platform-aware PID termination 2026-04-10 03:52:00 -07:00
test_step_callback_compat.py fix(gateway): normalize step_callback prev_tools for backward compat 2026-04-02 20:54:27 -07:00
test_sticker_cache.py
test_stream_consumer.py fix(gateway): prevent duplicate messages on no-message-id platforms 2026-04-10 03:52:00 -07:00
test_stt_config.py fix: STT provider-model mismatch — whisper-1 fed to faster-whisper (#7113) 2026-04-10 03:27:30 -07:00
test_telegram_approval_buttons.py refactor(tests): re-architect tests + fix CI failures (#5946) 2026-04-07 17:19:07 -07:00
test_telegram_caption_merge.py fix(telegram): replace substring caption check with exact line-by-line match 2026-04-07 14:08:59 -07:00
test_telegram_conflict.py refactor(tests): re-architect tests + fix CI failures (#5946) 2026-04-07 17:19:07 -07:00
test_telegram_documents.py feat: add .zip document support and auto-mount cache dirs into remote backends (#4846) 2026-04-03 13:16:26 -07:00
test_telegram_format.py
test_telegram_group_gating.py
test_telegram_network_reconnect.py
test_telegram_network.py
test_telegram_photo_interrupts.py
test_telegram_reactions.py fix(telegram): use valid reaction emojis for processing completion (#7175) 2026-04-10 05:34:33 -07:00
test_telegram_reply_mode.py
test_telegram_text_batching.py
test_telegram_thread_fallback.py Prevent Telegram polling handoffs and flood-control send failures 2026-04-05 11:59:28 -07:00
test_text_batching.py test: add text batching tests for Discord, Matrix, WeCom, Telegram, Feishu 2026-04-09 23:25:27 -07:00
test_title_command.py
test_transcript_offset.py
test_unauthorized_dm_behavior.py feat: support * wildcard in platform allowlists and improve WhatsApp docs 2026-03-31 10:42:03 -07:00
test_unknown_command.py fix(gateway): surface unknown /commands instead of leaking them to the LLM 2026-04-05 11:59:28 -07:00
test_update_command.py feat(gateway): live-stream /update output + interactive prompt buttons (#5180) 2026-04-05 00:28:58 -07:00
test_update_streaming.py feat(gateway): live-stream /update output + interactive prompt buttons (#5180) 2026-04-05 00:28:58 -07:00
test_usage_command.py fix(gateway): /usage now shows rate limits, cost, and token details between turns (#7038) 2026-04-10 02:33:01 -07:00
test_verbose_command.py
test_voice_command.py fix(discord): register /approve and /deny slash commands, wire up button-based approval UI (#4800) 2026-04-03 10:24:07 -07:00
test_webhook_adapter.py fix(gateway/webhook): don't pop delivery_info on send 2026-04-07 17:27:09 -07:00
test_webhook_dynamic_routes.py
test_webhook_integration.py fix(gateway/webhook): don't pop delivery_info on send 2026-04-07 17:27:09 -07:00
test_wecom.py test: disable text batching in existing adapter tests 2026-04-09 23:25:27 -07:00
test_weixin.py feat(gateway): add native Weixin/WeChat support via iLink Bot API 2026-04-10 05:54:37 -07:00
test_whatsapp_connect.py
test_whatsapp_group_gating.py fix(whatsapp): add free_response_chats, mention stripping, and interactive message unwrapping 2026-04-03 01:16:39 -07:00
test_whatsapp_reply_prefix.py
test_ws_auth_retry.py fix(gateway): stop Matrix/Mattermost reconnect on permanent auth failures 2026-04-05 11:07:47 -07:00
test_yolo_command.py fix(gateway): scope /yolo to the active session 2026-04-10 03:38:44 -07:00