o
    $¥¡i…  ã                   @   sp   d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 G dd„ de
ƒZeG dd„ dƒƒZeG d	d
„ d
ƒƒZdS )z'
Data models for the OpenRouter Agent.
é    )ÚDictÚListÚAnyÚOptionalÚCallable)Ú	dataclass)ÚEnumc                   @   s    e Zd ZdZdZdZdZdZdS )ÚRolez"Message roles for the conversationÚsystemÚuserÚ	assistantÚtoolN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚSYSTEMÚUSERÚ	ASSISTANTÚTOOL© r   r   ú1/var/www/apps/myagent/mysuperagent/core/models.pyr	   
   s    r	   c                   @   s|   e Zd ZU dZeed< dZee ed< dZ	ee ed< dZ
eeeeef   ed< dZee ed< deeef fd	d
„ZdS )ÚMessagez&Message structure for the conversationÚroleNÚcontentÚnameÚ
tool_callsÚtool_call_idÚreturnc                 C   sj   | j j| jdur| jnddœ}| jr| j|d< | j tjkr%| jr%| j|d< | j tjkr3| jr3| j|d< |S )z(Convert message to OpenRouter API formatNÚ )r   r   r   r   r   )	r   Úvaluer   r   r	   r   r   r   r   )ÚselfÚmessage_dictr   r   r   Úto_dict   s   þ


zMessage.to_dict)r   r   r   r   r	   Ú__annotations__r   r   Ústrr   r   r   r   r   r   r#   r   r   r   r   r      s   
 r   c                   @   sP   e Zd ZU dZeed< eed< eeef ed< eed< deeef fdd„Z	d	S )
ÚToolz$Tool definition for function callingr   ÚdescriptionÚ
parametersÚfunctionr   c                 C   s   d| j | j| jdœdœS )z%Convert tool to OpenRouter API formatr)   ©r   r'   r(   )Útyper)   r*   )r!   r   r   r   r#   6   s   ýþzTool.to_dictN)
r   r   r   r   r%   r$   r   r   r   r#   r   r   r   r   r&   .   s   
 r&   N)r   Útypingr   r   r   r   r   Údataclassesr   Úenumr   r	   r   r&   r   r   r   r   Ú<module>   s    