hermes-agent/tests/agent
Victor Kyriazakos 3ead2bdd0d feat(prompt): configurable per-platform system-prompt hint overrides
Add platform_hints config so an admin can append to or replace Hermes'
built-in platform hint for a single messaging platform (WhatsApp, Slack,
Telegram, ...) without affecting other platforms. Enables enterprise
managed profiles to steer platform-aware skills (e.g. invoke a custom
table-formatting skill on WhatsApp where Markdown tables don't render)
while leaving Telegram/Slack/CLI behavior unchanged.

- hermes_cli/config.py: document platform_hints in DEFAULT_CONFIG
- agent/agent_init.py: load platform_hints -> agent._platform_hint_overrides
- agent/system_prompt.py: _resolve_platform_hint() applies append/replace
  (replace wins; bare string = append shorthand); defensive on bad config
- tests: 16 cases covering append/replace/shorthand/isolation/malformed

Override only affects the platform-hint segment of the system prompt;
SOUL/context/memory tiers and general instructions are unchanged.
2026-06-18 14:28:01 -07:00
..
lsp
…
transports fix(xai): scope native web_search to swap-only + reconcile composer ctx to 200k 2026-06-17 17:33:32 -07:00
__init__.py
…
test_anthropic_adapter.py fix(providers): support anthropic proxy v1 endpoints 2026-06-14 02:09:16 -07:00
test_anthropic_keychain.py
…
test_anthropic_kwargs_sanitize.py
…
test_anthropic_mcp_prefix_strip.py fix(anthropic): also normalize MCP-server tool names to mcp__ on OAuth wire 2026-06-17 13:20:29 +05:30
test_anthropic_oauth_pkce.py
…
test_anthropic_output_field_leak.py
…
test_anthropic_thinking_block_order.py
…
test_arcee_trinity_overrides.py
…
test_async_utils.py
…
test_auxiliary_client.py fix(auxiliary): honor main fallback chain for auto tasks (#47235) 2026-06-16 06:23:24 -07:00
test_auxiliary_client_anthropic_custom.py
…
test_auxiliary_client_azure_foundry.py
…
test_auxiliary_client_xai_oauth_recovery.py
…
test_auxiliary_config_bridge.py
…
test_auxiliary_main_first.py fix(auxiliary): honor main fallback chain for auto tasks (#47235) 2026-06-16 06:23:24 -07:00
test_auxiliary_named_custom_providers.py
…
test_auxiliary_transport_autodetect.py fix(providers): support anthropic proxy v1 endpoints 2026-06-14 02:09:16 -07:00
test_auxiliary_user_default_headers.py
…
test_azure_identity_adapter.py
…
test_bedrock_1m_context.py
…
test_bedrock_adapter.py fix(bedrock): check boto3 version >= 1.34.59 before using converse_stream 2026-06-15 05:25:17 -07:00
test_bedrock_integration.py
…
test_billing_view.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
test_cascading_interrupt_6600.py
…
test_codex_cloudflare_headers.py
…
test_codex_responses_adapter.py fix(xai): OAuth Responses native web_search, incomplete guard, grok-composer context 2026-06-17 17:33:32 -07:00
test_codex_ttfb_watchdog.py
…
test_coding_context.py fix(coding): teach agents terminal env state persists 2026-06-11 19:50:08 -05:00
test_compress_focus.py refactor(agent): drop unused tail_start param from _derive_auto_focus_topic 2026-06-11 23:03:52 -07:00
test_compressed_summary_metadata.py test: compressed-summary metadata flag set in-process, stripped on wire 2026-06-12 16:47:15 -07:00
test_compression_concurrent_fork.py
…
test_compression_logging_session_context.py
…
test_compressor_assistant_tail_anchor.py test(compressor): regression coverage for assistant-tail anchor + compaction rollup (#29824) 2026-06-12 15:41:57 -07:00
test_compressor_historical_media.py
…
test_compressor_image_tokens.py
…
test_compressor_media_stripping.py fix(agent): strip MEDIA directives from compressor summarizer input (#14665) 2026-06-12 01:14:28 -07:00
test_context_compressor.py fix(agent): preserve recent turns during compression 2026-06-12 16:26:58 -07:00
test_context_compressor_cross_session_guard.py
…
test_context_compressor_summary_continuity.py
…
test_context_compressor_temporal_anchoring.py fix(agent): frame compaction handoff sections as historical context 2026-06-11 13:57:13 -07:00
test_context_engine.py
…
test_context_engine_host_contract.py
…
test_context_references.py
…
test_copilot_acp_client.py fix: make profile subprocess HOME policy explicit 2026-06-14 03:20:21 -07:00
test_copilot_acp_deprecation.py
…
test_credential_pool.py
…
test_credential_pool_routing.py
…
test_credits_cold_start.py fix(credits): suppress usage gauge when top-up funds exist + add display.credits_notices toggle (#44716) 2026-06-12 01:06:46 -07:00
test_credits_fixture_snapshot.py
…
test_credits_policy.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
test_credits_tracker.py
…
test_credits_view.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
test_crossloop_client_cache.py
…
test_curator.py feat(curator): make skill consolidation opt-in (prune stays default-on) (#47840) 2026-06-17 05:20:32 -07:00
test_curator_activity.py
…
test_curator_backup.py fix(curator): stop the rollback safety snapshot from pruning its target 2026-06-17 05:40:05 -07:00
test_curator_classification.py
…
test_curator_reports.py
…
test_custom_pool_mismatch_guard.py fix(agent): don't treat custom:<name> pools as cross-provider mismatch (#45289) 2026-06-13 02:01:09 -07:00
test_custom_provider_extra_body.py
…
test_custom_providers_vision.py
…
test_deepseek_anthropic_thinking.py
…
test_direct_provider_url_detection.py
…
test_display.py fix: harden salvaged session and browser improvements 2026-06-15 07:46:34 -07:00
test_display_emoji.py
…
test_display_todo_progress.py
…
test_display_tool_failure.py
…
test_empty_tool_name_loop_dampening.py fix(agent): dampen empty-name phantom tool-call loop (#47967) (#48109) 2026-06-17 17:32:14 -07:00
test_error_classifier.py
…
test_external_skills.py
…
test_external_skills_dirs_cache.py
…
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_gemini_cloudcode.py
…
test_gemini_fast_fallback.py
…
test_gemini_free_tier_gate.py
…
test_gemini_native_adapter.py fix(gemini): strip native self prefixes before generateContent (#36141) 2026-06-13 13:47:08 -07:00
test_gemini_schema.py
…
test_i18n.py
…
test_image_gen_registry.py
…
test_image_routing.py
…
test_insights.py
…
test_jiter_preload.py
…
test_kimi_coding_anthropic_thinking.py
…
test_last_total_tokens.py
…
test_local_stream_timeout.py
…
test_markdown_tables.py
…
test_memory_async_sync.py
…
test_memory_provider.py fix(acp): preserve memory provider tools 2026-06-13 04:51:44 -07:00
test_memory_session_switch.py
…
test_memory_skill_scaffolding.py fix(memory): strip skill scaffolding for all providers, not just openviking 2026-06-16 10:37:37 -07:00
test_memory_user_id.py
…
test_minimax_auxiliary_url.py
…
test_minimax_provider.py
…
test_model_metadata.py fix(xai): scope native web_search to swap-only + reconcile composer ctx to 200k 2026-06-17 17:33:32 -07:00
test_model_metadata_local_ctx.py
…
test_model_metadata_ssl.py
…
test_models_dev.py
…
test_moonshot_schema.py fix(moonshot): handle union type arrays in tool schemas 2026-06-13 05:51:41 -07:00
test_non_stream_stale_timeout.py
…
test_nous_credits_gauge.py
…
test_nous_credits_snapshot.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
test_nous_oauth_401_guidance.py
…
test_nous_rate_guard.py
…
test_onboarding.py
…
test_openrouter_response_cache.py
…
test_platform_hint_overrides.py feat(prompt): configurable per-platform system-prompt hint overrides 2026-06-18 14:28:01 -07:00
test_plugin_llm.py
…
test_portal_tags.py
…
test_prompt_builder.py fix(prompt): dedupe parallel-tool-call steer; correct its rationale 2026-06-18 13:22:12 -05:00
test_prompt_caching.py
…
test_proxy_and_url_validation.py
…
test_rate_limit_tracker.py
…
test_redact.py test: cover request debug dump redaction 2026-06-15 05:31:21 -07:00
test_resume_stale_active_task.py fix(agent): strengthen compression preamble against stale task execution (#41607) 2026-06-11 13:57:13 -07:00
test_runtime_cwd.py
…
test_save_url_image.py
…
test_set_runtime_main_custom_provider.py
…
test_shell_hooks.py
…
test_shell_hooks_consent.py
…
test_skill_bundles.py
…
test_skill_commands.py
…
test_skill_commands_reload.py
…
test_skill_utils.py fix(skills): ignore support docs in skill discovery 2026-06-16 13:08:34 -07:00
test_ssl_ca_guard.py fix(ssl): align guard docs and escape hatch 2026-06-13 21:14:32 -07:00
test_stream_read_timeout_floor.py
…
test_streaming_context_scrubber.py
…
test_subagent_progress.py
…
test_subagent_stop_hook.py
…
test_subdirectory_hints.py
…
test_summary_prefix_semantics.py fix(agent): freeze carveout-era SUMMARY_PREFIX for renormalization 2026-06-11 13:57:13 -07:00
test_system_prompt.py feat(prompt): scale context-file cap to model window + point agent at truncated file (#47846) 2026-06-17 05:40:26 -07:00
test_system_prompt_restore.py fix(desktop): keep live model switch metadata truthful 2026-06-16 09:50:17 -05:00
test_think_scrubber.py
…
test_title_generator.py
…
test_tool_dispatch_helpers.py
…
test_tool_guardrails.py
…
test_tool_result_classification.py
…
test_transcription_registry.py
…
test_tts_registry.py
…
test_turn_context.py
…
test_turn_retry_state.py
…
test_unsupported_parameter_retry.py
…
test_unsupported_temperature_retry.py
…
test_usage_pricing.py
…
test_video_gen_registry.py
…
test_vision_resolved_args.py
…
test_vision_routing_31179.py
…