o
    h                     @  sh   d dl mZ d dlmZmZ d dlmZmZmZ er ddl	m
Z
 eG dd deZG dd	 d	eZd
S )    )annotations)ABCabstractmethod)TYPE_CHECKINGProtocolruntime_checkable   )TResponseInputItemc                   @  sD   e Zd ZU dZded< ddd	d
ZdddZdddZdddZdS )SessionzProtocol for session implementations.

    Session stores conversation history for a specific session, allowing
    agents to maintain context without requiring explicit manual memory management.
    str
session_idNlimit
int | Nonereturnlist[TResponseInputItem]c                      dS aO  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
        N selfr   r   r   V/var/www/html/openai_agents/venv/lib/python3.10/site-packages/agents/memory/session.py	get_items   s   
zSession.get_itemsitemsNonec                   r   zAdd new items to the conversation history.

        Args:
            items: List of input items to add to the history
        Nr   r   r   r   r   r   	add_items       zSession.add_itemsTResponseInputItem | Nonec                   r   zRemove and return the most recent item from the session.

        Returns:
            The most recent item if it exists, None if the session is empty
        Nr   r   r   r   r   pop_item(   r   zSession.pop_itemc                   r   z!Clear all items for this session.Nr   r    r   r   r   clear_session0   s   zSession.clear_sessionNr   r   r   r   r   r   r   r   r   r   r   r   )	__name__
__module____qualname____doc____annotations__r   r   r!   r#   r   r   r   r   r
   
   s   
 

r
   c                   @  sT   e Zd ZU dZded< eddd	d
ZedddZedddZedddZ	dS )
SessionABCay  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.
    r   r   Nr   r   r   r   c                   r   r   r   r   r   r   r   r   A   s   zSessionABC.get_itemsr   r   c                   r   r   r   r   r   r   r   r   N      zSessionABC.add_itemsr   c                   r   r   r   r    r   r   r   r!   W   r/   zSessionABC.pop_itemc                   r   r"   r   r    r   r   r   r#   `   s   zSessionABC.clear_sessionr$   r%   r&   r'   r(   )
r)   r*   r+   r,   r-   r   r   r   r!   r#   r   r   r   r   r.   5   s   
 	r.   N)
__future__r   abcr   r   typingr   r   r   r   r	   r
   r.   r   r   r   r   <module>   s    *