
    P0j1                    p    S SK Jr  S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S
S jr
S
S jr " S S	5      rg)    )annotationsN)datetimetimezone)Path)Anyc                 f    [         R                  " [        R                  5      R	                  5       $ N)r   nowr   utc	isoformat     ./mnt/DATA/WORK/agent-gui/agent_gui/sessions.pyutc_nowr   
   s    <<%//11r   c                 F    [         R                  " 5       R                  S S $ )N   )uuiduuid4hexr   r   r   new_session_idr      s    ::<CR  r   c                  F    \ rS rSrS	S jrS
S jrSS jrSS jrSS jrSr	g)SessionStore   c                X    [        U5      U l        U R                  R                  SSS9  g )NT)parentsexist_ok)r   rootmkdir)selfr   s     r   __init__SessionStore.__init__   s!    J			t4r   c                z    SR                  S U 5       5      nU(       d  [        S5      eU R                  U S3-  $ )N c              3  ^   #    U  H#  oR                  5       (       d  US ;   d  M  Uv   M%     g7f)z-_N)isalnum).0chs     r   	<genexpr>%SessionStore._path.<locals>.<genexpr>   s      MJb**,,"*rrJs   -	-zsession_id invalidez.jsonl)join
ValueErrorr   )r   
session_idsafes      r   _pathSessionStore._path   s:    wwMJMM233yydV6?**r   c                    [        5       US.UEnU R                  U5      nUR                  SSS9 nUR                  [        R
                  " USS9S-   5        S S S 5        U$ ! , (       d  f       U$ = f)N)
created_atr,   autf-8encodingF)ensure_ascii
)r   r.   openwritejsondumps)r   r,   eventenrichedpathhandles         r   appendSessionStore.append   sg    ")):OOzz*%YYsWY-LLH5ADHI . .-s   (A##
A2c                >   U R                  U5      nUR                  5       (       d  / $ / nUR                  SSS9 nU HA  nUR                  5       nU(       d  M  UR	                  [
        R                  " U5      5        MC     S S S 5        U$ ! , (       d  f       U$ = f)Nrr3   r4   )r.   existsr8   stripr@   r:   loads)r   r,   r>   eventsr?   lines         r   readSessionStore.read$   s    zz*%{{}}I')YYsWY-zz|4MM$**T"23  .
  .-
 s   B)B
Bc                   / n[        U R                  R                  S5      S SS9 H  nU R                  UR                  5      nUR                  UR                  [        U5      [        R                  " UR                  5       R                  [        R                  5      R                  5       [        S [        U5       5       S5      S.5        M     U$ )Nz*.jsonlc                6    U R                  5       R                  $ r	   )statst_mtime)ps    r   <lambda>,SessionStore.list_sessions.<locals>.<lambda>2   s    AFFHDUDUr   T)keyreversec              3  t   #    U  H.  oR                  S 5      (       d  M  UR                  S S5      v   M0     g7f)contentr#   N)get)r&   es     r   r(   -SessionStore.list_sessions.<locals>.<genexpr>9   s/     $hCSaW\W\]fWg%9QUU9b%9%9CSs   88r#   )r,   rG   
updated_atpreview)sortedr   globrI   stemr@   lenr   fromtimestamprM   rN   r   r   r   nextreversed)r   sessionsr>   rG   s       r   list_sessionsSessionStore.list_sessions0   s    )+499>>)4:U_cdDYYtyy)FOO"&))!&k"*"8"89M9Mx||"\"f"f"h#$h8FCS$hjlm	 e r   )r   N)r   z
str | Path)r,   strreturnr   )r,   re   r<   dict[str, Any]rf   rg   )r,   re   rf   list[dict[str, Any]])rf   rh   )
__name__
__module____qualname____firstlineno__r    r.   r@   rI   rc   __static_attributes__r   r   r   r   r      s    5+
r   r   )rf   re   )
__future__r   r:   r   r   r   pathlibr   typingr   r   r   r   r   r   r   <module>rq      s+    "   '  2!* *r   