§
    ‰eîiB  ã                  ó6  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZ dZ ej        de› d	�¦  «        Zd
ZdZ ed¦  «        dz  fZ ed¦  «        dz   ed¦  «        dz   ed¦  «        dz   ed¦  «        dz   ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «        fZ e
d¬¦  «         G d„ d¦  «        ¦   «         Ze
 G d „ d!¦  «        ¦   «         ZdYd&„Zddd'œdZd0„Zddd'œdZd1„Zddd'œd[d6„Zdd7œd\d8„Z dd7œd\d9„Z!d]d=„Z"dd>œd^d@„Z#d_dA„Z$dd7œd`dC„Z%dadF„Z&dbdH„Z'dbdI„Z(dcdK„Z)dddM„Z*dedO„Z+dfdgdR„Z,dhdT„Z-didV„Z.djdW„Z/djdX„Z0dS )ké    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)Ú	AwaitableÚCallable)Úestimate_tokens_roughz$(?:`[^`\n]+`|"[^"\n]+"|\'[^\'\n]+\')zP(?<![\w/])@(?:(?P<simple>diff|staged)\b|(?P<kind>file|folder|git|url):(?P<value>z(?::\d+(?:-\d+)?)?|\S+))z,.;!?)ú.sshz.awsz.gnupgz.kubez.dockerz.azurez
.config/ghÚskillsz.hubr
   Úauthorized_keysÚid_rsaÚ
id_ed25519Úconfigz.bashrcz.zshrcz.profilez.bash_profilez	.zprofilez.netrcz.pgpassz.npmrcz.pypircT)Úfrozenc                  ó^   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dZd	ed
<   dZd	ed<   dS )ÚContextReferenceÚstrÚrawÚkindÚtargetÚintÚstartÚendNz
int | NoneÚ
line_startÚline_end)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   © ó    ú:/home/div/.hermes/hermes-agent/agent/context_references.pyr   r   (   sa   € € € € € € à€H€H�HØ€I€I�IØ€K€K�KØ€J€J�JØ€H€H�HØ!€JÐ!Ð!Ð!Ñ!Ø€HÐÐÐÑÐÐr!   r   c                  ó’   — e Zd ZU ded<   ded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<   d	Zd
ed<   dZ	ded<   dZ
ded<   dS )ÚContextReferenceResultr   ÚmessageÚoriginal_message)Údefault_factoryúlist[ContextReference]Ú
referencesú	list[str]Úwarningsr   r   Úinjected_tokensFÚboolÚexpandedÚblockedN)r   r   r   r   r   Úlistr)   r+   r,   r.   r/   r    r!   r"   r$   r$   3   s–   € € € € € € à€L€L�LØÐÐÑØ).¨¸tÐ)DÑ)DÔ)D€JÐDÐDÐDÑDØ˜%°Ð5Ñ5Ô5€HÐ5Ð5Ð5Ñ5Ø€OÐÐÐÑØ€HÐÐÐÑØ€GÐÐÐÑÐÐr!   r$   r%   r   Úreturnr(   c                óÆ  — g }| s|S t                                | ¦  «        D �]>}|                     d¦  «        }|r_|                     t	          |                     d¦  «        |d|                     ¦   «         |                     ¦   «         ¬¦  «        ¦  «         Œy|                     d¦  «        }t          |                     d¦  «        pd¦  «        }d }d }t          |¦  «        }|dk    rt          |¦  «        \  }}}|                     t	          |                     d¦  «        |||                     ¦   «         |                     ¦   «         ||¬¦  «        ¦  «         �Œ@|S )	NÚsimpler   Ú )r   r   r   r   r   r   ÚvalueÚfile)r   r   r   r   r   r   r   )
ÚREFERENCE_PATTERNÚfinditerÚgroupÚappendr   r   r   Ú_strip_trailing_punctuationÚ_strip_reference_wrappersÚ_parse_file_reference_value)	r%   ÚrefsÚmatchr3   r   r5   r   r   r   s	            r"   Úparse_context_referencesr@   >   sf  € Ø#%€DØð Øˆå"×+Ò+¨GÑ4Ô4ð !
ñ !
ˆØ—’˜XÑ&Ô&ˆØð 
	Ø�KŠKÝ ØŸš A™œØØØŸ+š+™-œ-ØŸ	š	™œðñ ô ñô ð ð à�{Š{˜6Ñ"Ô"ˆÝ+¨E¯KªK¸Ñ,@Ô,@Ð,FÀBÑGÔGˆØˆ
ØˆÝ*¨5Ñ1Ô1ˆà�6Š>ˆ>Ý+FÀuÑ+MÔ+MÑ(ˆF�J à�ŠÝØ—K’K ‘N”NØØØ—k’k‘m”mØ—I’I‘K”KØ%Ø!ðñ ô ñ
	
ô 
	
ð 
	
ñ 
	
ð €Kr!   ©Úurl_fetcherÚallowed_rootÚcwdú
str | PathÚcontext_lengthr   rB   ú,Callable[[str], str | Awaitable[str]] | NonerC   ústr | Path | Nonec               óž  — t          | ||||¬¦  «        }	 t          j        ¦   «         }n# t          $ r d }Y nw xY w|r}|                     ¦   «         ridd l}|j                             d¬¦  «        5 }|                     t          j	        |¦  «         
                    ¦   «         cd d d ¦  «         S # 1 swxY w Y   t          j	        |¦  «        S )N)rD   rF   rB   rC   r   é   )Úmax_workers)Ú#preprocess_context_references_asyncÚasyncioÚget_running_loopÚRuntimeErrorÚ
is_runningÚconcurrent.futuresÚfuturesÚThreadPoolExecutorÚsubmitÚrunÚresult)	r%   rD   rF   rB   rC   ÚcoroÚloopÚ
concurrentÚpools	            r"   Úpreprocess_context_referencesr[   i   s%  € õ /ØØØ%ØØ!ðñ ô €DðÝÔ'Ñ)Ô)ˆˆøÝð ð ð Øˆˆˆðøøøàð ;�—’Ñ!Ô!ð ;Ø!Ð!Ð!Ð!ØÔ×2Ò2¸qÐ2ÑAÔAð 	;ÀTØ—;’;�wœ{¨DÑ1Ô1×8Ò8Ñ:Ô:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;åŒ;�tÑÔÐs   –* ª9¸9Á12B0Â0B4Â7B4c          
   ƒ  ó:  K  — t          | ¦  «        }|st          | | ¬¦  «        S t          |¦  «                             ¦   «                              ¦   «         }|�3t          |¦  «                             ¦   «                              ¦   «         n|}g }g }	d}
|D ]^}t          ||||¬¦  «        ƒ d {V —†\  }}|r|                     |¦  «         |r'|	                     |¦  «         |
t          |¦  «        z  }
Œ_t          dt          |dz  ¦  «        ¦  «        }t          dt          |dz  ¦  «        ¦  «        }|
|k    r2|                     d|
› d|› d	�¦  «         t          | | |||
d
d¬¦  «        S |
|k    r|                     d|
› d|› d	�¦  «         t          | |¦  «        }|}|r%|› d�d                     d„ |D ¦   «         ¦  «        z   }|	r|› d�d                     |	¦  «        z   }t          |                     ¦   «         | |||
t          |	p|¦  «        d
¬¦  «        S )N)r%   r&   r   rA   rJ   g      à?g      Ð?z@ context injection refused: z$ tokens exceeds the 50% hard limit (z).FT)r%   r&   r)   r+   r,   r.   r/   z@ context injection warning: z$ tokens exceeds the 25% soft limit (z

--- Context Warnings ---
Ú
c              3  ó    K  — | ]	}d |› �V — Œ
dS )ú- Nr    )Ú.0Úwarnings     r"   ú	<genexpr>z6preprocess_context_references_async.<locals>.<genexpr>¿   s)   è è € ÐDlÐDlÐX_À^È'À^À^ÐDlÐDlÐDlÐDlÐDlÐDlr!   z

--- Attached Context ---

z

)r@   r$   r   Ú
expanduserÚresolveÚ_expand_referencer:   r	   Úmaxr   Ú_remove_reference_tokensÚjoinÚstripr-   )r%   rD   rF   rB   rC   r>   Úcwd_pathÚallowed_root_pathr+   Úblocksr,   Úrefra   ÚblockÚ
hard_limitÚ
soft_limitÚstrippedÚfinals                     r"   rL   rL   „   sÅ  è è € õ $ GÑ,Ô,€DØð QÝ%¨gÈÐPÑPÔPÐPå�C‰yŒy×#Ò#Ñ%Ô%×-Ò-Ñ/Ô/€Hð 6BÐ5M�ˆ\ÑÔ×%Ò%Ñ'Ô'×/Ò/Ñ1Ô1Ð1ÐS[ð ð €HØ€FØ€Oàð <ð <ˆÝ0ØØØ#Ø*ð	 
ñ  
ô  
ð 
ð 
ð 
ð 
ð 
ð 
‰ˆ�ð ð 	%Ø�OŠO˜GÑ$Ô$Ð$Øð 	<Ø�MŠM˜%Ñ Ô Ð ØÕ4°UÑ;Ô;Ñ;ˆOøå�Q�˜N¨TÑ1Ñ2Ô2Ñ3Ô3€JÝ�Q�˜N¨TÑ1Ñ2Ô2Ñ3Ô3€JØ˜Ò#Ð#Ø�ŠØo¨OÐoÐoÐakÐoÐoÐoñ	
ô 	
ð 	
õ &ØØ$ØØØ+ØØð
ñ 
ô 
ð 	
ð ˜Ò#Ð#Ø�ŠØo¨OÐoÐoÐakÐoÐoÐoñ	
ô 	
ð 	
õ (¨°Ñ6Ô6€HØ€EØð mØÐ8Ð8Ð8¸4¿9º9ÐDlÐDlÐckÐDlÑDlÔDlÑ;lÔ;lÑlˆØð QØÐ:Ð:Ð:¸V¿[º[ÈÑ=PÔ=PÑPˆå!Ø—’‘”Ø ØØØ'Ý�fÐ( Ñ)Ô)Øðñ ô ð r!   rm   r   úPath | Noneútuple[str | None, str | None]c             ƒ  ó´  K  — 	 | j         dk    rt          | ||¬¦  «        S | j         dk    rt          | ||¬¦  «        S | j         dk    rt          | |dgd¦  «        S | j         dk    rt          | |ddgd¦  «        S | j         d	k    rNt	          d
t          t          | j        pd¦  «        d¦  «        ¦  «        }t          | |dd|› �dgd|› d�¦  «        S | j         dk    rIt          | j        |¬¦  «        ƒ d {V —†}|s| j	        › d�d fS d d| j	        › dt          |¦  «        › d|› �fS n%# t          $ r}| j	        › d|› �d fcY d }~S d }~ww xY w| j	        › d�d fS )Nr6   ©rC   ÚfolderÚdiffzgit diffÚstagedz--stagedzgit diff --stagedÚgitrJ   Ú1é
   ÚlogÚ-z-pz	git log -z -pÚurl©rB   z: no content extractedu   ðŸŒ� ú (ú	 tokens)
ú: z: unsupported reference type)r   Ú_expand_file_referenceÚ_expand_folder_referenceÚ_expand_git_referencerf   Úminr   r   Ú_fetch_url_contentr   r	   Ú	Exception)rm   rD   rB   rC   ÚcountÚcontentÚexcs          r"   re   re   Î   sæ  è è € ð)ØŒ8�vÒÐÝ)¨#¨sÀÐNÑNÔNÐNØŒ8�xÒÐÝ+¨C°À<ÐPÑPÔPÐPØŒ8�vÒÐÝ(¨¨c°F°8¸ZÑHÔHÐHØŒ8�xÒÐÝ(¨¨c°F¸JÐ3GÐI\Ñ]Ô]Ð]ØŒ8�uÒÐÝ˜�3�s 3¤:Ð#4°Ñ5Ô5°rÑ:Ô:Ñ;Ô;ˆEÝ(¨¨c°E¸;¸u¸;¸;ÈÐ3MÐOeÐ[`ÐOeÐOeÐOeÑfÔfÐfØŒ8�uÒÐÝ.¨s¬zÀ{ÐSÑSÔSÐSÐSÐSÐSÐSÐSˆGØð @Øœ'Ð9Ð9Ð9¸4Ð?Ð?ØÐ_ ¤Ð_Ð_Õ,AÀ'Ñ,JÔ,JÐ_Ð_ÐV]Ð_Ð_Ð_Ð_ð	 øõ
 ð )ð )ð )Ø”'Ð"Ð"˜SÐ"Ð" DÐ(Ð(Ð(Ð(Ð(Ð(Ð(øøøøð)øøøð ŒgÐ3Ð3Ð3°TÐ9Ð9s@   „D) ¡D) ¾D) ÁD) Á;AD) Ã4D) Ä	D) Ä)
