53 lines
870 B
Python
53 lines
870 B
Python
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
|
|
@dataclass
|
|
class TraceItem:
|
|
"""Base class for trace items."""
|
|
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class AgentMessageItem(TraceItem):
|
|
"""Agent's text response."""
|
|
|
|
text: str
|
|
model: str
|
|
|
|
|
|
@dataclass
|
|
class ThinkingItem(TraceItem):
|
|
"""Agent's internal reasoning (extended thinking)."""
|
|
|
|
text: str
|
|
model: str
|
|
|
|
|
|
@dataclass
|
|
class ToolUseItem(TraceItem):
|
|
"""Tool invocation request."""
|
|
|
|
tool_name: str
|
|
tool_input: dict[str, Any]
|
|
tool_use_id: str
|
|
|
|
|
|
@dataclass
|
|
class ToolResultItem(TraceItem):
|
|
"""Tool execution result."""
|
|
|
|
tool_name: str
|
|
tool_use_id: str
|
|
content: str | list[dict[str, Any]] | None = None
|
|
is_error: bool = False
|
|
|
|
|
|
@dataclass
|
|
class ErrorItem(TraceItem):
|
|
"""Error that occurred during execution."""
|
|
|
|
message: str
|
|
error_type: str | None = None
|