11import logging
2- from typing import Optional
32
43from pydantic import Field
54
@@ -38,7 +37,7 @@ def sanitize_agent_name(self, name: str) -> str:
3837 # Remove quotes and convert to lowercase
3938 return normalized .replace ('"' , "" ).casefold ()
4039
41- def _get_coworker (self , coworker : Optional [ str ] , ** kwargs ) -> Optional [ str ] :
40+ def _get_coworker (self , coworker : str | None , ** kwargs ) -> str | None :
4241 coworker = coworker or kwargs .get ("co_worker" ) or kwargs .get ("coworker" )
4342 if coworker :
4443 is_list = coworker .startswith ("[" ) and coworker .endswith ("]" )
@@ -47,10 +46,7 @@ def _get_coworker(self, coworker: Optional[str], **kwargs) -> Optional[str]:
4746 return coworker
4847
4948 def _execute (
50- self ,
51- agent_name : Optional [str ],
52- task : str ,
53- context : Optional [str ] = None
49+ self , agent_name : str | None , task : str , context : str | None = None
5450 ) -> str :
5551 """
5652 Execute delegation to an agent with case-insensitive and whitespace-tolerant matching.
@@ -77,7 +73,9 @@ def _execute(
7773 # when it should look like this:
7874 # {"task": "....", "coworker": "...."}
7975 sanitized_name = self .sanitize_agent_name (agent_name )
80- logger .debug (f"Sanitized agent name from '{ agent_name } ' to '{ sanitized_name } '" )
76+ logger .debug (
77+ f"Sanitized agent name from '{ agent_name } ' to '{ sanitized_name } '"
78+ )
8179
8280 available_agents = [agent .role for agent in self .agents ]
8381 logger .debug (f"Available agents: { available_agents } " )
@@ -87,38 +85,47 @@ def _execute(
8785 for available_agent in self .agents
8886 if self .sanitize_agent_name (available_agent .role ) == sanitized_name
8987 ]
90- logger .debug (f"Found { len (agent )} matching agents for role '{ sanitized_name } '" )
88+ logger .debug (
89+ f"Found { len (agent )} matching agents for role '{ sanitized_name } '"
90+ )
9191 except (AttributeError , ValueError ) as e :
9292 # Handle specific exceptions that might occur during role name processing
9393 return self .i18n .errors ("agent_tool_unexisting_coworker" ).format (
9494 coworkers = "\n " .join (
95- [f"- { self .sanitize_agent_name (agent .role )} " for agent in self .agents ]
95+ [
96+ f"- { self .sanitize_agent_name (agent .role )} "
97+ for agent in self .agents
98+ ]
9699 ),
97- error = str (e )
100+ error = str (e ),
98101 )
99102
100103 if not agent :
101104 # No matching agent found after sanitization
102105 return self .i18n .errors ("agent_tool_unexisting_coworker" ).format (
103106 coworkers = "\n " .join (
104- [f"- { self .sanitize_agent_name (agent .role )} " for agent in self .agents ]
107+ [
108+ f"- { self .sanitize_agent_name (agent .role )} "
109+ for agent in self .agents
110+ ]
105111 ),
106- error = f"No agent found with role '{ sanitized_name } '"
112+ error = f"No agent found with role '{ sanitized_name } '" ,
107113 )
108114
109- agent = agent [0 ]
115+ selected_agent = agent [0 ]
110116 try :
111117 task_with_assigned_agent = Task (
112118 description = task ,
113- agent = agent ,
114- expected_output = agent .i18n .slice ("manager_request" ),
115- i18n = agent .i18n ,
119+ agent = selected_agent ,
120+ expected_output = selected_agent .i18n .slice ("manager_request" ),
121+ i18n = selected_agent .i18n ,
122+ )
123+ logger .debug (
124+ f"Created task for agent '{ self .sanitize_agent_name (selected_agent .role )} ': { task } "
116125 )
117- logger .debug (f"Created task for agent '{ self .sanitize_agent_name (agent .role )} ': { task } " )
118- return agent .execute_task (task_with_assigned_agent , context )
126+ return selected_agent .execute_task (task_with_assigned_agent , context )
119127 except Exception as e :
120128 # Handle task creation or execution errors
121129 return self .i18n .errors ("agent_tool_execution_error" ).format (
122- agent_role = self .sanitize_agent_name (agent .role ),
123- error = str (e )
130+ agent_role = self .sanitize_agent_name (selected_agent .role ), error = str (e )
124131 )
0 commit comments