EÄ3EÅ EÅErv   c          
     óŠ  — t          || j        |¬¦  «        }t          |¦  «         |                     ¦   «         s| j        › d�d fS |                     ¦   «         s| j        › d�d fS t          |¦  «        r| j        › d�d fS |                     d¬¦  «        }| j        �r| 	                    ¦   «         }t          | j        dz
  d¦  «        }t          | j        p| j        t          |¦  «        ¦  «        }d	                     |||…         ¦  «        }t          |¦  «        }| j        }	d d
|	› dt!          |¦  «        › d|› d	|› d�	fS )Nrv   z: file not foundz: path is not a filez : binary files are not supportedúutf-8©ÚencodingrJ   r   r]   u   ðŸ“„ r�   z tokens)
```ú
```)Ú_resolve_pathr   Ú_ensure_reference_path_allowedÚexistsr   Úis_fileÚ_is_binary_fileÚ	read_textr   Ú
splitlinesrf   r‡   r   Úlenrh   Ú_code_fence_languager	   )
rm   rD   rC   ÚpathÚtextÚlinesÚ	start_idxÚend_idxÚlangÚlabels
             r"   r„   r„   ì   sa  € õ ˜˜cœj°|ÐDÑDÔD€DÝ" 4Ñ(Ô(Ð(Ø�;Š;‰=Œ=ð 2Ø”'Ð+Ð+Ð+¨TÐ1Ð1Ø�<Š<‰>Œ>ð 6Ø”'Ð/Ð/Ð/°Ð5Ð5Ý�tÑÔð BØ”'Ð;Ð;Ð;¸TÐAÐAà�>Š> 7ˆ>Ñ+Ô+€DØ
„~Ð!Ø—’Ñ!Ô!ˆÝ˜œ¨Ñ*¨AÑ.Ô.ˆ	Ý�c”lÐ4 c¤nµc¸%±j´jÑAÔAˆØ�yŠy˜˜y¨Ð0Ô1Ñ2Ô2ˆå Ñ%Ô%€DØŒG€EØÐ_˜Ð_Ð_Õ"7¸Ñ"=Ô"=Ð_Ð_ÈDÐ_Ð_ÐTXÐ_Ð_Ð_Ð_Ð_r!   c               ó,  — t          || j        |¬¦  «        }t          |¦  «         |                     ¦   «         s| j        › d�d fS |                     ¦   «         s| j        › d�d fS t          ||¦  «        }d d| j        › dt          |¦  «        › d|› �fS )Nrv   z: folder not foundz: path is not a folderu   ðŸ“� r�   r‚   )r’   r   r“   r”   r   Úis_dirÚ_build_folder_listingr	   )rm   rD   rC   r›   Úlistings        r"   r…   r…     s²   € õ ˜˜cœj°|ÐDÑDÔD€DÝ" 4Ñ(Ô(Ð(Ø�;Š;‰=Œ=ð 4Ø”'Ð-Ð-Ð-¨tÐ3Ð3Ø�;Š;‰=Œ=ð 8Ø”'Ð1Ð1Ð1°4Ð7Ð7å# D¨#Ñ.Ô.€GØÐW˜œÐWÐWÕ$9¸'Ñ$BÔ$BÐWÐWÈgÐWÐWÐWÐWr!   Úargsr*   r¡   c                ó\  — 	 t          j        dg|¢|ddd¬¦  «        }n!# t           j        $ r | j        › d�d fcY S w xY w|j        dk    r+|j        pd                     ¦   «         pd}| j        › d	|› �d fS |j                             ¦   «         }|sd
}d d|› dt          |¦  «        › d|› d�fS )Nrz   Té   ©rD   Úcapture_outputrœ   Útimeoutz: git command timed out (30s)r   r4   zgit command failedrƒ   z(no output)u   ðŸ§¾ r�   z tokens)
```diff
r‘   )	Ú
subprocessrU   ÚTimeoutExpiredr   Ú
returncodeÚstderrri   Ústdoutr	   )rm   rD   r¦   r¡   rV   r¯   r‹   s          r"   r†   r†     s  € ð	?Ý”ØˆN�TˆNØØØØð
ñ 
ô 
ˆˆøõ Ô$ð ?ð ?ð ?Ø”'Ð8Ð8Ð8¸$Ð>Ð>Ð>Ð>ð?øøøàÔ˜AÒÐØ”-Ð% 2×,Ò,Ñ.Ô.ÐFÐ2FˆØ”'Ð%Ð%˜VÐ%Ð% tÐ+Ð+ØŒm×!Ò!Ñ#Ô#€GØð  ØˆØÐc˜ÐcÐcÕ"7¸Ñ"@Ô"@ÐcÐcÐU\ÐcÐcÐcÐcÐcs   ‚ Ÿ=¼=r€   r   c             ƒ  ó¬   K  — |pt           } || ¦  «        }t          j        |¦  «        r|ƒ d {V —†}t          |pd¦  «                             ¦   «         S )Nr4   )Ú_default_url_fetcherÚinspectÚisawaitabler   ri   )r   rB   Úfetcherr‹   s       r"   rˆ   rˆ   1  sb   è è € ð
 Ð1Õ1€GØˆg�c‰lŒl€GÝÔ˜7Ñ#Ô#ð  Ø�-�-�-�-�-�-ˆÝˆwˆ}˜"ÑÔ×#Ò#Ñ%Ô%Ð%r!   c              ƒ  óf  K  — ddl m}  || gdd¬¦  «        ƒ d {V —†}t          j        |¦  «        }|                     di ¦  «                             dg ¦  «        }|sdS |d         }t          |                     d	¦  «        p|                     d
¦  «        pd¦  «                             ¦   «         S )Nr   )Úweb_extract_toolÚmarkdownT)ÚformatÚuse_llm_processingÚdataÚ	documentsr4   r‹   Úraw_content)Útools.web_toolsr·   ÚjsonÚloadsÚgetr   ri   )r   r·   r   ÚpayloadÚdocsÚdocs         r"   r²   r²   =  sÅ   è è € Ø0Ð0Ð0Ð0Ð0Ð0à Ð  # ¨zÈdÐSÑSÔSÐ
SÐ
SÐ
SÐ
SÐ
SÐ
S€CÝŒj˜‰oŒo€GØ�;Š;�v˜rÑ"Ô"×&Ò& {°BÑ7Ô7€DØð ØˆrØ
ˆqŒ'€CÝˆs�wŠw�yÑ!Ô!ÐA S§W¢W¨]Ñ%;Ô%;ÐA¸rÑBÔB×HÒHÑJÔJÐJr!   r   c               ó.  — t          t          j                             |¦  «        ¦  «        }|                     ¦   «         s| |z  }|                     ¦   «         }|�9	 |                     |¦  «         n"# t          $ r}t          d¦  «        |‚d }~ww xY w|S )Nz%path is outside the allowed workspace)r   Úosr›   rc   Úis_absoluterd   Úrelative_toÚ
ValueError)rD   r   rC   r›   ÚresolvedrŒ   s         r"   r’   r’   I  s¥   € Ý•”×"Ò" 6Ñ*Ô*Ñ+Ô+€DØ×ÒÑÔð Ø�T‰zˆØ�|Š|‰~Œ~€HØÐð	OØ× Ò  Ñ.Ô.Ð.Ð.øÝð 	Oð 	Oð 	OÝÐDÑEÔEÈ3ÐNøøøøð	Oøøøà€Os   ÁA3 Á3
BÁ=BÂBr›   ÚNonec                ó,  ‡‡— ddl m} t          t          j                             d¦  «        ¦  «                             ¦   «         Š |¦   «                              ¦   «         Šˆfd„t          D ¦   «         }|                     ‰dz  ¦  «         ˆfd„t          D ¦   «         }| 
                    ˆfd„t          D ¦   «         ¦  «         | |v rt          d¦  «        ‚|D ]7}	 |                      |¦  «         n# t          $ r Y Œ%w xY wt          d	¦  «        ‚d S )
Nr   )Úget_hermes_homeÚ~c                ó   •— h | ]}‰|z  ’ŒS r    r    ©r`   ÚrelÚhomes     €r"   ú	<setcomp>z1_ensure_reference_path_allowed.<locals>.<setcomp>[  s   ø€ ÐAÐAÐA C�T˜C‘ZÐAÐAÐAr!   z.envc                ó   •— g | ]}‰|z  ‘ŒS r    r    rÐ   s     €r"   ú
<listcomp>z2_ensure_reference_path_allowed.<locals>.<listcomp>]  s   ø€ Ð?Ð?Ð? 3�D˜3‘JÐ?Ð?Ð?r!   c              3  ó"   •K  — | ]	}‰|z  V — Œ
d S ©Nr    )r`   rÑ   Úhermes_homes     €r"   rb   z1_ensure_reference_path_allowed.<locals>.<genexpr>^  s(   øè è € ÐLÐL¨c˜ cÑ)ÐLÐLÐLÐLÐLÐLr!   z:path is a sensitive credential file and cannot be attachedzMpath is a sensitive credential or internal Hermes path and cannot be attached)Úhermes_constantsrÍ   r   rÆ   r›   rc   rd   Ú_SENSITIVE_HOME_FILESÚaddÚ_SENSITIVE_HOME_DIRSÚextendÚ_SENSITIVE_HERMES_DIRSrÉ   rÈ   )r›   rÍ   Úblocked_exactÚblocked_dirsÚblocked_dirrØ   rÒ   s        @@r"   r“   r“   V  sQ  øø€ Ø0Ð0Ð0Ð0Ð0Ð0Ý•”×"Ò" 3Ñ'Ô'Ñ(Ô(×0Ò0Ñ2Ô2€DØ!�/Ñ#Ô#×+Ò+Ñ-Ô-€KàAÐAÐAÐAÕ+@ÐAÑAÔA€MØ×Ò�k FÑ*Ñ+Ô+Ð+Ø?Ð?Ð?Ð?Õ*>Ð?Ñ?Ô?€LØ×ÒÐLÐLÐLÐLÕ5KÐLÑLÔLÑLÔLÐLàˆ}ÐÐÝÐUÑVÔVÐVà#ð jð jˆð	Ø×Ò˜[Ñ)Ô)Ð)Ð)øÝð 	ð 	ð 	ØˆHð	øøøåÐhÑiÔiÐiðjð js   ÃC5Ã5
DÄDr5   c                óü   — |                       t          ¦  «        }|                     d¦  «        rL|d         }ddddœ|         }|                     |¦  «        |                     |¦  «        k    r|d d…         }Œ`	 |S )N)ú)Ú]Ú}éÿÿÿÿú(Ú[Ú{)ÚrstripÚTRAILING_PUNCTUATIONÚendswithrŠ   )r5   rq   ÚcloserÚopeners       r"   r;   r;   k  s‚   € Ø�|Š|Õ0Ñ1Ô1€HØ
×
Ò
˜OÑ
,Ô
,ð Ø˜"”ˆØ ¨3Ð/Ð/°Ô7ˆØ�>Š>˜&Ñ!Ô! H§N¢N°6Ñ$:Ô$:Ò:Ð:Ø   ”}ˆHØØØ€Or!   c                óx   — t          | ¦  «        dk    r&| d         | d         k    r| d         dv r
| dd…         S | S )Né   r   ræ   z`"'rJ   )r™   )r5   s    r"   r<   r<   w  sD   € Ý
ˆ5�z„z�Q‚€˜5 œ8 u¨R¤yÒ0Ð0°U¸1´XÀÐ5GÐ5GØ�Q�r�TŒ{ÐØ€Lr!   ú"tuple[str, int | None, int | None]c                ó,  — t          j        d| ¦  «        }|rf|                     d¦  «        }|                     d¦  «        }|                     d¦  «        |�t          |¦  «        nd |�t          |p|¦  «        nd fS t          j        d| ¦  «        }|rot          |                     d¦  «        ¦  «        }|                     d¦  «        |t          |                     d¦  «        p|                     d¦  «        ¦  «        fS t	          | ¦  «        d d fS )NzP^(?P<quote>`|"|\')(?P<path>.+?)(?P=quote)(?::(?P<start>\d+)(?:-(?P<end>\d+))?)?$r   r   r›   z0^(?P<path>.+?):(?P<start>\d+)(?:-(?P<end>\d+))?$)Úrer?   r9   r   r<   )r5   Úquoted_matchr   r   Úrange_matchs        r"   r=   r=   }  s)  € Ý”8Ø[Øñô €Lð ð 
Ø!×'Ò'¨Ñ0Ô0ˆ
Ø×%Ò% eÑ,Ô,ˆà×Ò˜vÑ&Ô&Ø)Ð5�C�
‰OŒOˆO¸4Ø+5Ð+A�C�Ð&˜JÑ'Ô'Ð'Àtð
ð 	
õ ”(ÐNÐPUÑVÔV€KØð 
Ý˜×*Ò*¨7Ñ3Ô3Ñ4Ô4ˆ
à×Ò˜fÑ%Ô%ØÝ�×!Ò! %Ñ(Ô(ÐF¨K×,=Ò,=¸gÑ,FÔ,FÑGÔGð
ð 	
õ % UÑ+Ô+¨T°4Ð7Ð7r!   r>   c                óJ  — g }d}|D ]+}|                      | ||j        …         ¦  «         |j        }Œ,|                      | |d …         ¦  «         d                     |¦  «        }t	          j        dd|¦  «        }t	          j        dd|¦  «        }|                     ¦   «         S )Nr   r4   z\s{2,}Ú z\s+([,.;:!?])z\1)r:   r   r   rh   ró   Úsubri   )r%   r>   ÚpiecesÚcursorrm   rœ   s         r"   rg   rg   —  s¡   € Ø€FØ€FØð ð ˆØ�Š�g˜f S¤YÐ.Ô/Ñ0Ô0Ð0Ø”ˆˆØ
‡M‚M�'˜&˜'˜'Ô"Ñ#Ô#Ð#Ø�7Š7�6‰?Œ?€DÝŒ6�)˜S $Ñ'Ô'€DÝŒ6Ð" E¨4Ñ0Ô0€DØ�:Š:‰<Œ<Ðr!   r-   c                óä   ‡ — t          j        ‰ j        ¦  «        \  }}|r2|                     d¦  «        st	          ˆ fd„dD ¦   «         ¦  «        sdS ‰                      ¦   «         d d…         }d|v S )Nztext/c              3  óL   •K  — | ]}‰j                              |¦  «        V — Œd S r×   )Únamerì   )r`   Úextr›   s     €r"   rb   z"_is_binary_file.<locals>.<genexpr>¦  sD   øè è € ð 9ð 9Ø$'ˆŒ	×Ò˜3ÑÔð9ð 9ð 9ð 9ð 9ð 9r!   )	ú.pyú.mdz.txtú.jsonú.yamlú.ymlú.tomlú.jsú.tsTi   ó    )Ú	mimetypesÚ
guess_typerý   Ú
startswithÚanyÚ
read_bytes)r›   ÚmimeÚ_Úchunks   `   r"   r–   r–   ¤  s•   ø€ ÝÔ" 4¤9Ñ-Ô-�G€Dˆ!Øð �D—O’O GÑ,Ô,ð µSð 9ð 9ð 9ð 9Ø+rð9ñ 9ô 9ñ 6ô 6ð ð ˆtØ�OŠOÑÔ˜e˜t˜eÔ$€EØ�eÐÐr!   éÈ   Úlimitc           
     ót  — |                       |¦  «        › d�g}t          | ||¬¦  «        }|D ]Î}|                      |¦  «        }dt          t          |j        ¦  «        t          |                       |¦  «        j        ¦  «        z
  dz
  d¦  «        z  }|                     ¦   «         r!|                     |› d|j        › d�¦  «         Œœt          |¦  «        }|                     |› d|j        › d|› d�¦  «         ŒÏt          |¦  «        |k    r|                     d	¦  «         d
 	                    |¦  «        S )Nú/©r  z  rJ   r   r_   r�   rã   z- ...r]   )
rÈ   Ú_iter_visible_entriesrf   r™   Úpartsr£   r:   rý   Ú_file_metadatarh   )	r›   rD   r  r�   ÚentriesÚentryrÑ   ÚindentÚmetas	            r"   r¤   r¤   ®  sB  € Ø× Ò  Ñ%Ô%Ð(Ð(Ð(Ð)€EÝ# D¨#°UÐ;Ñ;Ô;€GØð =ð =ˆØ×Ò Ñ$Ô$ˆØ��C ¤	™NœN­S°×1AÒ1AÀ#Ñ1FÔ1FÔ1LÑ-MÔ-MÑMÐPQÑQÐSTÑUÔUÑUˆØ�<Š<‰>Œ>ð 	=Ø�LŠL˜FÐ3Ð3 e¤jÐ3Ð3Ð3Ñ4Ô4Ð4Ð4å! %Ñ(Ô(ˆDØ�LŠL˜FÐ;Ð; e¤jÐ;Ð;°DÐ;Ð;Ð;Ñ<Ô<Ð<Ð<Ý
ˆ7�|„|�uÒÐØ�Š�WÑÔÐØ�9Š9�UÑÔÐr!   ú
list[Path]c                óø  — t          | ||¬¦  «        }|�–g }t          ¦   «         }|D ]g}||z  }|j        D ]C}||k    s||v s| |h|j        £vrŒ|                     |¦  «         |                     |¦  «         ŒD|                     |¦  «         Œht          d„ |D ¦   «         d„ ¬¦  «        S g }t          j        | ¦  «        D ]¸\  }	}
}t          d„ |
D ¦   «         ¦  «        |
d d …<   t          d„ |D ¦   «         ¦  «        }t          |	¦  «        }|
D ]3}|                     ||z  ¦  «         t          |¦  «        |k    r|c c S Œ4|D ]3}|                     ||z  ¦  «         t          |¦  «        |k    r|c c S Œ4Œ¹|S )Nr  c                ó:   — h | ]}|                      ¦   «         ¯|’ŒS r    )r”   )r`   Úps     r"   rÓ   z(_iter_visible_entries.<locals>.<setcomp>Ë  s%   € Ð7Ð7Ð7˜Q¨A¯HªH©J¬JÐ7�qÐ7Ð7Ð7r!   c                óJ   — |                       ¦   «          t          | ¦  «        fS r×   )r£   r   )r  s    r"   ú<lambda>z'_iter_visible_entries.<locals>.<lambda>Ë  s   € ÈAÏHÊHÉJÌJÈÕX[Ð\]ÑX^ÔX^ÐG_€ r!   )Úkeyc              3  óP   K  — | ]!}|                      d ¦  «        °|dk    ¯|V — Œ"dS )ú.Ú__pycache__N©r
  )r`   Úds     r"   rb   z(_iter_visible_entries.<locals>.<genexpr>Ï  s=   è è € ÐYÐY˜q°·²¸SÑ0AÔ0AÐYÀaÈ=ÒFXÐFX˜ÐFXÐFXÐFXÐFXÐYÐYr!   c              3  óD   K  — | ]}|                      d ¦  «        °|V — ŒdS )r$  Nr&  )r`   Úfs     r"   rb   z(_iter_visible_entries.<locals>.<genexpr>Ð  s3   è è € ÐAÐA˜Q¨q¯|ª|¸CÑ/@Ô/@ÐA�qÐAÐAÐAÐAÐAÐAr!   )
