hermes-agent/tests/gateway
Teknium febc4cfec0
remove Vercel AI Gateway and Vercel Sandbox (#33067)
* remove Vercel AI Gateway provider and Vercel Sandbox terminal backend

Both Vercel-hosted integrations are removed end-to-end. Users on the AI
Gateway should switch to OpenRouter or one of the other aggregators
(Nous Portal, Kilo Code). Users on the Vercel Sandbox backend should
switch to Docker, Modal, Daytona, or SSH.

What's removed:
- `plugins/model-providers/ai-gateway/` provider plugin
- `hermes_cli/vercel_auth.py` Vercel-Sandbox auth helper
- `tools/environments/vercel_sandbox.py` terminal backend
- `ai-gateway` provider wiring across auth, doctor, setup, models,
  config, status, providers, main, web_server, model_normalize, dump
- `vercel_sandbox` backend wiring across terminal_tool, file_tools,
  code_execution_tool, file_operations, approval, skills_tool,
  environments/local, credential_files, lazy_deps, prompt_builder,
  cli, gateway/run
- `AI_GATEWAY_BASE_URL` constant, `_AI_GATEWAY_HEADERS` auxiliary-client
  header set, run_agent base-URL header/reasoning special-cases
- `[vercel]` pyproject extra and `vercel`/`vercel-workers` from uv.lock
- env vars: `AI_GATEWAY_API_KEY`, `AI_GATEWAY_BASE_URL`, `VERCEL_TOKEN`,
  `VERCEL_PROJECT_ID`, `VERCEL_TEAM_ID`, `VERCEL_OIDC_TOKEN`,
  `TERMINAL_VERCEL_RUNTIME`
- Tests: deletes test_ai_gateway_models.py and
  test_vercel_sandbox_environment.py; scrubs references across 23
  surviving test files (no entire tests deleted unless they were
  dedicated to AI Gateway / Sandbox)
- Docs: provider tables, env-var reference, setup guides, security
  notes, tool config, terminal-backend tables — English plus zh-Hans
  i18n parity
- `hermes-agent` skill: provider table entry and remote-backend list

What stays (intentional):
- `popular-web-designs/templates/vercel.md` — CSS design reference,
  unrelated to Vercel-the-AI-product
- `x-vercel-id` in `stream_diag.py` headers — generic Vercel CDN
  response header, useful diag signal on any Vercel-hosted endpoint
- `vercel-labs/agent-browser` URL in browser config — lightpanda
  browser project, different OSS effort
- `userStories.json` historical contributor entry mentioning Vercel
  Sandbox — archive, not active docs

Validation:
- 1153 tests in the 22 targeted files pass (`scripts/run_tests.sh`)
- Full repo `py_compile` clean
- Live import of every touched module + invariant check (no
  `ai-gateway` in `PROVIDER_REGISTRY`, no `_AI_GATEWAY_HEADERS`, no
  `vercel_sandbox` in `_REMOTE_TERMINAL_BACKENDS`)

* test: convert profile-count check from change-detector to invariant

The hardcoded "== 34" assertion broke when ai-gateway was removed.
Per AGENTS.md change-detector-test guidance, assert the relationship
(registry count >= number of plugin dirs) instead of a literal count.
Counts shift when providers are added/removed; that's expected.
2026-05-27 00:43:32 -07:00
..
platforms feat(state.db): persist platform_message_id; restore yuanbao exact-id recall 2026-05-20 13:00:57 -07:00
__init__.py
_plugin_adapter_loader.py test(gateway): isolate plugin adapter imports and guard the anti-pattern 2026-04-30 01:19:34 -07:00
conftest.py test: use subprocesses for each test file (#29016) 2026-05-21 16:40:04 +05:30
feishu_helpers.py feat(feishu): operator-configurable bot admission and mention policy 2026-04-30 20:30:31 -07:00
restart_test_helpers.py fix(gateway): cap cached session sources with LRU eviction 2026-05-07 05:16:38 -07:00
test_7100_transient_failure_transcript.py fix(gateway): persist user message on transient agent failures (#7100) 2026-04-30 04:32:33 -07:00
test_active_session_text_merge.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_agent_cache.py test: remove 50 stale/broken tests to unblock CI (#22098) 2026-05-08 14:55:40 -07:00
test_allowed_channels_widening.py fix(tests): catch up 25 stale tests after recent merges (#28626) 2026-05-19 01:28:32 -07:00
test_allowlist_startup_check.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_api_server.py fix(state): restrict sensitive store file permissions 2026-05-24 04:55:18 -07:00
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: add cron API provenance logging (#24889) 2026-05-25 01:15:56 -07:00
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 fix(api_server): normalize array-based content parts in chat completions 2026-04-12 18:03:16 -07:00
test_api_server_runs.py ci(tests): add pytest-timeout 60s hard cap to break suite-teardown deadlock (#28861) 2026-05-19 17:27:24 -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_approve_deny_commands.py fix(tests): catch up 25 stale tests after recent merges (#28626) 2026-05-19 01:28:32 -07:00
test_auth_fallback.py fix(provider): make config.yaml model.provider the single source of truth (#31222) 2026-05-23 18:18:41 -07:00
test_auto_continue.py feat: auto-continue interrupted agent work after gateway restart (#4493) 2026-04-14 16:56:49 -07:00
test_background_command.py test(gateway): include direct_messages_topic_id in telegram DM metadata assertions 2026-05-17 12:44:48 -07:00
test_background_process_notifications.py fix(gateway): route background-process notifications into Telegram DM topics 2026-05-18 22:03:12 -07:00
test_base_topic_sessions.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_bluebubbles.py fix(debug): redact BlueBubbles webhook secrets 2026-05-24 15:43:48 -07:00
test_bundles_command.py feat(skills): add skill bundles — alias /<name> loads multiple skills (#28373) 2026-05-18 21:38:05 -07:00
test_busy_session_ack.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_busy_session_auth_bypass.py fix(gateway): enforce auth check in busy-session path to prevent unauthorized injection (#17775) 2026-04-30 04:29:15 -07:00
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 fix(Slack): resolve Slack channels by raw ID and enumerate joined channels 2026-04-26 12:29:02 -07:00
test_clean_shutdown_marker.py fix: update tests for resume_pending semantics + add AUTHOR_MAP entries 2026-05-03 03:54:03 -07:00
test_command_bypass_active_session.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_complete_path_at_filter.py fix(tui): restore voice/panic handlers + scope fuzzy paths to cwd 2026-04-23 19:38:33 -05:00
test_compress_command.py fix(compress): abort instead of dropping messages when summary LLM fails (#28102) 2026-05-18 10:19:40 -07:00
test_compress_focus.py fix(compress): don't reach into ContextCompressor privates from /compress (#15039) 2026-04-24 02:55:43 -07:00
test_compress_plugin_engine.py fix(compress): don't reach into ContextCompressor privates from /compress (#15039) 2026-04-24 02:55:43 -07:00
test_compression_session_id_persistence.py test+polish(compression): pin anti-thrash gate and gateway session_id persistence 2026-05-25 01:44:46 -07:00
test_config.py Revert "feat(telegram): support quick-command-only menus" 2026-05-18 23:59:57 -07:00
test_config_cwd_bridge.py remove Vercel AI Gateway and Vercel Sandbox (#33067) 2026-05-27 00:43:32 -07:00
test_config_env_bridge_authority.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_debug_command.py fix(debug): sweep expired pending pastes on slash debug paths 2026-04-22 11:59:39 -07:00
test_delivery.py fix: refresh stale Telegram DM topic threads 2026-05-25 14:54:02 -07:00
test_destructive_slash_confirm.py feat: confirm prompt for destructive slash commands (#4069) (#22687) 2026-05-09 11:04:46 -07:00
test_dingtalk.py fix(dingtalk): finalize open streaming cards before disconnect 2026-05-23 20:48:56 -07:00
test_discord_allowed_channels.py fix(discord): honor wildcard '*' in ignored_channels and free_response_channels 2026-04-24 03:04:42 -07:00
test_discord_allowed_mentions.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_attachment_download.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_bot_auth_bypass.py fix(tests): align CI tests with recent security hardening (#31470) 2026-05-24 06:54:16 -07:00
test_discord_bot_filter.py
test_discord_channel_controls.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_channel_prompts.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_channel_skills.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_clarify_buttons.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_component_auth.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_connect.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_document_handling.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_free_response.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_imports.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_lazy_install_views.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_media_metadata.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_model_picker.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_opus.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_race_polish.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_reactions.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_reply_mode.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_roles_dm_scope.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_send.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_slash_auth.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_slash_commands.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_discord_system_messages.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_discord_thread_persistence.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_display_config.py test(telegram): cover env-clamped helper + adaptive text-batch tiers 2026-05-10 22:22:25 -07:00
test_dm_topics.py fix: refresh stale Telegram DM topic threads 2026-05-25 14:54:02 -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_duplicate_reply_suppression.py fix(gateway): prevent duplicate final send when only cosmetic edit failed 2026-05-14 14:51:07 -07:00
test_email.py fix(email): send IMAP ID extension to support 163/NetEase mailbox 2026-05-09 13:35:50 -07:00
test_ephemeral_reply.py feat(gateway): auto-delete slash-command system notices after TTL (#18266) 2026-04-30 23:05:48 -07:00
test_extract_local_files.py feat(gateway): deliverable mode — ship artifacts as native uploads from any agent surface (#27813) 2026-05-18 02:14:43 -07:00
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 test(fast-command): stub _load_gateway_runtime_config too 2026-05-23 02:40:33 -07:00
test_feishu.py fix(feishu): validate verification token before reflecting url_verification challenge 2026-05-24 04:51:19 -07:00
test_feishu_approval_buttons.py fix(tests): align CI tests with recent security hardening (#31470) 2026-05-24 06:54:16 -07:00
test_feishu_bot_admission.py test(ci): stabilize shared optional dependency baselines 2026-05-13 17:32:22 -07:00
test_feishu_bot_auth_bypass.py feat(feishu): operator-configurable bot admission and mention policy 2026-04-30 20:30:31 -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_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_onboard.py fix(gateway): use monotonic deadlines in QR onboarding flows 2026-05-07 05:09:39 -07:00
test_fresh_reset_skill_injection.py fix(gateway): re-inject topic-bound skill after /new or /reset 2026-04-30 20:29:19 -07:00
test_gateway_command_help.py fix: sanitize Telegram help command mentions 2026-05-03 17:00:09 -07:00
test_gateway_inactivity_timeout.py ci(tests): add pytest-timeout 60s hard cap to break suite-teardown deadlock (#28861) 2026-05-19 17:27:24 -07:00
test_gateway_shutdown.py fix(gateway,cron): close ephemeral agents + reap stale aux clients (salvage #13979) (#16598) 2026-04-27 07:41:42 -07:00
test_goal_max_turns_config.py fix(gateway): honor configured goal turn budget 2026-05-07 06:31:08 -07:00
test_goal_status_notice.py fix(gateway): defer goal status notices until after response delivery 2026-05-07 17:33:09 -07:00
test_goal_verdict_send.py revert: roll back /goal checklist + /subgoal feature stack (#23813) 2026-05-11 07:06:27 -07:00
test_google_chat.py fix(google_chat): harden oauth credential persistence with atomic private writes (#24788) 2026-05-24 17:58:52 -07:00
test_home_target_env_var.py fix(gateway): preserve home-channel thread targets across restart notifications 2026-05-03 08:47:49 -07:00
test_homeassistant.py test: remove 169 change-detector tests across 21 files (#11472) 2026-04-17 01:05:09 -07:00
test_hooks.py feat(gateway): expose plugin slash commands natively on all platforms + decision-capable command hook 2026-04-22 16:23:21 -07:00
test_insights_unicode_flags.py fix(model-switch): normalize Unicode dashes from Telegram/iOS input 2026-04-15 17:54:16 -07:00
test_internal_event_bypass_pairing.py test(conftest): reset module-level state + unset platform allowlists (#13400) 2026-04-21 01:33:10 -07:00
test_interrupt_key_match.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_irc_adapter.py feat(plugins): add standalone_sender_fn for out-of-process cron delivery 2026-05-09 02:56:29 -07:00
test_kanban_notifier.py test(kanban): cover redeliver-on-cycle + flip stale unsub-on-abnormal-event tests 2026-05-10 14:27:59 -07:00
test_keep_typing_timeout.py fix(gateway): keep typing indicator alive across slow send_typing calls (#16763) 2026-04-27 19:09:32 -07:00
test_line_plugin.py feat(gateway): add LINE Messaging API platform plugin (#23197) 2026-05-10 06:40:46 -07:00
test_load_transcript_db_only.py test(gateway): pin DEFAULT_DB_PATH in fixtures to prevent real state.db writes 2026-05-20 13:00:57 -07:00
test_loop_exception_handler.py fix(gateway): swallow transient Telegram TimedOut at loop level 2026-05-24 15:03:27 -07:00
test_matrix.py fix(matrix,gateway): Matrix E2EE installs full dep set; plugins respect is_connected 2026-05-24 15:16:03 -07:00
test_matrix_exec_approval.py test(matrix): set user_id in approval-reaction test to bypass defensive self-drop 2026-04-27 21:22:44 -07:00
test_matrix_mention.py test(matrix): adapt outbound-mention notice test to current _send_simple_message API 2026-04-27 21:22:44 -07:00
test_matrix_voice.py fix(ci): resolve 4 pre-existing main failures (docs lint + 3 stale tests) (#11373) 2026-04-16 20:43:41 -07:00
test_mattermost.py refactor(gateway): migrate Mattermost adapter to bundled plugin 2026-05-24 18:05:33 -07:00
test_mcp_reload_refreshes_cached_agents.py fix(gateway): refresh cached agent tools on /reload-mcp 2026-05-26 14:28:51 -07:00
test_media_download_retry.py refactor(gateway): migrate Mattermost adapter to bundled plugin 2026-05-24 18:05:33 -07:00
test_media_extraction.py
test_memory_monitor.py Port from cline/cline#10343: periodic gateway memory logging (#27102) 2026-05-16 12:55:23 -07:00
test_message_deduplicator.py Fix MessageDeduplicator max_size enforcement 2026-04-26 18:51:51 -07:00
test_mirror.py refactor(gateway): drop _append_to_jsonl from mirror 2026-05-20 13:00:57 -07:00
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_command_flat_string_config.py fix(gateway): coerce scalar model: to dict before /model --global persist (#32272) 2026-05-25 15:22:23 -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_msgraph_webhook.py fix(tests): align CI tests with recent security hardening (#31470) 2026-05-24 06:54:16 -07:00
test_native_image_buffer_isolation.py fix(gateway): isolate pending native image paths by session 2026-04-30 20:26:35 -07:00
test_notice_delivery.py feat(gateway): private notice delivery and Slack format_message fixes 2026-05-01 13:33:06 -07:00
test_ntfy_plugin.py ntfy: tighten robustness, dedupe auth/truncation, add docs 2026-05-23 16:13:01 -07:00
test_pairing.py fix(gateway): preserve WhatsApp pairing approvals across JID/LID alias flips 2026-05-23 01:46:34 -07:00
test_pending_drain_no_recursion.py test(gateway): pin cleanup invariants for #17758 in-band drain hand-off 2026-04-30 05:00:25 -07:00
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 fix: remove 115 verified dead code symbols across 46 production files 2026-04-10 03:44:43 -07:00
test_platform_base.py fix(gateway): allow native delivery of freshly-produced agent files (#32060) 2026-05-25 05:34:31 -07:00
test_platform_connected_checkers.py Harden msgraph webhook auth requirements (#30169) 2026-05-24 04:25:20 -07:00
test_platform_http_client_limits.py fix(gateway): tighten httpx keepalive and close whatsapp typing-response leak (#18451) 2026-05-02 02:23:37 -07:00
test_platform_reconnect.py fix(gateway): keep running when platforms fail; add per-platform circuit breaker + /platform (#26600) 2026-05-15 14:32:14 -07:00
test_platform_registry.py fix(gateway): seed plugin extras before is_connected gate (#31703) 2026-05-24 15:44:26 -07:00
test_plugin_platform_interface.py feat(irc): add interactive setup 2026-04-29 21:56:51 -07:00
test_post_delivery_callback_chaining.py feat(gateway): opt-in cleanup of temporary progress bubbles (#21186) 2026-05-07 05:04:37 -07:00
test_pre_gateway_dispatch.py feat(plugins): add pre_gateway_dispatch hook 2026-04-24 03:02:03 -07:00
test_proxy_mode.py fix(telegram): honor no_proxy for explicit proxy setup 2026-04-24 14:31:04 -07:00
test_qqbot.py fix(qqbot): authorize approval button interactions by session owner (#30737) 2026-05-24 04:25:12 -07:00
test_queue_consumption.py fix(gateway): /queue is now a true FIFO — each invocation gets its own turn (#16175) 2026-04-26 11:55:09 -07:00
test_reasoning_command.py fix: coerce show_reasoning and guard_agent_created config bools 2026-04-30 20:40:46 -07:00
test_reload_skills_command.py refactor(reload-skills): queue note for next turn, drop cache invalidation + agent tool 2026-04-29 21:07:47 -07:00
test_reload_skills_discord_resync.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_replay_entry_fields.py fix(gateway): preserve reasoning_content, codex_message_items, finish_reason on transcript replay (#22839) 2026-05-09 14:47:33 -07:00
test_reply_to_injection.py fix(gateway): always inject reply-to pointer, not just when quoted text is absent (#13676) 2026-04-21 13:33:02 -07:00
test_restart_drain.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
test_restart_notification.py fix(gateway): preserve thread routing from cached live session sources 2026-05-07 05:16:38 -07:00
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 ci(tests): add pytest-timeout 60s hard cap to break suite-teardown deadlock (#28861) 2026-05-19 17:27:24 -07:00
test_resume_command.py test(cli,gateway): cover bracket-stripping and gateway session-ID lookup 2026-05-25 01:33:32 -07:00
test_retry_replacement.py refactor(yuanbao): drop dead branch A1 message_id loop + pin missing fixture 2026-05-20 13:00:57 -07:00
test_retry_response.py test(gateway): add regression test for /retry response fix 2026-03-10 23:34:52 -07:00
test_run_cleanup_progress.py feat(gateway): opt-in cleanup of temporary progress bubbles (#21186) 2026-05-07 05:04:37 -07:00
test_run_progress_interrupt.py fix(gateway): suppress tool-progress bubbles after interrupt (#16034) 2026-04-26 05:47:37 -07:00
test_run_progress_topics.py test(gateway): regression for plugin-transformed response after streaming 2026-05-24 04:31:13 -07:00
test_runner_fatal_adapter.py fix(gateway): keep running when platforms fail; add per-platform circuit breaker + /platform (#26600) 2026-05-15 14:32:14 -07:00
test_runner_startup_failures.py test: keep tirith checks hermetic 2026-05-23 02:20:14 -07:00
test_running_agent_session_toggles.py refactor: drop persist_session plumbing + fix broken btw mid-turn bypass (#16075) 2026-04-26 07:15:23 -07:00
test_runtime_config_env_expansion.py fix(gateway): enforce env variable template expansion on runtime config loaders 2026-05-23 02:27:08 -07:00
test_runtime_env_reload_config_authority.py fix(gateway): preserve max turns after env reload 2026-05-07 05:49:16 -07:00
test_runtime_footer.py feat(gateway): opt-in runtime-metadata footer on final replies (#17026) 2026-04-28 06:50:04 -07:00
test_safe_adapter_disconnect.py fix(gateway): cap adapter disconnect during stop 2026-05-08 18:50:25 -07:00
test_send_image_file.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_send_multiple_images.py refactor(gateway): migrate Mattermost adapter to bundled plugin 2026-05-24 18:05:33 -07:00
test_send_retry.py fix(telegram): prevent duplicate message delivery on send timeout (#5153) 2026-04-04 19:05:34 -07:00
test_send_voice_reply_notify.py fix(gateway): mark final voice reply as notify-worthy so Telegram delivers it audibly 2026-05-18 22:25:15 -07:00
test_session.py test(gateway): pin DEFAULT_DB_PATH in fixtures to prevent real state.db writes 2026-05-20 13:00:57 -07:00
test_session_boundary_hooks.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_session_boundary_security_state.py fix(gateway): clear slash-confirm state during session boundary cleanup 2026-05-09 14:18:20 +03:00
test_session_dm_thread_seeding.py test(gateway): pin DEFAULT_DB_PATH in fixtures to prevent real state.db writes 2026-05-20 13:00:57 -07:00
test_session_env.py fix(tests): resolve remaining CI failures — commit_memory_session, already_sent, timezone leak, session env (#10785) 2026-04-16 02:26:14 -07:00
test_session_hygiene.py fix(compress): abort instead of dropping messages when summary LLM fails (#28102) 2026-05-18 10:19:40 -07:00
test_session_info.py fix(context): honor custom_providers context_length on /model switch + bump probe tier to 256K (#15844) 2026-04-25 18:47:53 -07:00
test_session_list_allowed_sources.py fix(sessions): /save lands under $HERMES_HOME, widen browse+TUI picker, force-refresh ollama-cloud on setup (#16296) 2026-04-26 18:49:48 -07:00
test_session_model_override_routing.py fix(gateway): honor key_env in auth-failure fallback resolution 2026-05-23 02:25:53 -07:00
test_session_model_reset.py fix(gateway): clear stale pending model note on session reset 2026-04-26 19:01:50 -07:00
test_session_race_guard.py fix(gateway): preserve document type when merging queued events 2026-04-30 20:37:27 -07:00
test_session_reset_notify.py fix(session): persist auto-reset state across gateway restarts 2026-05-15 01:25:42 -07:00
test_session_split_brain_11016.py gateway: debounce queued text follow-ups 2026-05-24 01:31:45 -07:00
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_setup_feishu.py fix: salvage follow-ups for Feishu QR onboarding (#7706) 2026-04-12 13:05:56 -07:00
test_shared_group_sender_prefix.py fix(gateway): preserve sender attribution in shared group sessions 2026-04-21 00:54:46 -07:00
test_shutdown_cache_cleanup.py fix(gateway): clean up cached agents on shutdown (#11205) 2026-04-26 12:51:53 -07:00
test_shutdown_forensics.py feat(gateway): shutdown forensics — non-blocking diag, per-phase timing, stale-unit warning (#23285) 2026-05-10 09:01:51 -07:00
test_shutdown_memory_provider_messages.py fix(gateway): pass session messages to shutdown_memory_provider (#15165) 2026-04-27 06:41:16 -07:00
test_signal.py fix(signal): read groupV2.id in envelope, fall back to legacy groupInfo (#27051) 2026-05-16 11:53:57 -07:00
test_signal_format.py feat(gateway/signal): native formatting, reply quotes, and reactions 2026-04-29 04:38:17 -07:00
test_signal_rate_limit.py feat(gateway/signal): add support for multiple images sending 2026-04-30 04:28:08 -07:00
test_simplex_plugin.py feat(gateway): add SimpleX Chat platform plugin 2026-05-15 01:41:30 -07:00
test_slack.py feat(slack): support !cmd as alternate prefix for slash commands in threads (#25355) 2026-05-13 18:58:14 -07:00
test_slack_approval_buttons.py fix(slack): preserve thread-parent context when cron/bot posted the parent 2026-04-26 12:35:16 -07:00
test_slack_channel_skills.py feat(gateway/slack): support channel_skill_bindings 2026-04-26 18:25:41 -07:00
test_slack_mention.py feat(slack): add allowed_channels whitelist config 2026-05-07 06:54:29 -07:00
test_slash_access.py feat(gateway): per-platform admin/user split for slash commands (salvage of #4443) (#23373) 2026-05-10 12:33:54 -07:00
test_slash_access_dispatch.py feat(gateway): per-platform admin/user split for slash commands (salvage of #4443) (#23373) 2026-05-10 12:33:54 -07:00
test_sms.py test(sms): use clear=True in test_missing_phone_number_is_non_retryable 2026-05-04 05:25:09 -07:00
test_sse_agent_cancel.py fix(api-server): cancel orphaned agent + true interrupt on SSE disconnect (salvage #3399) (#3427) 2026-03-27 11:33:19 -07:00
test_ssl_certs.py fix(gateway): SSL certificate auto-detection for NixOS and non-standard systems 2026-03-15 23:04:34 -07:00
test_status.py fix(gateway): consult lock record argv when cmdline unreadable in scoped-lock stale check 2026-05-12 16:33:09 -07:00
test_status_command.py fix(gateway): snapshot callback generation after agent binds it, not before 2026-04-30 20:41:18 -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 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 refactor(gateway): migrate Mattermost adapter to bundled plugin 2026-05-24 18:05:33 -07:00
test_stream_consumer_draft.py fix(telegram): default streaming transport to edit 2026-05-18 21:51:39 -07:00
test_stream_consumer_fresh_final.py feat(telegram): send fresh finals for stale preview streams (port openclaw#72038) (#16261) 2026-04-26 17:26:37 -07:00
test_stream_consumer_thread_routing.py test(thread-routing): handle both lark-SDK-present and absent paths 2026-05-10 15:20:40 -07:00
test_stt_config.py feat(telegram): skip-STT audio path + 2GB cap via local Bot API server 2026-05-18 22:59:40 -07:00
test_stuck_loop.py fix: break stuck session resume loops after repeated restarts (#7536) 2026-04-14 17:08:35 -07:00
test_subagent_protection_30170.py test(gateway): regression tests for #30170 subagent interrupt protection 2026-05-25 16:23:24 +00:00
test_teams.py test(gateway): accept trust_env in fake aiohttp ClientSession lambdas 2026-05-17 12:44:48 -07:00
test_teams_pipeline_runtime_wiring.py fix(teams-pipeline): drop-scheduler fallback + test wiring for enablement gate 2026-05-08 11:18:14 -07:00
test_telegram_approval_buttons.py fix(tests): catch up 25 stale tests after recent merges (#28626) 2026-05-19 01:28:32 -07:00
test_telegram_audio_vs_voice.py fix(gateway): route Telegram audio file attachments away from STT pipeline (#24870) 2026-05-18 21:53:57 -07:00
test_telegram_callback_auth_fail_closed.py fix(telegram): fail-closed auth fallback when TELEGRAM_ALLOWED_USERS is empty 2026-05-18 22:08:08 -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_channel_posts.py test+release: stub auth in channel_posts fixture; map @brndnsvr 2026-05-18 22:51:35 -07:00
test_telegram_clarify_buttons.py fix(telegram): render full clarify choice text in message body, use short button labels 2026-05-18 21:49:19 -07:00
test_telegram_conflict.py fix(test+release): update conflict retry count for MAX=5; map @CryptoByz 2026-05-18 22:01:31 -07:00
test_telegram_documents.py test+release: stub auth in test_telegram_documents fixture; map @kiranvk-2011 2026-05-18 22:37:28 -07:00
test_telegram_format.py fix(telegram): tighten table row-group spacing and drop redundant first bullet 2026-05-25 23:16:00 -07:00
test_telegram_forum_commands.py test+release: fix test fixture for forum_commands; map @chromalinx 2026-05-18 22:34:48 -07:00
test_telegram_group_gating.py fix(telegram): preserve observed group slash commands 2026-05-23 16:26:28 -07:00
test_telegram_max_doc_bytes.py feat(telegram): skip-STT audio path + 2GB cap via local Bot API server 2026-05-18 22:59:40 -07:00
test_telegram_mention_boundaries.py refactor(telegram): use entity-only mention detection 2026-04-20 00:10:22 -07:00
test_telegram_model_picker.py fix(telegram): restore model-switch success path + author map 2026-05-14 07:47:52 -07:00
test_telegram_network.py test+release: align stale sticky-IP test for #24511; map @falconexe 2026-05-18 22:14:45 -07:00
test_telegram_network_reconnect.py fix(telegram): probe polling liveness after reconnect to detect wedged Updater 2026-05-02 01:55:04 -07:00
test_telegram_noise_filter.py Quiet noisy Telegram gateway errors 2026-05-18 22:53:01 -07:00
test_telegram_photo_interrupts.py fix(tests): fix 78 CI test failures and remove dead test (#9036) 2026-04-13 10:50:24 -07:00
test_telegram_progress_edit_transient.py fix(telegram): preserve can_edit after transient network errors in progress edits (#27828) 2026-05-18 21:59:40 -07:00
test_telegram_reactions.py fix(telegram): clear in-progress reaction on cancelled processing (#24628) 2026-05-12 17:02:29 -07:00
test_telegram_reply_mode.py fix(telegram): respect reply_to_mode for DM topic reply fallback 2026-05-18 21:52:39 -07:00
test_telegram_reply_quote.py fix(telegram): honor message.quote for partial-quote reply context 2026-05-09 11:10:36 -07:00
test_telegram_send_path_health.py fix(telegram): gate send() on send-path health after reconnect storms (#31165) 2026-05-24 15:27:41 -07:00
test_telegram_slash_confirm.py fix(telegram): escape send_slash_confirm preview with format_message 2026-05-18 22:28:21 -07:00
test_telegram_status_update.py feat(telegram): edit status messages in place instead of appending (#30864) 2026-05-23 02:42:10 -07:00
test_telegram_text_batch_perf.py test(telegram): cover env-clamped helper + adaptive text-batch tiers 2026-05-10 22:22:25 -07:00
test_telegram_text_batching.py fix(telegram): aggregate split text messages before dispatching (#1674) 2026-03-17 02:49:57 -07:00
test_telegram_thread_fallback.py test(telegram): switch transient-flake retry test to group chat 2026-05-25 14:54:02 -07:00
test_telegram_topic_mode.py test(telegram): add brand-new-topic regression for #31086 2026-05-24 15:28:40 -07:00
test_telegram_webhook_secret.py fix(telegram): require TELEGRAM_WEBHOOK_SECRET in webhook mode (#13527) 2026-04-21 06:23:09 -07:00
test_text_batching.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -07:00
test_title_command.py fix(cli,gateway): surface title errors from /new <name> 2026-05-04 03:14:50 -07:00
test_transcript_offset.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_tts_media_routing.py fix(gateway): allow native delivery of freshly-produced agent files (#32060) 2026-05-25 05:34:31 -07:00
test_unauthorized_dm_behavior.py fix(gateway): allow chat-scoped telegram auth without sender user_id 2026-05-18 22:43:14 -07:00
test_unavailable_skill_hint.py fix(gateway): match disabled/optional skills by frontmatter slug, not dir name (#18753) 2026-05-02 02:00:09 -07:00
test_unknown_command.py feat(gateway): expose plugin slash commands natively on all platforms + decision-capable command hook 2026-04-22 16:23:21 -07:00
test_update_command.py fix(gateway): preserve thread routing for /update progress and prompts 2026-04-30 20:19:23 -07:00
test_update_streaming.py fix(gateway): avoid zsh status variable in update wrapper 2026-05-16 23:11:43 -07:00
test_usage_command.py feat(/usage): append account limits section in CLI and gateway 2026-04-21 01:56:35 -07:00
test_verbose_command.py fix(dashboard): UI polish — modals, layout, consistency, test fixes 2026-05-12 13:59:22 -04:00
test_vision_memory_leak.py fix(memory): narrow scrub surface to known wrapper boundaries 2026-04-27 12:37:33 -07:00
test_voice_command.py refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 2026-05-22 14:21:41 -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 fix(gateway): reject known-weak placeholder credentials at startup 2026-04-12 18:05:41 -07:00
test_webhook_adapter.py fix(webhook): use 403 not 500 for missing-secret rejection 2026-05-24 04:47:45 -07:00
test_webhook_deliver_only.py fix(webhook): widen INSECURE_NO_AUTH loopback check + tests + docs 2026-05-07 07:38:43 -07:00
test_webhook_dynamic_routes.py fix(webhook): enforce INSECURE_NO_AUTH safety rail on dynamic route reloads 2026-05-23 02:39:12 -07:00
test_webhook_integration.py fix(gateway/webhook): don't pop delivery_info on send 2026-04-07 17:27:09 -07:00
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.py fix(wecom): guard flush task against cancel-delivery race to prevent message loss 2026-05-24 01:33:40 -07:00
test_wecom_callback.py fix(wecom-callback): retry send with fresh token on errcode 40001/42001 2026-05-24 01:30:47 -07:00
test_weixin.py fix(weixin): wrap long copy-unfriendly lines 2026-05-07 06:08:06 -07:00
test_whatsapp_connect.py fix(gateway): keep running when platforms fail; add per-platform circuit breaker + /platform (#26600) 2026-05-15 14:32:14 -07:00
test_whatsapp_formatting.py feat(whatsapp): surface quoted reply metadata 2026-05-13 23:11:20 -07:00
test_whatsapp_group_gating.py fix(whatsapp): drop status broadcasts and channel newsletters before agent dispatch (#25845) 2026-05-14 09:59:03 -07:00
test_whatsapp_reply_prefix.py feat: OpenAI-compatible API server + WhatsApp configurable reply prefix (#1756) 2026-03-17 10:44:37 -07:00
test_ws_auth_retry.py refactor(gateway): migrate Mattermost adapter to bundled plugin 2026-05-24 18:05:33 -07:00
test_yolo_command.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00