§
     ’ÞjmR  ã                  ó:  — 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	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ  ee¦  «                             ¦   «         j        dz  Zedz  Zed	z  Zd
ZdZdZdZ dZ! ej"        d¦  «        Z#h d£Z$ e
j%        ¦   «         Z&da'dddddœZ(h d£Z)h d£Z*dZ+dRd„Z,dSd„Z-dTd!„Z.dUdVd$„Z/dWd&„Z0dXd'„Z1dYd)„Z2dZd+„Z3d,d-œd[d1„Z4d\d3„Z5d]d7„Z6dd8œd^d=„Z7dd>œd_dA„Z8d`dadF„Z9ddGœdbdJ„Z:ddKœdcdM„Z;ddddKœdedP„Z<g dQ¢Z=dS )fé    )ÚannotationsN)ÚBytesIO)ÚPath)ÚAny)Ú DEEPY_LONG_TEXT_TOOLS_EXPERIMENTÚ_runtimeÚ
workspacesÚripgrepz15.2.0é    i ú  i   i  @ z$^\s*@file\(\s*"([^"\r\n]+)"\s*\)\s*$>   ÚlyricsÚpromptÚ
alt_promptÚaudio_promptÚmusic_captionÚnegative_promptÚvoice_descriptionF)z)ripgrep-15.2.0-x86_64-pc-windows-msvc.zipÚ@71b2fef860abe467217a538ff31de02f5258807c0129f771846f87bd029aafc5)z*ripgrep-15.2.0-aarch64-pc-windows-msvc.zipÚ@e4abca10c3a64ebea742667dd7009449d49403db5460dd6873e389fa2945360f)z/ripgrep-15.2.0-x86_64-unknown-linux-musl.tar.gzÚ@33e15bcf1624b25cdd2a55813a47a2f95dbe126268203e76aa6a585d1e7b149c)z0ripgrep-15.2.0-aarch64-unknown-linux-musl.tar.gzÚ@800b1e7206afe799dfb5a6901f23147cfaabe0e52210538100f61e86e1740915))ÚwindowsÚx86_64)r   Úaarch64)Úlinuxr   )r   r   >$   ú-Fú-Lú-Pú-Sú-Uú-cú-iú-lú-nú-oú-sú-wú-xú--crlfú--trimú--countú--pcre2ú--statsú--hiddenú--multilineú--no-ignoreú--smart-caseú--ignore-caseú--line-numberú--line-regexpú--no-messagesú--word-regexpú--count-matchesú--fixed-stringsú--no-ignore-vcsú--only-matchingú--case-sensitiveú--multiline-dotallú--files-with-matchesú--files-without-matchú--files>   ú--globú--sortú--typeú--iglobú--sortrú--engineú	--contextú	--replaceú	--threadsú
--encodingú
--type-notú--max-countú--max-depthú--max-filesizeú--after-contextú--before-contextú-Aú-Bú-Cú-Tú-eú-gú-jú-mú-rú-tú--regexp)
rT   rX   rR   rO   rP   rQ   rV   rU   rS   rW   ÚreturnÚboolc                ób   — t          | d uo| j        ot          pt          | dd¦  «        ¦  «        S )NÚprompt_read_onlyF)r[   Úwrite_enabledr   Úgetattr)Úpolicys    ú>C:\Users\johnn\OneDrive\Documents\AI\shared\deepy\long_text.pyÚlong_text_tools_activerb   F   s[   € Ý�˜dÐ"ð  Q vÔ';ð  QÕAað  BPÕelÐmsð  vHð  JOñ  fPô  fPñ  Rô  Rð  Ró    Ú
session_idÚstrc                óÌ   — t          j        ddt          | pd¦  «                             ¦   «         ¦  «                             d¦  «        }|st	          d¦  «        ‚|d d…         S )Nz[^A-Za-z0-9_-]+Ú_Ú z_-zDeepy chat session id is empty.é€   )ÚreÚsubre   ÚstripÚ
ValueError)rd   Ú
normalizeds     ra   Ú_session_namero   J   sd   € Ý”Ð*¨Cµ°ZÐ5EÀ2Ñ1FÔ1F×1LÒ1LÑ1NÔ1NÑOÔO×UÒUÐVZÑ[Ô[€JØð <ÝÐ:Ñ;Ô;Ð;Ø�d�s�dÔÐrc   ÚNonec                 ó  — t           5  t          r	 d d d ¦  «         d S t                               ¦   «         rt	          j        t          ¦  «         t                               dd¬¦  «         dad d d ¦  «         d S # 1 swxY w Y   d S )NT©ÚparentsÚexist_ok)Ú_RUNTIME_LOCKÚ_WORKSPACES_PURGEDÚ_WORKSPACES_ROOTÚexistsÚshutilÚrmtreeÚmkdir© rc   ra   Ú_purge_previous_workspacesr}   Q   så   € å	ð "ð "Ýð 	Øð"ð "ð "ñ "ô "ð "ð "ð "õ ×"Ò"Ñ$Ô$ð 	,ÝŒMÕ*Ñ+Ô+Ð+Ý×Ò t°dÐÑ;Ô;Ð;Ø!Ðð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   ˆ	A;žAA;Á;A?ÂA?Úworkspace_pathústr | os.PathLike[str] | Nonec                óî  — t          | ¦  «        s| S |€8t          ¦   «          t          t          |¦  «        z                       ¦   «         }n3t          |¦  «                             ¦   «                              ¦   «         }|                     dd¬¦  «         d„ | j        D ¦   «         }d}d}| 	                    ¦   «         |v r d|› �}|dz  }| 	                    ¦   «         |v ° |  
                    ||¦  «        S )NTrr   c                ó6   — h | ]}|                      ¦   «         ’ŒS r|   )Úcasefold)Ú.0Úaliass     ra   ú	<setcomp>z(add_session_workspace.<locals>.<setcomp>e   s"   € Ð9Ð9Ð9 ˆE�NŠNÑÔÐ9Ð9Ð9rc   Ú	documentsé   é   )rb   r}   rw   ro   Úresolver   Ú
expanduserr{   Úaliasesr‚   Ú	with_root)r`   rd   r~   Ú	workspaceÚusedr„   Úsuffixs          ra   Úadd_session_workspacer�   \   sý   € Ý! &Ñ)Ô)ð ØˆØÐÝ"Ñ$Ô$Ð$Ý%­°jÑ(AÔ(AÑA×JÒJÑLÔLˆ	ˆ	å˜Ñ(Ô(×3Ò3Ñ5Ô5×=Ò=Ñ?Ô?ˆ	Ø‡O‚O˜D¨4€OÑ0Ô0Ð0Ø9Ð9¨&¬.Ð9Ñ9Ô9€DØ€EØ€FØ
�.Š.Ñ
Ô
˜dÐ
"Ð
"Ø$˜FÐ$Ð$ˆØ�!‰ˆð �.Š.Ñ
Ô
˜dÐ
"Ð
"ð ×Ò˜I uÑ-Ô-Ð-rc   útuple[str, Path] | Nonec                ón   — | j         D ],\  }}t          j        d|t          j        ¬¦  «        r||fc S Œ-d S )Nzdocuments\d*)Úflags)Úmountsrj   Ú	fullmatchÚ
IGNORECASE)r`   r„   Úpaths      ra   Úworkspace_mountr˜   n   sL   € Ø”}ð ð ‰ˆˆtÝŒ<˜¨µb´mÐDÑDÔDð 	Ø˜$�;ÐÐÐð	àˆ4rc   c                ón   — t          | ¦  «        }t          | ¦  «        r|€dS d|d         › �}d|› d|› d�S )Nrh   ú@r   z2Experimental long-document tools are enabled. Use aÛ   as session working storage; it is saved and restored with the active Deepy session. Use rg(arguments) for bounded, read-only text search. Its syntax is rg options plus one pattern, then `--` and authorized @alias paths; omit paths to search the temporary workspace. Use append_text(file_path, text) to create a missing UTF-8 file or append exact literal text; include every intended newline and do not prefix lines with patch markers. Use edit(file_path, old_string, new_string, replace_all=false) for exact replacement. Search for enough local context that old_string occurs once, preserve its whitespace and line endings exactly, then search or read back the changed area. A generation prompt may be the exact reference `@file("zw/prompt.txt")`; WanGP snapshots the UTF-8 file into the queued task and preserves blank-line sliding-window boundaries.)r˜   rb   )r`   Úmountr�   s      ra   Úlong_text_system_instructionsrœ   u   si   € Ý˜FÑ#Ô#€EÝ! &Ñ)Ô)ð ¨U¨]ØˆrØ�E˜!”H��€Ið	G¸Yð 	Gð 	Gð DMð		Gð 	Gð 	Gðrc   útuple[str, str]c                 ó&  — t          j        ¦   «                              ¦   «                              ¦   «         } t          j        ¦   «                              ¦   «                              ¦   «         }| dk    rdn	| dk    rdn| } |dv rdn|dv rdn|}| |fS )Nr   r   >   Úamd64r   r   >   Úarm64r   r   )ÚplatformÚsystemrl   r‚   Úmachine)Úoperating_systemr£   s     ra   Ú_platform_keyr¥   ƒ   s¦   € Ý”Ñ(Ô(×.Ò.Ñ0Ô0×9Ò9Ñ;Ô;ÐÝÔÑ Ô ×&Ò&Ñ(Ô(×1Ò1Ñ3Ô3€GØ$4¸	Ò$AÐ$A�y�yÐRbÐfmÒRmÐRmÀwÀwð  tDÐØ!Ð%8Ð8Ð8ˆhˆhÈ7ÐVjÐKjÐKj¸i¸iÐpw€GØ˜WÐ$Ð$rc   r   c                 óF  ‡— t          ¦   «         } 	 t          |          \  }}n5# t          $ r(}t          d| d         › d| d         › d�¦  «        |‚d }~ww xY w| d         dk    rdndŠt          t
          z  | d         › d	| d         › �z  }|‰z  }t          5  |                     ¦   «         r|cd d d ¦  «         S d
