(obj, visited=None)
| 251 | |
| 252 | |
| 253 | def _get_all_agent_names(obj, visited=None): |
| 254 | if visited is None: |
| 255 | visited = set() |
| 256 | |
| 257 | if id(obj) in visited: |
| 258 | return set() |
| 259 | visited.add(id(obj)) |
| 260 | |
| 261 | from google.adk.workflow._parallel_worker import _ParallelWorker |
| 262 | from google.adk.workflow._workflow import Workflow |
| 263 | |
| 264 | names = set() |
| 265 | if isinstance(obj, BaseAgent) and hasattr(obj, "name"): |
| 266 | names.add(obj.name) |
| 267 | if hasattr(obj, "sub_agents") and obj.sub_agents: |
| 268 | for sub in obj.sub_agents: |
| 269 | names.update(_get_all_agent_names(sub, visited)) |
| 270 | elif isinstance(obj, Workflow): |
| 271 | if obj.graph and obj.graph.nodes: |
| 272 | for node in obj.graph.nodes: |
| 273 | names.update(_get_all_agent_names(node, visited)) |
| 274 | elif isinstance(obj, _ParallelWorker): |
| 275 | if hasattr(obj, "_node"): |
| 276 | names.update(_get_all_agent_names(obj._node, visited)) |
| 277 | return names |
| 278 | |
| 279 | |
| 280 | def _extract_user_content(event: dict) -> Optional[types.Content]: |
no test coverage detected