
    j                        d dl Z d dlZd dlZd dlmZmZmZ d dlmZ ddlm	Z	m
Z
mZ ej                            d          Zej                            ed          Zej                            ed          Zd	e	dz  fd
Zdded	ee         fdZd	eeef         fdZd	e
dz  fdZdedeeef         d	e
dz  fdZded	efdZdedeeef         dee         dee         dedz  d	dfdZdS )    N)datetime	timedeltatimezone)Path   )	AgentInfo
RateLimits
UsageEntryz~/.codexsessionszstate_5.sqlitereturnc                      t          t                                                    rt          ddt          d          S d S )NcodexCodexT)idnamedata_dir	installed)r   SESSIONS_DIRis_dirr        fC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\src/adapters/codex.pydetectr      sH    L  "" 
!	
 
 
 	
 4r   
hours_backc                    g }t                      }d }| dk    r/t          j        t          j                  t          |           z
  }t                      }t          t                    }|	                                s|S |
                    d          D ]}t          |||||           |                    d            |S )Nr   )hours*.jsonlc                     | j         S N)	timestamp)es    r   <lambda>zload_entries.<locals>.<lambda>)   s    q{ r   )key)setr   nowr   utcr   _load_thread_modelsr   r   r   rglob_parse_jsonlsort)r   entriesseencutoffmodelssessions_path
jsonl_paths          r   load_entriesr1      s     "GUUDFA~ Jhl++ij.I.I.II ""F&&M!! #)))44 @ @
Z$????LL**L+++Nr   c                  X   t           j                            t                    si S 	 t	          j        dt           dd          } |                     d                                          }|                                  d |D             S # t          j	        t          f$ r i cY S w xY w)Nzfile:z?mode=roT)uriz5SELECT id, model FROM threads WHERE model IS NOT NULLc                 ,    i | ]}|d          |d         S )r   r   r   ).0rows     r   
<dictcomp>z'_load_thread_models.<locals>.<dictcomp>4   s"    ///3AA///r   )ospathexistsSTATE_DBsqlite3connectexecutefetchallcloseErrorOSError)connrowss     r   r'   r'   -   s    7>>(## 	9x999tDDD||STT]]__

//$////M7#   			s   A%B B)(B)c                     t          t                    } |                                 sd S t          |                     d          d d          }t                      }|d d         D ]}t          ||          }|r|c S d S )Nr   c                 4    |                                  j        S r   )statst_mtime)ps    r   r"   z"load_rate_limits.<locals>.<lambda>>   s    qvvxxGX r   T)r#   reverse   )r   r   r   sortedr(   r'   _extract_rate_limits)r/   jsonl_filesr.   r9   rls        r   load_rate_limitsrP   9   s    &&M!! t,,Y77=X=XbfgggK ""FBQB  !$// 	III	4r   r9   r.   c                    d}d }	 t          | dd          5 }|D ]}|                                }|s	 t          j        |          }n# t          j        $ r Y Aw xY w|                    d          dk    r*|                    di                               dd          }|                    d          d	k    r|                    di           }|                    d          d
k    r|                    d          }|r||                    dd          |f}	 d d d            n# 1 swxY w Y   n# t          t          f$ r Y d S w xY w|sd S |\  }}	}
|                    d          pi }|                    d          pi }|                    d          }|                    d          }|                    d          }|                    d          }t          j	        t          j                                                  }|r||k     rd}|r||k     rd}||d S |                    |
d          }t          ||||||	          S )N rutf-8encodingtypesession_metapayloadr   	event_msgtoken_countrate_limitsr    primary	secondaryused_percent	resets_atg        )five_hour_pctfive_hour_resets_atseven_day_pctseven_day_resets_atmodel
updated_at)openstripjsonloadsJSONDecodeErrorgetrB   PermissionErrorr   r%   r   r&   r    r	   )r9   r.   
session_idlast_rlflinedatarY   rO   tssidr]   r^   five_pct
five_reset	seven_pctseven_resetnow_ts
model_names                      r   rM   rM   H   s    JG$g... 	J! J Jzz|| :d++DD+   H88F##~5 G!%)R!8!8!<!<T2!F!FJ88F##{2 ((9b11;;v&&-7 [[// J!488K#<#<jIG#J	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J& _%   tt  tKBCffY%2G{##)rI{{>**H[))Jn--I--,,K\(,''1133F j6)  {V+ 	 I tC$$J&'   sX   D8 D,A
D,AD,ACD, D8 ,D00D8 3D04D8 8EEcwdc                 |   t           j                            d          }|                     |          r5| t	          |          d                              t           j                  }n|                     t           j                  }|                    t           j                  }|r|d         r|d         n|pdS )N~unknown)r8   r9   
expanduser
startswithlenrh   sepsplit)r{   homerelpartss       r   _project_from_cwdr      s    7c""D
~~d  #d))**o##BF++iiIIbfEA%)A5991A	Ar   r+   r,   r-   c                 Z   d}d}d}d}d }	d}
	 t          | dd          5 }|D ]O}|                                }|s	 t          j        |          }n# t          j        $ r Y Aw xY w|                    d          }|dk    r|                    d	i           }|                    d
d          }|                    dd          }|                    dd          }|rt          |          }|                    |d          }|dk    r|                    d	i           }|                    d          dk    r9|                    d          }|r"|                    d          r|d         }	|
dz  }
Q	 d d d            n# 1 swxY w Y   n# t          t          f$ r Y d S w xY w|	r|sd S |	                    dd          }|	                    dd          |z
  }|	                    dd          |	                    dd          z   }|dk    r|dk    rd S 	 t          j
        |                    dd                    }n# t          t          f$ r Y d S w xY w|r||k     rd S ||v rd S |                    |           |                    t!          |||d|||d|d |d|
                     d S )NrR   r   r   rS   rT   rU   rW   rX   rY   r   r    r{   rZ   r[   infototal_token_usager   cached_input_tokensinput_tokensoutput_tokensreasoning_output_tokensZz+00:00r   )r    rn   
message_id
request_idre   r   r   cache_creation_tokenscache_read_tokenscost_usdprojectagent_idmessage_count)rg   rh   ri   rj   rk   rl   r   rB   rm   r   fromisoformatreplace
ValueErrorAttributeErroraddappendr
   )r9   r.   r+   r,   r-   rn   
session_tsr   re   
last_usage	msg_countrp   rq   rr   row_typerY   r{   r   cachedr   r   rs   s                         r   r)   r)      s    JJGEJI!$g... 	'! ' 'zz|| :d++DD+   H  88F++~- "hhy"55G!(T2!6!6J!(["!=!=J!++eR00C 9"3C"8"8"JJz9==E{* ((9b11;;v&&-7 '";;v..D ')< = = '%)*=%>
!Q	;'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'> _%     Z ^^1155F>>.!44v=LNN?A66Hacd9e9eeMq ]a/ #J$6$6sH$E$EFF'     "v+ T HHZNN:!#        sj   F FAFA%"F$A%%DF5F FF F	F F"!F"(H? ?II)r   )ri   r8   r<   r   r   r   pathlibr   typesr   r	   r
   r9   r   	CODEX_DIRjoinr   r;   r   intlistr1   dictstrr'   rP   rM   r   r$   r)   r   r   r   <module>r      s    				  2 2 2 2 2 2 2 2 2 2       4 4 4 4 4 4 4 4 4 4Gz**	w||Iz227<<	#344	D      S j)9    (	T#s(^ 	 	 	 	*t+    8t 8T#s(^ 8
T@Q 8 8 8 8vB3 B3 B B B BU
UcNU *U c(	U
 tOU 
U U U U U Ur   