t
          › d|› �}t          j	         
                    |ddi¬¦  «        }t          j	                             |d¬¦  «        5 }|                     d¦  «        }	d d d ¦  «         n# 1 swxY w Y   t          |	¦  «        dk    rt          d¦  «        ‚t          j        |	¦  «                             ¦   «         }
|
|k    rt          d|› d|
› d�¦  «        ‚|                     d¦  «        r—t%          j        t)          |	¦  «        ¦  «        5 }ˆfd„|                     ¦   «         D ¦   «         }t          |¦  «        dk    rt          d¦  «        ‚|                     |d         ¦  «        }d d d ¦  «         n# 1 swxY w Y   n½t-          j        t)          |	¦  «        d¬¦  «        5 }ˆfd„|                     ¦   «         D ¦   «         }t          |¦  «        dk    rt          d¦  «        ‚|                     |d         ¦  «        }|€t          d¦  «        ‚|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     dd¬¦  «         |d‰› dt7          j        ¦   «         j        › d�z  }|                     |¦  «         | d         d k    r|                     d!¦  «         tA          j!        ||¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S )"Nz.The Deepy ripgrep experiment does not support r   ú rˆ   ú.r   úrg.exeÚrgú-z8https://github.com/BurntSushi/ripgrep/releases/download/ú/z
User-AgentzWanGP-Deepy)Úheadersé<   ©Útimeouti  i   z6The ripgrep download exceeded the 32 MiB safety limit.z2The ripgrep archive checksum is invalid: expected z, got z.zipc                óŒ   •— g | ]@}t          |¦  «        j                             ¦   «         ‰                     ¦   «         k    ¯>|‘ŒAS r|   )r   Únamer‚   )rƒ   r²   Úexecutable_names     €ra   ú
<listcomp>z"ensure_ripgrep.<locals>.<listcomp>¢   sD   ø€ ÐzÐzÐz DÅÀdÁÄÄ×AYÒAYÑA[ÔA[Ð_n×_wÒ_wÑ_yÔ_yÒAyÐAy˜4ÐAyÐAyÐAyrc   z<The ripgrep archive does not contain exactly one executable.zr:gz)ÚfileobjÚmodec                óv   •— g | ]5}|                      ¦   «         ¯t          |j        ¦  «        j        ‰k    ¯3|‘Œ6S r|   )Úisfiler   r²   )rƒ   Úmemberr³   s     €ra   r´   z"ensure_ripgrep.<locals>.<listcomp>¨   se   ø€ ð  Fð  Fð  F fÀvÇ}Â}ÁÄð  FÕ[_Ð`fÔ`kÑ[lÔ[lÔ[qð  vEò  \Eð  \E˜6ð  \Eð  \Eð  \Erc   z.The ripgrep executable could not be extracted.Trr   ú.tmpr   ií  )"r¥   Ú_RIPGREP_ASSETSÚKeyErrorÚRuntimeErrorÚ_RIPGREP_ROOTÚ_RIPGREP_VERSIONru   Úis_fileÚurllibÚrequestÚRequestÚurlopenÚreadÚlenÚhashlibÚsha256Ú	hexdigestÚendswithÚzipfileÚZipFiler   ÚnamelistÚtarfileÚopenÚ
getmembersÚextractfiler{   ÚuuidÚuuid4ÚhexÚwrite_bytesÚchmodÚosÚreplace)ÚkeyÚ
asset_nameÚexpected_sha256ÚexcÚ
target_dirÚtargetÚurlrÂ   ÚresponseÚarchiveÚactual_sha256ÚbundleÚmembersÚ
executableÚ	extractedÚ	temporaryr³   s                   @ra   Úensure_ripgreprè   ‹   sô  ø€ Ý
‰/Œ/€CðiÝ&5°cÔ&:Ñ#ˆ
�O�OøÝð ið ið iÝÐ^ÈCÐPQÌFÐ^Ð^ÐUXÐYZÔU[Ð^Ð^Ð^Ñ_Ô_ÐehÐhøøøøðiøøøà"% a¤&¨IÒ"5Ð"5�h�h¸4€OÝÕ!1Ñ1°s¸1´vÐ4HÐ4HÀÀAÄÐ4HÐ4HÑH€JØ˜/Ñ)€FÝ	ð !ð !Ø�>Š>ÑÔð 	Øð!ð !ð !ð !ñ !ô !ð !ð !ð iÕIYÐhÐhÐ\fÐhÐhˆÝ”.×(Ò(¨°|À]Ð6SÐ(ÑTÔTˆÝŒ^×#Ò# G°RÐ#Ñ8Ô8ð 	:¸HØ—m’mÐ$8Ñ9Ô9ˆGð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:åˆw‰<Œ<Ð*Ò*Ð*ÝÐWÑXÔXÐXÝœ wÑ/Ô/×9Ò9Ñ;Ô;ˆØ˜OÒ+Ð+ÝÐ{ÐTcÐ{Ð{ÐkxÐ{Ð{Ð{Ñ|Ô|Ð|Ø×Ò˜vÑ&Ô&ð 	.Ý”¥¨Ñ!1Ô!1Ñ2Ô2ð 5°fØzÐzÐzÐz¨F¯OªOÑ,=Ô,=ÐzÑzÔz�Ý�w‘<”< 1Ò$Ð$Ý&Ð'eÑfÔfÐfØ#Ÿ[š[¨°¬Ñ4Ô4�
ð	5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øõ ”¥g¨gÑ&6Ô&6¸VÐDÑDÔDð .Èð Fð  Fð  Fð  F°×0AÒ0AÑ0CÔ0Cð  Fñ  Fô  F�Ý�w‘<”< 1Ò$Ð$Ý&Ð'eÑfÔfÐfØ"×.Ò.¨w°q¬zÑ:Ô:�	ØÐ$Ý&Ð'WÑXÔXÐXØ&Ÿ^š^Ñ-Ô-�
ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð 	×Ò °ÐÑ5Ô5Ð5ØÐ!M _Ð!MÐ!Mµt´z±|´|Ô7GÐ!MÐ!MÐ!MÑMˆ	Ø×Ò˜jÑ)Ô)Ð)ØˆqŒ6�WÒÐØ�OŠO˜EÑ"Ô"Ð"Ý
Œ
�9˜fÑ%Ô%Ð%ØðC!ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s�   ‘" ¢
A¬#AÁAÂNÂ9ANÄ
D,Ä NÄ,D0	Ä0NÄ3D0	Ä4BNÇAH;È/NÈ;H?	È?NÉH?	É'NÉ*BK9Ë-NË9K=	Ë=NÌ K=	ÌBNÎNÎNT)ÚexperimentalÚ	argumentsré   útuple[list[str], list[str]]c               óz  ‡— t          | pd¦  «                             ¦   «         }|st          d¦  «        ‚t          |¦  «        t          k    rt          dt          › d�¦  «        ‚	 t          j        |d¬¦  «        }n%# t          $ r}t          d|› �¦  «        |‚d }~ww xY w|r+|d                              ¦   «         d	v rt          d
¦  «        ‚d|v r|                     d¦  «        nt          |¦  «        }|d |…         |t          |¦  «        k     r||dz   d …         ng }}g g ddf\  }}	}
}|
t          |¦  «        k     �r¡||
         Š‰t          v r| 
                    ‰¦  «         |
