
    	D,j                     n    d dl Z d dlmZmZ d dlmZ  G d d          Zd Zedk    r e             dS dS )    N)modelsprompts)dumpc                   8    e Zd Zd
dZd Zd ZddZddZd	 ZdS )ChatSummaryN   c                     |st          d          t          |t                    r|n|g| _        || _        | j        d         j        | _        d S )Nz#At least one model must be providedr   )
ValueError
isinstancelistr   
max_tokenstoken_count)selfr   r   s      \/home/rurouni/.local/share/uv/tools/aider-chat/lib/python3.11/site-packages/aider/history.py__init__zChatSummary.__init__   sT     	DBCCC *64 8 8Fffvh$;q>5    c                 t    |                      |          }t          d |D                       }|| j        k    S )Nc              3       K   | ]	\  }}|V  
d S N .0tokens_msgs      r   	<genexpr>z&ChatSummary.too_big.<locals>.<genexpr>   &      55|vtF555555r   )tokenizesumr   )r   messagessizedtotals       r   too_bigzChatSummary.too_big   s<    h''55u55555t&&r   c                 l    g }|D ].}|                      |          }|                    ||f           /|S r   )r   append)r   r   r    msgr   s        r   r   zChatSummary.tokenize   sG     	( 	(C%%c**FLL&#''''r   r   c                     |                      |          }|r6|d         d         dk    r$|                    t          dd                     |S )Nrole	assistantzOk.r(   content)summarize_realr$   dict)r   r   depths      r   	summarizezChatSummary.summarize   sU    &&x00 	CV,;;OODk5AAABBBr   c                 B   | j         st          d          |                     |          }t          d |D                       }|| j        k    r|dk    r|S d}t          |          |k    s|dk    r|                     |          S d}t          |          }| j        dz  }t          t          |          dz
  dd          D ]}	||	         \  }
}||
z   |k     r||
z  }|	} ||dz
           d	         d
k    r&|dk    r |dz  }||dz
           d	         d
k    r|dk     ||k    r|                     |          S ||d          }|d |         }| j         d         j        	                    d          pd}|dz  }g }d}|D ]'\  }
}||
z  }||k    r n|
                    |           (|                     |          }|                     |          }t          d ||d          D                       }||z   | j        k     r||z   S |                     ||z   |dz             S )Nz%No models available for summarizationc              3       K   | ]	\  }}|V  
d S r   r   r   s      r   r   z-ChatSummary.summarize_real.<locals>.<genexpr>&   r   r   r               r'   r(   r)   max_input_tokensi   i   c              3       K   | ]	\  }}|V  
d S r   r   )r   r   _s      r   r   z-ChatSummary.summarize_real.<locals>.<genexpr>[   s&      FFYVQ&FFFFFFr   )r   r
   r   r   r   lensummarize_allrangeinfogetr$   r   r,   )r   r   r.   r    r!   	min_splittail_tokenssplit_indexhalf_max_tokensir   r   tail
sized_headmodel_max_input_tokenskeepr%   summarysummary_tokenss                      r   r,   zChatSummary.summarize_real!   s   { 	FDEEEh''55u55555DO##

O	x==I%%%%h///(mm/Q. s5zzA~r2.. 	 	A 8LFDV#o55v% {Q'/;>>;QR??1K {Q'/;>>;QR?? )##%%h/// % <K<(
 "&Q!4!8!89K!L!L!TPT#% & 	 	KFCVOE---KK $$T** ))'22FF%2EFFFFFK'$/99T>! ""7T>519===r   c           
      &   d}|D ]O}|d                                          }|dvr!|d| dz  }||d         z  }|                    d          s|dz  }Pt          dt          j                  t          d	|          g}| j        D ]{}	 |                    |          }|#t          j        |z   }t          d	|          gc S ># t          $ r1}t          d
|j
         dt          |                      Y d }~td }~ww xY wt          d          )N r(   )USER	ASSISTANTz# 
r+   systemr*   userzSummarization failed for model z: z-summarizer unexpectedly failed for all models)upperendswithr-   r   r/   r   simple_send_with_retriessummary_prefix	Exceptionprintnamestrr
   )	r   r   r+   r%   r(   summarize_messagesmodelrG   es	            r   r:   zChatSummary.summarize_allb   sv    	  	 Cv;$$&&D000}D}}}$Gs9~%G##D))  4 h(9:::fg...

 [ 	P 	PEP889KLL&%4w>G fg>>>???? '  P P PN
NNc!ffNNOOOOOOOOP HIIIs   7C
D'C<<D)Nr   )r   )	__name__
__module____qualname__r   r"   r   r/   r,   r:   r   r   r   r   r      s        6 6 6 6' ' '
     ?> ?> ?> ?>BJ J J J Jr   r   c                     t          j                    } |                     dd           |                                 }ddg}d |D             }t	          |          }t          |j        d          5 }|                                }d d d            n# 1 swxY w Y   |                    |          }t          |           d S )NfilenamezMarkdown file to parse)helpzgpt-3.5-turbozgpt-4c                 6    g | ]}t          j        |          S r   )r   Model)r   rV   s     r   
<listcomp>zmain.<locals>.<listcomp>   s"    ===&,t$$===r   r)
argparseArgumentParseradd_argument
parse_argsr   openr_   readsummarize_chat_history_markdownr   )parserargsmodel_names
model_list
summarizerftextrG   s           r   mainrs   ~   s    $&&F

)ABBBD"G,K=====JZ((J	dmS	!	! Qvvxx               88>>GMMMMMs   3BBB__main__)	re   aiderr   r   
aider.dumpr   r   rs   r[   r   r   r   <module>rw      s     ! ! ! ! ! ! ! !      tJ tJ tJ tJ tJ tJ tJ tJn    zDFFFFF r   