hermes-agent/tests/gateway
wuli666 1ca1deb7f6 fix(feishu): classify native voice messages as VOICE for auto-transcription
Lark's native "audio" msg_type is an in-app voice recording — uploaded
audio files arrive as "file"/"media". But _resolve_normalized_message_type
resolved the "audio" preferred type to MessageType.AUDIO, which the gateway
treats as a non-transcribed file attachment (run.py: AUDIO -> audio_file_paths,
"never STT"; VOICE -> audio_paths, "always STT"). Result: a Feishu voice
note reached the agent as an untranscribable audio attachment and was
silently ignored — the user's spoken message never became text.

Every other platform that receives native voice notes (Telegram, Discord,
Slack, WhatsApp, Signal, Matrix, WeChat, WeCom, DingTalk, QQ, BlueBubbles,
Mattermost, Yuanbao) classifies them as MessageType.VOICE. Feishu was the
only one classifying them as AUDIO. This is the follow-up to #28993, which
added native voice-note transcription for Discord + DingTalk but did not
cover Feishu.

Return MessageType.VOICE for the "audio" branch. The branch is reached only
for Lark's top-level audio msg_type (set in the normalizer; file uploads map
to "document"), so VOICE is unconditionally correct here — no risk of
auto-transcribing an uploaded music/audio file.

- plugins/platforms/feishu/adapter.py: _resolve_normalized_message_type audio
  branch returns VOICE instead of resolving to AUDIO via mime.
- tests/gateway/test_feishu.py: test_extract_audio_message_downloads_and_caches
  asserted the old AUDIO behavior on a fixture literally named voice.ogg —
  updated to expect VOICE (the corrected classification).
- tests/gateway/test_feishu_voice_message_type.py: new focused regression
  tests (audio->VOICE with and without mime; photo/document/text unaffected).

Rebased onto current main: the Feishu platform moved from the single-file
gateway/platforms/feishu.py into the plugins/platforms/feishu/ package; the
fix applies to the same _resolve_normalized_message_type logic at its new home.

Verified the new voice tests fail when the branch resolves to AUDIO and pass
with VOICE, while the photo/document/text cases are unaffected either way.