dz  }
Œ@‰                     d¦  «        \  }}}|t          v r9|r7|st          d|› d�¦  «        ‚| 
                    ‰¦  «         ||dv z  }|
dz  }
Œ›‰t          v rV|
dz   t          |¦  «        k    rt          d‰› d�¦  «        ‚|                     ‰||
dz            f¦  «         |‰dv z  }|
dz  }
Œút          ˆfd„t          D ¦   «         d ¦  «        }|�%| 
                    ‰¦  «         ||dk    z  }|
dz  }
�ŒB‰                     d¦  «        r|rdnd}t          d|› d‰› �¦  «        ‚|	 
                    ‰¦  «         | 
                    ‰¦  «         |
dz  }
|
t          |¦  «        k     �°¡d|v }|s|rdnd}t          |	¦  «        |k    r6|s|dk    r|	st          d¦  «        ‚|dk    rdnd}t          d|› d�¦  «        ‚||fS ) Nrh   zrg arguments are empty.zrg arguments exceed z characters.T)ÚposixzUnable to parse rg arguments: r   >   rª   r©   z7Pass only rg arguments, without the rg executable name.ú--rˆ   ú=z
rg option z has an empty value.>   rS   rY   z requires a value.r‡   c              3  óR   •K  — | ]!}‰                      |¦  «        ¯‰|k    ¯|V — Œ"d S ©N)Ú
startswith)rƒ   ÚoptionÚtokens     €ra   ú	<genexpr>z&_parse_rg_arguments.<locals>.<genexpr>Ü   sS   øè è € ð   Að   A¨6ÐSX×ScÒScÐdjÑSkÔSkð   AÐpuÐyÒpÐp ÐpÐpÐpÐpð   Að   Arc   rS   r«   zthis experimentz	this toolzrg option is not enabled for z: r>   zäText search requires a pattern before -- (or patterns with -e). To list filenames without searching content, use --files, e.g. --files -g '*.txt' -- @outputs. -l lists files containing matching text and still requires a pattern.zno positional patternzexactly one positional patternzThis rg wrapper requires z/ before `--`; put every search path after `--`.)re   rl   rm   rÆ   Ú_MAX_RG_ARGUMENT_CHARSÚshlexÚsplitr‚   ÚindexÚ_RG_FLAG_OPTIONSÚappendÚ	partitionÚ_RG_VALUE_OPTIONSÚextendÚnextÚ_RG_ATTACHED_VALUE_OPTIONSrò   )rê   ré   ÚsourceÚtokensrÜ   Ú	separatorÚsearch_tokensÚpath_tokensÚcommandÚpositionalsrù   Úregexp_countró   Ú
has_equalsÚattachedÚattached_optionÚcontextÚ
files_modeÚexpected_positionalsÚexpectationrô   s                       @ra   Ú_parse_rg_argumentsr  ¸   sC  ø€ Ý��˜bÑ!Ô!×'Ò'Ñ)Ô)€FØð 4ÝÐ2Ñ3Ô3Ð3Ý
ˆ6�{„{Õ+Ò+Ð+ÝÐTÕ0FÐTÐTÐTÑUÔUÐUðJÝ”˜V¨4Ð0Ñ0Ô0ˆˆøÝð Jð Jð JÝÐ?¸#Ð?Ð?Ñ@Ô@ÀcÐIøøøøðJøøøàð T�&˜”)×$Ò$Ñ&Ô&Ð*:Ð:Ð:ÝÐRÑSÔSÐSØ&*¨f n n�—’˜TÑ"Ô"Ð"½#¸f¹+¼+€IØ!'¨
¨¨
Ô!3ÈyÕ[^Ð_eÑ[fÔ[fÒOfÐOf°V¸IÈ¹M¸N¸NÔ5KÐ5KÐln�;€MØ02°B¸¸1°Ñ-€Gˆ[˜% Ø
•#�mÑ$Ô$Ò
$Ñ
$Ø˜eÔ$ˆØÕ$Ð$Ð$Ø�NŠN˜5Ñ!Ô!Ð!Ø�Q‰JˆEØØ',§¢°sÑ';Ô';Ñ$ˆ�
˜HØÕ&Ð&Ð&¨:Ð&Øð LÝ Ð!J¨fÐ!JÐ!JÐ!JÑKÔKÐKØ�NŠN˜5Ñ!Ô!Ð!Ø˜FÐ&8Ð8Ñ8ˆLØ�Q‰JˆEØØÕ%Ð%Ð%Ø�q‰y�C Ñ.Ô.Ò.Ð.Ý Ð!G¨eÐ!GÐ!GÐ!GÑHÔHÐHØ�NŠN˜E =°¸±Ô#;Ð<Ñ=Ô=Ð=Ø˜EÐ%7Ð7Ñ7ˆLØ�Q‰JˆEØÝð   Að   Að   Að   AÕ5Oð   Añ   Aô   Að  CGñ  Hô  HˆØÐ&Ø�NŠN˜5Ñ!Ô!Ð!Ø˜O¨tÒ3Ñ3ˆLØ�Q‰JˆEÙØ×Ò˜CÑ Ô ð 	QØ+7ÐHÐ'Ð'¸[ˆGÝÐO¸WÐOÐOÈÐOÐOÑPÔPÐPØ×Ò˜5Ñ!Ô!Ð!Ø�Š�uÑÔÐØ�‰
ˆðA •#�mÑ$Ô$Ò
$Ñ
$ðB ˜gÐ%€JØ *ÐA¨lÐA˜1˜1ÀÐÝ
ˆ;ÑÔÐ/Ò/Ð/Øð 	EÐ 4¸Ò 9Ð 9À+Ð 9Ýð  Dñ  Eô  Eð  EØ1EÈÒ1JÐ1JÐ-Ð-ÐPpˆÝÐq°[ÐqÐqÐqÑrÔrÐrØ�KÐÐs   Á'A> Á>
B ÂBÂB údict[str, Any]c                ó\  ‡‡‡‡— t          | ¦  «        st          d¦  «        ‚t          |¦  «        \  }}|s,t          | ¦  «        }|€t	          d¦  «        ‚d|d         › �g}g }|D ]f}|                      |¦  «        }|                      |¦  «        s%t          d|                      |¦  «        › �¦  «        ‚|                     |¦  «         Œgt          t          ¦   «         ¦  «        ddg|¢d‘t          t          |¦  «        ¢}t          t          j        ¦  «        }	|	                     d	d ¦  «         t!          j        |t          |d                              ¦   «         r|d         n|d         j        ¦  «        t           j        t           j        |	d
¬¦  «        Šg dt-          j        ¦   «         cŠŠŠd"ˆˆˆˆfd„}
t-          j        |
dd¬¦  «        }|                     ¦   «          d
}	 ‰                     d¬¦  «        }nA# t           j        $ r/ d}‰                     ¦   «          ‰                     d¬¦  «        }Y nw xY w|                     d¬¦  «         d                     ‰¦  «                             dd¬¦  «        }‰                     ¦   «         r|dz  }n|r|dz  }‰                     ¦   «         rdn|rdn|dk    rdn	|dk    rdnd}||t          |pd ¦  «                              ¦   «         |‰                     ¦   «         tC          |¦  «        d!œ}|  "                    |¦  «        S )#NzEThe experimental rg tool requires Deepy read/write filesystem access.z-The Deepy temporary workspace is unavailable.rš   r   z0rg may search only configured read/write roots: z--no-configz--color=neverrî   ÚRIPGREP_CONFIG_PATHF)ÚcwdÚstdoutÚstderrÚenvÚshellrZ   rp   c                 óÊ  •— ‰j         €J ‚‰j                              d¦  «        x} r¼t          ‰z
  }|dk    r=‰                     | d |…         ¦  «         ‰t	          t          | ¦  «        |¦  «        z  Št          | ¦  «        |k    r>‰                     ¦   «          ‰                     ¦   «         €‰                     ¦   «          d S ‰j                              d¦  «        x} °ºd S d S )Nr   r   )	r  rÅ   Ú_MAX_RG_OUTPUT_CHARSrû   ÚminrÆ   ÚsetÚpollÚ	terminate)ÚchunkÚ	remainingÚchunksÚoutput_bytesÚprocessÚ	truncateds     €€€€ra   Úread_outputzrun_rg.<locals>.read_output  sì   ø€ àŒ~Ð)Ð)Ð)Ø”~×*Ò*¨4Ñ0Ô0Ð0ˆeð 		Ý,¨|Ñ;ˆIØ˜1Š}ˆ}Ø—’˜e J Y JÔ/Ñ0Ô0Ð0Ø¥¥C¨¡J¤J°	Ñ :Ô :Ñ:�Ý�5‰zŒz˜IÒ%Ð%Ø—’‘”�Ø—<’<‘>”>Ð)Ø×%Ò%Ñ'Ô'Ð'Ø�ð ”~×*Ò*¨4Ñ0Ô0Ð0ˆeð 		ð 		ð 		ð 		ð 		rc   Tzdeepy-rg-output)rÞ   Údaemonr²   é   r¯   é   rc   úutf-8rØ   )Úerrorsz
