6363from ..types .tools import ToolResult , ToolUse
6464from ..types .traces import AttributeValue
6565from .agent_result import AgentResult
66+ from .base import AgentBase
6667from .conversation_manager import (
6768 ConversationManager ,
6869 SlidingWindowConversationManager ,
@@ -88,8 +89,8 @@ class _DefaultCallbackHandlerSentinel:
8889_DEFAULT_AGENT_ID = "default"
8990
9091
91- class Agent :
92- """Core Agent interface .
92+ class Agent ( AgentBase ) :
93+ """Core Agent implementation .
9394
9495 An agent orchestrates the following workflow:
9596
@@ -289,8 +290,8 @@ def __init__(
289290 self .messages = messages if messages is not None else []
290291 self .system_prompt = system_prompt
291292 self ._default_structured_output_model = structured_output_model
292- self .agent_id = _identifier .validate (agent_id or _DEFAULT_AGENT_ID , _identifier .Identifier .AGENT )
293- self .name = name or _DEFAULT_AGENT_NAME
293+ self ._agent_id = _identifier .validate (agent_id or _DEFAULT_AGENT_ID , _identifier .Identifier .AGENT )
294+ self ._name = name or _DEFAULT_AGENT_NAME
294295 self .description = description
295296
296297 # If not provided, create a new PrintingCallbackHandler instance
@@ -338,13 +339,13 @@ def __init__(
338339 # Initialize agent state management
339340 if state is not None :
340341 if isinstance (state , dict ):
341- self .state = AgentState (state )
342+ self ._state = AgentState (state )
342343 elif isinstance (state , AgentState ):
343- self .state = state
344+ self ._state = state
344345 else :
345346 raise ValueError ("state must be an AgentState object or a dict" )
346347 else :
347- self .state = AgentState ()
348+ self ._state = AgentState ()
348349
349350 self .tool_caller = Agent .ToolCaller (self )
350351
@@ -389,6 +390,60 @@ def tool_names(self) -> list[str]:
389390 all_tools = self .tool_registry .get_all_tools_config ()
390391 return list (all_tools .keys ())
391392
393+ @property
394+ def agent_id (self ) -> str :
395+ """Unique identifier for the agent.
396+
397+ Returns:
398+ Unique string identifier for this agent instance.
399+ """
400+ return self ._agent_id
401+
402+ @agent_id .setter
403+ def agent_id (self , value : str ) -> None :
404+ """Set the agent identifier.
405+
406+ Args:
407+ value: New agent identifier.
408+ """
409+ self ._agent_id = value
410+
411+ @property
412+ def name (self ) -> str :
413+ """Human-readable name of the agent.
414+
415+ Returns:
416+ Display name for the agent.
417+ """
418+ return self ._name
419+
420+ @name .setter
421+ def name (self , value : str ) -> None :
422+ """Set the agent name.
423+
424+ Args:
425+ value: New agent name.
426+ """
427+ self ._name = value
428+
429+ @property
430+ def state (self ) -> AgentState :
431+ """Current state of the agent.
432+
433+ Returns:
434+ AgentState object containing stateful information.
435+ """
436+ return self ._state
437+
438+ @state .setter
439+ def state (self , value : AgentState ) -> None :
440+ """Set the agent state.
441+
442+ Args:
443+ value: New agent state.
444+ """
445+ self ._state = value
446+
392447 def __call__ (
393448 self ,
394449 prompt : AgentInput = None ,
0 commit comments