ConradLinus's picture
Upload folder using huggingface_hub
d631808 verified
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Literal, Union
from typing_extensions import TypeAlias
from .agent import Agent
from .items import RunItem, TResponseStreamEvent
@dataclass
class RawResponsesStreamEvent:
"""Streaming event from the LLM. These are 'raw' events, i.e. they are directly passed through
from the LLM.
"""
data: TResponseStreamEvent
"""The raw responses streaming event from the LLM."""
type: Literal["raw_response_event"] = "raw_response_event"
"""The type of the event."""
@dataclass
class RunItemStreamEvent:
"""Streaming events that wrap a `RunItem`. As the agent processes the LLM response, it will
generate these events for new messages, tool calls, tool outputs, handoffs, etc.
"""
name: Literal[
"message_output_created",
"handoff_requested",
# This is misspelled, but we can't change it because that would be a breaking change
"handoff_occured",
"tool_called",
"tool_output",
"reasoning_item_created",
"mcp_approval_requested",
"mcp_list_tools",
]
"""The name of the event."""
item: RunItem
"""The item that was created."""
type: Literal["run_item_stream_event"] = "run_item_stream_event"
@dataclass
class AgentUpdatedStreamEvent:
"""Event that notifies that there is a new agent running."""
new_agent: Agent[Any]
"""The new agent."""
type: Literal["agent_updated_stream_event"] = "agent_updated_stream_event"
StreamEvent: TypeAlias = Union[RawResponsesStreamEvent, RunItemStreamEvent, AgentUpdatedStreamEvent]
"""A streaming event from an agent."""