hermes-agent/tests/agent
kshitij e09ef9ebd8 fix(transport): use getattr for supports_prompt_cache_key on stale profiles
After a partial update (stash restore overwriting providers/base.py with
an older version), the NousProfile singleton was instantiated from a
ProviderProfile class that predates the supports_prompt_cache_key field
(added in f4fb23f3d). Accessing profile.supports_prompt_cache_key raised
AttributeError, crashing every API call with:
  'NousProfile' object has no attribute 'supports_prompt_cache_key'

Use getattr(profile, 'supports_prompt_cache_key', False) so a stale
profile degrades to 'no prompt cache key' instead of crashing.
2026-08-09 23:19:39 -07:00
..
lsp test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
transports fix(transport): use getattr for supports_prompt_cache_key on stale profiles 2026-08-09 23:19:39 -07:00
__init__.py
test_account_usage.py
test_anthropic_adapter.py fix: prefer explicit anthropic api key 2026-08-04 00:12:45 +05:30
test_anthropic_billing_guidance.py
test_anthropic_keychain.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_anthropic_kimi_signed_thinking_replay.py
test_anthropic_kwargs_sanitize.py
test_anthropic_mcp_prefix_strip.py
test_anthropic_oauth_pkce.py
test_anthropic_oauth_ua_prefix.py
test_anthropic_output_field_leak.py
test_anthropic_thinking_block_order.py
test_anthropic_token_scope_isolation.py fix(auth): route anthropic adapter credential reads through the profile secret scope 2026-08-01 16:42:51 -07:00
test_anthropic_whitespace_text_blocks.py
test_api_content_sidecar.py
test_arcee_trinity_overrides.py
test_async_token_accounting.py
test_async_utils.py
test_aux_progress_streaming.py
test_auxiliary_anthropic_pool_fallback_regression.py
test_auxiliary_client.py fix(agent): stop titling a session after our own scaffolding, or a TTS model 2026-08-09 04:33:58 -05:00
test_auxiliary_client_anthropic_custom.py
test_auxiliary_client_azure_foundry.py
test_auxiliary_client_base_url_host_validation_52608.py
test_auxiliary_client_bootstrap_skew.py
test_auxiliary_client_proxy_env.py
test_auxiliary_client_resolve_dedup.py
test_auxiliary_client_ssl_verify.py
test_auxiliary_client_xai_oauth_recovery.py
test_auxiliary_compression_timeout_floor.py
test_auxiliary_concurrency.py fix(agent): cap auxiliary LLM concurrency per task 2026-08-03 23:01:03 +05:30
test_auxiliary_config_bridge.py
test_auxiliary_explicit_cancellation.py fix(compression): let explicit interrupts cancel safely 2026-08-02 22:15:20 +05:30
test_auxiliary_main_first.py test(auxiliary): update _resolve_auto patch to _resolve_auto_route 2026-08-07 16:56:37 +05:30
test_auxiliary_named_custom_providers.py
test_auxiliary_relay.py Merge updated skill metrics into client resource metrics 2026-08-02 20:12:50 -07:00
test_auxiliary_runtime_cache_key.py
test_auxiliary_transient_retry.py
test_auxiliary_transport_autodetect.py
test_auxiliary_user_default_headers.py
test_azure_identity_adapter.py
test_backend_identity.py
test_battery.py
test_bedrock_1m_context.py
test_bedrock_adapter.py
test_bedrock_empty_text_blocks.py
test_bedrock_integration.py
test_bedrock_interrupt_post_worker.py
test_billing_links.py
test_billing_usage.py
test_billing_view.py
test_bounded_response.py
test_budget_reasoning_details_exclusion.py fix(agent): exclude reasoning_details envelope from tail-budget walk (#73298) 2026-07-31 23:16:58 -07:00
test_cache_disabled_on_stubs.py refactor(agent): share the cache_ttl disable predicate across init and stub paths 2026-08-02 11:52:59 +05:30
test_canon_args_memo_parity.py fix(agent): stop the send-path repair from rewriting persisted history 2026-08-07 16:57:11 +05:30
test_cascading_interrupt_6600.py
test_chat_completion_helpers_provider_sort.py
test_cjk_token_estimation.py
test_close_interrupted_tool_sequence.py
test_codex_app_server_event_bridge.py
test_codex_app_server_persist.py
test_codex_cloudflare_headers.py
test_codex_gpt55_autoraise_notice.py
test_codex_responses_adapter.py fix(codex): defang reserved Harmony tokens in requests 2026-07-31 22:53:20 -07:00
test_codex_runtime_live_events.py
test_codex_ttfb_watchdog.py
test_coding_context.py
test_compaction_anti_thrash.py
test_compaction_redaction_boundaries.py
test_compress_context_progress_timeout.py test(agent): deflake progress-extension timing per FLAKY policy (re-review #8) 2026-08-02 16:16:36 -07:00
test_compress_focus.py
test_compress_signal_leak.py
test_compressed_summary_metadata.py
test_compression_adoption_preserves_live_tail.py fix(compression): preserve live tail before snapshot adoption 2026-08-09 22:29:39 +05:30
test_compression_anti_thrash_persistence.py
test_compression_anti_thrash_recovery.py
test_compression_attempt_telemetry.py
test_compression_concurrent_fork.py fix(cache): make proactive pruning durable and cache-aware 2026-08-06 02:22:08 +05:30
test_compression_count_warning_36908.py
test_compression_fallback_budget.py
test_compression_interrupt_protection.py fix(compression): let explicit interrupts cancel safely 2026-08-02 22:15:20 +05:30
test_compression_logging_session_context.py
test_compression_max_attempts_config.py
test_compression_orphan_recovery.py fix(sessions): recover compression parents without continuations 2026-08-07 13:24:56 +05:30
test_compression_progress.py
test_compression_review_76354.py feat(agent): emit pool_saturated compression-attempt telemetry (re-review #6) 2026-08-02 16:16:36 -07:00
test_compression_rotation_state.py fix(agent): clear archived parent's activity labels after rotation (re-review #4) 2026-08-02 16:16:36 -07:00
test_compression_small_ctx_threshold_floor.py
test_compression_worker_isolation_76354.py test: skip live aux feasibility probe in worker-isolation regressions 2026-08-02 16:16:36 -07:00
test_compressor_actionable_tail_anchor.py
test_compressor_assistant_tail_anchor.py
test_compressor_historical_media.py
test_compressor_image_tokens.py
test_compressor_media_stripping.py
test_compressor_tail_cut_oob_fix.py test(agent): add compress()-level E2E regression for short tool-suffix OOB (#75588) 2026-07-31 23:16:58 -07:00
test_compressor_tail_cut_tool_pair_floor.py
test_compressor_tool_call_budget.py
test_compressor_zero_user_guard.py fix(agent): preserve a non-empty user query after compression 2026-07-31 23:16:58 -07:00
test_context_breakdown.py
test_context_compressor.py refactor(compression): fold simplify findings — dedup floor constant, drift-guard test 2026-08-08 14:27:31 +05:30
test_context_compressor_cross_session_guard.py
test_context_compressor_session_end_clears_state.py
test_context_compressor_summary_continuity.py
test_context_compressor_temporal_anchoring.py
test_context_compressor_zero_user_provenance.py fix: double-paren bug in dropped-tools prefix + add empty-response nudge sibling 2026-08-09 16:20:48 +05:30
test_context_engine.py
test_context_engine_host_contract.py
test_context_engine_on_turn_complete_usage.py
test_context_engine_select_context.py
test_context_references.py fix(docker): read attached binary files in backend (#76577) 2026-08-08 05:44:18 -07:00
test_context_refs_concurrent.py
test_context_route_mismatch.py test(gateway): cover named-custom context pin on session-info banner 2026-08-04 11:00:04 +05:30
test_copilot_acp_client.py
test_copilot_acp_deprecation.py
test_credential_pool.py fix(agent): rebind pool entry id after env credential refresh 2026-08-08 19:17:02 -07:00
test_credential_pool_deferred_refresh.py fix(credential_pool): serialize deferred-refresh pool mutations 2026-08-03 19:08:09 +05:30
test_credential_pool_key_rotation.py fix(credential-pool): clear exhaustion state on key rotation (#22622) 2026-08-04 11:35:06 -06:00
test_credential_pool_lease_refresh_reselect.py fix(credential-pool): re-select in acquire_lease after a deferred refresh 2026-08-04 13:12:24 +05:30
test_credential_pool_no_entries_log_throttle.py
test_credential_pool_oat_authtype.py
test_credential_pool_oauth_writethrough.py fix(auth): apply same source-path write-through fix to non-pool xAI path 2026-07-31 22:32:48 -07:00
test_credential_pool_provider_boundary.py
test_credential_pool_quarantine_locking.py fix(credential-pool): lock the quarantine read-modify-write of _entries 2026-08-04 13:20:15 +05:30
test_credential_pool_routing.py fix(credential-pool): bench a billing 403 fully, even as the sole key 2026-08-04 23:33:39 +05:30
test_credential_pool_sole_cooldown.py fix(credential-pool): bench a billing 403 fully, even as the sole key 2026-08-04 23:33:39 +05:30
test_credential_pool_unmatched_rotation_bound.py
test_credits_cold_start.py
test_credits_fixture_snapshot.py
test_credits_policy.py
test_credits_tracker.py
test_credits_view.py
test_cron_inline_api_call_62151.py
test_crossloop_client_cache.py
test_curator.py fix(curator): protect cron skills referenced by absolute path 2026-08-08 06:04:14 -07:00
test_curator_activity.py
test_curator_backup.py fix(curator): restore the real skills tree when a rollback extract dies part-way 2026-07-31 22:34:57 -07:00
test_curator_classification.py
test_curator_reports.py
test_cursor_optimizations_parity.py perf(state): batch the turn flush into one SQLite transaction 2026-08-03 20:43:38 +05:30
test_custom_pool_mismatch_guard.py
test_custom_provider_extra_body.py
test_custom_provider_extra_body_matching.py
test_custom_providers_vision.py
test_deepseek_anthropic_thinking.py
test_direct_provider_url_detection.py
test_display.py refactor(discord): simplify tool preview links 2026-08-02 21:48:06 -07:00
test_display_emoji.py
test_display_todo_progress.py
test_display_tool_failure.py
test_empty_tool_name_loop_dampening.py
test_endpoint_blackhole.py fix(agent): stop re-probing endpoints that blackhole TCP connects 2026-08-03 21:53:13 +05:30
test_engine_preflight_wire.py
test_error_classifier.py fix(models): a model id missing its vendor prefix says so instead of 404ing (#78856) 2026-08-04 19:35:57 +00:00
test_external_skills.py
test_external_skills_dirs_cache.py
test_failover_identity.py perf(prompt-caching): preserve tool-loop cache boundaries (#20880) 2026-08-01 14:27:12 +05:30
test_file_safety.py
test_file_safety_container_mirror.py
test_file_safety_credentials.py
test_file_safety_cross_profile.py
test_file_safety_sandbox_mirror.py
test_file_safety_session_state.py
test_gateway_turn_sidecar.py
test_gemini_fast_fallback.py
test_gemini_free_tier_gate.py
test_gemini_native_adapter.py fix(gemini): interpose placeholder model turn between tool result and user text 2026-08-05 17:21:01 -07:00
test_gemini_schema.py
test_gemini_standard_key_guidance.py
test_ghost_skill_pruning.py
test_i18n.py
test_idle_compaction.py
test_idle_compaction_lock_and_guards.py
test_image_gen_registry.py
test_image_routing.py
test_insights.py refactor(insights): drop consumer-less get_skill_breakdown alias (simplify-pass) 2026-08-03 18:45:43 +05:30
test_intent_ack_continuation.py
test_interrupt_compat.py fix(compression): let explicit interrupts cancel safely 2026-08-02 22:15:20 +05:30
test_jiter_preload.py
test_kanban_stop.py
test_kimi_coding_anthropic_thinking.py
test_last_total_tokens.py
test_learn_prompt.py fix(learn): process large sources incrementally 2026-08-08 05:09:43 -07:00
test_learning_graph.py
test_learning_graph_render.py
test_learning_mutations.py
test_lmstudio_reasoning.py
test_local_probe_disk_cache.py
test_local_stream_timeout.py
test_manual_compression_feedback.py
test_markdown_tables.py
test_memory_async_sync.py
test_memory_boundary_commit.py
test_memory_provider.py refactor(memory): single shared trivial-prompt classifier + gate tests 2026-08-03 17:53:55 +05:30
test_memory_session_switch.py
test_memory_skill_scaffolding.py
test_memory_user_id.py
test_memory_write_bridge.py
test_message_content.py
test_message_sanitization_policy.py
test_micro_compaction.py test(agent): cover reference-only handoff sole-active-turn regression 2026-08-07 19:44:35 +05:30
test_minimax_auxiliary_url.py
test_minimax_provider.py
test_moa_aggregator_cache_control.py perf(prompt-caching): preserve tool-loop cache boundaries (#20880) 2026-08-01 14:27:12 +05:30
test_moa_aggregator_cost_slot.py
test_moa_cold_start_cache_66793.py perf(moa): cache resolved preset + per-slot runtime to cut cold-start latency (#66793) 2026-08-03 22:43:15 +05:30
test_moa_context_max_tokens.py
test_moa_progress.py
test_moa_quiet_reference_output.py
test_moa_reasoning_effort.py
test_moa_reference_system_prompt.py
test_moa_slot_api_mode.py
test_moa_slot_max_tokens.py
test_moa_switch_api_mode.py
test_moa_trace_streamed_capture.py
test_model_extra_type_guard.py
test_model_metadata.py test(model-metadata): use explicit fixture encodings 2026-08-09 01:51:12 -07:00
test_model_metadata_local_ctx.py fix(model_metadata): read llama.cpp context from meta.n_ctx + accept sole model 2026-08-04 11:08:32 +05:30
test_model_metadata_ssl.py
test_models_dev.py
test_moonshot_schema.py
test_non_stream_stale_timeout.py
test_none_deref_guards.py
test_nous_credits_gauge.py
test_nous_credits_snapshot.py
test_nous_oauth_401_guidance.py
test_nous_portal_anthropic_wire.py
test_nous_rate_guard.py
test_onboarding.py
test_oneshot.py
test_openrouter_response_cache.py
test_org_skill_namespace.py
test_outbound_webhooks.py fix(hooks): flush outbound queue at interpreter exit 2026-08-02 15:01:11 -07:00
test_pet_engine.py
test_pet_generate.py
test_platform_hint_desktop.py
test_platform_hint_overrides.py
test_plugin_llm.py
test_portal_tags.py
test_post_compression_trim.py perf(compressor): release allocator pages after successful compaction 2026-08-03 22:55:36 +05:30
test_pre_compress_memory_context.py
test_preflight_compression_gate.py
test_preflight_lock_defer.py
test_proactive_prune_config.py
test_proactive_prune_restart_safety.py fix(compression): durable-sync the prune runway on model switch + fast no-op for incapable stores 2026-08-06 02:22:08 +05:30
test_proactive_tool_result_pruning.py fix(cache): make proactive pruning durable and cache-aware 2026-08-06 02:22:08 +05:30
test_probe_cache_followups.py fix(model_metadata): rewrite localhost->IPv4 for the remaining local probe sites 2026-08-03 21:12:56 +05:30
test_prompt_builder.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_prompt_cache_boundary.py refactor(cache): share the boundary-declaration helper and simplify the registry 2026-08-09 15:25:12 +05:30
test_prompt_caching.py fix(prompt-caching): consolidate static-prefix split, guard empty volatile suffix 2026-08-01 15:39:58 +05:30
test_protected_tail_pressure_61932.py
test_proxy_and_url_validation.py
test_pydantic_dump_warning_leak.py fix: suppress pydantic serializer warnings leaking to the terminal 2026-08-08 23:14:30 -07:00
test_rate_limit_tracker.py
test_reactions.py
test_reasoning_stale_timeout_floor.py
test_reasoning_summaries.py fix(reasoning): keep gpt-5.x summary parts as separate blocks on the chat wire 2026-08-06 22:02:37 -05:00
test_redact.py fix(redact): narrow control-split join guard to line-crossing spans 2026-08-07 17:50:03 +05:30
test_reference_handoff_active_turn.py test(agent): cover reference-only handoff sole-active-turn regression 2026-08-07 19:44:35 +05:30
test_refine_focus.py feat: /refine — run the memory/skill self-improvement review on demand 2026-08-05 22:40:51 -07:00
test_relay_llm.py fix(moa): carry completed responses through the managed Relay path 2026-07-31 21:52:35 -07:00
test_relay_nested_execution.py fix(relay): bypass managed execution for nested calls inside managed callbacks 2026-08-08 23:46:17 -07:00
test_relay_tools.py
test_replay_budget_accounting.py fix(compression): charge stale thinking to the tail budget only on the newest assistant turn (#73624) 2026-08-08 17:42:34 -07:00
test_replay_cleanup.py
test_request_client_reuse.py
test_restore_primary_pool_reselect.py
test_resume_stale_active_task.py test(agent): cover reference-only handoff sole-active-turn regression 2026-08-07 19:44:35 +05:30
test_rotation_flush_persisted_boundary_68196.py
test_runtime_cwd.py
test_save_url_image.py
test_secret_scope.py fix(secrets): allowlist API_SERVER listener settings as global deployment env 2026-08-02 09:59:52 -07:00
test_secret_scope_tier1_migration.py test(secrets): consolidated tier-1 migration regression suite 2026-08-02 10:02:33 -07:00
test_send_path_history_isolation.py fix(agent): make the send-path copy structural — close the write-through class 2026-08-07 16:57:11 +05:30
test_session_activity.py chore: round-2 review nits (re-review #9) 2026-08-02 16:16:36 -07:00
test_session_rotation_flush_cold_resume_68454.py
test_set_runtime_main_custom_provider.py
test_shell_hooks.py Inspired by Cursor: fail-closed hook semantics + exit-code-2 blocking 2026-08-08 05:02:04 -07:00
test_shell_hooks_consent.py
test_skill_bundles.py Merge updated tool metrics into skill metrics 2026-07-31 07:30:30 -07:00
test_skill_commands.py Merge updated tool metrics into skill metrics 2026-07-31 07:30:30 -07:00
test_skill_commands_reload.py
test_skill_invocation_description.py
test_skill_utils.py test: run os-specific tests on their real host, not a faked one 2026-08-09 22:09:49 -04:00
test_skip_background_review.py fix: follow-up for salvaged PR #18255 2026-08-08 00:07:14 +05:30
test_skip_memory_store_65429.py
test_ssl_ca_guard.py fix(ssl_guard): tolerate truststore SSLContext.get_ca_certs() NotImplementedError on Windows 2026-08-08 15:10:24 +05:30
test_ssl_verify.py
test_stale_replay_prune.py fix(compression): correct prune boundary + exempt native compaction checkpoints 2026-08-08 14:09:41 -07:00
test_stream_chunk_byte_estimate.py
test_stream_read_timeout_floor.py
test_stream_single_writer_guard.py
test_streaming_context_scrubber.py
test_subagent_lifecycle.py fix(compression): let explicit interrupts cancel safely 2026-08-02 22:15:20 +05:30
test_subagent_progress.py
test_subagent_stop_hook.py feat(delegation): validate batch task quality before spawning children 2026-08-07 08:57:57 -07:00
test_subdirectory_hints.py fix(context): dedupe subdirectory hints by content digest and skip backup/vendor dirs 2026-08-03 20:43:34 +05:30
test_subdirectory_hints_tilde.py
test_subprocess_env_guard.py
test_subscription_view.py
test_summarize_tool_result_type_safety.py
test_summary_prefix_semantics.py test(agent): cover reference-only handoff sole-active-turn regression 2026-08-07 19:44:35 +05:30
test_summary_prefix_tool_use.py
test_summary_role_template_alternation.py
test_surrogate_chokepoints.py fix(agent,gateway): class-level lone-surrogate chokepoints (#80366 #55143 #55309 #50959 #19819) 2026-08-08 12:31:19 -07:00
test_synthetic_turn_display_kind.py
test_system_prompt.py fix(agent): fail open on malformed telegram extra config 2026-08-08 13:57:44 +05:30
test_system_prompt_restore.py
test_think_scrubber.py
test_thinking_timeout_guidance.py
test_thread_scoped_output.py fix: preserve session history when a turn crashes 2026-08-06 23:08:23 -05:00
test_title_generator.py refactor(title): decide on the stored title and the real turns behind it 2026-08-09 04:33:58 -05:00
test_tool_call_arg_no_redaction.py
test_tool_dispatch_helpers.py
test_tool_executor_checkpoint_paths.py
test_tool_guardrails.py
test_tool_result_classification.py
test_trace_upload.py
test_transcription_registry.py
test_tts_registry.py
test_turn_context.py fix(agent): stop cron and subagent runs auto-titling their sessions 2026-08-09 04:33:58 -05:00
test_turn_context_overflow_warning.py
test_turn_finalizer_cleanup_guard.py
test_turn_finalizer_final_response_persistence.py fix(agent): invalidate flush-scan cursor when finalizer pops db marker 2026-07-31 23:18:12 -07:00
test_turn_finalizer_interrupt_alternation.py
test_turn_finalizer_iteration_limit_exit.py
test_turn_overlap_tripwire.py
test_turn_retry_state.py feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 2026-08-08 11:24:45 -07:00
test_turn_summary.py
test_unsupported_parameter_retry.py
test_unsupported_temperature_retry.py
test_usage_pricing.py
test_verification_evidence.py
test_verification_evidence_fd_leak.py
test_verification_stop.py
test_verification_stop_caching.py fix(tests): update two more append_message.call_args assertions to append_messages_batch 2026-08-03 20:43:38 +05:30
test_verify_hooks.py
test_vertex_adapter.py
test_video_gen_registry.py
test_vision_resolved_args.py
test_vision_routing_31179.py