Configuration¶
Module: agentspype.agent.configuration, agentspype.agent.definition, agentspype.agent.status
AgentConfiguration¶
Module: agentspype.agent.configuration
Base Pydantic model for agent configuration. All agent configuration classes must inherit from this.
from agentspype.agent.configuration import AgentConfiguration
Model Config¶
model_config = ConfigDict(frozen=False, arbitrary_types_allowed=False)
frozen=False— fields are mutable after construction.arbitrary_types_allowed=False— only types natively supported by Pydantic are allowed as field types.
Subclassing¶
class WorkerConfiguration(AgentConfiguration):
worker_id: str
max_retries: int = 3
timeout_seconds: float = 30.0
tags: list[str] = []
Usage¶
Agents accept either an instance or a plain dict:
agent = WorkerAgent({"worker_id": "w-001"}) # dict
agent = WorkerAgent(WorkerConfiguration(worker_id="w-001")) # instance
agent.configuration.worker_id # "w-001"
agent.configuration.max_retries # 3 (default)
AgentDefinition¶
Module: agentspype.agent.definition
Frozen Pydantic model that binds together all five component classes for an agent type. Declared as a class variable on Agent subclasses.
from agentspype.agent.definition import AgentDefinition
Model Config¶
model_config = ConfigDict(frozen=True)
Frozen — the definition cannot be modified after creation.
Fields¶
| Field | Type | Required | Description |
|---|---|---|---|
state_machine_class |
type[AgentStateMachine] |
Yes | FSM class instantiated per agent |
events_listening_class |
type[AgentListening] |
Yes | Event listener class instantiated per agent |
events_publishing_class |
type[AgentPublishing] |
Yes | Event publisher class instantiated per agent |
configuration_class |
type[AgentConfiguration] |
Yes | Used to validate dict configs and by Agency factory |
status_class |
type[AgentStatus] |
Yes | Status class instantiated per agent |
Usage¶
class MyAgent(Agent):
definition = AgentDefinition(
state_machine_class=MyStateMachine,
events_listening_class=MyListening,
events_publishing_class=MyPublishing,
configuration_class=MyConfiguration,
status_class=MyStatus,
)
The definition is evaluated once at class-definition time. All five fields are required; omitting any raises a Pydantic ValidationError.
Accessing the Definition¶
MyAgent.definition.state_machine_class # MyStateMachine
MyAgent.definition.configuration_class # MyConfiguration
AgentStatus¶
Module: agentspype.agent.status
Base Pydantic model for agent runtime status. Intended to be updated during agent execution.
from agentspype.agent.status import AgentStatus
Model Config¶
model_config = ConfigDict()
Default Pydantic config — mutable, no special restrictions.
Subclassing¶
class WorkerStatus(AgentStatus):
jobs_processed: int = 0
errors_encountered: int = 0
last_job_id: str | None = None
is_busy: bool = False
Usage¶
Status is accessible via agent.status and updated directly:
agent.status.jobs_processed += 1
agent.status.is_busy = True
agent.status.last_job_id = "job-99"
Status can be updated from state machine hooks:
class WorkerStateMachine(AgentStateMachine):
def on_enter_processing(self):
self.agent.status.is_busy = True
def on_exit_processing(self):
self.agent.status.is_busy = False
self.agent.status.jobs_processed += 1
Serialization¶
Because AgentStatus is a Pydantic model, it supports .model_dump() and .model_dump_json():
snapshot = agent.status.model_dump()
# {"jobs_processed": 5, "is_busy": False, ...}