[ "tests/agent/test_bedrock_1m_context.py::TestBedrockContext1MBeta::test_build_anthropic_bedrock_client_sends_1m_beta", "tests/agent/test_bedrock_1m_context.py::TestBedrockContext1MBeta::test_common_betas_strips_1m_for_minimax", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_anthropic_domain_unchanged", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_anthropic_in_subpath_unchanged", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_empty_string", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_minimax_cn_anthropic_suffix_replaced", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_minimax_global_anthropic_suffix_replaced", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_none", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_openrouter_url_unchanged", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_trailing_slash_stripped_before_replace", "tests/agent/test_minimax_auxiliary_url.py::TestToOpenaiBaseUrl::test_v1_url_unchanged", "tests/agent/test_minimax_provider.py::TestMinimaxApiMode::test_anthropic_still_returns_anthropic_messages", "tests/agent/test_minimax_provider.py::TestMinimaxApiMode::test_minimax_cn_returns_anthropic_messages", "tests/agent/test_minimax_provider.py::TestMinimaxApiMode::test_minimax_returns_anthropic_messages", "tests/agent/test_minimax_provider.py::TestMinimaxApiMode::test_minimax_with_url_also_works", "tests/agent/test_minimax_provider.py::TestMinimaxApiMode::test_openai_returns_chat_completions", "tests/agent/test_minimax_provider.py::TestMinimaxAuxModel::test_minimax_aux_is_standard", "tests/agent/test_minimax_provider.py::TestMinimaxAuxModel::test_minimax_aux_not_highspeed", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_common_betas_empty_url", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_common_betas_minimax_cn_url", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_common_betas_minimax_url", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_common_betas_none_url", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_common_betas_regular_url", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_custom_base_url_keeps_tool_streaming", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_minimax_cn_omits_tool_streaming", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_minimax_cn_trailing_slash", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_minimax_global_omits_tool_streaming", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_minimax_global_trailing_slash", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_native_anthropic_keeps_tool_streaming", "tests/agent/test_minimax_provider.py::TestMinimaxBetaHeaders::test_third_party_proxy_keeps_tool_streaming", "tests/agent/test_minimax_provider.py::TestMinimaxContextLengths::test_minimax_m3_resolves_to_1m", "tests/agent/test_minimax_provider.py::TestMinimaxContextLengths::test_minimax_models_resolve_via_prefix", "tests/agent/test_minimax_provider.py::TestMinimaxContextLengths::test_minimax_prefix_has_correct_context", "tests/agent/test_minimax_provider.py::TestMinimaxM3StaleCacheGuard::test_correct_m3_cache_preserved", "tests/agent/test_minimax_provider.py::TestMinimaxM3StaleCacheGuard::test_m2_cache_not_clobbered", "tests/agent/test_minimax_provider.py::TestMinimaxM3StaleCacheGuard::test_stale_m3_cache_dropped_and_reresolves_to_1m", "tests/agent/test_minimax_provider.py::TestMinimaxM3StaleCacheGuard::test_suggests_minimax_m3", "tests/agent/test_minimax_provider.py::TestMinimaxMaxOutput::test_claude_output_unaffected", "tests/agent/test_minimax_provider.py::TestMinimaxMaxOutput::test_minimax_m25_output_limit", "tests/agent/test_minimax_provider.py::TestMinimaxMaxOutput::test_minimax_m27_output_limit", "tests/agent/test_minimax_provider.py::TestMinimaxMaxOutput::test_minimax_m2_output_limit", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_anthropic_does_not_preserve_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_bigmodel_cn_url_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_minimax_cn_provider_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_minimax_cn_url_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_minimax_provider_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_minimax_url_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_normalize_preserves_m25_free_dot", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_normalize_preserves_m27_dot", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_normalize_preserves_non_anthropic_dots_without_preserve", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_normalize_still_converts_claude_dots_without_preserve", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_opencode_zen_provider_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_opencode_zen_url_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxPreserveDots::test_zai_provider_preserves_dots", "tests/agent/test_minimax_provider.py::TestMinimaxSwitchModelCredentialGuard::test_switch_to_minimax_does_not_resolve_anthropic_token", "tests/agent/test_minimax_provider.py::TestMinimaxThinkingSupport::test_minimax_m25_gets_manual_thinking", "tests/agent/test_minimax_provider.py::TestMinimaxThinkingSupport::test_minimax_m27_gets_manual_thinking", "tests/agent/test_minimax_provider.py::TestMinimaxThinkingSupport::test_thinking_still_works_for_claude", "tests/agent/test_model_metadata.py::TestBedrockContextResolution::test_bedrock_provider_returns_static_table_before_probe", "tests/agent/test_model_metadata.py::TestBedrockContextResolution::test_bedrock_url_without_provider_hint", "tests/agent/test_model_metadata.py::TestBedrockContextResolution::test_non_bedrock_url_still_probes", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_fallback_table_used_without_token", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_fresh_codex_cache_under_400k_is_respected", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_live_probe_overrides_fallback", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_non_codex_providers_unaffected", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_probe_failure_falls_back_to_hardcoded", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_stale_codex_cache_over_400k_is_invalidated", "tests/agent/test_model_metadata.py::TestCodexOAuthContextLength::test_stale_invalidation_scoped_to_codex_provider", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_cached_value_takes_priority", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_corrupted_yaml_returns_empty", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_idempotent_save", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_missing_cache_returns_none", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_multiple_models_cached", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_same_model_different_providers", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_save_and_load", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_special_chars_in_model_name", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_update_existing_value", "tests/agent/test_model_metadata.py::TestContextLengthCache::test_wrong_structure_returns_none", "tests/agent/test_model_metadata.py::TestContextProbeTiers::test_tiers_descending", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_helper_returns_204800_for_m2_5", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_helper_returns_curated_for_minimax_m3_family", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_helper_returns_none_for_unknown", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_models_dev_equal_value_accepted", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_models_dev_higher_value_accepted", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_models_dev_underreport_rejected", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_opencode_zen_live_resolution_returns_1m", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_stale_cache_entry_above_curated_kept", "tests/agent/test_model_metadata.py::TestCuratedDefaultGuard::test_stale_cache_entry_underreport_invalidated", "tests/agent/test_model_metadata.py::TestDefaultContextLengths::test_deepseek_v4_models_1m_context", "tests/agent/test_model_metadata.py::TestDefaultContextLengths::test_grok_substring_matching", "tests/agent/test_model_metadata.py::TestDefaultContextLengths::test_xai_oauth_grok_build_uses_xai_models_dev_context", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_empty_list", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_message_with_huge_base64_image_stays_bounded", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_message_with_list_content", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_multiple_messages_additive", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_single_message_concrete_value", "tests/agent/test_model_metadata.py::TestEstimateMessagesTokensRough::test_tool_call_message", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_empty_string", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_known_length", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_none_returns_zero", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_proportional", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_short_text", "tests/agent/test_model_metadata.py::TestEstimateTokensRough::test_unicode_multibyte", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_api_failure_returns_empty_on_cold_cache", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_api_failure_returns_stale_cache", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_caches_result", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_canonical_slug_aliasing", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_malformed_json_no_data_key", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_provider_prefixed_models_get_bare_aliases", "tests/agent/test_model_metadata.py::TestFetchModelMetadata::test_ttl_expiry_triggers_refetch", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_api_missing_context_length_key", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_cache_takes_priority_over_api", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_config_context_length_none_is_ignored", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_config_context_length_overrides_all", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_config_context_length_zero_is_ignored", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_custom_endpoint_fuzzy_substring_match", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_custom_endpoint_metadata_beats_fuzzy_default", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_custom_endpoint_single_model_fallback", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_custom_endpoint_without_metadata_skips_name_based_default", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_fallback_to_defaults", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_known_model_from_api", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_no_base_url_skips_cache", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_partial_match_in_defaults", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_qwen3_6_plus_context_length", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_qwen3_coder_context_length", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_qwen3_coder_plus_context_length", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_qwen_generic_context_length", "tests/agent/test_model_metadata.py::TestGetModelContextLength::test_unknown_model_returns_first_probe_tier", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_above_max_tier", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_128k", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_256k", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_32k", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_64k", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_8k_returns_none", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_arbitrary_value", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_from_below_min_returns_none", "tests/agent/test_model_metadata.py::TestGetNextProbeTier::test_zero_returns_none", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_bypass_keyed_on_url_not_provider_string", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_openrouter_fallback_is_not_persisted", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_portal_value_is_persisted_to_disk", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_portal_value_wins_over_openrouter_catalog", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_stale_cache_is_bypassed_and_overwritten_by_portal", "tests/agent/test_model_metadata.py::TestNousPortalContextResolution::test_stale_cache_survives_when_portal_unreachable", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_anthropic_format", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_completely_unrelated_error", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_context_length_exceeded", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_context_size_exceeded", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_empty_string", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_lmstudio_format", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_minimax_delta_only_message_returns_none", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_no_limit_in_message", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_number_outside_reasonable_range", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_ollama_format", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_openai_format", "tests/agent/test_model_metadata.py::TestParseContextLimitFromError::test_unreasonable_small_number_rejected", "tests/agent/test_model_metadata.py::TestStripProviderPrefix::test_http_urls_preserved", "tests/agent/test_model_metadata.py::TestStripProviderPrefix::test_known_provider_prefix_is_stripped", "tests/agent/test_model_metadata.py::TestStripProviderPrefix::test_no_colon_returns_unchanged", "tests/agent/test_model_metadata.py::TestStripProviderPrefix::test_ollama_model_tag_not_mangled_in_context_lookup", "tests/agent/test_model_metadata.py::TestStripProviderPrefix::test_ollama_model_tag_preserved", "tests/hermes_cli/test_model_switch_custom_providers.py::test_custom_providers_uses_live_models_for_multi_model_endpoint", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_bare_custom_slug_recovers", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_current_endpoint_uses_current_slug", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_distinct_endpoints_stay_separate", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_groups_same_endpoint", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_includes_custom_providers", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_same_url_different_key_env_and_api_mode_stay_separate", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_same_url_different_keys_disambiguated", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_authenticated_providers_total_models_reflects_grouped_count", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_dedupes_dict_model_matching_singular_default", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_deduplicates_same_model_in_group", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_enumerates_dict_format_models_alongside_default", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_enumerates_dict_format_models_without_singular_model", "tests/hermes_cli/test_model_switch_custom_providers.py::test_list_groups_same_name_custom_providers_into_one_row", "tests/hermes_cli/test_model_switch_custom_providers.py::test_lmstudio_picker_lm_base_url_env_wins_over_active_config", "tests/hermes_cli/test_model_switch_custom_providers.py::test_lmstudio_picker_probes_active_config_base_url", "tests/hermes_cli/test_model_switch_custom_providers.py::test_lmstudio_picker_skips_probe_when_not_configured", "tests/hermes_cli/test_model_switch_custom_providers.py::test_resolve_provider_full_finds_named_custom_provider", "tests/hermes_cli/test_model_switch_custom_providers.py::test_switch_model_accepts_explicit_named_custom_provider", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestMergeHelper::test_merge_case_insensitive_dedup", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestMergeHelper::test_merge_empty_mdev_returns_curated", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestMergeHelper::test_merge_mdev_first_then_curated_extras", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestMergeHelper::test_merge_mdev_raises_returns_curated", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestOpenRouterAndNousUnchanged::test_nous_not_in_preferred_set", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestOpenRouterAndNousUnchanged::test_openrouter_does_not_call_merge", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestOpenRouterAndNousUnchanged::test_openrouter_not_in_preferred_set", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestProviderModelIdsPreferred::test_opencode_go_includes_fresh_models_dev_entries", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestProviderModelIdsPreferred::test_opencode_go_is_preferred", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestProviderModelIdsPreferred::test_opencode_go_offline_falls_back_to_curated", "tests/hermes_cli/test_models_dev_preferred_merge.py::TestProviderModelIdsPreferred::test_opencode_zen_includes_fresh_models", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoDeepSeekThinking::test_disabled_emits_thinking_disabled_without_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoDeepSeekThinking::test_high_effort_emits_thinking_and_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoDeepSeekThinking::test_minimal_effort_enables_thinking_without_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoDeepSeekThinking::test_no_config_emits_thinking_enabled_without_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoDeepSeekThinking::test_xhigh_and_max_normalize_to_max", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoFullKwargsIntegration::test_deepseek_thinking_reaches_extra_body_and_top_level", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoFullKwargsIntegration::test_kimi_reasoning_reaches_extra_body_and_top_level", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_disabled_emits_thinking_disabled_without_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_high_effort_emits_thinking_and_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_low_and_medium_pass_through", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_minimal_effort_enables_thinking_without_effort", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_no_config_preserves_server_default", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_strong_efforts_clamp_to_high[max]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoKimiReasoning::test_strong_efforts_clamp_to_high[xhigh]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[None]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[deepseek-chat]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[deepseek-v3.1]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[glm-5.1]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[minimax-m2.7]", "tests/plugins/model_providers/test_opencode_go_profile.py::TestOpenCodeGoModelGating::test_non_target_models_emit_nothing[qwen3.6-plus]", "tests/test_minimax_model_validation.py::TestMiniMaxCatalogPathRequired::test_minimax_without_fix_would_reach_api_probe", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_minimax_uses_catalog_not_api_probe", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_near_match_minimax_cn_suggests_similar", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_unknown_minimax_model_accepted_with_warning", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_valid_minimax_model_accepted", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_valid_minimax_model_case_insensitive", "tests/test_minimax_model_validation.py::TestMiniMaxModelValidation::test_valid_minimax_model_uppercase", "tests/test_minimax_oauth.py::test_generic_auth_status_dispatches_minimax_oauth", "tests/test_minimax_oauth.py::test_get_minimax_oauth_auth_status_logged_in", "tests/test_minimax_oauth.py::test_get_minimax_oauth_auth_status_not_logged_in", "tests/test_minimax_oauth.py::test_minimax_oauth_alias_resolves", "tests/test_minimax_oauth.py::test_pkce_pair_produces_valid_s256", "tests/test_minimax_oauth.py::test_poll_token_error_raises", "tests/test_minimax_oauth.py::test_poll_token_pending_then_success", "tests/test_minimax_oauth.py::test_poll_token_timeout_raises", "tests/test_minimax_oauth.py::test_provider_registry_contains_minimax_oauth", "tests/test_minimax_oauth.py::test_refresh_reuse_triggers_relogin_required", "tests/test_minimax_oauth.py::test_refresh_skip_when_not_expired", "tests/test_minimax_oauth.py::test_refresh_updates_access_token", "tests/test_minimax_oauth.py::test_refresh_updates_access_token_absolute_ms_expired_in", "tests/test_minimax_oauth.py::test_request_user_code_happy_path", "tests/test_minimax_oauth.py::test_request_user_code_non_200_raises", "tests/test_minimax_oauth.py::test_request_user_code_state_mismatch_raises", "tests/test_minimax_oauth.py::test_resolve_credentials_does_not_quarantine_on_transient_refresh_failure", "tests/test_minimax_oauth.py::test_resolve_credentials_quarantines_dead_tokens_on_terminal_refresh_failure", "tests/test_minimax_oauth.py::test_resolve_credentials_requires_login", "tests/test_minimax_oauth.py::test_resolve_returns_callable_when_as_token_provider_true", "tests/test_minimax_oauth.py::test_resolve_returns_string_by_default", "tests/test_minimax_oauth.py::test_resolve_token_expiry_unix_absolute_ms", "tests/test_minimax_oauth.py::test_resolve_token_expiry_unix_ttl_seconds", "tests/test_minimax_oauth.py::test_token_provider_quarantines_state_on_terminal_refresh", "tests/test_minimax_oauth.py::test_token_provider_raises_not_logged_in_when_state_missing", "tests/test_minimax_oauth.py::test_token_provider_refreshes_when_near_expiry", "tests/test_minimax_oauth.py::test_token_provider_rereads_state_each_call", "tests/test_minimax_oauth.py::test_token_provider_returns_current_access_token_when_fresh", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_accepts_exec_ask", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_accepts_gateway_session", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_accepts_interactive_mode", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[0-HERMES_EXEC_ASK]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[0-HERMES_GATEWAY_SESSION]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[0-HERMES_INTERACTIVE]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[false-HERMES_EXEC_ASK]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[false-HERMES_GATEWAY_SESSION]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[false-HERMES_INTERACTIVE]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[no-HERMES_EXEC_ASK]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[no-HERMES_GATEWAY_SESSION]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[no-HERMES_INTERACTIVE]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[off-HERMES_EXEC_ASK]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[off-HERMES_GATEWAY_SESSION]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_any_session_env[off-HERMES_INTERACTIVE]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_interactive_env[0]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_interactive_env[false]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_interactive_env[no]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_false_like_interactive_env[off]", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_rejects_when_no_session_env", "tests/tools/test_cronjob_tools.py::TestCronjobRequirements::test_requires_no_crontab_binary", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_authorization_header_api_examples_allowed", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_authorization_header_quoted_url_allowed", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_authorization_header_secret_to_arbitrary_host_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_clean_prompt_passes", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_deception_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_destructive_rm_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_disregard_rules_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_emoji_zwj_sequences_allowed", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_exfiltration_curl_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_exfiltration_wget_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_invisible_unicode_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_non_emoji_zwj_still_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_prompt_injection_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_read_secrets_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_ssh_backdoor_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_sudoers_blocked", "tests/tools/test_cronjob_tools.py::TestScanCronPrompt::test_system_override_blocked", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_create_and_list", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_create_multi_skill_job", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_create_normalizes_list_form_deliver", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_create_normalizes_multi_element_list_deliver", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_create_skill_backed_job", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_list_handles_partial_legacy_job_records", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_multi_skill_default_name_prefers_prompt_when_present", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_pause_and_resume", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_update_can_clear_skills", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_update_normalizes_list_form_deliver", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_update_runtime_overrides_can_set_and_clear", "tests/tools/test_cronjob_tools.py::TestUnifiedCronjobTool::test_update_schedule_recomputes_display", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_gateway_status_import_error_is_swallowed", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_kanban_task_env_grants_access", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_kanban_task_env_short_circuits_before_gateway_check", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_local_platform_falls_through_to_gateway_check", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_messaging_platform_session_grants_access", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_no_signals_means_unavailable", "tests/tools/test_send_message_tool.py::TestCheckSendMessage::test_running_gateway_grants_access", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_empty_message_falls_back_to_default", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_hash_only_falls_back", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_multi_line_uses_first_line", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_single_line_message", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_strips_markdown_heading", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_strips_multiple_hash_levels", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_strips_whitespace_around_first_line", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_truncates_to_100_chars", "tests/tools/test_send_message_tool.py::TestDeriveForumThreadName::test_whitespace_only_falls_back", "tests/tools/test_send_message_tool.py::TestForumProbeCache::test_cache_round_trip", "tests/tools/test_send_message_tool.py::TestForumProbeCache::test_probe_result_is_memoized", "tests/tools/test_send_message_tool.py::TestParseTargetRefDiscord::test_discord_channel_with_thread", "tests/tools/test_send_message_tool.py::TestParseTargetRefDiscord::test_discord_chat_id_with_thread_id", "tests/tools/test_send_message_tool.py::TestParseTargetRefDiscord::test_discord_chat_id_without_thread_id", "tests/tools/test_send_message_tool.py::TestParseTargetRefDiscord::test_discord_large_snowflake_without_thread", "tests/tools/test_send_message_tool.py::TestParseTargetRefDiscord::test_discord_whitespace_is_stripped", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_e164_prefix_only_matches_phone_platforms", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_signal_bare_digits_still_work", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_signal_e164_preserves_plus_prefix", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_signal_invalid_e164_rejected", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_sms_e164_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefE164::test_whatsapp_e164_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefMatrix::test_matrix_alias_is_not_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefMatrix::test_matrix_prefix_only_matches_matrix_platform", "tests/tools/test_send_message_tool.py::TestParseTargetRefMatrix::test_matrix_room_id_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefMatrix::test_matrix_thread_target_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefMatrix::test_matrix_user_mxid_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_dm_id_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_lowercase_or_short_id_is_not_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_private_channel_id_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_public_channel_id_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_slack_id_not_explicit_for_other_platforms", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_thread_target_is_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_user_id_is_not_explicit", "tests/tools/test_send_message_tool.py::TestParseTargetRefSlack::test_whitespace_is_stripped", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_directory_channel_skips_forum", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_directory_forum_creates_thread", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_directory_forum_skips_probe", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_directory_lookup_exception_falls_through_to_probe", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_directory_none_probes_and_detects_forum", "tests/tools/test_send_message_tool.py::TestSendDiscordForum::test_forum_thread_creation_error", "tests/tools/test_send_message_tool.py::TestSendDiscordForumMedia::test_forum_missing_media_file_collected_as_warning", "tests/tools/test_send_message_tool.py::TestSendDiscordForumMedia::test_forum_with_media_uses_multipart", "tests/tools/test_send_message_tool.py::TestSendDiscordForumMedia::test_forum_without_media_still_json_only", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_media_only_skips_text_post", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_media_upload_failure_collected_as_warning", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_missing_media_file_collected_as_warning", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_multiple_media_files_uploaded_separately", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_no_text_no_media_returns_error", "tests/tools/test_send_message_tool.py::TestSendDiscordMedia::test_text_and_media_sends_both", "tests/tools/test_send_message_tool.py::TestSendDiscordThreadId::test_error_status_returns_error_dict", "tests/tools/test_send_message_tool.py::TestSendDiscordThreadId::test_success_returns_message_id", "tests/tools/test_send_message_tool.py::TestSendDiscordThreadId::test_with_thread_id_uses_thread_endpoint", "tests/tools/test_send_message_tool.py::TestSendDiscordThreadId::test_without_thread_id_uses_chat_id_endpoint", "tests/tools/test_send_message_tool.py::TestSendMatrixUrlEncoding::test_room_id_is_percent_encoded_in_url", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_display_label_target_resolves_via_channel_directory", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_mirror_receives_current_session_user_id", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_resolved_matrix_thread_name_preserves_thread_id", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_resolved_slack_thread_name_preserves_thread_id", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_resolved_telegram_topic_name_preserves_thread_id", "tests/tools/test_send_message_tool.py::TestSendMessageTool::test_top_level_send_failure_redacts_query_token", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_429_retry_exhaust_continues_to_next_batch", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_429_with_retry_after_drives_exact_backoff", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_429_without_retry_after_falls_back_to_default", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_chunks_attachments_above_max", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_full_followup_batch_emits_pacing_notice", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_non_rate_limit_error_returns_immediately", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_skipped_missing_files_reported_in_warnings", "tests/tools/test_send_message_tool.py::TestSendSignalChunking::test_text_only_single_rpc", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_angle_brackets_in_math_not_detected", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_closing_tag_detected", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_disable_link_previews_sets_disable_web_page_preview", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_html_message_uses_html_parse_mode", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_html_parse_failure_falls_back_to_plain", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_html_with_code_and_pre_tags", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_plain_text_uses_markdown_v2", "tests/tools/test_send_message_tool.py::TestSendTelegramHtmlDetection::test_transient_bad_gateway_retries_text_send", "tests/tools/test_send_message_tool.py::TestSendTelegramMediaDelivery::test_missing_media_returns_error_without_leaking_raw_tag", "tests/tools/test_send_message_tool.py::TestSendTelegramMediaDelivery::test_sends_audio_for_mp3", "tests/tools/test_send_message_tool.py::TestSendTelegramMediaDelivery::test_sends_text_then_photo_for_media_tag", "tests/tools/test_send_message_tool.py::TestSendTelegramMediaDelivery::test_sends_voice_for_ogg_with_voice_directive", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_general_topic_thread_id_int_input_also_dropped", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_general_topic_thread_id_omitted", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_no_thread_id_no_kwarg", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_non_general_topic_thread_id_preserved", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_thread_not_found_for_media_retries_without_message_thread_id", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadIdMapping::test_thread_not_found_retries_without_message_thread_id", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadNotFoundRetry::test_disable_web_page_preview_not_leaked_to_media_sends", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadNotFoundRetry::test_is_thread_not_found_matches_expected_errors", "tests/tools/test_send_message_tool.py::TestSendTelegramThreadNotFoundRetry::test_text_send_retries_without_thread_id_on_thread_not_found", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_long_message_is_chunked", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_matrix_media_uses_native_adapter_helper", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_matrix_text_only_uses_lightweight_path", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_send_matrix_via_adapter_sends_document", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_slack_blockquote_formatted_before_send", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_slack_bold_italic_formatted_before_send", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_slack_messages_are_formatted_before_send", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_slack_pre_escaped_entities_not_double_escaped", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_slack_url_with_parens_formatted_before_send", "tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_telegram_media_attaches_to_last_chunk", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordForum::test_send_to_platform_discord_delegates_to_send_discord", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordForum::test_send_to_platform_discord_with_thread_id", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordMedia::test_media_files_passed_on_last_chunk_only", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordMedia::test_single_chunk_gets_media", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordThread::test_discord_no_thread_id_when_not_provided", "tests/tools/test_send_message_tool.py::TestSendToPlatformDiscordThread::test_discord_thread_id_passed_to_send_discord", "tests/tools/test_send_message_tool.py::TestSendToPlatformWhatsapp::test_whatsapp_routes_via_local_bridge_sender", "tests/tools/test_send_message_tool.py::TestSendViaAdapterStandaloneFallback::test_standalone_sender_fn_absent_returns_helpful_error", "tests/tools/test_send_message_tool.py::TestSendViaAdapterStandaloneFallback::test_standalone_sender_fn_called_when_no_adapter", "tests/tools/test_send_message_tool.py::TestSendViaAdapterStandaloneFallback::test_standalone_sender_fn_kwargs_forwarded", "tests/tools/test_send_message_tool.py::TestSendViaAdapterStandaloneFallback::test_standalone_sender_fn_raises_is_caught_and_formatted", "tests/tools/test_send_message_tool.py::TestSendViaAdapterStandaloneFallback::test_standalone_sender_fn_return_shape_passed_through" ]