hermes-agent/tests
Victor Kyriazakos 58ff0fd302 fix(cron): relay-fronted Slack delivery — synthetic creation-thread capture + preflight fronted-platform blindness
Bug 1: relay-fronted Slack in thread-per-message mode stamps each top-level
message's own id as source.thread_id (session KEYING, native thread_ts
parity). Cron origin capture persisted that stamp as durable routing, so
every delivery landed inside the ephemeral thread spawned around the
creation message instead of the top-level conversation. Fix at the source:
_origin_from_env drops a Slack thread id equal to the creation message's
own id (genuine in-thread creations keep theirs). Fire-time repair for
already-persisted jobs: deliver=origin and the explicit-target Slack
re-attach treat an origin thread as stale when the origin chat is the
configured Slack home chat — top-level (or the home target's configured
thread) wins; non-home working threads are preserved.

Bug 2: _preflight_check_delivery and cron_delivery_targets validated
deliver prefixes against get_connected_platforms(), which only sees
natively configured platforms — a relay-only deployment ({relay}) rejected
'slack:CHAT' with 'no gateway credentials configured' although fire-time
routing (resolve_delivery_transport + RelayAdapter.fronts_platform)
delivers it. New gateway.relay.relay_fronted_platforms() (env-derived from
GATEWAY_RELAY_PLATFORMS — the same source that seeds the live adapter's
identity set, so validation and routing cannot disagree) is unioned into
the connected set when the relay is connected. Native topologies keep the
strict credential check unchanged.
2026-08-13 10:46:13 -07:00
..
acp
…
acp_adapter
…
agent fix: security + efficiency review fixes for salvaged PR #74379 2026-08-13 23:15:25 +05:30
ci fix(ci): stop running uv lock --check on PRs that can't touch the lockfile (#84675) 2026-08-12 13:30:01 -05:00
cli perf(cli): sub-400ms warm startup — probe-mode check_fns, lazy MCP SDK, banner snapshot, parallel worktree add 2026-08-10 10:40:19 -07:00
computer_use test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
conformance
…
cron fix(cron): relay-fronted Slack delivery — synthetic creation-thread capture + preflight fronted-platform blindness 2026-08-13 10:46:13 -07:00
dashboard
…
docker
…
e2e
…
fakes
…
fixtures
…
gateway test(slack): cover handoff-thread ts and standalone media send response reads 2026-08-13 10:32:07 -07:00
hermes_cli feat(hindsight): memory provider improvements — recall_sync, retain_source, setup templates, memory indicators, error hints 2026-08-13 23:15:25 +05:30
hermes_state fix(state): make a rewind truncation recoverable instead of a hard DELETE (#82756) 2026-08-10 11:01:15 +05:30
honcho_plugin
…
install
…
integration
…
manual
…
monitoring fix(otlp): span exporter now inherits configured resource_attributes 2026-08-08 18:11:02 -07:00
openviking_plugin
…
plugins fix: security + efficiency review fixes for salvaged PR #74379 2026-08-13 23:15:25 +05:30
providers
…
run_agent feat: server-side ui_meta on profiles.list/configure (#85440) 2026-08-13 10:07:39 -07:00
scripts test(ci): close the pytest-wrapper gap for check-windows-footguns.py 2026-08-13 02:38:28 -07:00
secret_sources fix(plugins): isolate ownership by profile 2026-08-12 19:13:32 -07:00
skills feat(skills): cover all Hermes browser pathways in har-derived-api-client 2026-08-12 16:11:51 -07:00
state fix(state): keep canonical writes available when FTS is corrupt 2026-08-09 14:10:21 -07:00
stress
…
tools feat(delegation): live orchestration of running subagents via delegate_task action param 2026-08-13 09:34:36 -07:00
tui_gateway fix(gateway): pool-route wake.start/wake.status — same STT lazy-install chain 2026-08-13 22:44:23 +05:30
verify
…
website
…
__init__.py
…
conftest.py fix: scope plugin manager by resolved hermes home (keyed cache) 2026-08-12 19:13:32 -07:00
run_interrupt_test.py
…
test_account_usage.py
…
test_atomic_replace_symlinks.py test(utils): cover contended Windows renames on the Windows CI lane 2026-08-12 17:25:30 -05:00
test_atomic_write_text_metadata.py
…
test_audio_playback_guard.py fix: use handle_request for voice.toggle in audio guard test 2026-08-13 22:44:23 +05:30
test_background_review_list_shapes.py
…
test_background_review_session_isolation.py
…
test_base_url_hostname.py
…
test_batch_runner_checkpoint.py
…
test_batch_runner_durability.py
…
test_bitwarden_secrets.py
…
test_cli_manual_compress.py
…
test_cli_skin_integration.py
…
test_code_skew.py
…
test_command_secret_source.py
…
test_conftest_wal_gate.py
…
test_copilot_initiator.py
…
test_credential_file_permissions.py
…
test_ctx_halving_fix.py
…
test_delegate_cascade_49148.py
…
test_dispatch_session_id.py
…
test_empty_model_fallback.py
…
test_empty_session_hygiene.py
…
test_engines_satisfiable.py
…
test_env_loader_applied_homes.py
…
test_env_loader_op_bootstrap.py
…
test_env_loader_secret_sources.py
…
test_estop.py
…
test_evidence_store.py
…
test_fast_safe_load.py
…
test_fts_cjk_bigram.py
…
test_fts_update_of_narrowing.py
…
test_gateway_streaming_nested_config.py
…
test_get_tool_definitions_cache_isolation.py fix(plugins): isolate ownership by profile 2026-08-12 19:13:32 -07:00
test_hermes_bootstrap.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_hermes_constants.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_hermes_home_profile_warning.py
…
test_hermes_logging.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_hermes_state.py fix(state): bound WAL growth and checkpoint after VACUUM 2026-08-12 19:43:35 -07:00
test_hermes_state_compression_busy_retry.py
…
test_hermes_state_compression_locks.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_hermes_state_readonly_preflight.py
…
test_hermes_state_wal_fallback.py
…
test_hermetic_side_effect_guards.py
…
test_honcho_client_concurrency.py
…
test_honcho_client_config.py
…
test_honcho_session_context.py
…
test_honcho_startup_fail_open.py
…
test_install_autostash_conflict_recovery.py
…
test_install_commit_pin_rollback.py
…
test_install_diverged_update.py
…
test_install_lockfile_churn.py
…
test_install_macos_launcher.py
…
test_install_no_initial_commit.py
…
test_install_ps1_ascii_only.py
…
test_install_ps1_browser_install.py fix(install): stop npm-installing agent-browser eagerly in install.sh/install.ps1 2026-08-13 02:38:28 -07:00
test_install_ps1_native_stderr_eap.py
…
test_install_ps1_node_path_for_npm.py
…
test_install_ps1_python_fallback_venv.py
…
test_install_ps1_uv_powershell_host.py
…
test_install_ps1_venv_process_tree.py fix(install): stop managed runtime child trees on Windows 2026-08-08 19:46:35 -07:00
test_install_ps1_web_server_syntax_probe.py
…
test_install_scripts_computer_use.py feat(computer-use): provision cua-driver at install time and on toolset enable 2026-08-13 02:44:48 -07:00
test_install_sh_acp_launcher.py
…
test_install_sh_bootstrap_marker.py
…
test_install_sh_browser_install.py fix(install): stop npm-installing agent-browser eagerly in install.sh/install.ps1 2026-08-13 02:38:28 -07:00
test_install_sh_install_method_stamp.py
…
test_install_sh_node_global_prefix.py
…
test_install_sh_pythonpath_sanitization.py
…
test_install_sh_root_fhs_uv_python_path.py
…
test_install_sh_setup_wizard_tty_probe.py
…
test_install_sh_symlink_stomp.py
…
test_install_sh_termux_network_prereqs.py
…
test_install_unmerged_index.py
…
test_ipv4_preference.py
…
test_iron_proxy.py
…
test_iron_proxy_cli.py
…
test_iron_proxy_e2e.py
…
test_journal_mode_config.py
…
test_lazy_session_regressions.py
…
test_list_recent_user_messages_handoffs.py
…
test_live_system_guard.py
…
test_live_system_guard_self_test.py
…
test_log_isolation.py
…
test_managed_runtime_resolution.py fix: ASCII-only install.ps1 comment; allow-list install_cli's uv PATH fallback 2026-08-11 17:06:15 -05:00
test_mcp_serve.py
…
test_message_reactions.py
…
test_mini_swe_runner.py
…
test_minimax_model_validation.py
…
test_minimax_oauth.py
…
test_minisweagent_path.py
…
test_model_forces_max_completion_tokens.py
…
test_model_picker_scroll.py
…
test_model_tools.py
…
test_model_tools_async_bridge.py
…
test_no_shadowed_test_definitions.py
…
test_ollama_num_ctx.py
…
test_onepassword_secrets.py
…
test_os_marker_gating.py test: convert the last host-OS fakes and guard double markers 2026-08-09 22:09:49 -04:00
test_output_cap_parsing.py
…
test_packaging_build_guard.py
…
test_packaging_metadata.py fix(sec): move cryptography to 50.0.0 2026-08-10 13:49:37 -04:00
test_plugin_skills.py
…
test_plugin_utils.py
…
test_process_loop_event_loop_warning.py
…
test_profile_isolation_runtime.py
…
test_project_metadata.py
…
test_pty_keepalive_ws.py
…
test_pty_session.py
…
test_redaction_registry.py feat(plugins): per-source pattern attribution + explicit pre-screen rebuild proof 2026-08-12 18:55:14 -07:00
test_resource_limits.py fix(cli): never reap serve processes owned by a valid backend.lock.json 2026-08-10 17:02:56 -07:00
test_retry_utils.py
…
test_run_tests_parallel.py
…
test_run_tests_parallel_stdio.py
…
test_sanitize_tool_error.py
…
test_schema_read_probe.py
…
test_search_slow_query_log.py
…
test_secret_scope_plugin_families.py
…
test_session_db_read_conn_pool.py state: bound PEAK read connections with a permit, not just pooled returns 2026-08-10 17:02:56 -07:00
test_session_db_read_path_split.py state: pool SessionDB read connections instead of leaking one per (SessionDB x thread) 2026-08-10 17:02:56 -07:00
test_session_skill_previews.py
…
test_session_system_prompt_dedup.py
…
test_session_vacuum_config.py
…
test_session_workspace_binding.py
…
test_slack_thread_require_mention.py
…
test_slash_worker_watchdog.py
…
test_sql_injection.py
…
test_sqlite_lock_safe_inspection.py
…
test_sqlite_wal_reset_gate.py
…
test_stale_tool_call_marker_session_repair.py
…
test_stale_utils_module_import.py
…
test_state_db_malformed_repair.py fix(state): make a refused pre-repair backup a hard stop (#69603) 2026-08-12 19:43:29 -07:00
test_state_db_notadb_selfheal.py fix(state): self-heal 'file is not a database' write connections + retry transient EIO on journal-mode probe 2026-08-12 19:43:41 -07:00
test_state_db_stats.py
…
test_subprocess_home_isolation.py
…
test_telegram_polling_progress_ptb.py
…
test_termux_all_extra_compat.py
…
test_timezone.py
…
test_tini_shim.py
…
test_toolset_distributions.py
…
test_toolsets.py
…
test_trajectory_compressor.py
…
test_trajectory_compressor_async.py
…
test_transform_api_error_classification_hook.py chore: trim hook test suite to core coverage and condense hooks docs 2026-08-13 09:36:02 -07:00
test_transform_llm_output_hook.py
…
test_transform_tool_result_hook.py
…
test_tui_entry_mcp_owner.py
…
test_tui_gateway_loop_noise.py
…
test_tui_gateway_queue_on_busy.py
…
test_tui_gateway_server.py fix(gateway): pool-route wake.start/wake.status — same STT lazy-install chain 2026-08-13 22:44:23 +05:30
test_tui_gateway_server_crash_history.py
…
test_tui_gateway_ws.py
…
test_tui_mcp_late_refresh.py
…
test_utils_atomic_roundtrip_yaml_save.py fix(personality): preserve config comments in TUI/gateway config writes 2026-08-09 13:43:14 -07:00
test_utils_truthy_values.py
…
test_voice_max_recording_seconds.py
…
test_wal_checkpoint_strategy.py fix(ci): sync lazy_deps SDK pins + update WAL vacuum test contract 2026-08-12 20:02:07 -07:00
test_web_server.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_web_server_sessiondb_eventloop.py
…
test_web_server_status_topology_cache.py
…
test_windows_subprocess_no_window_flags.py test(browser): cover warm_agent_browser_npx_cache's hardened behavior 2026-08-13 02:38:28 -07:00
test_yaml_indent_consistency_31999.py
…
test_yuanbao_integration.py
…
test_yuanbao_markdown.py
…
test_yuanbao_pipeline.py
…
test_yuanbao_proto.py
…
test_yuanbao_reconnect_set_active.py
…
test_yuanbao_shutdown.py
…
test_zeroed_state_db.py
…