Ë
    Å[êjb  ã                  ó”   — d Z ddlmZ ddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZmZ  G d„ dee«      Z G d	„ d
e
«      Z G d„ de
«      Zy)z:Pydantic modely pro konverzace - eliminuje Title-Dict Bug.é    )Úannotations)ÚUTCÚdatetime)ÚEnum)ÚAny)Ú	BaseModelÚFieldÚfield_validatorc                  ó   — e Zd ZdZdZdZy)ÚRoleÚuserÚ	assistantÚsystemN)Ú__name__Ú
__module__Ú__qualname__r   r   r   © ó    úG/home/oem/CyberBrain26-unified/src/cyberbrain26/schemas/conversation.pyr   r      s   „ Ø€DØ€IØ�Fr   r   c                  ó"   — e Zd ZU ded<   ded<   y)ÚMessager   ÚroleÚstrÚcontentN)r   r   r   Ú__annotations__r   r   r   r   r      s   … Ø
ƒJØ„Lr   r   c                  óè   — e Zd ZU ded<   dZded<   ded<   ded<    ee¬«      Zd	ed
<    edd¬«      e	dd„«       «       Z
 eddd¬«      e	dd„«       «       Ze	ddd„«       Zddd„Zdd„Ze	dd„«       Zy)ÚConversationr   ÚidúNova konverzaceÚtitler   Ú
created_atÚ
updated_at)Údefault_factoryzlist[Message]ÚhistoryÚbefore©Úmodec                ó¾   — t        |t        «      r|j                  dd«      }|� t        |t        «      r|j	                  «       syt        |«      j	                  «       S )Nr    r   )Ú
isinstanceÚdictÚgetr   Ústrip©ÚclsÚvs     r   Ú_coerce_titlezConversation._coerce_title   sH   € ô �aœÔØ—‘�gÐ0Ó1ˆAØˆ9œ A¤sÔ+°A·G±G´IØ$Ü�1‹v�|‰|‹~Ðr   c                ó¦   — t        |t        «      r|S t        |t        «      r|rt        j                  |«      S t        j                  t
        «      S ©N)r)   r   r   ÚfromisoformatÚnowr   r-   s     r   Ú_parse_datetimezConversation._parse_datetime&   s?   € ô �aœÔ"ØˆHÜ�aœÔ¡!Ü×)Ñ)¨!Ó,Ð,Ü�|‰|œCÓ Ð r   c                ó‚   — dd l }t        j                  t        «      } | t	        |j                  «       «      |||¬«      S )Nr   )r   r    r!   r"   )Úuuidr   r4   r   r   Úuuid4)r.   r    r7   r4   s       r   ÚnewzConversation.new/   s0   € ãÜ�l‰lœ3ÓˆÙ”c˜$Ÿ*™*›,Ó'¨uÀÐQTÔUÐUr   c                óæ   — | j                   j                  t        ||¬«      «       t        | j                   «      |kD  r| j                   | d  | _         t	        j
                  t        «      | _        y )N)r   r   )r$   Úappendr   Úlenr   r4   r   r"   )Úselfr   r   Ú	keep_lasts       r   r;   zConversation.append5   sP   € Ø�‰×ÑœG¨°wÔ?Ô@Üˆt�|‰|Ó˜yÒ(ØŸ<™<¨¨
¨Ð4ˆDŒLÜ"Ÿ,™,¤sÓ+ˆ�r   c                ó&   — | j                  d¬«      S )NÚjsonr&   )Ú
model_dump)r=   s    r   Úto_diskzConversation.to_disk;   s   € Ø�‰ FˆÓ+Ð+r   c                ó$   — | j                  |«      S r2   )Úmodel_validate)r.   Údatas     r   Ú	from_diskzConversation.from_disk>   s   € à×!Ñ! $Ó'Ð'r   N)r/   r   Úreturnr   )r/   r   rG   r   )r   )r    r   rG   r   )é   )r   r   r   r   r>   ÚintrG   ÚNone)rG   r*   )rE   r*   rG   r   )r   r   r   r   r    r	   Úlistr$   r
   Úclassmethodr0   r5   r9   r;   rB   rF   r   r   r   r   r      s§   … ØƒGØ"€Eˆ3Ó"ØÓØÓÙ"°4Ô8€Gˆ]Ó8á�W 8Ô,Øòó ó -ðñ �\ <°hÔ?Øò!ó ó @ð!ð óVó ðVô
,ó,ð ò(ó ñ(r   r   N)Ú__doc__Ú
__future__r   r   r   Úenumr   Útypingr   Úpydanticr   r	   r
   r   r   r   r   r   r   r   ú<module>rR      s@   ðÙ @Ý "ç "Ý Ý ç 6Ñ 6ôˆ3�ô ôˆiô ô
*(�9õ *(r   