944536191e
Introduce 4 new BaseNode subclasses that will replace the implicit
Workflow graph routing in _SingleLlmAgent with explicit ctx.run_node
orchestration:
- SingleAgentReactNode: replaces _SingleLlmAgent ReAct loop
- LlmCallNode: replaces _call_llm_node.py LLM call cycle
- ParallelToolCallNode + ToolCallNode: replaces _execute_tools_node.py
Verified manually with:
```
import random
from google.adk import Agent
from google.adk.agents.llm._single_agent_react_node import SingleAgentReactNode
def roll_die(sides: int) -> int:
"""Roll a die and return the rolled result.
Args:
sides: The integer number of sides the die has.
Returns:
An integer of the result of rolling the die.
"""
return random.randint(1, sides)
_agent = Agent(
model='gemini-2.5-flash',
name='dice_agent',
instruction='You roll dice for the user. When asked to roll a die, call the roll_die tool. Always report the result.',
tools=[roll_die],
)
root_agent = SingleAgentReactNode(name='react_loop', agent=_agent)
```
https: //screenshot.googleplex.com/BRwbtLHQMTwKN8m
Change-Id: I4b2827aa011a1cca1868df53ea2fbc97e12da83d