[rg output truncated]z'
[rg search timed out after 30 seconds]r$  ÚerrorÚdonerˆ   Ú
no_matchesrh   )ÚstatusÚ	exit_coderê   Úoutputr$  Úoutput_characters©rZ   rp   )#rb   ÚPermissionErrorr  r˜   r½   Úrequire_readÚ	can_writeÚvirtualize_pathrû   re   rè   ÚmapÚdictr×   ÚenvironÚpopÚ
subprocessÚPopenÚis_dirÚparentÚPIPEÚSTDOUTÚ	threadingÚEventÚThreadÚstartÚwaitÚTimeoutExpiredÚkillÚjoinÚdecodeÚis_setrl   rÆ   Úvirtualize_result)r`   rê   r  r  r›   Úresolved_pathsr—   ÚresolvedÚ
invocationÚenvironmentr%  ÚreaderÚ	timed_outÚreturn_coder0  r.  Úresultr!  r"  r#  r$  s                    @@@@ra   Úrun_rgrT  ò   sÐ  øøøø€ Ý! &Ñ)Ô)ð gÝÐeÑfÔfÐfÝ.¨yÑ9Ô9Ñ€Gˆ[Øð 'Ý Ñ'Ô'ˆØˆ=ÝÐNÑOÔOÐOØ%˜5 œ8�~�~Ð&ˆØ€NØð (ð (ˆØ×&Ò& tÑ,Ô,ˆØ×Ò Ñ)Ô)ð 	yÝ!Ð"wÐU[×UkÒUkÐltÑUuÔUuÐ"wÐ"wÑxÔxÐxØ×Ò˜hÑ'Ô'Ð'Ð'Ý•nÑ&Ô&Ñ'Ô'¨¸ÐsÈ'ÐsÐSWÐsÕZ]Õ^aÐcqÑZrÔZrÐs€JÝ•r”zÑ"Ô"€KØ‡O‚OÐ)¨4Ñ0Ô0Ð0ÝÔ˜z­sÈÐWXÔHY×H`ÒH`ÑHbÔHbð  4A°>À!Ô3DÐ3DÐhvÐwxÔhyô  iAñ  0Bô  0Bõ  KUô  KZõ  cmô  ctð  zEð  MRð  Sñ  Sô  S€GØ&(¨!­Y¬_Ñ->Ô->Ð#€FˆL˜)ðð ð ð ð ð ð ð ð õ Ô [¸ÐDUÐVÑVÔV€FØ
‡L‚L�N„N€NØ€Ið.Ø—l’l¨2�lÑ.Ô.ˆˆøÝÔ$ð .ð .ð .Øˆ	Ø�Š‰ŒˆØ—l’l¨1�lÑ-Ô-ˆˆˆð.øøøð ‡K‚K˜€KÑÔÐØ�XŠX�fÑÔ×$Ò$ W°YÐ$Ñ?Ô?€FØ×ÒÑÔð =ØÐ+Ñ+ˆˆØ	ð =ØÐ<Ñ<ˆØ%×,Ò,Ñ.Ô.ð  \ˆ[ˆ[¸yð  5\°G°GÐXcÐghÒXhÐXhÈfÈfð  Jð  NOò  Oð  OÐnzÐnzð  U\€FàØ Ý˜˜ bÑ)Ô)×/Ò/Ñ1Ô1ØØ×%Ò%Ñ'Ô'Ý  ™[œ[ðð €Fð ×#Ò# FÑ+Ô+Ð+s   Ç+H È;I È?I ÚdataÚbytesÚlabelc                ó®   — |                       d¦  «        rdnd}	 |                      |¦  «        |fS # t          $ r}t          |› d�¦  «        |‚d }~ww xY w)Ns   ï»¿z	utf-8-sigr)  z is not UTF-8 text.)rò   rI  ÚUnicodeDecodeErrorrm   )rU  rW  ÚencodingrÜ   s       ra   Ú_decode_textr[  0  su   € Ø"Ÿošo¨oÑ>Ô>ÐKˆ{ˆ{ÀG€HðAØ�{Š{˜8Ñ$Ô$ hÐ.Ð.øÝð Að Að AÝ˜EÐ6Ð6Ð6Ñ7Ô7¸SÐ@øøøøðAøøøs   ›2 ²
A¼AÁA©Úallow_emptyÚvaluer   r²   r]  c               óä   — t          | t          ¦  «        st          |› d�¦  «        ‚| s|st          |› d�¦  «        ‚t	          | ¦  «        t
          k    rt          |› dt
          › d�¦  «        ‚| S )Nz must be a string.z
 is empty.z exceeds the z-character limit.)Ú
isinstancere   Ú	TypeErrorrm   rÆ   Ú_MAX_TEXT_EDIT_CHARS)r^  r²   r]  s      ra   Ú_text_argumentrc  8  sˆ   € Ý�e�SÑ!Ô!ð 5Ý˜4Ð3Ð3Ð3Ñ4Ô4Ð4Øð .˜ð .Ý˜DÐ,Ð,Ð,Ñ-Ô-Ð-Ý
ˆ5�z„zÕ(Ò(Ð(Ý˜DÐVÐVÕ/CÐVÐVÐVÑWÔWÐWØ€Lrc   ©Úcreate_onlyrÞ   re  c               ó~  — | j                              dd¬¦  «         | j         d| j        › dt          j        ¦   «         j        › d�z  }	 |                     |¦  «         |rt          j        || ¦  «         nt          j	        || ¦  «         | 
                    d¬¦  «         d S # | 
                    d¬¦  «         w xY w)NTrr   r¨   rº   )Ú
missing_ok)r>  r{   r²   rÒ   rÓ   rÔ   rÕ   r×   ÚlinkrØ   Úunlink)rÞ   rU  re  rç   s       ra   Ú_atomic_writerj  B  sÊ   € Ø
„M×Ò ¨tÐÑ4Ô4Ð4Ø”Ð H F¤KÐ HÐ Hµ$´*±,´,Ô2BÐ HÐ HÐ HÑH€Ið*Ø×Ò˜dÑ#Ô#Ð#Øð 	*ÝŒG�I˜vÑ&Ô&Ð&Ð&åŒJ�y &Ñ)Ô)Ð)à×Ò DÐÑ)Ô)Ð)Ð)Ð)øˆ	×Ò DÐÑ)Ô)Ð)Ð)øøøs   Á
AB$ Â$B<Ú	file_pathÚ
old_stringÚ
new_stringÚreplace_allc                óæ  — t          | ¦  «        st          d¦  «        ‚t          |d¦  «        }t          |dd¬¦  «        }||k    rt          d¦  «        ‚t          5  |                      |d¬¦  «        }|                      |¦  «         t          |                     ¦   «         |  	                    |¦  «        ¦  «        \  }}d|v r)d	| 
                    dd
¦  «        vrd„ ||fD ¦   «         \  }}|                     |¦  «        }|dk    rt          d¦  «        ‚|dk    r|st          d|› d�¦  «        ‚|r|nd}	| 
                    |||rdnd¦  «        }
|
                     |¦  «        }t          |||                      |¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   dd|  	                    |¦  «        |	t          |¦  «        t!          j        |¦  «                             ¦   «         dœS )NzGThe experimental edit tool requires Deepy read/write filesystem access.rl  rm  Tr\  z(old_string and new_string are identical.©Úfileú
ú
rh   c              3  ój   K  — | ].}|                      d d¦  «                              dd ¦  «        V — Œ/dS )rr  rs  N)rØ   )rƒ   r^  s     ra   rõ   zedit_text.<locals>.<genexpr>[  sB   è è € Ð%~Ð%~Ð\a e§m¢m°F¸DÑ&AÔ&A×&IÒ&IÈ$ÐPVÑ&WÔ&WÐ%~Ð%~Ð%~Ð%~Ð%~Ð%~rc   r   zeold_string was not found exactly in the target file. Use rg and preserve whitespace and line endings.rˆ   zold_string occurs zA times; include more surrounding context or set replace_all=true.éÿÿÿÿrd  r,  Úedit)r.  Úactionr—   ÚreplacementsÚ
size_bytesrÈ   )rb   r3  rc  rm   ru   r4  Úrequire_writer[  Ú
read_bytesr6  rØ   ÚcountÚencoderj  re  rÆ   rÇ   rÈ   rÉ   )r`   rk  rl  rm  rn  rÞ   ÚoriginalrZ  Úoccurrencesrx  ÚupdatedrU  s               ra   Ú	edit_textr�  O  sÇ  € Ý! &Ñ)Ô)ð iÝÐgÑhÔhÐhÝ 
¨LÑ9Ô9€JÝ 
¨LÀdÐKÑKÔK€JØ�ZÒÐÝÐCÑDÔDÐDÝ	ð Lð LØ×$Ò$ Y°TÐ$Ñ:Ô:ˆØ×Ò˜VÑ$Ô$Ð$Ý)¨&×*;Ò*;Ñ*=Ô*=¸v×?UÒ?UÐV\Ñ?]Ô?]Ñ^Ô^Ñˆ�(Ø�XÐÐ $¨h×.>Ò.>¸vÀrÑ.JÔ.JÐ"JÐ"JØ%~Ð%~ÐfpÐr|Ðe}Ð%~Ñ%~Ô%~Ñ"ˆJ˜
Ø—n’n ZÑ0Ô0ˆØ˜!ÒÐÝð  Eñ  Fô  Fð  FØ˜Š?ˆ? ;ˆ?Ýð  A°+ð  Að  Að  Añ  Bô  Bð  BØ&1Ð8�{�{°qˆØ×"Ò" :¨zÀÐ;S¸2¸2ÐRSÑTÔTˆØ�~Š~˜hÑ'Ô'ˆÝ�f˜d°×0BÒ0BÀ6Ñ0JÔ0JÐKÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð ¨¸×8NÒ8NÈvÑ8VÔ8VÐhtõ  EHð  IMñ  ENô  ENõ  Zaô  Zhð  imñ  Znô  Zn÷  Zxò  Zxñ  Zzô  Zzð  {ð  {ð  {s   ÁD2FÆFÆ"F)Úinclude_structureÚtextr‚  c          	     óŒ  ‡‡— t          | ¦  «        st          d¦  «        ‚t          |d¦  «        }t          5  |                      |¦  «        }|                     ¦   «          }|r"d\  Š}|j                             dd¬¦  «         nO|                      |d¬¦  «        }t          | 
                    ¦   «         |                      |¦  «        ¦  «        \  Š}‰|z                        |¦  «        }t          |||                      |¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d|rd	nd
|                      |¦  «        |t          |¦  «        t          |¦  «        t!          j        |¦  «                             ¦   «         dœ}d}	|r·t'          j        |	|t&          j        ¦  «        r—t-          t'          j        |	‰|z   t&          j        ¦  «        ¦  «        }
|
r|
d                              ¦   «         nd Št3          ˆfd„|
D ¦   «         ¦  «        t          |
¦  «        ‰t3          ˆfd„|
D ¦   «         ¦  «        dœ|d<   |S )NzNThe experimental append_text tool requires Deepy read/write filesystem access.rƒ  )rh   r)  Trr   rp  rd  r,  Úcreaterû   )r.  rw  r—   ÚcreatedÚappended_charactersry  rÈ   z^#{1,6}[ \t]+\S[^\r\n]*ru  c              3  ób   •K  — | ])}|                      ¦   «         t          ‰¦  «        k    V — Œ*d S rñ   )rD  rÆ   )rƒ   Úmatchr~  s     €ra   rõ   zappend_text.<locals>.<genexpr>|  s7   øè è € Ð4jÐ4jÐX]°U·[²[±]´]ÅcÈ(ÁmÄmÒ5SÐ4jÐ4jÐ4jÐ4jÐ4jÐ4jrc   c              3  óH   •K  — | ]}|                      ¦   «         ‰k    V — Œd S rñ   )Úgroup)rƒ   r‰  Úlast_headings     €ra   rõ   zappend_text.<locals>.<genexpr>|  sw   øè è € ð  Jð  Jð  mrð  KP÷  KVò  KVñ  KXô  KXð  \hò  Khð  Jð  Jð  Jð  Jð  Jð  Jrc   )Úheadings_addedÚheading_countrŒ  Úlast_heading_occurrencesÚ	structure)rb   r3  rc  ru   rz  rx   r>  r{   r4  r[  r{  r6  r}  rj  re  rÆ   rÇ   rÈ   rÉ   rj   ÚsearchÚ	MULTILINEÚlistÚfinditerr‹  Úsum)r`   rk  rƒ  r‚  rÞ   r†  rZ  rU  rS  Úheading_patternÚheadingsrŒ  r~  s              @@ra   Úappend_textr˜  h  s1  øø€ Ý! &Ñ)Ô)ð pÝÐnÑoÔoÐoÝ˜$ Ñ'Ô'€DÝ	ð 
Lð 
LØ×%Ò% iÑ0Ô0ˆØ—m’m‘o”oÐ%ˆØð 	cØ!,ÑˆH�hØŒM×Ò¨°tÐÑ<Ô<Ð<Ð<à×(Ò(¨°dÐ(Ñ;Ô;ˆFÝ!-¨f×.?Ò.?Ñ.AÔ.AÀ6×CYÒCYÐZ`ÑCaÔCaÑ!bÔ!bÑˆH�hØ˜4‘×'Ò'¨Ñ1Ô1ˆÝ�f˜d°×0BÒ0BÀ6Ñ0JÔ0JÐKÑKÔKÐKð
Lð 
Lð 
Lñ 
Lô 
Lð 
Lð 
Lð 
Lð 
Lð 
Lð 
Løøøð 
Lð 
Lð 
Lð 
Lð °gÐ*K¨(¨(À8ÐU[×UkÒUkÐlrÑUsÔUsð  AHõ  adð  eiñ  ajô  ajõ  z}ð  ~Bñ  zCô  zCõ  OVô  O]ð  ^bñ  Ocô  Oc÷  Omò  Omñ  Ooô  Ooð  pð  p€FØ0€OØð @�RœY ¸½b¼lÑKÔKð @Ý�œ O°XÀ±_ÅbÄlÑSÔSÑTÔTˆØ/7ÐA�x ”|×)Ò)Ñ+Ô+Ð+¸TˆÝ14Ð4jÐ4jÐ4jÐ4jÐaiÐ4jÑ4jÔ4jÑ1jÔ1jõ  ~Að  BJñ  ~Kô  ~Kð  ]iõ  GJð  Jð  Jð  Jð  Jð  v~ð  Jñ  Jô  Jñ  Gô  Gð  @ð  @ˆˆ{ÑØ€Ms   ¸CDÄD#Ä&D#©Ú	read_onlyrš  c               ó  — t          | t          ¦  «        r|st          |¦  «        s| S t                               | ¦  «        }|€| S |                     |                     d¦  «        d¬¦  «        }|sKt          |dd¦  «        s:|                     |¦  «        s%t          d| 
                    |¦  «        › �¦  «        ‚|                     ¦   «         j        }|t          k    r-t          dt          › d| 
                    |¦  «        › �¦  «        ‚t          |                     ¦   «         | 
                    |¦  «        ¦  «        \  }}|                     ¦   «         s%t          d	| 
                    |¦  «        › �¦  «        ‚|S )
Nrˆ   Trp  r]   Fz:Prompt files must be inside a configured read/write root: zPrompt file exceeds the z-byte limit: zPrompt file is empty: )r`  re   rb   Ú_PROMPT_FILE_REr•   r4  r‹  r_   r5  r3  r6  ÚstatÚst_sizeÚ_MAX_PROMPT_FILE_BYTESrm   r[  r{  rl   )r^  r`   rš  r‰  rÞ   ÚsizeÚcontentÚ	_encodings           ra   Úresolve_prompt_filer£  €  s�  € Ý�e�SÑ!Ô!ð ¨)ð Õ7MÈfÑ7UÔ7Uð ØˆÝ×%Ò% eÑ,Ô,€EØ€}ØˆØ× Ò  §¢¨Q¡¤°dÐ Ñ;Ô;€FØð }� Ð);¸UÑCÔCð }ÈV×M]ÒM]Ð^dÑMeÔMeð }ÝÐ{Ð[a×[qÒ[qÐrxÑ[yÔ[yÐ{Ð{Ñ|Ô|Ð|Ø�;Š;‰=Œ=Ô €DØÕ$Ò$Ð$ÝÐyÕ4JÐyÐyÐY_×YoÒYoÐpvÑYwÔYwÐyÐyÑzÔzÐzÝ% f×&7Ò&7Ñ&9Ô&9¸6×;QÒ;QÐRXÑ;YÔ;YÑZÔZÑ€GˆYØ�=Š=‰?Œ?ð TÝÐR°&×2HÒ2HÈÑ2PÔ2PÐRÐRÑSÔSÐSØ€Nrc   rh   rÙ   c               óø   ‡‡‡— t          | t          ¦  «        rˆˆˆfd„| D ¦   «         S t          | t          ¦  «        r!ˆˆfd„|                      ¦   «         D ¦   «         S ‰t          v rt          | ‰‰¬¦  «        n| S )Nc                ó6   •— g | ]}t          |‰‰‰¬ ¦  «        ‘ŒS ©r™  )Úresolve_prompt_references)rƒ   ÚitemrÙ   r`   rš  s     €€€ra   r´   z-resolve_prompt_references.<locals>.<listcomp>”  s,   ø€ ÐdÐdÐdÐVZÕ)¨$°¸ÀyÐQÑQÔQÐdÐdÐdrc   c           
     ó|   •— i | ]8\  }}|t          |‰t          |¦  «                             ¦   «         ‰¬ ¦  «        “Œ9S r¦  )r§  re   r‚   )rƒ   Ú	child_keyÚchild_valuer`   rš  s      €€ra   ú
<dictcomp>z-resolve_prompt_references.<locals>.<dictcomp>–  se   ø€ ð  gð  gð  gñ  Uð  Hð  JU�	Õ4°[À&Í#ÈiÉ.Ì.×JaÒJaÑJcÔJcÐoxÐyÑyÔyð  gð  gð  grc   r™  )r`  r“  r8  ÚitemsÚ_PROMPT_FIELDSr£  )r^  r`   rÙ   rš  s    ```ra   r§  r§  ’  sË   øøø€ Ý�%�ÑÔð eØdÐdÐdÐdÐdÐdÐ^cÐdÑdÔdÐdÝ�%�ÑÔð gð gð  gð  gð  gð  gð  Y^÷  Ydò  Ydñ  Yfô  Yfð  gñ  gô  gð  	gØFIÍ^ÐF[ÐF[Õ˜u f¸	ÐBÑBÔBÐBÐafÐfrc   )
r�   r˜  r�  rè   rœ   rb   r£  r§  rT  r˜   )rZ   r[   )rd   re   rZ   re   r2  rñ   )rd   re   r~   r   )rZ   r‘   )rZ   re   )rZ   r�   )rZ   r   )rê   re   ré   r[   rZ   rë   )rê   re   rZ   r  )rU  rV  rW  re   rZ   r�   )r^  r   r²   re   r]  r[   rZ   re   )rÞ   r   rU  rV  re  r[   rZ   rp   )F)
rk  re   rl  re   rm  re   rn  r[   rZ   r  )rk  re   rƒ  re   r‚  r[   rZ   r  )r^  r   rš  r[   rZ   r   )rh   )r^  r   rÙ   re   rš  r[   rZ   r   )>Ú
__future__r   rÇ   r×   r¡   rj   r÷   ry   r;  rÎ   rA  Úurllib.requestrÁ   rÒ   rË   Úior   Úpathlibr   Útypingr   Úshared.deepy.configr   Ú__file__r‰   r>  Ú_RUNTIME_ROOTrw   r¾   r¿   rö   r  rb  rŸ  Úcompilerœ  r®  ÚRLockru   rv   r»   rú   rý   r   rb   ro   r}   r�   r˜   rœ   r¥   rè   r  rT  r[  rc  rj  r�  r˜  r£  r§  Ú__all__r|   rc   ra   ú<module>rº     sš  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à @Ð @Ð @Ð @Ð @Ð @ð ��X‘”×&Ò&Ñ(Ô(Ô/°*Ñ<€Ø  <Ñ/Ð Ø 	Ñ)€ØÐ ØÐ ØÐ Ø"Ð Ø(Ð Ø�"”*ÐDÑEÔE€Ø|Ð|Ð|€Ø�	”Ñ!Ô!€ØÐ ðððððð €ð&ð ð Ð ðð ð Ð ð
 ZÐ ðRð Rð Rð Rðð ð ð ð"ð "ð "ð "ð.ð .ð .ð .ð .ð$ð ð ð ðð ð ð ð%ð %ð %ð %ð*ð *ð *ð *ðZ AEð 7 ð 7 ð 7 ð 7 ð 7 ð 7 ðt;,ð ;,ð ;,ð ;,ð|Að Að Að Að BGð ð ð ð ð ð ð EJð 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð{ð {ð {ð {ð {ð2 QVð ð ð ð ð ð ð0 BGð ð ð ð ð ð ð$gÐV[ð gð gð gð gð gð gðð ð €€€rc   