Ú	_rg_filesÚsetÚparentsrÛ   r:   ÚsortedrÆ   Úwalkr   r™   )r›   rD   r  Ú
rg_entriesÚoutputÚ	seen_dirsrÑ   ÚfullÚparentÚrootÚdirsÚfilesÚ	root_pathr'  r)  s                  r"   r  r  ¾  së  € Ý˜4 ¨EÐ2Ñ2Ô2€JØÐØˆÝ"™uœuˆ	Øð 	 ð 	 ˆCØ˜‘9ˆDØœ,ð &ð &�Ø˜S’=�= F¨iÐ$7Ð$7¸4ÈÐG`ÐQWÔQ_ÐG`Ð;`Ð;`ØØ—’˜fÑ%Ô%Ð%Ø—’˜fÑ%Ô%Ð%Ð%Ø�MŠM˜$ÑÔÐÐÝÐ7Ð7 &Ð7Ñ7Ô7Ð=_Ð=_Ð`Ñ`Ô`Ð`à€FÝœW T™]œ]ð ð Ñˆˆd�EÝÐYÐY DÐYÑYÔYÑYÔYˆˆQˆQˆQ‰ÝÐAÐA %ÐAÑAÔAÑAÔAˆÝ˜‘J”Jˆ	Øð 	ð 	ˆAØ�MŠM˜) a™-Ñ(Ô(Ð(Ý�6‰{Œ{˜eÒ#Ð#Ø�����ð $àð 	ð 	ˆAØ�MŠM˜) a™-Ñ(Ô(Ð(Ý�6‰{Œ{˜eÒ#Ð#Ø�����ð $ð	ð €Mr!   úlist[Path] | Nonec           	     ó8  — 	 t          j        ddt          |                      |¦  «        ¦  «        g|ddd¬¦  «        }n## t          t
          t           j        f$ r Y d S w xY w|j        dk    rd S d„ |j         	                    ¦   «         D ¦   «         }|d |…         S )NÚrgz--filesTr|   r©   r   c                óx   — g | ]7}|                      ¦   «         ¯t          |                      ¦   «         ¦  «        ‘Œ8S r    )ri   r   )r`   Úlines     r"   rÕ   z_rg_files.<locals>.<listcomp>ê  s5   € ÐWÐWÐW DÈ$Ï*Ê*É,Ì,ÐW�T�$—*’*‘,”,ÑÔÐWÐWÐWr!   )
r¬   rU   r   rÈ   ÚFileNotFoundErrorÚOSErrorr­   r®   r°   r˜   )r›   rD   r  rV   r6  s        r"   r*  r*  Ý  s»   € ð	Ý”Ø�9�c $×"2Ò"2°3Ñ"7Ô"7Ñ8Ô8Ð9ØØØØð
ñ 
ô 
ˆˆøõ �w­
Ô(AÐBð ð ð ØˆtˆtðøøøàÔ˜AÒÐØˆtØWÐW¨F¬M×,DÒ,DÑ,FÔ,FÐWÑWÔW€EØ��%�Œ=Ðs   ‚<? ¿AÁAc                ó  — t          | ¦  «        r|                      ¦   «         j        › d�S 	 |                      d¬¦  «                             d¦  «        dz   }n,# t
          $ r |                      ¦   «         j        › d�cY S w xY w|› d�S )Nz bytesrŽ   r�   r]   rJ   z lines)r–   ÚstatÚst_sizer—   rŠ   r‰   )r›   Ú
line_counts     r"   r  r  î  s£   € Ý�tÑÔð .Ø—)’)‘+”+Ô%Ð-Ð-Ð-Ð-ð.Ø—^’^¨W�^Ñ5Ô5×;Ò;¸DÑAÔAÀAÑEˆ
ˆ
øÝð .ð .ð .Ø—)’)‘+”+Ô%Ð-Ð-Ð-Ð-Ð-Ð-ð.øøøàÐ Ð Ð Ð s   ­,A Á&BÂBc                óx   — ddddddddd	d	d
dœ}|                      | j                             ¦   «         d¦  «        S )NÚpythonÚ
javascriptÚ
typescriptÚtsxÚjsxr¿   r¸   ÚbashÚyamlÚtoml)rÿ   r  r  z.tsxz.jsxr  r   z.shr  r  r  r4   )rÁ   ÚsuffixÚlower)r›   Úmappings     r"   rš   rš   ø  sS   € àØØØØØØØØØØðð €Gð �;Š;�t”{×(Ò(Ñ*Ô*¨BÑ/Ô/Ð/r!   )r%   r   r1   r(   )r%   r   rD   rE   rF   r   rB   rG   rC   rH   r1   r$   )
rm   r   rD   r   rB   rG   rC   rs   r1   rt   )rm   r   rD   r   rC   rs   r1   rt   )
rm   r   rD   r   r¦   r*   r¡   r   r1   rt   )r   r   rB   rG   r1   r   )r   r   r1   r   )rD   r   r   r   rC   rs   r1   r   )r›   r   r1   rË   )r5   r   r1   r   )r5   r   r1   rñ   )r%   r   r>   r(   r1   r   )r›   r   r1   r-   )r  )r›   r   rD   r   r  r   r1   r   )r›   r   rD   r   r  r   r1   r  )r›   r   rD   r   r  r   r1   r8  )r›   r   r1   r   )1Ú
__future__r   rM   r³   r¿   r  rÆ   ró   r¬   Údataclassesr   r   Úpathlibr   Útypingr   r   Úagent.model_metadatar	   Ú_QUOTED_REFERENCE_VALUEÚcompiler7   rë   rÜ   rÞ   rÚ   r   r$   r@   r[   rL   re   r„   r…   r†   rˆ   r²   r’   r“   r;   r<   r=   rg   r–   r¤   r  r*  r  rš   r    r!   r"   ú<module>rV     s‚  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à 6Ð 6Ð 6Ð 6Ð 6Ð 6àAÐ Ø�B”Jð JÐXoð  Jð  Jð  Jñô Ð ð Ð Ø]Ð Ø˜$˜x™.œ.¨6Ñ1Ð3Ð à€Dˆ�L„LÐ$Ñ$Ø€Dˆ�L„L�8ÑØ€Dˆ�L„L�<ÑØ€Dˆ�L„L�8ÑØ€Dˆ�O„OØ€Dˆ�N„NØ€DˆÑÔØ€DˆÑÔØ€DˆÑÔØ€Dˆ�N„NØ€Dˆ�O„OØ€Dˆ�N„NØ€Dˆ�O„OðÐ ð" €�$ÐÑÔð ð  ð  ð  ð  ñ  ô  ñ Ôð ð ðð ð ð ð ñ ô ñ „ðð(ð (ð (ð (ð` AEØ&*ðð ð ð ð ð ð@ AEØ&*ðGð Gð Gð Gð Gð Gð\ AEØ $ð:ð :ð :ð :ð :ð :ðD !%ð	`ð `ð `ð `ð `ð `ð> !%ð	Xð Xð Xð Xð Xð Xð"dð dð dð dð8 AEð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð	Kð 	Kð 	Kð 	Kð JNð 
ð 
ð 
ð 
ð 
ð 
ðjð jð jð jð*	ð 	ð 	ð 	ðð ð ð ð8ð 8ð 8ð 8ð4
ð 
ð 
ð 
ðð ð ð ðð ð ð ð ð ð ð ð ð>ð ð ð ð"!ð !ð !ð !ð0ð 0ð 0ð 0ð 0ð 0r!   