| from __future__ import annotations |
|
|
| from abc import ABC, abstractmethod |
| from typing import TYPE_CHECKING, Protocol, runtime_checkable |
|
|
| if TYPE_CHECKING: |
| from ..items import TResponseInputItem |
|
|
|
|
| @runtime_checkable |
| class Session(Protocol): |
| """Protocol for session implementations. |
| |
| Session stores conversation history for a specific session, allowing |
| agents to maintain context without requiring explicit manual memory management. |
| """ |
|
|
| session_id: str |
|
|
| async def get_items(self, limit: int | None = None) -> list[TResponseInputItem]: |
| """Retrieve the conversation history for this session. |
| |
| Args: |
| limit: Maximum number of items to retrieve. If None, retrieves all items. |
| When specified, returns the latest N items in chronological order. |
| |
| Returns: |
| List of input items representing the conversation history |
| """ |
| ... |
|
|
| async def add_items(self, items: list[TResponseInputItem]) -> None: |
| """Add new items to the conversation history. |
| |
| Args: |
| items: List of input items to add to the history |
| """ |
| ... |
|
|
| async def pop_item(self) -> TResponseInputItem | None: |
| """Remove and return the most recent item from the session. |
| |
| Returns: |
| The most recent item if it exists, None if the session is empty |
| """ |
| ... |
|
|
| async def clear_session(self) -> None: |
| """Clear all items for this session.""" |
| ... |
|
|
|
|
| class SessionABC(ABC): |
| """Abstract base class for session implementations. |
| |
| Session stores conversation history for a specific session, allowing |
| agents to maintain context without requiring explicit manual memory management. |
| |
| This ABC is intended for internal use and as a base class for concrete implementations. |
| Third-party libraries should implement the Session protocol instead. |
| """ |
|
|
| session_id: str |
|
|
| @abstractmethod |
| async def get_items(self, limit: int | None = None) -> list[TResponseInputItem]: |
| """Retrieve the conversation history for this session. |
| |
| Args: |
| limit: Maximum number of items to retrieve. If None, retrieves all items. |
| When specified, returns the latest N items in chronological order. |
| |
| Returns: |
| List of input items representing the conversation history |
| """ |
| ... |
|
|
| @abstractmethod |
| async def add_items(self, items: list[TResponseInputItem]) -> None: |
| """Add new items to the conversation history. |
| |
| Args: |
| items: List of input items to add to the history |
| """ |
| ... |
|
|
| @abstractmethod |
| async def pop_item(self) -> TResponseInputItem | None: |
| """Remove and return the most recent item from the session. |
| |
| Returns: |
| The most recent item if it exists, None if the session is empty |
| """ |
| ... |
|
|
| @abstractmethod |
| async def clear_session(self) -> None: |
| """Clear all items for this session.""" |
| ... |
|
|