From ece1772282fcfd81f28fb9d828f1c5720c38ac65 Mon Sep 17 00:00:00 2001 From: Varun Nuthalapati Date: Sun, 28 Jun 2026 12:27:52 -0700 Subject: [PATCH] fix: preserve custom name/description on SupervisorAgent Options-provided name and description were unconditionally overwritten with the lead_agent's values. Use them as fallback only when the caller did not supply their own. Fixes #254 --- .../src/agent_squad/agents/supervisor_agent.py | 4 ++-- .../src/tests/agents/test_supervisor_agent.py | 18 ++++++++++++++++++ typescript/src/agents/supervisorAgent.ts | 4 ++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/python/src/agent_squad/agents/supervisor_agent.py b/python/src/agent_squad/agents/supervisor_agent.py index 5f90183c..fdefe86e 100644 --- a/python/src/agent_squad/agents/supervisor_agent.py +++ b/python/src/agent_squad/agents/supervisor_agent.py @@ -66,8 +66,8 @@ class SupervisorAgent(Agent): def __init__(self, options: SupervisorAgentOptions): options.validate() - options.name = options.lead_agent.name - options.description = options.lead_agent.description + options.name = options.name or options.lead_agent.name + options.description = options.description or options.lead_agent.description super().__init__(options) self.lead_agent: 'Union[AnthropicAgent, BedrockLLMAgent]' = options.lead_agent diff --git a/python/src/tests/agents/test_supervisor_agent.py b/python/src/tests/agents/test_supervisor_agent.py index e08033c6..5eec8f70 100644 --- a/python/src/tests/agents/test_supervisor_agent.py +++ b/python/src/tests/agents/test_supervisor_agent.py @@ -102,6 +102,24 @@ async def test_supervisor_agent_initialization(mock_boto3_client): assert agent.trace is None assert isinstance(agent.supervisor_tools, AgentTools) +@pytest.mark.asyncio +async def test_supervisor_agent_preserves_custom_name_and_description(mock_boto3_client): + """Custom name/description on SupervisorAgentOptions must not be overwritten by lead_agent values""" + lead_agent = MockBedrockLLMAgent(BedrockLLMAgentOptions( + name="Lead Agent Name", + description="Lead Agent Description" + )) + + agent = SupervisorAgent(SupervisorAgentOptions( + name="Custom Supervisor Name", + description="Custom Supervisor Description", + lead_agent=lead_agent, + team=[] + )) + + assert agent.name == "Custom Supervisor Name" + assert agent.description == "Custom Supervisor Description" + @pytest.mark.asyncio async def test_supervisor_agent_validation(mock_boto3_client): """Test SupervisorAgent validation""" diff --git a/typescript/src/agents/supervisorAgent.ts b/typescript/src/agents/supervisorAgent.ts index 2a987fe3..ba377968 100644 --- a/typescript/src/agents/supervisorAgent.ts +++ b/typescript/src/agents/supervisorAgent.ts @@ -57,8 +57,8 @@ export class SupervisorAgent extends Agent { super({ ...options, - name: options.leadAgent.name, - description: options.leadAgent.description, + name: options.name ?? options.leadAgent.name, + description: options.description ?? options.leadAgent.description, }); this.leadAgent = options.leadAgent;