
    ^hQ                     b    S SK r S SKrS SKJr  S SKrSSKJr  SSKJr  SSKJ	r	   " S S	\5      r
g)
    N)datetime   )BaseAssistantListener)CaptureOutput   )word_wrap_except_code_blocksc                   Z    \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)
ChatDBGLog   c                 L   Xl         X l        U(       ag  [        [        R                  5      U l        [        [        R                  5      U l        U R
                  [        l        U R
                  [        l        OS U l        S U l        U R                  5       U l	        S U l
        g N)_log_filenameconfigr   sysstdout_stdout_wrapperstderr_stderr_wrapper	_make_log_log_current_chat)selflog_filenamer   capture_streamss       J/home/james-whalen/.local/lib/python3.13/site-packages/chatdbg/util/log.py__init__ChatDBGLog.__init__   sr    )#0#<D #0#<D --CJ--CJ#'D #'D NN$	!    c                 x   [         R                  " 5       SR                  [        R                  5      [        [        R                  " 5       5      U R                  S.n/ US U R                  S :X  a  S OU R                  R                  5       U R                  S :X  a  S S.$ U R                  R                  5       S.$ )N )timecommand_lineuidr   )stepsmetainstructionsr   r   )r   nowjoinr   argvstruuiduuid4r   r   r   getvalue)r   r%   s     r   r   ChatDBGLog._make_log   s    LLNHHSXX.tzz|$kk	
   ''4/ ))224 ''4/ 
 	
 ))224
 	
r   c                 z  ^ U R                   mU4S jnU" S5      TS   S'   U" S5      TS   S'   U" S5      TS   S'   [        S	U R                   35        [        U R                  S
5       nS n[        R
                  " [        U5        [        R                  " T/USSS9  S S S 5        g ! , (       d  f       g = f)Nc                 6   >^  [        U 4S jTS    5       5      $ )Nc              3   f   >#    U  H&  nUS    S   S:X  d  M  SUS    ;   d  M  US   T   v   M(     g7f)outputtypechatstatsN ).0xkeys     r   	<genexpr>2ChatDBGLog._dump.<locals>.total.<locals>.<genexpr>8   sD      %AX;v&&0  5<(5K  '
3%s   111r$   )sum)r9   logs   `r   totalChatDBGLog._dump.<locals>.total7   s!     W  r   tokensr%   total_tokensr!   
total_timecost
total_costz"*** Writing ChatDBG dialog log to ac                 T    SU;   a  U R                  SUSS9$ U R                  SU5      $ )N
ztag:yaml.org,2002:str|)style)represent_scalar)dumperdatas     r   literal_presenter+ChatDBGLog._dump.<locals>.literal_presenterF   s>    4<!22/S 3   "223JDQQr   Fr   )default_flow_styleindent)r   printr   openyamladd_representerr*   dump)r   r>   filerM   r=   s       @r   _dumpChatDBGLog._dump4   s    ii	 ',HoFN#$)&MFL!$)&MFL!243E3E2FGH$$$c*dR   &78IIseTeAF +**s   ,7B,,
B:c                 4    U R                   nUS :w  d   eXS'   g )Nr&   )r   )r   r&   r=   s      r   on_begin_dialogChatDBGLog.on_begin_dialogQ   s    iid{{*Nr   c                 n    U R                   S :w  a  U R                  5         U R                  5       U l         g r   )r   rW   r   )r   s    r   on_end_dialogChatDBGLog.on_end_dialogV   s%    99JJLNN$	r   c                 l    U R                   nUS :w  d   eU R                  S :X  d   eUUS/ S.S.U l        g )Nr4   )r3   outputs)inputpromptr2   r   r   )r   rb   extrar=   s       r   on_begin_queryChatDBGLog.on_begin_query[   sC    iid{{!!T)))%"5
r   c                     U R                   nUS :w  d   eU R                  S :w  d   eUS==   U R                  /-  ss'   XS'   S U l        g )Nr$   r5   rc   )r   r5   r=   s      r   on_end_queryChatDBGLog.on_end_querye   sQ    iid{{!!T)))G++,,G!r   c                     U R                   nUS :w  d   eU R                  S :w  a+  U R                  S   S   R                  SSU SU 3S.5        g US   R                  SSU 3SUS.S	.5        g )
Nr2   r`   textz*** z: r3   r2   r$   callr3   ra   r2   r   r   append)r   rk   kindr=   s       r   _postChatDBGLog._postm   s    iid{{%x(3::T$r$+@A L"#D6]'->r   c                 (    U R                  US5        g )NWarning)rr   )r   rk   s     r   on_warnChatDBGLog.on_warn}   s    

4#r   c                     U R                   nUS :w  d   eU R                  S :w  d   e[        U5      nU R                  S   S   R                  SUS.5        g )Nr2   r`   rk   rl   )r   r   r   rp   )r   rk   r=   s      r   on_responseChatDBGLog.on_response   sY    iid{{!!T)))+D18$Y/66RV7WXr   c                     U R                   nUS :w  d   eU R                  S :w  a)  U R                  S   S   R                  SUSUS.S.5        g US   R                  SUSUS.S.5        g )Nr2   r`   rm   rk   rl   rn   r$   ro   )r   rm   resultr=   s       r   on_function_callChatDBGLog.on_function_call   s}    iid{{%x(3::"!'-@ L"!'-@r   )r   r   r   r   r   r   N)T)__name__
__module____qualname____firstlineno__r   r   rW   rZ   r]   re   rh   rr   rv   ry   r}   __static_attributes__r6   r   r   r
   r
      s;    "
.G:+
%

" $Yr   r
   )r   r+   r   rS   assistant.listenersr   pdb_util.capturer   wrapr   r
   r6   r   r   <module>r      s)    
    7 , .M& Mr   