fix(a2a): resolve agent by stripped model name so bridge applies static_headers

This commit is contained in:
Devin AI 2026-07-09 12:17:50 +00:00
parent 775b6c7be0
commit f0611b7f30
2 changed files with 11 additions and 6 deletions

View file

@ -51,8 +51,8 @@ class A2AConfig(BaseConfig):
Returns:
Tuple of (api_base, api_key, headers) with registry values filled in
"""
# Extract agent name from model (e.g., "a2a/my-agent" -> "my-agent")
agent_name = model.split("/", 1)[1] if "/" in model else None
# get_llm_provider strips the "a2a/" prefix, so model is usually the bare agent name
agent_name = model.split("/", 1)[1] if "/" in model else model
if not agent_name:
return api_base, api_key, headers

View file

@ -66,13 +66,17 @@ def registered_agent():
global_agent_registry.agent_list = original
def test_resolve_agent_config_applies_static_headers(registered_agent):
@pytest.mark.parametrize("model", ["a2a/static-headers-agent", "static-headers-agent"])
def test_resolve_agent_config_applies_static_headers(registered_agent, model):
"""Regression for #32608: the /chat/completions bridge must forward an agent's
static_headers, consistent with the native /a2a/{agent_id} route."""
static_headers, consistent with the native /a2a/{agent_id} route.
get_llm_provider strips the "a2a/" prefix before dispatch, so the resolver
must find the agent whether the model still carries the prefix or not."""
registered_agent(static_headers={"x-api-key": "secret-value"})
_, _, headers = A2AConfig.resolve_agent_config_from_registry(
model="a2a/static-headers-agent",
api_base, _, headers = A2AConfig.resolve_agent_config_from_registry(
model=model,
api_base=None,
api_key=None,
headers=None,
@ -80,6 +84,7 @@ def test_resolve_agent_config_applies_static_headers(registered_agent):
)
assert headers == {"x-api-key": "secret-value"}
assert api_base == "http://agent.example.com:9999"
def test_static_headers_win_over_request_headers_case_insensitive(registered_agent):