Note: classification is mock-tested here; the downstream STT pipeline is the
shared, already-proven path (#28993). End-to-end verification on a live
Feishu account would be a welcome confirmation.

Refs #28993 (sibling-gap: Feishu was the platform left uncovered).
2026-07-28 14:06:56 -07:00
..
platforms
relay fix(relay): per-platform capability descriptors for multi-platform gateways (#70717) 2026-07-27 14:24:14 +10:00
__init__.py
_plugin_adapter_loader.py
conftest.py fix(tests): add _FakeAudioSource to discord mock for VoiceMixer inheritance 2026-07-28 11:56:37 -07:00
feishu_helpers.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
restart_test_helpers.py fix(gateway): quiesce API and cron work during drains 2026-07-13 23:26:10 +05:30
test_7100_transient_failure_transcript.py
test_10710_auto_reset_evicts_cached_agent.py fix(gateway): per-session turn lease + conversation-scope funnel (#64934) (#67401) 2026-07-19 03:49:29 -07:00
test_13121_shutdown_inflight_transcript_flush.py fix(gateway): offload remaining inline agent cleanup off the event loop (#53175) 2026-06-28 02:41:36 -07:00
test_25107_stale_base_url_api_mode.py fix(model): default /model switches to session scope everywhere 2026-07-20 02:22:22 -07:00
test_35809_auto_reset_clean_context.py test: alternate roles in the #35809 bloat fixture 2026-07-16 04:43:45 -07:00
test_35994_reset_button_deadlock.py fix(gateway): offload agent cleanup off the event loop in /new reset (#35994) 2026-06-25 00:27:22 +05:30
test_42039_duplicate_user_message.py fix(gateway): preserve media dedup after streamed replies 2026-07-26 19:31:08 -07:00
test_48031_model_switch_after_auto_reset.py fix(gateway): per-session turn lease + conversation-scope funnel (#64934) (#67401) 2026-07-19 03:49:29 -07:00
test_53175_cleanup_off_loop.py fix(gateway): offload remaining inline agent cleanup off the event loop (#53175) 2026-06-28 02:41:36 -07:00
test_64674_multiplex_primary_token_scope.py fix(gateway): resolve multiplex primary bot tokens without empty reconnect loops 2026-07-16 04:26:06 -07:00
test_71671_faulthandler_no_stderr.py test(gateway): drop source-reading guard test from #71671 salvage 2026-07-26 17:15:38 -07:00
test_active_session_text_merge.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_adapter_connect_is_reconnect_contract.py test(gateway): regression: every adapter.connect() must accept is_reconnect 2026-07-09 19:09:38 -07:00
test_agent_cache.py revert: PR #72817 — session activity watchdog, stall notify, compress timeout 2026-07-28 00:15:00 +05:00
test_agents_command_delegations.py feat(delegation): structured stall metadata + live per-child status in /agents 2026-07-26 17:13:52 -07:00
test_aiohttp_body_caps.py security(gateway): set explicit client_max_size on 3 uncapped aiohttp servers (#59180) 2026-07-05 14:48:28 -07:00
test_allowed_channels_widening.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_allowlist_startup_check.py
test_api_server.py fix(api): redact subagent stream fields + forward child_session_id 2026-07-26 20:37:04 -07:00
test_api_server_active_work_drain.py fix(gateway): quiesce API and cron work during drains 2026-07-13 23:26:10 +05:30
test_api_server_bind_guard.py fix(api_server): mark port conflict as non-retryable to stop infinite reconnect loop (#65665) 2026-07-16 06:29:09 -07:00
test_api_server_jobs.py fix(gateway): quiesce API and cron work during drains 2026-07-13 23:26:10 +05:30
test_api_server_media_data_urls.py security(gateway): anchor api_server MEDIA tag resolution to safe paths 2026-07-03 03:27:47 -07:00
test_api_server_multimodal.py
test_api_server_multiplex_secret_scope.py fix(gateway): scope default-listener api_server requests under multiplex 2026-07-16 07:17:55 -07:00
test_api_server_normalize.py perf(api-server): normalize chat content linearly (#46079) 2026-06-14 03:25:49 -07:00
test_api_server_runs.py fix(api_server): close divergence gaps from gateway/run.py 2026-07-24 11:53:46 -07:00
test_api_server_toolset.py fix(tools): don't drop a toolset from platform inference when a tool is registered into it 2026-07-02 13:25:25 +05:30
test_approval_prompt_redaction.py fix(approval): scope smart deny owner overrides to one operation 2026-07-13 04:31:55 -07:00
test_approvals_command.py feat(approvals): add cross-surface mode command 2026-07-26 21:13:03 -07:00
test_approve_deny_commands.py test(gateway): cover ws_orphan_reap session recovery (#63207) 2026-07-14 16:58:47 +05:30
test_async_delegation_session_binding.py fix(gateway): follow async completions across compression 2026-07-22 06:56:08 -07:00
test_async_delivery_capability.py fix(kanban): keep delegated results in worker turn 2026-07-23 08:33:55 -07:00
test_async_session_db.py test(gateway): account for the auto-archive construction-time sync escape 2026-07-24 10:45:34 -05:00
test_async_session_store.py fix(gateway): enforce one async SessionStore boundary 2026-07-10 12:38:48 +05:30
test_auth_fallback.py
test_auto_continue.py fix(agent): preserve none vs unknown tool effects (#61783) 2026-07-11 05:41:58 -07:00
test_auto_voice_reply_format.py test(gateway): regression coverage for platform-aware voice delivery 2026-07-28 11:55:48 -07:00
test_background_command.py fix(checkpoints): honor gateway config and task cwd (#68195) 2026-07-20 13:04:12 -07:00
test_background_process_notifications.py fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 2026-07-23 11:55:17 -07:00
test_base_auto_tts_output_format.py test(gateway): regression coverage for platform-aware voice delivery 2026-07-28 11:55:48 -07:00
test_base_topic_sessions.py fix(tts): keep Telegram caption on the original reply text 2026-07-28 11:55:01 -07:00
test_bluebubbles.py fix(bluebubbles): drop participant-address fallback in _resolve_chat_guid 2026-07-01 00:42:56 -07:00
test_bounded_adapter_teardown.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_bundles_command.py
test_busy_session_ack.py fix(gateway): steer busy voice follow-ups after STT 2026-07-28 11:57:11 -07:00
test_busy_session_auth_bypass.py
test_cached_agent_max_iterations.py revert: PR #72817 — session activity watchdog, stall notify, compress timeout 2026-07-28 00:15:00 +05:00
test_cancel_background_drain.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_cgroup_cleanup.py fix: satisfy ruff encoding + windows-footgun lints for cgroup reaper 2026-06-28 02:05:50 -07:00
test_channel_continuity_hint.py fix(gateway): hint Slack/Discord channels at the prior auto-reset session 2026-07-23 11:49:44 -07:00
test_channel_directory.py fix(gateway): quiet Slack missing_scope channel directory fallback 2026-07-23 11:34:11 -07:00
test_channel_directory_connected_only.py fix(gateway): only session-discover channel targets for connected platforms (#60574) 2026-07-07 17:04:32 -07:00
test_channel_overrides.py feat(gateway): per-channel model and system prompt overrides (Fixes #1955) 2026-07-02 03:08:11 -07:00
test_checkpoint_config.py fix(checkpoints): honor gateway config and task cwd (#68195) 2026-07-20 13:04:12 -07:00
test_choice_picker.py fix: session-scoped /fast + full /new reset to config defaults (#67979) 2026-07-20 03:27:22 -07:00
test_cjk_fts_config_bridge.py feat(state): messages_fts_cjk — CJK-bigram index on the v23 external-content layout 2026-07-22 07:56:47 -07:00
test_clarify_active_session_bypass.py fix(gateway): resume typing after clarify reply 2026-07-14 21:31:32 -07:00
test_clarify_progress_leak.py fix(gateway): suppress tool-progress bubble for clarify prompts 2026-07-22 07:00:47 -07:00
test_clarify_thread_followup_not_swallowed.py test(gateway): thread follow-ups survive a pending native clarify 2026-07-22 07:00:47 -07:00
test_clean_shutdown_marker.py fix(gateway): unify reset boundaries vs recovery — promote accidental ends, honor mode=none, adapter-aware resume guidance 2026-07-17 04:51:39 -07:00
test_code_fence_tracking.py fix(gateway): balance code fences on every remaining chunk-split path 2026-07-23 11:50:28 -07:00
test_command_bypass_active_session.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_complete_path_at_filter.py fix(gateway): treat a leading @/ as a separator, not just an absolute path 2026-07-27 21:07:49 -05:00
test_completion_delivery.py fix(gateway): honest durable ack semantics for undeliverable async completions 2026-07-22 06:56:08 -07:00
test_compress_command.py fix(gateway): preserve memory prompt during manual compression 2026-07-29 02:13:41 +05:30
test_compress_focus.py fix: prevent stale lock-skip signal leaking between compress_context calls 2026-07-23 08:19:14 -07:00
test_compress_plugin_engine.py fix: prevent stale lock-skip signal leaking between compress_context calls 2026-07-23 08:19:14 -07:00
test_compress_preview.py feat(commands): /compact alias + --preview/--dry-run flags for /compress (#3243 salvage) 2026-07-02 05:10:31 -07:00
test_compression_concurrent_sessions.py test(compression): pin rotation-fallback tests to in_place=False ahead of default flip 2026-06-25 12:56:05 -07:00
test_compression_deferred_soft_result.py fix(gateway): retry-next-message semantics for compression_deferred + regression suite 2026-07-23 16:23:57 -07:00
test_compression_failure_session_sync.py test(gateway): assert _record_gateway_session_peer fires only on the persisted split 2026-07-02 12:49:42 +05:30
test_compression_in_flight_check.py fix(gateway): fail closed on compression state probe errors 2026-07-14 16:56:34 +05:30
test_compression_interrupt_demotion_56391.py fix(gateway): fail closed on compression state probe errors 2026-07-14 16:56:34 +05:30
test_compression_progress_notices.py feat(gateway): opt-in compression progress notices via compression.progress_notices (#52995) (#70457) 2026-07-23 19:44:19 -07:00
test_compression_session_id_persistence.py test(compression): recurse into control-flow stmts in AST walker 2026-07-28 19:38:11 +05:30
test_config.py fix(gateway): deliver relay-backed homes after restart 2026-07-24 10:45:13 -07:00
test_config_cwd_bridge.py test(gateway): cover per-backend cwd placeholder resolution 2026-07-04 13:28:47 -07:00
test_config_driven_access_policy.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_config_env_bridge_authority.py revert: PR #72817 — session activity watchdog, stall notify, compress timeout 2026-07-28 00:15:00 +05:00
test_context_ref_expansion_runtime.py fix(providers): scope route-owned runtime settings 2026-07-22 11:19:37 +05:30
test_conversation_scope_funnel.py fix(gateway): per-session turn lease + conversation-scope funnel (#64934) (#67401) 2026-07-19 03:49:29 -07:00
test_cron_active_work_drain.py fix(gateway,cron): make shutdown drain visible to in-flight cron work 2026-07-07 22:15:04 -07:00
test_cron_fire_webhook.py fix(api): reserve cron fire work during drain 2026-07-13 23:26:10 +05:30
test_cron_shutdown_drain.py test(gateway): cover cron-delivery drain on restart 2026-07-06 01:37:10 +05:30
test_cwd_placeholder.py test(gateway): cover per-backend cwd placeholder resolution 2026-07-04 13:28:47 -07:00
test_dead_targets.py refactor(gateway): share error-text blob between not_found classifiers 2026-07-01 15:11:38 +05:30
test_debug_command.py
test_dedupe_user_turns.py fix(gateway): dedupe user turns on transient failure (#47237) 2026-06-26 00:11:17 +05:30
test_delivery.py fix(gateway): deliver relay-backed homes after restart 2026-07-24 10:45:13 -07:00
test_delivery_ledger.py fix(gateway): don't spend a redelivery attempt when the platform is down 2026-07-20 11:52:41 +05:30
test_delivery_ledger_fd_leak.py fix(gateway,tools,agent): close leaked SQLite connections in delivery, delegation, and verification ledgers 2026-07-24 15:55:08 -07:00
test_delivery_ledger_producer.py feat(gateway): durable delivery-obligation ledger for final responses (#67181) 2026-07-19 00:45:32 -07:00
test_delivery_silence_filter.py
test_destructive_slash_confirm.py
test_diff_command.py feat(diff): cross-surface /diff with staged/all/session modes 2026-07-26 18:28:20 -07:00
test_dingtalk.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_discord_allowed_channels.py
test_discord_allowed_mentions.py
test_discord_approval_mentions.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_discord_attachment_download.py
test_discord_bot_auth_bypass.py fix(telegram): apply bot auth policy to Telegram sources 2026-06-28 00:57:03 -07:00
test_discord_bot_filter.py fix(discord): ignore reply-ping-only mentions for bot-authored messages 2026-07-01 15:38:34 -04:00
test_discord_channel_controls.py fix(discord): auto-thread failure must not silently fall back to inline reply 2026-07-01 00:12:17 -07:00
test_discord_channel_prompts.py
test_discord_channel_skills.py
test_discord_clarify_buttons.py fix(discord): bound component labels by UTF-16 units 2026-07-07 02:40:12 -07:00
test_discord_component_auth.py feat(discord): optional admin-only gate for exec-approval buttons (#51751) 2026-07-05 06:42:42 -07:00
test_discord_connect.py fix(gateway): mark unconfigured platforms as non-retryable to stop reconnect loop 2026-07-22 07:14:42 -07:00
test_discord_document_handling.py fix(gateway): accept any inbound file type across all messaging platforms 2026-06-21 22:43:45 -07:00
test_discord_double_dispatch.py test(discord): fix double-dispatch dedup test for fail-closed auto-thread 2026-07-01 00:12:17 -07:00
test_discord_edit_message_overflow.py fix(discord): dedup saturated mid-stream overflow previews to stop edit-rate-limit storms 2026-07-05 13:58:11 -07:00
test_discord_exec_approval_content.py fix(discord): include approval command in message content 2026-07-07 06:25:23 -07:00
test_discord_fail_closed_feedback.py fix(discord): explain fail-closed allowlist default 2026-07-07 17:01:08 -07:00
test_discord_format.py fix(discord): auto-convert markdown tables to bullet groups 2026-06-27 03:57:24 +05:30
test_discord_free_response.py fix(discord): tag unverified channel-context senders like Slack threads 2026-07-01 16:25:16 +05:30
test_discord_imports.py
test_discord_lazy_install_views.py
test_discord_liveness.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_discord_media_metadata.py
test_discord_missed_message_backfill.py fix(discord): keep recovery ledger I/O off event loop 2026-07-18 14:01:33 -07:00
test_discord_model_picker.py fix(discord): bound component labels by UTF-16 units 2026-07-07 02:40:12 -07:00
test_discord_opus.py
test_discord_pending_text_batch_shutdown.py fix(discord): channel name matching and flush pending sends on shutdown 2026-06-30 02:48:42 -07:00
test_discord_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_discord_prompt_content_siblings.py fix(discord): mirror all interactive prompt payloads into message content 2026-07-07 06:25:23 -07:00
test_discord_prompt_timeout_config.py feat(discord): make interactive view timeout configurable (#60230) 2026-07-07 05:50:08 -07:00
test_discord_race_polish.py
test_discord_reactions.py
test_discord_reply_mode.py
test_discord_roles_dm_scope.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_discord_send.py fix(discord): preserve voice reply threading 2026-07-28 11:56:37 -07:00
test_discord_slash_auth.py fix(discord): honor pairing grants for message auth 2026-07-07 17:00:58 -07:00
test_discord_slash_commands.py fix(discord): handle expired slash defer interactions 2026-07-07 12:42:29 -07:00
test_discord_sync_limit.py test(discord): add regression test for 100-command sync limit 2026-06-22 13:58:33 -07:00
test_discord_system_messages.py
test_discord_thread_persistence.py
test_discord_thread_slash_expired_defer.py fix(discord): widen expired-defer handling to /thread slash command 2026-07-07 12:42:29 -07:00
test_discord_voice_mixer.py Fix Discord ffmpeg discovery on Windows 2026-07-28 11:56:37 -07:00
test_display_config.py fix(slack): quiet Slack display defaults — no heartbeat/busy-ack breadcrumbs in channels 2026-07-23 11:34:11 -07:00
test_dm_topics.py fix(telegram): accept both list and mapping shapes for group_topics config 2026-07-01 01:20:14 -07:00
test_document_cache.py fix(media): recognize m2a audio attachments 2026-07-28 11:52:44 -07:00
test_document_context_note.py test(gateway): cover document context note for PDF/DOCX vs text 2026-06-11 11:58:19 -07:00
test_duplicate_reply_suppression.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_email.py fix(gateway): repair sibling tests + harden _adapter_for_source after fail-closed flip 2026-07-01 03:56:28 -07:00
test_email_robustness.py fix(email): harden adapter against malformed IMAP responses 2026-07-02 03:12:53 -07:00
test_empty_model_recovery.py
test_env_flag_truthy.py test: env-flag 'on' truthy behavior contract (#2863 follow-up) 2026-07-02 03:00:59 -07:00
test_ephemeral_reply.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_escape_reasoning_fences.py fix: escape triple-backtick in reasoning before wrapping in outer code block 2026-07-23 11:50:28 -07:00
test_external_drain_control.py fix(gateway): quiesce API and cron work during drains 2026-07-13 23:26:10 +05:30
test_extract_local_files.py fix(media): recognize m2a audio attachments 2026-07-28 11:52:44 -07:00
test_fallback_chain_reload.py fix(gateway): harden fallback-chain refresh from review findings 2026-07-09 02:22:12 +05:30
test_fallback_eviction.py
test_fast_command.py fix: session-scoped /fast + full /new reset to config defaults (#67979) 2026-07-20 03:27:22 -07:00
test_feishu.py fix(feishu): classify native voice messages as VOICE for auto-transcription 2026-07-28 14:06:56 -07:00
test_feishu_approval_buttons.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_feishu_bot_admission.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_feishu_bot_auth_bypass.py fix(telegram): apply bot auth policy to Telegram sources 2026-06-28 00:57:03 -07:00
test_feishu_channel_prompts.py fix(anthropic+feishu): model-gate max_tokens fallback; wire Feishu channel_prompt 2026-06-30 17:20:41 -07:00
test_feishu_comment.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_feishu_comment_rules.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_feishu_meeting_invite.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_feishu_onboard.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_feishu_sdk_executor.py fix(gateway,feishu): refuse executor resurrection during real shutdown 2026-06-27 04:13:09 -07:00
test_feishu_table_markdown.py fix(feishu): render markdown tables via post+md, not text downgrade 2026-07-20 09:19:24 -07:00
test_feishu_voice_message_type.py fix(feishu): classify native voice messages as VOICE for auto-transcription 2026-07-28 14:06:56 -07:00
test_first_turn_session_meta_rebaseline.py test(gateway): align salvaged #54947-cluster tests with async cache helper 2026-07-01 02:29:24 -07:00
test_footer_command_mid_run.py fix(gateway): /footer is unreachable mid-run — add "footer" to safe-toggle set 2026-07-16 04:40:23 -07:00
test_fresh_reset_skill_injection.py
test_gateway_command_dispatch_minimal.py fix(gateway): strip /queue prefix when no agent is running 2026-07-16 08:02:47 -07:00
test_gateway_command_help.py
test_gateway_command_line_matcher.py fix(gateway): track no-systemd restart runtimes 2026-06-23 23:29:28 -07:00
test_gateway_inactivity_timeout.py
test_gateway_process_exit.py fix(gateway): release PID file + runtime lock in the force-exit backstop 2026-07-01 15:59:37 +05:30
test_gateway_shutdown.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_gateway_silence_tokens.py fix(gateway): suppress exact silence tokens without mutating history 2026-06-14 03:25:08 -07:00
test_gateway_utf8_encoding.py fix(gateway): extend the utf-8 file-I/O guard to google_chat + whatsapp 2026-07-24 15:47:12 -07:00
test_goal_continuation_drain.py test(gateway): pin automatic /goal continuation drain — no user nudge required 2026-07-23 11:49:44 -07:00
test_goal_max_turns_config.py
test_goal_status_notice.py
test_goal_verdict_send.py fix: update mocks in test_goal_verdict_send.py to match 5-tuple judge_goal return value 2026-07-20 05:38:25 -07:00
test_google_chat.py feat(gateway): make the working-state status text configurable 2026-07-18 12:28:59 -07:00
test_handoff_watcher_async_db.py fix(gateway): route SessionDB calls through AsyncSessionDB 2026-06-29 15:51:57 -07:00
test_home_target_env_var.py
test_homeassistant.py fix(gateway): validate multiplex adapter config by platform 2026-07-16 05:39:58 -07:00
test_hooks.py
test_image_input_routing_runtime.py fix: preserve named custom provider vision overrides 2026-07-23 17:57:33 +05:30
test_incomplete_gateway_turns.py fix(gateway): harden hidden-incomplete detection against the sentinel final_response 2026-07-15 09:48:24 -07:00
test_insights_unicode_flags.py
test_internal_event_bypass_pairing.py fix: keep poll read-only for notify_on_complete watcher 2026-06-21 11:11:23 -07:00
test_internal_event_never_interrupts_busy_session.py fix(gateway): never interrupt a busy session with an internal completion event (#49738) 2026-06-20 10:57:41 -07:00
test_interrupt_key_match.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_irc_adapter.py
test_kanban_auto_decompose_live.py fix(kanban): honor kanban.auto_decompose toggle live, without a gateway restart (#50358) 2026-06-21 12:43:44 -07:00
test_kanban_notifier.py fix(kanban): route active named profile through the active adapter map 2026-07-26 16:27:52 -07:00
test_kanban_notifier_apiserver_wake.py fix(kanban): advance notify cursor only after a successful wake self-post 2026-07-23 11:55:17 -07:00
test_kanban_notifier_watcher_dispatch_gate.py
test_kanban_notifier_zero_sub_gate.py fix(gateway): zero-sub early exit for kanban notifier board polling 2026-07-26 16:14:15 -07:00
test_kanban_watchers_mixin.py fix(kanban): cross-platform dispatcher lock + explicit release 2026-06-19 07:35:33 -07:00
test_keep_typing_timeout.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_line_plugin.py
test_load_transcript_db_only.py
test_loop_exception_handler.py
test_loop_liveness_watchdog.py refactor(gateway): gate loop-liveness watchdog via config.yaml, drop HERMES_* env knobs 2026-07-24 16:03:42 -07:00
test_matrix.py fix(matrix): correct platform hint over-claims, add regression tests + docs 2026-07-20 11:10:49 -07:00
test_matrix_approval_reaction_fail_closed.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_matrix_dm_invite_recording.py test(matrix): authorize inviter in DM-invite fixture for new invite-auth gate 2026-06-28 20:47:33 -07:00
test_matrix_exec_approval.py test(approval): cover allow_session tiers in Matrix reaction seeding and gateway payload 2026-07-21 12:04:47 -07:00
test_matrix_mention.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_matrix_message_length.py fix(matrix): make outbound message length configurable (#53026) 2026-07-20 11:10:49 -07:00
test_matrix_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_matrix_project_context_isolation.py security(gateway): prove chat/thread origin for persisted /resume; tighten DM scoping 2026-07-01 05:38:03 -07:00
test_matrix_voice.py fix(matrix): enforce Ogg/Opus at send_voice boundary, probe metadata off-loop 2026-07-28 11:55:48 -07:00
test_mattermost.py Harden gateway mass mention handling 2026-07-22 21:14:44 -07:00
test_mattermost_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_max_concurrent_sessions.py
test_max_tokens_propagation.py
test_mcp_reload_refreshes_cached_agents.py
test_media_download_retry.py fix(security): pin DNS resolutions for SSRF-safe fetches 2026-07-23 11:44:43 -07:00
test_media_extraction.py fix(gateway): dedup image_generate media across the compression boundary 2026-06-20 23:20:16 -07:00
test_media_metadata_contract.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_media_spaced_paths_and_history_dedupe.py fix(gateway): GIS extensions, spaced MEDIA paths, and code-block-safe display strip 2026-07-26 13:41:53 -07:00
test_media_tag_cleanup.py fix(gateway): allow [[as_document]] glued directly to MEDIA path (#63632) 2026-07-26 12:52:31 -07:00
test_media_tag_formatting_variants.py fix(gateway): deliver MEDIA tags with sentence-final punctuation and inline-code wrapping 2026-07-26 12:52:31 -07:00
test_media_tag_separator.py fix(gateway): stop MEDIA tag regex from absorbing following tag or text (#68773) 2026-07-26 12:52:31 -07:00
test_memory_monitor.py
test_message_deduplicator.py fix(discord): harden reconnect message recovery 2026-07-18 14:01:33 -07:00
test_message_timestamps.py feat(gateway): gate message timestamps behind opt-in (default off) 2026-06-16 15:49:59 -07:00
test_mirror.py
test_mixed_attachment_routing.py fix(gateway): classify mixed attachments per-attachment + transcode uncommon image formats 2026-06-27 19:26:04 -07:00
test_moa_one_shot_restore.py refactor(gateway): extract MoA one-shot restore helper; restore #28686 comment; real-method tests 2026-06-27 03:43:28 -07:00
test_model_command_async_offload.py fix(gateway): show MoA presets in model picker 2026-06-27 03:43:38 -07:00
test_model_command_custom_providers.py fix(gateway): offload /model switch off the event loop (#53603) 2026-06-27 04:36:22 -07:00
test_model_command_expensive_confirm.py fix(model-switch): a failed in-place swap must be a no-op, not a dead session (#50375) 2026-06-21 13:33:23 -07:00
test_model_command_flat_string_config.py fix(providers): scope route-owned runtime settings 2026-07-22 11:19:37 +05:30
test_model_picker_persist.py fix(providers): scope route-owned runtime settings 2026-07-22 11:19:37 +05:30
test_model_switch_persistence.py fix: harden /model --once against persistence and config-sync leaks 2026-07-18 14:01:56 -07:00
test_msgraph_webhook.py fix(security): widen non-ASCII compare_digest crash fix to all sibling sites 2026-07-16 07:22:24 -07:00
test_multiplex_adapter_registry.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_multiplex_api_server_routing.py feat(api): backend-acknowledged session model lock with runtime routing 2026-07-24 13:39:21 -07:00
test_multiplex_background_task_scope.py test: use object.__new__ runner pattern for background-task scope tests 2026-07-16 07:57:06 -07:00
test_multiplex_credential_isolation.py test(profile): prove isolation fix under the multiplexed gateway, not just desktop 2026-06-30 15:30:06 -07:00
test_multiplex_http_routing.py feat(gateway): multiplex phase 1 — HTTP-inbound /p/<profile>/ routing (webhook) 2026-06-19 07:34:15 -07:00
test_multiplex_lifecycle.py feat(gateway): GATEWAY_MULTIPLEX_PROFILES env override for multiplex flag (#60589) 2026-07-08 00:34:34 +00:00
test_multiplex_pairing_stores.py fix(gateway): import PairingStore in _start_secondary_profile_adapters (#65118) 2026-07-15 12:11:16 -07:00
test_multiplex_phase0.py fix(gateway): avoid cross-profile session recovery (#59325) 2026-07-07 18:25:39 +10:00
test_multiplex_profile_authz.py fix(kanban): route active named profile through the active adapter map 2026-07-26 16:27:52 -07:00
test_native_image_buffer_isolation.py fix: route gateway images by session model override 2026-07-03 03:33:06 -07:00
test_new_clears_last_resolved_model.py fix(gateway): clear last-resolved-model cache on /new and compression auto-reset 2026-07-04 16:34:16 -07:00
test_notice_delivery.py
test_notice_rendering.py fix(credits): remove the 'Grant spent · $X top-up left' notice 2026-07-28 11:21:44 -07:00
test_ntfy_plugin.py
test_own_policy_startup_gate.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_pairing.py fix: merge split gateway pairing stores 2026-07-07 02:18:17 -07:00
test_pairing_allowlist_bypass.py fix(gateway): pairing is a grant that syncs to the allowlist (#23778) (#56381) 2026-07-01 05:31:15 -07:00
test_pending_drain_no_recursion.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_pending_drain_race.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_pending_event_none.py
test_per_platform_streaming_defaults.py fix(streaming): add Slack streaming=false default to match Discord 2026-07-23 12:01:24 -07:00
test_pii_redaction.py
test_plaintext_approval_routing.py fix(gateway): deliver confirmation + reuse handlers for plain-text approvals 2026-06-30 14:29:51 -07:00
test_planned_stop_watcher.py fix(ci): make tests, workflows, and attribution reliable under load (#66373) 2026-07-17 20:55:24 +00:00
test_platform_base.py fix: route busy-steer voice through the shared out-of-band STT choke point 2026-07-28 11:57:11 -07:00
test_platform_connected_checkers.py fix(gateway): require usable API_SERVER_KEY to enroll the api_server platform at load time 2026-07-23 11:54:05 -07:00
test_platform_http_client_limits.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_platform_reconnect.py fix(discord): wire voice input callback at adapter connect time 2026-07-28 11:56:37 -07:00
test_platform_reconnect_fd_leak.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_platform_registry.py
test_plugin_platform_interface.py
test_post_delivery_callback_chaining.py fix(gateway): await async post-delivery callbacks in chained wrapper 2026-07-01 02:12:25 -07:00
test_post_stream_media_delivery.py fix(gateway): make post-stream media delivery explicit-only 2026-07-22 21:58:13 -07:00
test_pre_gateway_dispatch.py fix(state): rebuild legacy gateway_routing PK; guard session_store in dispatch hook 2026-07-28 11:58:54 -07:00
test_priority_path_compression_demotion_56391.py fix(gateway): enforce one async SessionStore boundary 2026-07-10 12:38:48 +05:30
test_profile_resolution.py test(gateway): cover routed transport delivery 2026-07-22 04:19:10 -07:00
test_profile_routing.py fix(gateway): profile routing — conjunctive matching + universal gateway_runner 2026-07-15 09:50:05 -07:00
test_prompt_tail_freeze.py fix(gateway): key Slack capability gate into the prompt pin; defer positive note to tool schemas 2026-07-23 11:32:24 -07:00
test_proxy_mode.py fix(gateway): cap proxy SSE line buffer 2026-07-05 00:41:34 -07:00
test_qqbot.py fix(qqbot): add is_reconnect param to QQAdapter.connect for gateway reconnect compat 2026-07-09 19:09:38 -07:00
test_queue_command.py fix(slack): preserve typed command integrity across enrichment paths 2026-07-22 20:55:51 -07:00
test_queue_consumption.py test(gateway): pin source.profile=None on MagicMock fixtures hitting _adapter_for_source 2026-07-05 21:48:59 -07:00
test_queued_native_image_session_key.py test(gateway): accept kwargs in _decide_image_input_mode stub after #36055 signature change 2026-07-03 03:33:06 -07:00
test_raft_adapter.py security(raft): enforce body-size limit on chunked requests 2026-07-05 13:57:37 -07:00
test_readiness.py fix(gateway): ground readiness in live runtime state 2026-07-11 08:42:21 -07:00
test_reasoning_command.py feat(reasoning): add max and ultra effort levels (#62650) 2026-07-12 00:26:49 -07:00
test_reasoning_config_per_model.py refactor(reasoning): unify per-model reasoning resolution behind a single chokepoint 2026-07-14 11:46:40 -07:00
test_relay_capability_surface.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_relay_upstream_authz.py feat(relay): carry routed profile from the connector wire source (#60586) 2026-07-08 00:20:23 +00:00
test_reload_skills_command.py
test_reload_skills_discord_resync.py
test_replace_child_reap.py fix(gateway): reap the replaced gateway's orphaned children on POSIX 2026-07-21 12:40:21 -07:00
test_replay_entry_fields.py feat(cache): persist the exact bytes sent to the API in an api_content sidecar 2026-07-19 08:25:35 +05:30
test_reply_to_injection.py fix(signal): preserve quoted reply context 2026-06-20 15:16:53 +05:30
test_response_filters.py refactor(gateway): promote autonomous silence matcher to shared response_filters helper 2026-07-26 16:55:42 -07:00
test_restart_drain.py fix(windows): hidden-console daemons — extend the parent-console fix to every detached spawn path (#70205) 2026-07-23 11:13:14 -07:00
test_restart_notification.py fix(gateway): deliver relay-backed homes after restart 2026-07-24 10:45:13 -07:00
test_restart_redelivery_dedup.py fix(gateway): stop slow restart redelivery loops 2026-07-20 12:11:07 +05:30
test_restart_resume_pending.py fix(gateway): bound the startup-restore inbound gate on a slow boot-resume turn 2026-07-26 19:30:14 -07:00
test_restart_service_detection.py fix(gateway): preserve external supervisor ownership 2026-07-16 05:08:56 -07:00
test_resume_command.py fix(gateway): clear last-resolved-model cache on 3 more conversation-boundary resets 2026-07-05 13:58:03 -07:00
test_retry_replacement.py
test_retry_response.py
test_run_cleanup_progress.py fix(slack): delete stale progress messages 2026-07-23 11:36:49 -07:00
test_run_progress_interrupt.py fix(gateway): recover from truncated responses 2026-07-01 17:08:50 +05:30
test_run_progress_topics.py fix(slack): clear assistant status on every send() exit path 2026-07-23 11:36:49 -07:00
test_run_tool_media_re.py
test_runner_fatal_adapter.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_runner_startup_failures.py fix(gateway): stay alive on mixed retryable + non-retryable startup failures 2026-07-24 16:03:10 -07:00
test_running_agent_session_toggles.py
test_runtime_config_env_expansion.py
test_runtime_env_reload_config_authority.py test(gateway): cover runtime max_turns refresh 2026-06-19 06:31:13 -07:00
test_runtime_footer.py
test_safe_adapter_disconnect.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_scale_to_zero.py feat(gateway): scale-to-zero idle detection + dormant-quiesce (Phase 0) 2026-06-24 18:47:18 -07:00
test_scale_to_zero_watcher.py fix(gateway): scale-to-zero never armed — arm-gate counted disabled placeholder platforms (#52831) 2026-06-26 14:01:48 +10:00
test_send_error_classification.py feat(gateway): typed send-error classification (SendResult.error_kind) (#50342) 2026-06-21 12:34:22 -07:00
test_send_image_file.py test(discord): update send_document/send_video expectations to plural files= kwarg 2026-07-26 12:52:31 -07:00
test_send_multiple_images.py fix(platforms): block image upload redirects to private URLs 2026-07-22 21:58:13 -07:00
test_send_retry.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_send_voice_reply_notify.py
test_session.py fix(compression): recover rotated session lineage 2026-07-24 16:00:34 -07:00
test_session_api.py test: order compression-tip fixtures around the closed-parent write guard 2026-07-24 16:00:34 -07:00
test_session_boundary_hooks.py fix(gateway): clear last-resolved-model cache on 3 more conversation-boundary resets 2026-07-05 13:58:03 -07:00
test_session_boundary_security_state.py security(gateway): prove chat/thread origin for persisted /resume; tighten DM scoping 2026-07-01 05:38:03 -07:00
test_session_context_inheritance.py fix(gateway): close cross-session HERMES_SESSION_* leak into subprocess env 2026-07-01 15:42:19 +05:30
test_session_dm_thread_seeding.py
test_session_env.py fix(kanban): preserve telegram dm topic metadata 2026-07-26 16:01:32 -07:00
test_session_hygiene.py fix(gateway): write hygiene compressed transcript before rebinding session 2026-07-28 19:38:11 +05:30
test_session_id_cache_coherence.py test(gateway): align salvaged #54947-cluster tests with async cache helper 2026-07-01 02:29:24 -07:00
test_session_info.py fix(providers): scope route-owned runtime settings 2026-07-22 11:19:37 +05:30
test_session_list_allowed_sources.py
test_session_load_bool.py fix(gateway): skip non-dict entries in session loading (#46994) 2026-06-25 01:26:13 +05:30
test_session_model_override_credential_pool.py fix(gateway): attach credential_pool to session /model overrides 2026-07-04 16:34:16 -07:00
test_session_model_override_persistence.py feat(gateway): persist per-session /model overrides across gateway restarts 2026-07-02 05:51:12 -07:00
test_session_model_override_routing.py
test_session_model_reset.py
test_session_override_thread_recovery.py
test_session_race_guard.py fix(gateway): route SessionDB calls through AsyncSessionDB 2026-06-29 15:51:57 -07:00
test_session_reset_notify.py fix(gateway): unify reset boundaries vs recovery — promote accidental ends, honor mode=none, adapter-aware resume guidance 2026-07-17 04:51:39 -07:00
test_session_split_brain_11016.py fix(telegram): preserve Bot API update queue on watcher reconnect 2026-06-25 21:29:57 -07:00
test_session_state_cleanup.py
test_session_store_expiry_finalized.py fix: conditional promote + real SessionDB tests 2026-07-17 04:51:39 -07:00
test_session_store_lock_io.py fix(ci): make tests, workflows, and attribution reliable under load (#66373) 2026-07-17 20:55:24 +00:00
test_session_store_prune.py fix(gateway): never prune sessions when active-process check fails 2026-07-14 17:13:20 +05:30
test_session_store_runtime_stale_guard.py fix(gateway): follow async completions across compression 2026-07-22 06:56:08 -07:00
test_session_store_stale_prune.py fix(gateway): keep stale route when recovery lookup fails 2026-07-17 04:51:39 -07:00
test_setup_feishu.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_shared_group_sender_prefix.py fix(slack): expose shared-thread author mention target 2026-07-22 07:22:55 -07:00
test_shutdown_cache_cleanup.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_shutdown_flush.py fix: rewrite recover_pending_to_db to use SessionDB.append_message 2026-07-28 18:08:24 +05:30
test_shutdown_forensics.py
test_shutdown_memory_provider_messages.py
test_shutdown_watchdog.py test(gateway): cover shutdown watchdog and loop heartbeat (#66892) 2026-07-18 19:53:00 +05:30
test_signal.py fix(signal): detect M4A-branded voice notes so iOS audio reaches STT 2026-07-28 11:52:44 -07:00
test_signal_format.py fix(signal): share markdown formatting across send paths 2026-06-20 13:47:14 +05:30
test_signal_rate_limit.py
test_simplex_plugin.py fix(gateway): classify SimpleX non-image/non-audio files as DOCUMENT 2026-06-12 01:07:50 -07:00
test_slack.py feat(slack): set HermesAgent User-Agent on slack-bolt client 2026-07-23 12:01:24 -07:00
test_slack_approval_buttons.py feat(slack): opt-in reaction triggers, removed events, hooks, channel handoff 2026-07-23 11:50:08 -07:00
test_slack_block_kit.py fix(gateway): balance code fences on every remaining chunk-split path 2026-07-23 11:50:28 -07:00
test_slack_block_kit_adapter.py feat(slack): opt-in Block Kit markdown block rendering for standard markdown 2026-07-23 11:50:28 -07:00
test_slack_bot_auth_bypass.py fix(slack): authorize bot/workflow senders before the no-user-id guard 2026-07-01 16:32:32 +05:30
test_slack_channel_session_scope.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_slack_channel_skills.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_slack_clarify_buttons.py feat(slack): Block Kit buttons for clarify prompts 2026-07-22 07:00:47 -07:00
test_slack_cron_continuable_surface.py feat(cron/slack): flat in-channel continuable cron delivery surface 2026-07-01 03:16:13 -07:00
test_slack_dedup_ttl.py fix(slack): widen Socket Mode dedup TTL to cover reconnect redelivery 2026-07-22 07:14:42 -07:00
test_slack_download_ssrf.py harden(slack): CDN-allowlist inbound file URLs, DNS-pin token downloads, widen token-file perms warning 2026-07-23 11:44:43 -07:00
test_slack_group_dm_scope_warning.py feat(slack): nudge stale installs to add mpim scopes; mark message.mpim required 2026-06-29 01:02:53 -07:00
test_slack_ignore_other_user_mentions.py fix(slack): count pipe-form bot mentions as mentioned in ignore gate 2026-07-22 21:14:44 -07:00
test_slack_log_noise.py test(slack): behavioral log-noise/privacy suite + keep clarify choice text out of INFO logs 2026-07-23 11:34:11 -07:00
test_slack_mention.py test(slack): mark block-privacy fixture message as human-authored (client_msg_id) 2026-07-23 11:34:11 -07:00
test_slack_mention_humanization.py fix(slack): humanize inbound user mentions + ground bot identity 2026-07-22 07:22:55 -07:00
test_slack_peer_agent_smoke.py test(slack): add peer-agent smoke target 2026-07-22 21:14:44 -07:00
test_slack_plugin_action_handlers.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_slack_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_slack_relay_parent_command.py fix(relay): restore streaming delivery, Slack command parity, and status clearing (salvage of #69716) (#69747) 2026-07-23 12:51:13 +10:00
test_slack_require_mention_channels.py feat(slack): require_mention_channels per-channel force-mention override 2026-07-22 21:14:44 -07:00
test_slack_runner_ignored_channels.py feat(slack): bridge slack.ignored_channels through the YAML→env config path 2026-07-23 12:01:24 -07:00
test_slack_send_retry.py test(slack): adapt salvaged tests to current main 2026-07-22 20:55:51 -07:00
test_slack_socket_reconnect_heal.py fix(slack): stop client tasks before closing the Socket Mode session 2026-07-22 07:14:42 -07:00
test_slack_status_update.py fix(slack): edit status bubbles in place instead of posting new ones 2026-07-23 11:36:49 -07:00
test_slack_user_token_warning.py fix(slack): warn when configured token is a user token, not a bot token 2026-06-29 20:57:43 -07:00
test_slack_wake_external_bot_messages.py fix(slack): wake on human replies in threads whose root we authored 2026-07-22 07:22:55 -07:00
test_slash_access.py
test_slash_access_dispatch.py fix(gateway): gate quick_commands through slash access policy 2026-06-28 02:43:23 -07:00
test_sms.py fix(sms): bound Twilio webhook body reads to prevent OOM 2026-07-05 17:38:36 -07:00
test_sse_agent_cancel.py test(api-server): cover SSE failure finish_reason for both failure modes 2026-06-27 03:52:44 -07:00
test_ssl_cert_detection.py
test_ssl_certs.py
test_stacked_skill_platform_disabled.py fix(gateway): re-check every stacked skill against the platform-disabled list 2026-07-05 13:57:11 -07:00
test_stale_confirmation_expiry.py fix: redact expired confirmations in place to preserve role alternation 2026-07-07 14:40:32 +05:30
test_stale_platform_lock_retryable.py fix(gateway): take over live platform-lock token holders once 2026-07-21 12:40:21 -07:00
test_stale_self_heal_agent_cache_eviction.py fix(gateway): evict stale-self-heal agent cache entries pointing at dead sessions 2026-07-16 00:11:22 +05:30
test_startup_no_eager_platform_install.py test(gateway): cover no eager platform install on startup sweep 2026-06-21 16:41:17 -07:00
test_startup_restart_race.py test(gateway): update startup-restart-race fixtures for current main 2026-06-30 03:22:18 -07:00
test_status.py fix(dashboard): one gateway liveness ladder for status + channels 2026-07-26 08:08:38 -07:00
test_status_command.py feat(cli,gateway): unify /context into a visual context-usage breakdown 2026-07-26 18:06:21 -07:00
test_status_phrases.py chore: limit generic status phrases to long-running notifications 2026-07-05 06:29:26 -07:00
test_steer_command.py fix(slack): preserve typed command integrity across enrichment paths 2026-07-22 20:55:51 -07:00
test_step_callback_compat.py
test_sticker_cache.py
test_stop_thread_sibling.py fix(slack): clear stuck assistant status on /stop and via explicit metadata 2026-07-14 21:31:32 -07:00
test_stream_consumer.py fix(gateway): GIS extensions, spaced MEDIA paths, and code-block-safe display strip 2026-07-26 13:41:53 -07:00
test_stream_consumer_draft.py fix(telegram): preserve rich formatting on stream final 2026-06-13 13:44:45 -07:00
test_stream_consumer_fresh_final.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_stream_consumer_silence.py fix(gateway): suppress NO_REPLY/[SILENT] markers on the streaming path 2026-06-30 23:37:04 -07:00
test_stream_consumer_thread_routing.py test(streaming): include original reply anchor metadata 2026-07-18 14:01:33 -07:00
test_stream_events.py
test_stt_config.py fix(gateway): pass channel_prompt into voice-channel STT events; guard empty transcripts 2026-07-28 11:56:37 -07:00
test_stt_transcript_echo_config.py fix: honor top-level STT transcript echo config 2026-07-05 06:12:49 -07:00
test_stuck_loop.py
test_subagent_protection_30170.py test(gateway): assert queued outcome, not merge_pending_message_event call 2026-06-20 20:05:37 -07:00
test_systemd_notify.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_systemd_watchdog_lifecycle.py fix(gateway): recover Discord websocket and event-loop stalls 2026-07-18 20:01:55 +05:30
test_table_helpers.py refactor: extract shared GFM table→bullet helpers into helpers.py 2026-06-27 03:57:24 +05:30
test_teams.py feat(teams): native send_video/send_voice/send_document attachments (#49308) 2026-06-19 16:20:59 -07:00
test_teams_pipeline_runtime_wiring.py
test_telegram_approval_buttons.py test(telegram): cover smart_deny 2-button row structure 2026-07-25 17:51:06 +05:30
test_telegram_audio_vs_voice.py fix(gateway): preserve pending voice media semantics 2026-07-19 07:27:29 +05:30
test_telegram_auth_check.py fix(telegram): update auth check tests for group_allow_from split 2026-07-22 12:47:41 +05:30
test_telegram_bot_auth_bypass.py fix: salvage #33830 for current main — relocate allow_bots bridge to telegram plugin hook, fix stale adapter import in test 2026-06-28 00:57:03 -07:00
test_telegram_callback_auth_fail_closed.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_caption_merge.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_channel_posts.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_clarify_buttons.py fix(telegram): notify user when clarify button tap arrives after expiry 2026-06-28 01:07:53 -07:00
test_telegram_closewait_limits_31599.py fix(telegram): wire platform_httpx_limits into general-pool HTTPXRequest (#31599) 2026-06-24 02:15:47 +05:30
test_telegram_conflict.py test: record getUpdates progress in mocked cold-connect polling flows 2026-07-24 19:11:04 -07:00
test_telegram_connect.py fix(gateway): mark unconfigured platforms as non-retryable to stop reconnect loop 2026-07-22 07:14:42 -07:00
test_telegram_documents.py fix(media): recognize m2a audio attachments 2026-07-28 11:52:44 -07:00
test_telegram_error_redaction.py fix(telegram): widen transport-error redaction to all remaining raw exception sites 2026-07-16 04:25:54 -07:00
test_telegram_fallback_pool_release_71593.py test(telegram): regression for #71593 fallback-pool discard-on-failure 2026-07-26 19:30:27 -07:00
test_telegram_final_delivery.py fix(telegram): harden flood fallback recovery 2026-07-11 11:13:50 +05:30
test_telegram_format.py fix(telegram): dedup saturated mid-stream overflow previews to stop flood-control edit storms (#58563) 2026-07-05 00:32:35 -07:00
test_telegram_forum_commands.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_group_gating.py fix(telegram): treat "never checked" identity as stale on a fresh-boot clock 2026-07-26 11:50:34 -07:00
test_telegram_init_deadline.py fix(telegram): diagnose blocked-loop init hangs, unbind DoH from system DNS 2026-07-14 17:09:50 +05:30
test_telegram_max_doc_bytes.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_mention_boundaries.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_model_picker.py fix(telegram): paginate model provider picker 2026-07-04 13:48:33 +05:30
test_telegram_network.py test(telegram): regression for #71593 fallback-pool discard-on-failure 2026-07-26 19:30:27 -07:00
test_telegram_network_reconnect.py fix(telegram): widen fatal handoff to heartbeat watchdog path 2026-07-21 12:11:52 +05:30
test_telegram_noise_filter.py fix(compression): reset blocked-overflow dedup on every compression path + noise-filter survival pins 2026-07-23 08:43:21 -07:00
test_telegram_overflow_partial.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_pending_update_probe.py fix(telegram): recover when polling updater stops while process stays alive 2026-06-30 15:36:58 -07:00
test_telegram_photo_interrupts.py
test_telegram_polling_progress.py fix(telegram): require initial polling readiness 2026-07-24 19:11:04 -07:00
test_telegram_progress_edit_transient.py
test_telegram_prune_stale_topic_binding_31501.py fix(telegram): disable DM topic mode when last binding is pruned 2026-06-22 12:29:05 -07:00
test_telegram_reactions.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_reply_mode.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_reply_quote.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_rich_messages.py fix(telegram): respect rich_messages config for pipe table routing 2026-07-14 06:48:53 -07:00
test_telegram_rich_newlines.py fix(telegram): exempt tables from rich newline hard-breaks 2026-06-21 08:26:28 -07:00
test_telegram_send_draft_format.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_send_path_health.py fix(telegram): gate polling health on getUpdates progress 2026-07-14 17:32:41 +05:30
test_telegram_slash_confirm.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_start_polling_timeout.py fix(telegram): bind strict cold-start readiness to its own polling generation 2026-07-24 19:11:04 -07:00
test_telegram_status_indicator.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_status_update.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_text_batch_perf.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_telegram_text_batching.py fix(telegram): cancel delayed deliveries on disconnect 2026-06-30 17:39:30 -07:00
test_telegram_thread_fallback.py fix(security): guard remaining preflighted HTTP fetches 2026-07-23 11:44:43 -07:00
test_telegram_topic_mode.py fix(gateway): let internal events bypass topic lobby 2026-07-26 16:01:32 -07:00
test_telegram_typing_backoff.py fix: cool down transient Telegram typing failures (#46355) 2026-07-07 02:39:31 -07:00
test_telegram_username_chat_id.py fix(telegram): accept @username chat_id in delivery paths (#13206) 2026-06-27 04:01:58 -07:00
test_telegram_voice_caption_markdown.py test(gateway): regression coverage for platform-aware voice delivery 2026-07-28 11:55:48 -07:00
test_telegram_voice_duration.py fix(telegram): include duration in standalone sends 2026-07-16 04:40:35 -07:00
test_telegram_voice_v0_regressions.py fix(gateway): keep the STT echo ledger across pending-media merges 2026-07-28 11:57:11 -07:00
test_telegram_webhook_secret.py test: retarget source-path refs to migrated plugin paths 2026-06-20 10:26:45 -07:00
test_text_batching.py fix(matrix): class-level split-threshold defaults for partially-constructed adapters 2026-07-20 11:10:49 -07:00
test_title_command.py fix(gateway): offload the Telegram topic-recovery helper tree off the loop 2026-06-29 15:51:57 -07:00
test_tool_log_mode.py feat(gateway): add 'log' option to display.tool_progress 2026-07-02 05:09:38 -07:00
test_tool_response_drop_recovery.py test(gateway): update stale expectation — #31884 surfaces retry hint for uninterrupted zero-call drops 2026-07-06 03:42:14 -07:00
test_transcript_offset.py
test_tts_media_routing.py fix(discord): notify user on attachmentless MEDIA drop 2026-07-26 12:52:31 -07:00
test_tui_approval_redaction.py fix(approval): scope smart deny owner overrides to one operation 2026-07-13 04:31:55 -07:00
test_turn_lease.py fix(gateway): per-session turn lease + conversation-scope funnel (#64934) (#67401) 2026-07-19 03:49:29 -07:00
test_typing_indicator_toggle.py feat(gateway): per-platform typing_indicator toggle 2026-06-29 21:12:57 -07:00
test_unauthorized_dm_behavior.py test(whatsapp): cover LID allowlist match on modern session layout 2026-06-28 02:05:26 -07:00
test_unavailable_skill_hint.py
test_undo_rewind_session.py
test_unknown_command.py fix(gateway): transcribe clarify voice replies 2026-07-28 11:57:11 -07:00
test_update_command.py rip out brew + pip/PyPI wheel support (#68217) 2026-07-22 16:51:01 -04:00
test_update_cron_drain.py fix(gateway,cron): reconcile #60612 + #60631 onto one drain surface 2026-07-07 22:15:04 -07:00
test_update_streaming.py
test_usage_command.py feat(codex): redeem banked usage-limit resets via /usage reset (#64280) 2026-07-14 03:23:19 -07:00
test_verbose_command.py chore: limit generic status phrases to long-running notifications 2026-07-05 06:29:26 -07:00
test_version_command.py
test_video_context_note.py fix(slack): make video attachments available to agents (#45512) 2026-06-13 03:33:27 -07:00
test_vision_memory_leak.py
test_voice_command.py fix(gateway): pass channel_prompt into voice-channel STT events; guard empty transcripts 2026-07-28 11:56:37 -07:00
test_voice_mode_platform_isolation.py
test_wake_delivery.py fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 2026-07-23 11:55:17 -07:00
test_weak_credential_guard.py fix(security): close hermes-0day MCP-persistence attack surface 2026-06-21 19:05:27 -07:00
test_webhook_adapter.py fix(webhook): honor [SILENT] when the agent explains its own silence 2026-07-26 16:55:42 -07:00
test_webhook_deliver_only.py
test_webhook_dynamic_routes.py
test_webhook_integration.py test: update kwarg-snapshot assertions for the utf-8 subprocess guard 2026-07-24 11:45:57 -07:00
test_webhook_session_close.py fix(webhook): close per-delivery session at the true end of the run (#57423) 2026-07-02 17:39:09 -07:00
test_webhook_signature_rate_limit.py
test_wecom.py fix(security): guard remaining preflighted HTTP fetches 2026-07-23 11:44:43 -07:00
test_wecom_callback.py fix(security): cap WeCom callback body size before pre-auth XML parse (#54615) 2026-06-28 22:35:43 -07:00
test_wecom_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_weixin.py
test_weixin_typing.py
test_whatsapp_allowlist_lid_resolution.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_whatsapp_bridge_dir_resolution.py test(whatsapp): cover read-only bridge dir mirror; add author map 2026-06-20 17:05:27 -07:00
test_whatsapp_bridge_pidfile.py test(whatsapp): fix port-spares-client test race (listen before announce + retry connect) 2026-06-21 17:23:33 -07:00
test_whatsapp_cloud.py fix(security): widen non-ASCII compare_digest crash fix to all sibling sites 2026-07-16 07:22:24 -07:00
test_whatsapp_cloud_allowed_users.py test(whatsapp_cloud): intake-gate regression coverage for documented env vars 2026-07-05 00:41:34 -07:00
test_whatsapp_connect.py feat(whatsapp): support inbound read receipts 2026-07-28 18:02:51 +05:30
test_whatsapp_formatting.py fix(whatsapp): gate poll-vote events to Hermes-created polls + salvage follow-ups 2026-07-05 06:27:20 -07:00
test_whatsapp_from_owner.py fix(gateway): repair sibling tests + harden _adapter_for_source after fail-closed flip 2026-07-01 03:56:28 -07:00
test_whatsapp_group_gating.py fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 2026-07-01 03:56:28 -07:00
test_whatsapp_identity.py fix(whatsapp): resolve LID aliases on modern platforms/ session layout 2026-06-28 02:05:26 -07:00
test_whatsapp_media_path_profile.py fix(profile): resolve WhatsApp media-path cache roots per-call 2026-06-30 15:30:06 -07:00
test_whatsapp_native_delivery.py feat(whatsapp): native Baileys polls, clarify-as-poll, locations, and rich inbound metadata 2026-07-05 06:27:20 -07:00
test_whatsapp_plugin_setup.py fix(platforms): clear home channel when setup prompt left blank 2026-07-23 12:01:24 -07:00
test_whatsapp_reply_prefix.py fix: fire-and-forget read receipts, add docs (#70340 salvage) 2026-07-28 18:02:51 +05:30
test_whatsapp_stale_bridge.py fix(whatsapp): apply read receipts after intake policy 2026-07-28 18:02:51 +05:30
test_whatsapp_text_batching.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_whatsapp_to_jid.py fix(whatsapp): normalize bare phone targets to JIDs before bridge send 2026-06-21 13:32:22 -07:00
test_ws_auth_retry.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_yolo_command.py
test_yuanbao_media_ssrf.py fix(security): SSRF guard yuanbao media download_url (#54470) 2026-06-28 15:29:59 -07:00