store state message in the history (#3271)

<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Store the state message text in the agent history so clients can see the
exact state prompt used for each step and debug more easily.

- New Features
  - Save last_state_message_text when creating state messages.
- Pass state_message into history items via _finalize and
_make_history_item.
  - Extend AgentHistory and model_dump to include state_message.

<!-- End of auto-generated description by cubic. -->
This commit is contained in:
Mert Unsal
2025-10-08 16:59:22 +02:00
committed by GitHub
3 changed files with 15 additions and 1 deletions
@@ -129,6 +129,7 @@ class MessageManager:
self.include_attributes = include_attributes or []
self.sensitive_data = sensitive_data
self.last_input_messages = []
self.last_state_message_text: str | None = None
# Only initialize messages if state is empty
if len(self.state.history.get_messages()) == 0:
self._set_message_with_type(self.system_prompt, 'system')
@@ -355,6 +356,9 @@ class MessageManager:
sample_images=self.sample_images,
).get_user_message(effective_use_vision)
# Store state message text for history
self.last_state_message_text = state_message.text
# Set the state message with caching enabled
self._set_message_with_type(state_message, 'state')
+9 -1
View File
@@ -850,7 +850,13 @@ class Agent(Generic[Context, AgentStructuredOutput]):
)
# Use _make_history_item like main branch
await self._make_history_item(self.state.last_model_output, browser_state_summary, self.state.last_result, metadata)
await self._make_history_item(
self.state.last_model_output,
browser_state_summary,
self.state.last_result,
metadata,
state_message=self._message_manager.last_state_message_text,
)
# Log step completion summary
self._log_step_completion_summary(self.step_start_time, self.state.last_result)
@@ -980,6 +986,7 @@ class Agent(Generic[Context, AgentStructuredOutput]):
browser_state_summary: BrowserStateSummary,
result: list[ActionResult],
metadata: StepMetadata | None = None,
state_message: str | None = None,
) -> None:
"""Create and store history item"""
@@ -1012,6 +1019,7 @@ class Agent(Generic[Context, AgentStructuredOutput]):
result=result,
state=state_history,
metadata=metadata,
state_message=state_message,
)
self.history.add_item(history_item)
+2
View File
@@ -249,6 +249,7 @@ class AgentHistory(BaseModel):
result: list[ActionResult]
state: BrowserStateHistory
metadata: StepMetadata | None = None
state_message: str | None = None
model_config = ConfigDict(arbitrary_types_allowed=True, protected_namespaces=())
@@ -353,6 +354,7 @@ class AgentHistory(BaseModel):
'result': result_dump,
'state': self.state.to_dict(),
'metadata': self.metadata.model_dump() if self.metadata else None,
'state_message': self.state_message,
}