Add extra_headers support - #4
Open
tembo[bot] wants to merge 7 commits into
Open
Conversation
…rn_agent_config The TUI side correctly passed extra_headers through the runtime kwargs to resolve_turn_route, but the Gateway's _resolve_turn_agent_config was missing it in the primary dict, causing custom provider headers (like x-host-head) to not be applied for Gateway requests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Test that named custom providers with extra_headers are resolved correctly - Test that empty extra_headers dict is ignored - Test that non-dict extra_headers is ignored - Test that _resolve_named_custom_runtime includes extra_headers - Test that resolve_turn_route preserves extra_headers from primary runtime - Test that resolve_turn_route uses routed runtime's extra_headers when routing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The _resolve_named_custom_runtime always includes extra_headers key in its return dict (with None value when not configured), but the tests were asserting the key should be absent. Also add missing extra_headers attribute to CLI test fixtures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…o/feat/extra-headers-update-tests
Co-authored-by: Jneeee <jneeee@outlook.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds comprehensive support for custom HTTP headers (
extra_headers) across the hermes-agent codebase. This enables custom providers to include additional authentication headers or routing information with API requests.Related Issue
Follows up on PR NousResearch#3526 feedback to merge latest changes and add test coverage.
Type of Change
Changes Made
Core Implementation
run_agent.py: Addedextra_headersparameter toAIAgent.__init__()with proper documentation. Implemented logic to merge custom headers with existingdefault_headersfor custom providers.cli.py: Addedextra_headersattribute toHermesCLIand propagated it through runtime configuration in_resolve_turn_agent_config()and_resolve_agent_config().hermes_cli/runtime_provider.py: Enhanced_get_named_custom_provider()to parse and validateextra_headersfrom config (dict type only). Updated_resolve_named_custom_runtime()to includeextra_headersin resolved runtime.agent/smart_model_routing.py: Addedextra_headerspropagation inresolve_turn_route()for both primary fallback and routed runtime scenarios.gateway/run.py: Addedextra_headersto_resolve_runtime_agent_kwargs()andGatewayRunnerruntime configuration.Test Coverage
tests/test_run_agent.py: AddedTestExtraHeadersclass with 7 comprehensive tests covering:extra_headerson agent instancetests/agent/test_smart_model_routing.py: Added 3 tests for smart routing:extra_headersfrom primary runtimetests/test_runtime_provider_resolution.py: Added 8 tests for provider resolution:extra_headerstests/test_cli_provider_resolution.py: Updated existing tests to initializeextra_headers = None.How to Test
pytest tests/ -qcli-config.yamlwithextra_headersdictChecklist
Code
pytest tests/ -qand all tests passDocumentation & Housekeeping
AIAgent.__init__()withextra_headersparameter documentation