+
    iHàj¸í  ã                    óÆ	  a € ER0 t¢0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHtHt ]P@                  ! ]!4      t"Rt#^t$^Pt%R R lt&R R lt'R R lt(R t)Rs*] ^ k RER1RER2RER3/t+RER4RER5/t,R R lt-R R lt.R R lt/]	 ! R R4      4       t0^ s1] ^k R s2] ^k R! R" lt3R# R$ lt4]Pj                  ! R%4      t6R& R' lt7R( R) lt8R* R+ lt9ER6R, R- llt:R. R/ lt;R0 R1 lt<R2 R3 lt=]	! R R47       ! R5 R64      4       t>0 ER7mt?0 ER8mt@R7 R8 ltAR9 R: ltBR; R< ltCR= R> ltDR? R@ ltERA RB ltFRC RD ltGRE RF ltHRG RH ltIRI RJ ltJRK RL ltKRM RN ltLRO RP ltMER9RQ RR lltN/ RSRTbRURVbRWRXbRYRZbR[RZbR\RZbR]R^bR_R`bRaRbbRcRdbReRfbRgRdbRhRibRjRkbRlRmbRnRobRpRqbRrRqRsRtRuRk/CtOER:tPRv Rw ltQRx Ry ltRRz R{ ltSR| R} ltTR~ R ltUR€ R� ltVR‚ Rƒ ltWR„ R… ltXR† R‡ ltYRˆ R‰ ltZRŠ R‹ lt[RŒ R� lt\Rr]RRs]SRŽ]TR�]URS]V! RT4      Rp]V! Rq4      RY]WR�]XR‘]YRj]ZR’][R“R” R•]\! R•4      R–]\! R–4      R—]\! R—4      /t]ER;R˜ R™ llt^Rš R› lt_Rœ R� lt`]a! 0 ER<m4      tb] ^k Rž RŸ ltc]a! RlR“04      td] ^k ]a! RUR]04      te] ^k ]a! 0 ER=m4      tf] ^k R  R¡ ltgR¢ R£ lthR¤ R¥ ltiER>R¦ R§ lltjR¨ R© ltkRª R« ltlR¬ R­ ltmER?R® R¯ lltnER;R° R± lltoR² R³ ltpR´ Rµ ltqR¶ R· ltrR¸ R¹ ltsER;Rº R» llttR¼R/R½ R¾ lltuR¿ RÀ ltvRÁ RÂ ltwRÃRRÄR/RÅ RÆ lltxRÇ RÈ ltyER@tzRÉ RÊ lt{RË RÌ lt|RÍ]$RÎ]%/RÏ RÐ llt}RÃRRÄRRÑR/RÒ RÓ llt~ ! RÔ RÕ4      t^0t€^Èt�RÖ R× lt‚RØ RÙ ltƒ]a! Ru04      t„RÚt…RÛ RÜ lt†RÝ RÞ lt‡Rß Rà ltˆRá Râ lt‰Rã Rä ltŠ ! Rå Ræ]‹4      tŒERARç Rè llt�Ré Rê ltŽER;RëRì/Rí Rî lllt�Rï Rð lt�Rñ Rò lt‘Ró Rô lt’Rõ Rö lt“R÷ Rø lt”Rù Rú lt•Rû Rü lt–Rý Rþ lt—Rÿ ER  lt˜ERERERERERERERER/t™ER	 ER
 ltš/ RUER bRW]�bRSER bRŽ]˜bRYER bR[ER bR\ER bR]ER bR_ER bERER bRaER bRcER bER]šbERER bERER bERER bERER bR�]‘R“ER R�]’RlER  Rj]“ReER! RgER" RhER# R‘ER$ Rn]”Rp]•Rr]–Rs]—/Ct›ER% ER& ltœ]Pj                  ! ER'4      t�ER( ER) ltžER* ER+ ltŸER;ER, ER- llt ER;ER. ER/ llt¡R# (B  z�CLI presentation -- spinner, kawaii faces, tool preview formatting.

Pure display functions with no AIAgent dependency; used for CLI feedback.
N)Ú	dataclassÚfieldÚreplace)Úunified_diff)ÚPath)ÚAnyÚIterator)Úurlsplit)Úsafe_json_loads)Út)Úredact_sensitive_text)Úshape_failure_errorÚfile_mutation_result_landedÚhas_failure_markerÚis_guardrail_refusalz[0mc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚvalueÚreturn©r   Ústr)Úformats   "Ú2/home/ubuntu/.hermes/hermes-agent/agent/display.pyÚ__annotate__r      s   € ÷ ;ñ ;œð ;¤ñ ;ó    c                óÖ   € \        V \        4      '       d+   V P                  R4      ;'       g    V P                  R4      MT p \        V \        4      '       d   V P	                  4       # R# )zAExtract a display-only URL without assuming model argument types.ÚurlÚhrefÚ )Ú
isinstanceÚdictÚgetr   Ústrip)r   s   &r   Ú_display_urlr#      sN   € ä7AÀ%Ì×7NÒ7NˆU�Y‰Y�uÓ×2Ð2 §¡¨6Ó!2øÐTY€EÜ& u¬c×2Ò2ˆ5�;‰;‹=Ð:¸Ð:r   c                ó>   € V ^8„  d   QhR\         R\         R,          /# )r   Ú	candidater   N©r   )r   s   "r   r   r   %   s"   € ÷ _ñ _œð _¤ t¥ñ _r   c                ó¨   €  \        V 4      pTP                  P                  4       R9   d   TP                  '       d   T # R#   \         d     R# i ; i)zC``candidate`` when it parses as an absolute http(s) URL, else None.N>   ÚhttpÚhttps)r	   Ú
ValueErrorÚschemeÚlowerÚnetloc)r%   Úparseds   & r   Ú	_http_urlr/   %   sP   € ðÜ˜)Ó$ˆð Ÿ™×+Ñ+Ó-Ð1BÔBÀvÇ}Ç}À}ˆ9Ð^ÐZ^Ð^øô ô Úðús   ‚A ÁAÁAc                ó\   € V ^8„  d   QhR\         R\        \        \        \        3,          /# )r   Úhr   )r   ÚtupleÚint)r   s   "r   r   r   .   s%   € ÷ =ñ =”ð =œœc¤3¬˜mÕ,ñ =r   c                 ór   € \        V R ,          ^4      \        V R,          ^4      \        V R,          ^4      3# ):é   é   N:r6   é   N:r7   é   N©r3   )r1   s   &r   Ú_hex_rgbr:   .   s-   € Üˆq��v�r‹?œC  #¥¨›O¬S°°3µ¸«_Ð<Ð<r   c                 óB   €  ^ RI Hp  V ! 4       #   \         d     R# i ; i)zIActive skin config, or None when unavailable (lazy import avoids cycles).©Úget_active_skinN)Úhermes_cli.skin_enginer=   Ú	Exceptionr<   s    r   Ú	_get_skinr@   2   s%   € ðÝ:ÙÓ Ð øÜô Úðús   ‚ ��ÚdimÚfileÚhunkÚminusÚplusc                óH   € V ^8„  d   QhR\         R\         R\         R\        /# )r   ÚrÚgÚbr   )r3   r   )r   s   "r   r   r   M   s(   € ÷ %ñ %Œ3ð %”3ð %œ3ð %¤3ñ %r   c                 ó   € R V  RV RV R2# )z[38;2;Ú;Úm© )rG   rH   rI   s   &&&r   Ú_fgrN   M   s   € Ø˜�s˜!˜A˜3˜a ˜s !Ð$Ð$r   c                óh   € V ^8„  d   QhR\         \        \        \        3,          R\        R\        /# )r   ÚrgbÚdominantr   )r2   r3   r   )r   s   "r   r   r   Q   s,   € ÷ 6ñ 6”Eœ#œs¤C˜-Õ(ð 6´Cð 6¼Cñ 6r   c                 óL   a€ V3R  l\        V 4       4       w  r#pRV RV RV R2# )c              3   ó‚   <"  € T F4  w  rVS8X  d   \        V^,          ^4      M\        V^,          ^
4      x € K6  	  R# 5i)r   N)Úmax)Ú.0ÚiÚvrQ   s   &  €r   Ú	<genexpr>Ú_tinted_bg.<locals>.<genexpr>R   s4   øé € Ð`ÑQ_ÉÈ ! x¤-Œs�1˜•6˜2Œ´S¸¸a½À³_ÔDÓQ_ùs   ƒ<?z[38;2;255;255;255;48;2;rK   rL   ©Ú	enumerate)rP   rQ   rG   rH   rI   s   &f   r   Ú
_tinted_bgr\   Q   s3   ø€ Ü`ÔQZÐ[^ÔQ_Ó`�G€Aˆ!Ø(¨¨¨1¨Q¨C¨q°°°1Ð5Ð5r   c                óF   € V ^8„  d   QhR\         \        \        3,          /# ©r   r   ©r    r   )r   s   "r   r   r   V   s   € ÷ ñ ”Dœœc˜•Nñ r   c                 ót  € \         e   \         # \        P                  4        U UUu/ uF  w  p w  rV \        V!  bK  	  uppp \        P                  4        U Uu/ uF  w  rW^,          bK  	  upp ,          p \        4       p\        P                  4        FV  w  pw  rxVP                  VR4      p	\        V	'       d*   \        V	4      ^8X  d   V	^ ,          R8X  d   \        V	4      MT!  WF&   KX  	  \        P                  4        UUU
Uu/ uF  w  pw  rz qVP                  Wz4      bK  	  pp
ppp\        P                  4        FE  w  pw   rpW¶,          p	V	'       g   K  \        V	4      ^8X  g   K.  \        \        V	4      V4      WF&   KG  	  Vs V# u uppp i u upp i u upp
ppi   \         d     Ts T# i ; i)zDReturn ANSI escapes for diff display, resolved from the active skin.r   Ú#)Ú_diff_colors_cachedÚ_DIFF_FGÚitemsrN   Ú_DIFF_BGr@   Ú	get_colorÚlenr:   r\   r?   )ÚkÚ_rP   rW   ÚcolorsÚskinÚkeyÚskin_keyÚfallbackr1   ÚdefaultÚbg_hexrQ   s                r   Ú
_diff_ansirq   V   s~  € ô Ò&Ü"Ð"Ü.6¯n©nÔ.>Õ?Ñ.>™{˜q¡( 1ˆa”�c‘ŠlÑ.>Ó?ÔW_×WeÑWeÔWgÔBhÑWgÉtÈqÀ1ÈÅdÂ7ÑWgÒBhÕh€FðÜ‹{ˆÜ)1¯©Ö)9Ñ%ˆCÑ%�(Ø—‘˜x¨Ó,ˆAÜ¯q´S¸³V¸q´[ÀQÀqÅTÈSÄ[¤¨¤ÐV^Ñ`ˆF‹Kñ *:ô `h×_mÑ_mÔ_oÖpÑ_oÑ=[¸SÑB[À8ÐVWÐYZ�t—~‘~ hÓ8Ò8Ñ_oˆÓpÜ(0¯©Ö(8Ñ$ˆCÑ$�!�Q !Ø•ˆAß‰q”S˜“V˜q–[Ü(¬°!«°hÓ?�“ñ )9ð !ÐØ€Mùô @ùÓBhùõ qøô
 ô ØØ ÐØ€Mðús<   §FÁFÁ9BF& Ä
!F
Ä+0F& Å F& Å2F& ÆF& Æ&F7Æ6F7c                   óT   a € ] tR t^lt o Rt]! ]R7      t]! ]R7      t	V 3R lt
RtV tR# )ÚLocalEditSnapshotzGPre-tool filesystem snapshot used to render diffs locally after writes.)Údefault_factoryc                óf   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[S[S[R,          3,          ;R&   # )r   ÚpathsNÚbefore)Úlistr   r    r   )r   Ú__classdict__s   "€r   r   ÚLocalEditSnapshot.__annotate__l   s0   ø‡ ‚ ñ ‘�:Ñ3ñ ñ ‘‘c˜D•j�Õ!Ñ?ò	 r   rM   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rx   rv   r    rw   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©ry   s   @r   rs   rs   l   s#   ø‡ € áQÙ¨dÔ3€EÙ$)¸$Ô$?€F÷	 ƒ r   rs   Tc                ó(   € V ^8„  d   QhR\         RR/# )r   Únr   Nr9   )r   s   "r   r   r   x   s   € ÷ 7ñ 7¤ð 7¨ñ 7r   c                óH   € V '       d   \        \        V 4      ^ 4      sR# ^ sR# )z?Set the global max length for tool call previews. 0 = no limit.N)rT   r3   Ú_tool_preview_max_len)r…   s   &r   Úset_tool_preview_max_lenrˆ   x   s   € ÷ /0œC¤ A£¨›NÒ°QÒr   c                ó$   € V ^8„  d   QhR\         /# r^   r9   )r   s   "r   r   r   ~   s   € ÷ !ñ !¤#ñ !r   c                 ó   € \         # )z9Return the configured max preview length (0 = unlimited).)r‡   rM   r   r   Úget_tool_preview_max_lenr‹   ~   s   € ä Ð r   z\\(.)c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   ÚargsÚmax_lenÚ
code_blockr   )r    r3   Úboolr   )r   s   "r   r   r   †   s(   € ÷ "ñ "¤ð "´ð "Äð "Ì#ñ "r   c                óê   € ^ RI pVP                  V R\        R7      pV^ 8”  d$   \        V4      V8”  d   VRV^,
           R,           pV'       d   RV9   d   V# \        P                  R V4      pRV R2# )	a_  Verbose tool-progress args: compact JSON (capped at ``max_len``; 0 = no cap). On markdown
platforms it goes in a code block so the formatter keeps it verbatim (``**x**``/``a_b`` are
otherwise rendered as markup), with JSON's ``\n``/``\t`` shown as real line breaks. Args
holding ``` stay plain: Slack and Discord end a code block at any ``` inside it.NF)Úensure_asciiro   ú...z```c                 ój   € R RRR/P                  V P                  ^4      V P                  ^ 4      4      # )r…   Ú
r   Ú	)r!   Úgroup)rL   s   &r   Ú<lambda>Ú(verbose_tool_args_text.<locals>.<lambda>‘   s/   € ¨S°$¸¸TÐ,B×,FÑ,FÀqÇwÁwÈqÃzÐST×SZÑSZÐ[\ÓS]Ô,^r   z```
z
```)ÚjsonÚdumpsr   rg   Ú_JSON_ESCAPE_REÚsub)r�   rŽ   r�   rš   ÚtextÚdecodeds   &&&   r   Úverbose_tool_args_textr    †   ss   € ó
 Ø�:‰:�d¨¼ˆ:Ó<€DØ�„{”s˜4“y 7Ô*Ø�L�W˜q•[Ð! EÕ)ˆß˜ $œØˆÜ×!Ñ!Ñ"^Ð`dÓe€GØ�7�)˜5Ð!Ð!r   c                ó(   € V ^8„  d   QhR\         RR/# )r   Úenabledr   N©r�   )r   s   "r   r   r   •   s   € ÷ *ñ *¤dð *¨tñ *r   c                ó   € \        V 4      sR# )zIToggle friendly human-phrased tool labels (display.friendly_tool_labels).N)r�   Ú_friendly_tool_labels)r¢   s   &r   Úset_friendly_tool_labelsr¦   •   s   € ô ! ›MÒr   c                ó$   € V ^8„  d   QhR\         /# r^   r&   )r   s   "r   r   r   ›   s   € ÷ /ñ /œcñ /r   c                 óB   € \        4       p V '       d   V P                  # R# )z2Get tool output prefix character from active skin.õ   â”Š)r@   Útool_prefix)rk   s    r   Úget_skin_tool_prefixr«   ›   s   € ä‹;€Dß#ˆ4×ÑÐ.¨Ð.r   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   Ú	tool_namero   r   r&   )r   s   "r   r   r   ¡   s!   € ÷ 
ñ 
œcð 
¬Cð 
¼Cñ 
r   c                ó  € \        4       pV'       d.   VP                  '       d   VP                  P                  V 4      MRpV'       d   V#  ^ RIHp VP                  V RR7      ;'       g    T#   \         d    Tu # i ; i)zWDisplay emoji for a tool: skin ``tool_emojis`` override, then registry, then *default*.N)Úregistryr   )ro   )r@   Útool_emojisr!   Útools.registryr¯   Ú	get_emojir?   )r­   ro   rk   Úoverrider¯   s   &&   r   Úget_tool_emojir´   ¡   sq   € ä‹;€Dß26¸4×;K×;KÐ;Kˆt×Ñ×#Ñ# IÔ.ÐQU€HßØˆðÝ+Ø×!Ñ! )°RÐ!Ó8×CÐC¸GÐCøÜô ØŠðús   ÁA0 Á-A0 Á0B Á?B c                ó0   € V ^8„  d   QhR\         R\         /# ©r   rž   r   r&   )r   s   "r   r   r   °   s   € ÷ "ñ "”3ð "œ3ñ "r   c                ó@   € RP                  V P                  4       4      # )z:Collapse whitespace (including newlines) to single spaces.Ú )ÚjoinÚsplit)rž   s   &r   Ú_oneliner»   °   s   € à�8‰8�D—J‘J“LÓ!Ð!r   c                óJ   € V ^8„  d   QhR\         R\        R,          R\         /# )r   rž   ÚlimitNr   ©r   r3   )r   s   "r   r   r   µ   s*   € ÷ Cñ C”cð C¤#¨¥*ð C´ñ Cr   c                óŠ   € V'       d   V^ 8:  g   \        V 4      V8:  d   V # V^8:  d
   RV,          # V RV^,
           R,           # )zåTail-truncate to ``limit`` chars with ``...`` (0/None = unlimited). The result never
exceeds ``limit``: for 1-3 the ellipsis itself is clipped (``text[:limit - 3]`` would go
negative and hand back almost the whole string, #9439).Ú.Nr“   ©rg   )rž   r½   s   &&r   Ú_tail_truncrÂ   µ   sB   € ÷ �E˜Q”J¤# d£)¨uÔ"4ØˆØ 1œ*ˆ3��;ÐB¨$¨z°¸µ	Ð*:¸UÕ*BÐBr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   rž   r…   r   r¾   )r   s   "r   r   r   ¾   s!   € ÷ 9ñ 9”ð 9œð 9¤ñ 9r   c                ó<   € V RV  \        V 4      V8”  d   R 2# R 2# )zD``text[:n]`` plus ``...`` when longer (used inside quoted previews).Nr“   r   rÁ   )rž   r…   s   &&r   Ú_cliprÅ   ¾   s-   € à�2�AˆhˆZ¤ T£¨Q¤˜Ð7Ð8Ð8°BÐ7Ð8Ð8r   )Úfrozenc                   ó8   a € ] tR t^Ãt o RtRtRtV 3R ltRtV t	R# )ÚToolPreviewzBA compact tool preview plus presentation facts lost to truncation.FNc                óL   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[ R,          ;R&   # )r   rž   Ú	truncatedNr   ©r   r�   )r   ry   s   "€r   r   ÚToolPreview.__annotate__Ã   s/   ø‡ ‚ ñ �Iñ	 ñ
 Ññ ñ 
ˆt�Ñò r   rM   )
r{   r|   r}   r~   r   rÊ   r   r€   r�   r‚   rƒ   s   @r   rÈ   rÈ   Ã   s   ø‡ € áLð €IØ€C÷ ƒ r   rÈ   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úheadr   r&   )r   s   "r   r   r   Ò   s   € ÷ 3ñ 3œ#ð 3¤#ñ 3r   c                 óH   € V '       d   V P                  R ^4      R,          # R# )Ú/r   éÿÿÿÿ)Úrsplit)rÎ   s   &r   Ú_shell_basenamerÓ   Ò   s   € ß&*ˆ4�;‰;�s˜AÓ˜rÕ"Ð2°Ð2r   c                ór   € V ^8„  d   QhR\         R\        \        \        \         \        3,          ,          /# r¶   )r   r   r2   r3   r�   )r   s   "r   r   r   Ö   s*   € ÷ ñ ”sð œx¬¬c´3¼¨nÕ(=Õ>ñ r   c              #  óÖ   "  € Rp\        V 4       FS  w  r#V'       d0   W#R3x € W18X  d"   V^ 8X  g   W^,
          ,          R8w  d   RpK8  K:  K<  VR9   d   TpW#R3x € KM  W#R3x € KU  	  R# 5i)zPYield ``(index, char, inside_quotes)``; a quote closes unless backslash-escaped.NTÚ\F>   Ú"Ú'rZ   )rž   ÚquoterV   Úchs   &   r   Ú_scan_quotedrÛ   Ö   sl   é € à€EÜ˜4–‰ˆßØ˜�+ÒØŒ{  Q¤¨$°1­u­+¸Ô*=Ø’ñ +>‰{à�:ÔØˆEØ˜�+Ôà˜�,Ôó !ùs   ‚A'A)c                óF   € V ^8„  d   QhR\         R\        \         ,          /# ©r   Úsegmentr   ©r   rx   )r   s   "r   r   r   å   s   € ÷ ,ñ ,¤ð ,¬¬S­	ñ ,r   c                 ó"  € . .p\        V 4       FO  w  r#pV'       g*   VP                  4       '       d   VP                  . 4       K7  VR,          P                  V4       KQ  	  V Uu. uF  qU'       g   K  RP                  V4      NK  	  up# u upi )r5   r   rÑ   )rÛ   ÚisspaceÚappendr¹   )rÞ   Úpartsri   rÚ   ÚquotedÚps   &     r   Ú_split_shell_wordsræ   å   sm   € Ø ˜T€EÜ% gÖ.‰ˆˆvß˜"Ÿ*™*Ÿ,š,Ø�L‰L˜Öà�"�I×Ñ˜RÖ ñ	 /ñ
 !&Ó+¡˜1«ŒJˆB�G‰G�AŽJ¡Ñ+Ð+ùÒ+s   Á&	BÁ4Bc                ó0   € V ^8„  d   QhR\         R\         /# rÝ   r&   )r   s   "r   r   r   ï   s   € ÷ #ñ #¤Cð #¬Cñ #r   c                ó  € \        V 4      p\        V4       FO  w  r#VR8X  g   K  \        V^,           \        V4      8  d   W^,           ,          MR4      \        9   g   KJ  VRV p M	  RP                  V4      P                  4       # )z@Drop a trailing ``| head/tail/wc/sort/uniq ...`` pipeline stage.Ú|r   Nr¸   )ræ   r[   rÓ   rg   Ú_SHELL_PIPE_TAIL_HEADSr¹   r"   )rÞ   ÚwordsrV   Úwords   &   r   Ú_strip_shell_pipe_tailrí   ï   sp   € ä˜wÓ'€EÜ˜UÖ#‰ˆØ�3Ž;œ?¸1¸q½5Ä3ÀuÃ:Ô;M¨5°Qµ®<ÐSUÓVÔZpÖpØ˜"˜1�IˆEÙñ $ð �8‰8�E‹?× Ñ Ó"Ð"r   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# ©r   Úcommandr   rß   )r   s   "r   r   r   ù   s   € ÷ &ñ &¤3ð &¬4´­9ñ &r   c                ó®  € . .pRp\        V 4       F™  w  r4pV'       d   RpK  V'       gF   V P                  RV4      '       g   V P                  RV4      '       d   VP                  . 4       RpK_  V'       g   VR9   d   VP                  . 4       K�  VR,          P                  V4       K›  	  R V 4       pV Uu. uF  qw'       g   K  VNK  	  up# u upi )zUSplit on unquoted ``&&`` / ``||`` / ``;`` / newline, dropping pipe tails per segment.Fz&&z||Tc              3   ór   "  € T F-  p\        R P                  V4      P                  4       4      x € K/  	  R# 5i)r   N)rí   r¹   r"   )rU   Úbufs   & r   rX   Ú(_split_shell_compound.<locals>.<genexpr>  s*   é € ÐLÉÀÔ& r§w¡w¨s£|×'9Ñ'9Ó';×<Ð<Ëùs   ‚57>   r•   rK   rÑ   )rÛ   Ú
startswithrâ   )rð   ÚrawÚskiprV   rÚ   rä   ÚsegmentsÚss   &       r   Ú_split_shell_compoundrú   ù   s¯   € à˜4€CØ€DÜ% gÖ.‰ˆˆvßØŠDß˜W×/Ñ/°°a×8Ò8¸G×<NÑ<NÈtÐUV×<WÒ<WØ�J‰J�rŒNØŠDß˜B +Ô-Ø�J‰J�rŽNà��G�N‰N˜2Öñ /ñ MÉÓL€HÙÓ%‘x�!£1�AˆA‘xÑ%Ð%ùÒ%s   Â;	CÃ	Cc                ó0   € V ^8„  d   QhR\         R\         /# rÝ   r&   )r   s   "r   r   r     s   € ÷ 6ñ 6œcð 6¤cñ 6r   c                óÖ   € \        V 4      pV'       d8   \        P                  ! RV^ ,          4      '       d   VP                  ^ 4       K?  \	        V'       d   V^ ,          4      # R4      # )zFCommand name of a segment, skipping leading ``VAR=value`` assignments.z^[A-Za-z_]\w*=r   )ræ   ÚreÚmatchÚpoprÓ   ©rÞ   rë   s   & r   Ú_shell_head_wordr    sH   € ä˜wÓ'€Eß
”B—H’HÐ.°°aµ×9Ò9Ø�	‰	�!ŽÜ§u˜5 �8Ó5Ð5°"Ó5Ð5r   c                ó0   € V ^8„  d   QhR\         R\         /# rÝ   r&   )r   s   "r   r   r     s   € ÷ !ñ !¤#ð !¬#ñ !r   c                óf  € \        V 4      p. p^ pV\        V4      8  du   W,          p\        P                  ! RV4      '       d   V^,          pK@  \        P                  ! RV4      '       d   V^,          pKh  VP	                  V4       V^,          pK„  RP                  V4      P                  4       # )z8Drop redirections (``> file``, ``2>&1``) from a segment.z^\d*(?:>>?|<)$z^\d*(?:>&|<&)\d+$r¸   )ræ   rg   rý   rþ   râ   r¹   r"   )rÞ   rë   ÚoutrV   rì   s   &    r   Ú_clean_shell_segmentr    sŠ   € ä˜wÓ'€EØ€CØ	€AØ
Œc�%‹jŒ.Ø�xˆÜ�8Š8Ð% t×,Ò,Ø��FŠAÜ�XŠXÐ*¨D×1Ò1Ø��FŠAà�J‰J�tÔØ��FŠAØ�8‰8�C‹=×ÑÓ Ð r   c                ó0   € V ^8„  d   QhR\         R\        /# rÝ   rË   )r   s   "r   r   r   $  s   € ÷ ]ñ ]¤Sð ]¬Tñ ]r   c           	      óÊ   € \        V 4      p\        V'       d
   V^ ,          MR4      R8w  d   R# \        \        P                  ! RRP                  VR,          4      4      4      # )é    r   ÚechoFz(-{2,}|_exit=|(?:^|\s|=)\$[?{]|PIPESTATUSr¸   ºr5   NN)ræ   rÓ   r�   rý   Úsearchr¹   r   s   & r   Ú_is_shell_boundary_echor  $  sK   € Ü˜wÓ'€EÜ§5�u˜Q–x¨bÓ1°VÔ;ÙÜ”—	’	ÐEÀsÇxÁxÐPUÐVXÕPYÓGZÓ[Ó\Ð\r   c                ó0   € V ^8„  d   QhR\         R\         /# rï   r&   )r   s   "r   r   r   +  s   € ÷ @ñ @¤Sð @¬Sñ @r   c                óø  € \        V 4      pV'       g   R# \        V4      p\        V4      ^8:  d'   \        V'       d
   V^ ,          MT4      ;'       g    T# . pV FR  p\        V4      pV'       g   K  \	        V4      \
        9  g   K.  \        V4      '       d   KA  VP                  V4       KT  	  V'       g   V# \        V4      ^,
          pV'       g
   V^ ,          # \        V^8X  d   RMRV^ ,          VR7      # )zRCompact shell wrapper/plumbing for display while preserving raw command elsewhere.r   zdisplay.preview.shell_plus_onezdisplay.preview.shell_plus_many)ÚfirstÚcount)	r»   rú   rg   r  r  Ú_SHELL_SILENT_HEADSr  râ   r   )rð   Úoriginalrø   ÚcorerÞ   Úcleanedr  s   &      r   Úsummarize_shell_commandr  +  sË   € ä˜Ó €HßÙÜ$ XÓ.€HÜ
ˆ8ƒ}˜ÔÜ#·8 H¨Q¦KÀÓJ×VÐVÈhÐVØ€DÛˆÜ& wÓ/ˆß‰7Ô'¨Ó0Ô8KÖKÔTkÐls×TtÔTtØ�K‰K˜Ö ñ ÷ ØˆÜ�‹I˜�M€EßØ�A�wˆÜ°¸!´Ñ-ÐAbÐjnÐopÕjqÐy~ÔÐr   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   r�   r   r_   )r   s   "r   r   r   @  s   € ÷ gñ g¤ð g¬ñ gr   c                 óð   € V P                  R 4      V P                  R4      r!\        V\        4      '       d   V^ 8:  d   R# \        V\        4      '       d   V^8”  d   RV RW,           ^,
           2# RV 2# )Úoffsetr½   r   ÚLÚ-)r!   r   r3   )r�   r  r½   s   &  r   Ú_read_file_line_labelr  @  sn   € Ø—H‘H˜XÓ&¨¯©°Ó(9ˆEÜ�fœc×"Ò" f°¤kÙÜ0:¸5Ä#×0FÒ0FÈ5ÐSTÌ9ˆQˆvˆh�a˜�¨Õ*Ð+Ð,ÐfÐ\]Ð^dÐ]eÐZfÐfr   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   r   Ú
typed_textr   )r   )r   s   "r   r   r   G  s!   € ÷ ñ ´ð Ä#ð Ì#ñ r   c           	     óJ  a€ Sf   RM
\        S4      pV'       d   \        VRR7      MTpW28X  d   V # \        V \         4      '       d   V P                  W#4      # \        V \        4      '       d0   V P                  4        UUu/ uF  w  rEV\        VS4      bK  	  upp# \        V \        4      '       d   V  Uu. uF  p\        VS4      NK  	  up# \        V \        4      '       d3   \        ;QJ d    . V3R lV  4       F  NK  	  5# ! V3R lV  4       4      # V # u uppi u upi )aH  Replace every occurrence of a secret-looking browser_type value with its redacted form.

Backends echo the attempted input in error strings/metadata, so it is swapped before
reaching logs, callbacks, the model, or chat history. Forced regardless of
``security.redact_secrets``: a leaked typed credential is a security boundary.
r   T©Úforcec              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5i©N)Ú%redact_browser_typed_text_for_display)rU   Úitemr  s   & €r   rX   Ú8redact_browser_typed_text_for_display.<locals>.<genexpr>Y  s   øé € Ð_ÑY^ÐQUÔ:¸4À×LÐLÓY^ùs   ƒ)	r   r   r   r   r    rd   r$  rx   r2   )r   r  ÚneedleÚredactedrl   r%  s   &f    r   r$  r$  G  sö   ø€ ð Ò%‰R¬3¨z«?€Fß<BÔ$ V°4Õ8È€HØÔØˆÜ�%œ×ÒØ�}‰}˜VÓ.Ð.Ü�%œ×ÒØ^c×^iÑ^iÔ^kÔlÑ^kÑQZÐQT�Ô:¸4ÀÓLÒLÑ^kÒlÐlÜ�%œ×ÒÙTYÓZÑTYÈDÔ5°d¸JÖGÑTYÑZÐZÜ�%œ×ÒßŒuÔ_ÑY^Ó_�uÐ_ˆuÔ_ÑY^Ó_Ó_Ð_Ø€Lùó mùâZs   ÂDÂ8D c                óX   € V ^8„  d   QhR\         R\        R,          R\        R,          /# ©r   r­   r�   Nr   ©r   r    )r   s   "r   r   r   ]  s)   € ÷ ñ ¬Cð ´t¸dµ{ð ÄtÈdÅ{ñ r   c                óÂ   € \        V\        4      '       g   V# V R8X  d@   \        VP                  R4      \        4      '       d   / VCR\	        VR,          RR7      /C# V# )zVReturn a copy of tool args safe for logs/progress UI (masks ``browser_type`` secrets).Úbrowser_typerž   Tr   )r   r    r!   r   r   ©r­   r�   s   &&r   Úredact_tool_args_for_displayr/  ]  sT   € ä�dœD×!Ò!ØˆØ�NÔ"¤z°$·(±(¸6Ó2BÄC×'HÒ'HØP�$ÐP˜Ô 5°d¸6µlÈ$Ô OÑPÐPØ€Kr   c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# )r   ÚtasksÚper_goal_lenr   )r   r3   rx   r   )r   s   "r   r   r   f  s*   € ÷ kñ k¤ð k´cð k¼dÄ3½iñ kr   c          
     óÊ   € \        V \        4      '       g   . # R V  4       pV Uu. uF1  p\        Vf   RM\        \	        V4      4      ;'       g    RV4      NK3  	  up# u upi )z=One truncated goal string per dict task (``?`` when missing).c              3   ót   "  € T F.  p\        V\        4      '       g   K  VP                  R 4      x € K0  	  R# 5i)ÚgoalN)r   r    r!   )rU   Útasks   & r   rX   Ú'_delegate_task_goals.<locals>.<genexpr>j  s(   é € ÐN©e d´zÀ$Ì×7MÔ!�—‘˜&×!Ð!«eùs   ‚8Ÿ8Ú?)r   rx   rÂ   r»   r   )r1  r2  Ú	raw_goalsrH   s   &$  r   Ú_delegate_task_goalsr:  f  sW   € ä�eœT×"Ò"Øˆ	ÙN©eÓN€IÙ`iÓjÑ`iÐ[\ŒK ¢	™¬x¼¸A»Ó/?×GÐGÀCÈÖVÑ`iÑjÐjùÒjs   ¦*A ÁA c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# )r   r�   Ú	max_charsr   N©r    r3   r   )r   s   "r   r   r   n  s*   € ÷ Oñ O¤4ð O´Cð OÄÀtÅñ Or   c                ó€  € \        V P                  RR4      ;'       g    R4      P                  4       P                  R^4      ^ ,          P                  4       pVP	                  R4      '       d    VP                  R4      P                  4       MRpV'       g   R# \        V4      V8”  d   VRV^,
           R,           # T# )zBUser-friendly step label from browser_exec code's leading comment.Úcoder   r•   ra   Nõ   â€¦)r   r!   r"   rº   rõ   Úlstriprg   )r�   r<  r  Úlabels   &&  r   Ú_browser_exec_step_labelrC  n  s˜   € ä�—‘˜ Ó$×*Ð*¨Ó+×1Ñ1Ó3×9Ñ9¸$ÀÓBÀ1ÕE×KÑKÓM€EØ).×)9Ñ)9¸#×)>Ò)>ˆE�L‰L˜Ó×#Ñ#Ô%ÀB€EßÙÜ-0°«Z¸)Ô-Cˆ5��9˜q•=Ð! EÕ)ÐNÈÐNr   Úterminalrð   Ú
web_searchÚqueryÚweb_extractÚurlsÚ	read_fileÚpathÚ
write_fileÚpatchÚsearch_filesÚpatternÚbrowser_navigater   Úbrowser_clickÚrefr-  rž   Úimage_generateÚpromptÚtext_to_speechÚvision_analyzeÚquestionÚ
skill_viewÚnameÚskills_listÚcategoryÚcronjob_manageÚactionÚexecute_coder?  Úbrowser_execÚdelegate_taskr5  Úskill_managec                ó>   € V ^8„  d   QhR\         R\        R,          /# )r   r�   r   Nr_   )r   s   "r   r   r   ‚  s   € ÷ ñ ¤4ð ¬C°$­Jñ r   c                ó  € \        V P                  R4      ;'       g    R4      P                  4       P                  4       pVR9   dF   T R\        V P                  R4      ;'       g    R4      P                  4        2P                  4       # R# )zSShared ``list/steer/stop <id>`` preview for delegate_task, or None for spawn calls.r\  r   r¸   Úsubagent_idN)rx   ÚsteerÚstop)r   r!   r"   r,   )r�   r\  s   & r   Ú_delegate_action_previewrf  ‚  su   € ä�—‘˜(Ó#×)Ð) rÓ*×0Ñ0Ó2×8Ñ8Ó:€FØÐ*Ô*Ø�˜œ3˜tŸx™x¨Ó6×<Ð<¸"Ó=×CÑCÓEÐFÐG×MÑMÓOÐOÙr   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# ©r   r�   rŽ   r   Nr=  )r   s   "r   r   r   Š  s*   € ÷ Sñ S¤ð S¬sð S´s¸Tµzñ Sr   c           
      óº   € \        V 4      pVe   \        W!4      # \        \        \        V P	                  RR4      ;'       g    R4      4      V4      ;'       g    R # )Nr?  r   )rC  rÂ   r»   r   r!   )r�   rŽ   rB  s   && r   Ú_preview_browser_execrj  Š  sO   € Ü$ TÓ*€EØÒÜ˜5Ó*Ð*Ü”x¤ D§H¡H¨V°RÓ$8×$>Ð$>¸BÓ ?Ó@À'ÓJ×RÐRÈdÐRr   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   r   ‘  s*   € ÷ Wñ W¤ð W´ð W¼¸d½
ñ Wr   c                 óÌ  € \        V 4      pV P                  R 4      pVe   \        W!4      # V'       ds   \        V\        4      '       d]   \        V^(R7      pV'       d'   \        R\        V4      RP                  V4      R7      M\        R\        V4      R7      p\        WQ4      # V P                  RR	4      pVf   R# \        \        \        V4      4      V4      ;'       g    R# )
r1  N©r2  zdisplay.preview.delegate_tasksú | )r  Úgoalsz'display.preview.delegate_parallel_tasks©r  r5  r   )rf  r!   rÂ   r   rx   r:  r   rg   r¹   r»   r   )r�   rŽ   Úaction_previewr1  ro  Úpreviewr5  s   &&     r   Ú_preview_delegate_taskrs  ‘  sº   € Ü-¨dÓ3€NØ�H‰H�WÓ€EØÒ!Ü˜>Ó3Ð3ß”˜E¤4×(Ò(Ü$ U¸Ô<ˆßej”1Ð5¼SÀ»ZÈuÏzÉzÐZ_ÓO`ÕaÜÐCÌ3ÈuË:ÔVð 	ä˜7Ó,Ð,Ø�8‰8�F˜BÓ€DØ’<ˆ4ÐV¤[´¼#¸d»)Ó1DÀgÓ%N×%VÐ%VÐRVÐVr   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# )r   r�   Ú_max_lenr   Nr=  )r   s   "r   r   r   Ÿ  s%   € ÷ 3ñ 3¤$ð 3´#ð 3¼#À½*ñ 3r   c                 óB  a € V 3R  lR
 4       w  r#rEV'       d   \        V4      MRV'       d   \        V4      R,          MRV'       d    R\        \        V4      R,          4       R2MRV'       d   VR8X  d   V R2MR.pRP                  R V 4       4      ;'       g    R	# )c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir#  )r!   ©rU   rh   r�   s   & €r   rX   Ú*_preview_process_manage.<locals>.<genexpr>   s   øé € Ð%gÑ;f°a d§h¡h¨q§k kÓ;fùs   ƒ!r   :Né   Nr×   ºNé   NÚwaitrù   r¸   c              3   ó8   "  € T F  q'       g   K  Vx € K  	  R # 5ir#  rM   )rU   rå   s   & r   rX   ry  £  s   é € Ð*™u˜!«—A’A›uùs   ‚	�
N)r\  Ú
session_idÚdataÚtimeout)r   r»   r¹   )r�   ru  r\  Úsidr€  Útimeout_valrã   s   f&     r   Ú_preview_process_manager„  Ÿ  s‡   ø€ Ü%gÑ;fÓ%gÑ"€F�ß"ŒS�Œ[¨¿S¬C°«H°S®MÀbß04ˆq”œ#˜d›) C�.Ó)Ð*¨!Ñ,¸"×S^ÐciÐmsÔcsÀÀÈQÑ>OÐy{ð}€Eà�8‰8Ñ*™uÓ*Ó*×2Ð2¨dÐ2r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r   r�   ru  r   r=  )r   s   "r   r   r   ¦  s&   € ÷ Hñ HœTð H¬Sð H´Sñ Hr   c                 óº   € V P                  R 4      p\        V P                  RR4      '       d   RMR4      pVf   \        R4      # \        RV\        V4      R7      # )ÚtodosÚmergeFz"display.preview.todo_verb_updatingz"display.preview.todo_verb_planningzdisplay.preview.todo_readingzdisplay.preview.todo_tasks)Úverbr  )r!   r   rg   )r�   ru  Ú	todos_argrŠ  s   &&  r   Ú_preview_todo_listrŒ  ¦  sh   € Ø—‘˜Ó!€IÜ°T·X±X¸gÀu×5MÒ5MÑ1ÐSwÓx€DØ09Ò0AŒ1Ð+Ó,ð  HÄqÐIeÐlpÔx{ð  }Fó  yGô  HHð  Hr   c                ó$   € V ^8„  d   QhR\         /# )r   rl   r&   )r   s   "r   r   r   ¬  s   € ÷ ñ œñ r   c                 ó   a € R  V 3R llpV# )c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   Ú$_preview_shell.<locals>.__annotate__­  s*   € ÷ pñ p”Tð p¤Cð p¬C°$­Jñ pr   c                 ó‚   <€ V P                  S4      pVf   R # \        \        \        V4      4      V4      ;'       g    R # r#  )r!   rÂ   r  r   )r�   rŽ   rð   rl   s   && €r   Ú_buildÚ_preview_shell.<locals>._build­  s=   ø€ Ø—(‘(˜3“-ˆØ’ˆtÐo¬KÔ8OÔPSÐT[ÓP\Ó8]Ð_fÓ,g×,oÐ,oÐkoÐor   rM   )rl   r’  s   f r   Ú_preview_shellr”  ¬  s   ø€ ÷pð pð €Mr   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   r   ³  s*   € ÷ uñ uœTð u¬Cð u´C¸$µJñ ur   c                 ó†  € V P                  R 4      ;'       g+    V P                  R4      ;'       g    V P                  R4      pVeB   \        \        V4      P                  RR4      4      P                  ;'       g    \        V4      MRpVf   R# \        V R\        V 4       2P                  4       V4      ;'       g    R# )rJ  rB   ÚfilepathNrÖ   rÐ   r¸   )r!   r   r   r   rX  rÂ   r  r"   )r�   rŽ   rJ  rB  s   &&  r   Ú_preview_read_filer˜  ³  s¤   € Ø�8‰8�FÓ×GÐG˜tŸx™x¨Ó/×GÐG°4·8±8¸JÓ3G€DØFJÒFVŒT”#�d“)×#Ñ# D¨#Ó.Ó/×4Ñ4×AÐA¼¸D»	øÐ\`€EØ’=ˆ4Ðt¤k°U°G¸1Ô=RÐSWÓ=XÐ<YÐ2Z×2`Ñ2`Ó2bÐdkÓ&l×&tÐ&tÐptÐtr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# r†  r=  )r   s   "r   r   r   ¹  s!   € ÷ ñ œ$ð ¬#ð ´#ñ r   c                 ób  € V P                  R R4      V P                  RR4      r2VR8X  d-   RV R\        \        V P                  RR4      4      ^4       R2# VR9   dR   \        V P                  R	4      ;'       g    R4      ;'       g    \        R
4      pVR8X  d   RMR V RVR,           R2# V# )r\  r   ÚtargetÚaddÚ+ú: "Úcontentr×   ÚremoveÚold_textú display.preview.missing_old_textr  Ú~r{  ©r   rL  r   )r!   rÅ   r»   r   )r�   ru  r\  r›  Úolds   &&   r   Ú_preview_memoryr¦  ¹  s¯   € Ø—X‘X˜h¨Ó+¨T¯X©X°hÀÓ-CˆFØ�„Ø�6�(˜$œu¤X¨d¯h©h°yÀ"Ó.EÓ%FÈÓKÐLÈBÐOÐOØÐ/Ô/Ü�t—x‘x 
Ó+×1Ð1¨rÓ2×[Ð[´aÐ8ZÓ6[ˆØ 8Ô+‘#°Ð5°f°X¸TÀ#ÀcÅ(ÀÈ2ÐNÐNØ€Mr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# r†  r=  )r   s   "r   r   r   Ã  s&   € ÷ Iñ I¤ð I´ð I¼ñ Ir   c                 ó„   € \        R V P                  RR4      \        \        V P                  RR4      4      ^4      R7      # )zdisplay.preview.send_message_tor›  r8  Úmessager   )r›  r©  )r   r!   rÂ   r»   )r�   ru  s   &&r   Ú_preview_send_messagerª  Ã  s;   € ÜÐ.°t·x±xÀÈ#Ó7NÜ ¤¨$¯(©(°9¸bÓ*AÓ!BÀBÓGôIð Ir   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   r   È  s%   € ÷ /ñ /œdð /¬Sð /´S¸4µZñ /r   c                 ó&  € \        \        V P                  R 4      ;'       g    R4      4      pV P                  R4      pV'       d6   V'       d   V R\        \        V4      4       2M\        \        V4      4      MTp\        WA4      ;'       g    R# )rX  r   Ú	file_pathõ    â†’ N)r»   r   r!   rÂ   )r�   rŽ   rX  r­  rB  s   &&   r   Ú_preview_skill_viewr¯  È  sp   € Ü”C˜Ÿ™ Ó(×.Ð.¨BÓ/Ó0€DØ—‘˜Ó%€Iß`i¿�ˆv�Uœ8¤C¨	£NÓ3Ð4Ñ5Ä8ÌCÐPYËNÔC[Ðos€EÜ�uÓ&×.Ð.¨$Ð.r   c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   r   Ï  s*   € ÷ Tñ Tœ4ð T¬#ð T´#¸µ*ñ Tr   c           	      ó(  € V P                  R 4      p\        V\        4      '       d   V'       d
   V^ ,          MRp\        V\        4      '       g   R# \	        \        \        VP                  R4      ;'       g    R4      4      V4      ;'       g    R# )Ú	questionsNrV  r   )r!   r   rx   r    rÂ   r»   r   )r�   rŽ   r²  r  s   &&  r   Ú_preview_clarifyr³  Ï  si   € Ø—‘˜Ó%€IÜ& y´$×7Ò7¿IˆI�aŽLÈ4€EÜ�eœT×"Ò"ÙÜ”x¤ E§I¡I¨jÓ$9×$?Ð$?¸RÓ @ÓAÀ7ÓK×SÐSÈtÐSr   c                ó$   € V ^8„  d   QhR\         /# )r   r­   r&   )r   s   "r   r   r   ×  s   € ÷ ñ ¤Cñ r   c                 ó   a € R  V 3R llpV# )c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# rh  r=  )r   s   "r   r   Ú*_preview_bridge_call.<locals>.__annotate__Ø  s*   € ÷ Hñ H”Tð H¤Cð H¬C°$­Jñ Hr   c                 óè   <€ \        SV 4      pV'       g   \        SW4      # \        V4      ^8”  d   R\        V4      ^,
           2MRp\        V^ ,          P                   V 2V4      ;'       g    R# )r5   ú +r   N)Úbridge_tool_labelsÚ_primary_arg_previewrg   rÂ   rž   )r�   rŽ   ÚlabelsÚextrar­   s   &&  €r   r’  Ú$_preview_bridge_call.<locals>._buildØ  sg   ø€ Ü# I¨tÓ4ˆßÜ'¨	°4ÓAÐAÜ*-¨f«+¸¬/�"”S˜“[ 1•_Ð%Ñ&¸rˆÜ˜f Q�iŸn™nÐ-¨e¨WÐ5°wÓ?×GÐGÀ4ÐGr   rM   )r­   r’  s   f r   Ú_preview_bridge_callr¿  ×  s   ø€ ÷Hð Hð €Mr   Úprocess_manageÚ	todo_listÚmemoryÚsend_messageÚclarifyÚsession_searchc                 ób   € \        R \        \        V P                  RR4      4      ^4      R7      # )z%display.preview.session_search_recallrF  r   )rF  )r   rÅ   r»   r!   )r�   Ú_ms   &&r   r˜   r˜   é  s6   € ¤qÐ)PÔX]Ô^fÐgk×goÑgoÐpwÐy{Óg|Ó^}ð  @Bó  YCõ  (Dr   Ú	tool_callÚtool_searchÚtool_describec          	      ód   € V ^8„  d   QhR\         R\        R\        R,          R\         R,          /# ©r   r­   r�   rŽ   Nr   ©r   r    r3   )r   s   "r   r   r   ð  s3   € ÷ :ñ :¤#ð :¬Tð :¼CÀ$½Jð :ÔRUÐX\ÕR\ñ :r   c                ó®   € Vf   \         pV'       g   R# \        W4      ;'       g    Tp\        P                  V 4      pVe	   V! W4      # \	        WV4      # )z Build a short preview of a tool call's primary argument for display.

*max_len* ``None`` defers to the global ``_tool_preview_max_len``; ``0`` means unlimited.
N)r‡   r/  Ú_PREVIEW_BUILDERSr!   r»  )r­   r�   rŽ   Úbuilders   &&& r   Úbuild_tool_previewrÑ  ð  sT   € ð
 ‚Ü'ˆßÙÜ'¨	Ó8×@Ð@¸D€DÜ×#Ñ# IÓ.€GØÒÙ�tÓ%Ð%Ü 	°Ó9Ð9r   c          	      óV   € V ^8„  d   QhR\         R\        R\        R\         R,          /# )r   r­   r�   rŽ   r   NrÍ  )r   s   "r   r   r      s,   € ÷ >ñ >¤Cð >¬tð >¼cð >ÄcÈDÅjñ >r   c                 óJ  a€ \         P                  V 4      ;'       g    \        V3R  l\         4       R4      pV'       d   VS9  d   R# SV,          p\	        \        \        V\        4      '       d   V'       d
   V^ ,          MRMT4      4      pV'       d   \        WR4      # R# )c              3   ó8   <"  € T F  qS9   g   K  Vx € K  	  R # 5ir#  rM   rx  s   & €r   rX   Ú'_primary_arg_preview.<locals>.<genexpr>  s   øé € Ð/_Ñ;Q°aÐZ^ÑU^·²Ó;Qùs   ƒ�
Nr   )	Ú_PRIMARY_ARGSr!   ÚnextÚ_FALLBACK_PREVIEW_KEYSr»   r   r   rx   rÂ   )r­   r�   rŽ   rl   r   rr  s   &f&   r   r»  r»     sw   ø€ Ü
×
Ñ
˜IÓ
&×
fÐ
f¬$Ô/_Õ;QÓ/_ÐaeÓ*f€Cß�#˜T”/ÙØ��I€EÜ”s¼*ÀUÌD×:QÒ:Q¯˜E !žH±2ÐW\Ó]Ó^€Gß,3Œ;�wÓ(Ð=¸Ð=r   c          
      ób   € V ^8„  d   QhR\         R\        R,          R\         R\        R\        /# )r   r­   r�   Nrn   rŽ   r   )r   r    r3   rÈ   )r   s   "r   r   r   	  s<   € ÷ @ñ @¤Cð @¬t°d­{ð @Ìð @ÔWZð @Ô_jñ @r   c               ó¤   € \        W^ R7      ;'       g    Tp\        WC4      pWT8g  pV'       d   \        \        V4      4      MRp\	        WVVR7      # )zŸCompact preview plus explicit truncation/URL facts (the uncapped preview is
rebuilt from the arguments so an upstream display cap cannot drop its link target).©rŽ   N)rž   rÊ   r   )rÑ  rÂ   r/   r#   rÈ   )r­   r�   rn   rŽ   Ú	full_textrž   rÊ   r   s   &&$$    r   Úprepare_tool_previewrÝ  	  sJ   € ô # 9¸AÔ>×JÐJÀ(€IÜ�yÓ*€DØÑ!€Iß09Œ)”L Ó+Ô
,¸t€CÜ˜D¸3Ô?Ð?r   c                ó>   € V ^8„  d   QhR\         R\         R,          /# ©r   r­   r   Nr&   )r   s   "r   r   r   "  s"   € ÷ Uñ Uœ#ð U¤#¨¥*ñ Ur   c                 ó8   € V \         9   d   \        R V  24      # R# )zdisplay.verb.N)Ú_TOOL_VERB_TOOLSr   ©r­   s   &r   Ú
_tool_verbrã  "  s"   € Ø-6Ô:JÔ-JŒ1ˆ}˜Y˜KÐ(Ó)ÐTÐPTÐTr   c                ó>   € V ^8„  d   QhR\         R\         R,          /# rß  r&   )r   s   "r   r   r   .  s   € ÷ 7ñ 7¬ð 7´°dµ
ñ 7r   c                 óP   € \         '       d   V \        9  d   R # \        RV  24      # )Nzdisplay.bridge_generating.)r¥   Ú_BRIDGE_GENERATING_TOOLSr   râ  s   &r   Úbridge_generating_phraserç  .  s&   € ß Ó  IÔ5MÔ$MÙÜÐ)¨)¨Ð5Ó6Ð6r   c                óJ   € V ^8„  d   QhR\         R\        R,          R\        /# r*  ©r   r    rx   )r   s   "r   r   r   4  s%   € ÷ 
!ñ 
!¤Cð 
!¬t°d­{ð 
!¼tñ 
!r   c                 ó–  €  ^ RI Hp T! Y;'       g    / 4      p\        4       pT'       d   TP                  '       d   TP                  MR;'       g    / pT Uu. uF3  pTP                  T9   d   \        YvTP                  ,          R7      MTNK5  	  up#   \         d#   p\        P	                  RY4       . u Rp?# Rp?ii ; iu upi )r  )Úlabels_for_callzbridge labels failed for %s: %sN)Úemoji)	Útools.tool_labelsrë  r?   ÚloggerÚdebugr@   r°   rX  r   )r­   r�   rë  r¼  Úexcrk   Ú	overridesrB  s   &&      r   Útool_labels_for_callrò  4  s¯   € ðÝ5Ù  ¯J¨J°BÓ7ˆô ‹;€Dß%)¨d×.>×.>Ð.>�×!Ò!ÀD×OÐOÈR€Iáó!Ù�ð <A¿:¹:ÈÔ;RŒG�E¨5¯:©:Õ!6Õ7ÐX]Ò]Ùñ!ð !øô ô Ü�‰Ð6¸	ÔGØ�	ûðüò
!s(   ‚B “B Á9CÂCÂ!B>Â8CÂ>Cc                óJ   € V ^8„  d   QhR\         R\        R,          R\        /# r*  ré  )r   s   "r   r   r   A  s*   € ÷ Rñ R¤#ð R¬T°D­[ð R¼Tñ Rr   c                 ó4   € \         '       d   \        W4      # . # r#  )r¥   rò  r.  s   &&r   rº  rº  A  s   € ß4IÓ4IÔ 	Ó0ÐQÈrÐQr   c                óV   € V ^8„  d   QhR\         R\        R,          R\         R\         /# )r   r­   r�   Nro   r   r+  )r   s   "r   r   r   E  s3   € ÷ Mñ Mœcð M¬°­ð MÄcð MÔVYñ Mr   c                 óx   € V'       d   \        W4      M. pV'       d   V^ ,          P                  # \        W4      # )r  )rº  rì  r´   )r­   r�   ro   r¼  s   &&& r   Útool_row_emojir÷  E  s+   € ß48Ô 	Ô0¸b€Fß$ˆ6�!�9�?‰?ÐL¬.¸Ó*LÐLr   c                ó>   € V ^8„  d   QhR\         R\         R,          /# rß  r&   )r   s   "r   r   r   J  s"   € ÷ Dñ DœSð D¤S¨4¥Zñ Dr   c                ó4   € \         '       d   \        V 4      # R# )z�Friendly verb for a built-in tool, or None (labels disabled / no curated verb);
callers compose ``f"{verb}{tool_verb_connector(tool)}{preview}"`` themselves.N)r¥   rã  râ  s   &r   Úget_tool_verbrú  J  s   € ÷ %:Ó$9Œ:�iÓ ÐC¸tÐCr   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   r­   r   r&   )r   s   "r   r   r   P  s   € ÷ ~ñ ~¤3ð ~¬3ñ ~r   c                ó:   € \        V \        9   d   R4      # R4      # )zEReturn the connector between a verb and its preview (" for " or " ").zdisplay.verb_connector.searchzdisplay.verb_connector.default)r   Ú_TOOL_VERBS_FOR_CONNECTORrâ  s   &r   Útool_verb_connectorrÿ  P  s   € ä°	Ô=VÔ0VÐ,Ó}Ð}Ð\|Ó}Ð}r   c                ó0   € V ^8„  d   QhR\         R\        /# rü  rË   )r   s   "r   r   r   U  s   € ÷ /ñ /¤#ð /¬$ñ /r   c                ó   € V \         9   # )zCWhether the verb should render alone, without the argument preview.)Ú_TOOL_VERBS_NO_PREVIEWrâ  s   &r   Úverb_drops_previewr  U  s   € àÔ.Ñ.Ð.r   c          	      ód   € V ^8„  d   QhR\         R\        R,          R\        R\         R,          /# )r   r­   r�   NrŽ   r   rÍ  )r   s   "r   r   r   Z  s9   € ÷ cñ c¤3ð c¬d°T­kð cÄCð cÔQTÐW[ÕQ[ñ cr   c                ó8  € V '       d   V R8X  g   \         '       g   R# \        V 4      pV'       d.   \        RV^ ,          P                  4        VR,           2R7      M\        RV R7      pT;'       d    T;'       d
    V \        9  pV'       d   \        WRR7      MRpV'       d5   V \        V 4       VP                  4       ^ ,          P                  4        2p\        V4      V^,
          8”  d"   VRV^,
           P                  4       R	,           # VR	,           # )
u`  Lowercase "is <verb> <preview>â€¦" phrase following the bot's display name (Slack setStatus).

``args=None`` gives a verb-only phrase (``display.live_status: verb`` keeps previews out
of shared channels). None for ``_thinking`` or disabled labels so callers use their
static default. Default ``max_len`` stays under Slack's ~50-char status truncation.
Ú	_thinkingNzdisplay.status_phrase.verbr
  )rŠ  z display.status_phrase.using_tool)ÚtoolrÛ  r@  )r¥   rã  r   r,   r  rÑ  rÿ  Ú
splitlinesr"   rg   Úrstrip)r­   r�   rŽ   rŠ  ÚphraseÚwith_previewrr  s   &&&    r   Úbuild_status_phraser  Z  sò   € ÷ ˜	 [Ô0×8MÓ8MÙÜ�iÓ €DßVZŒaÐ,°d¸1µg·m±m³oÐ5FÀtÈBÅxÀjÐ3QÕRÜÐ7¸iÔHð à×LÐL˜D×LÐL YÔ6LÑ%L€LßCOÔ  ¸$Õ?ÐUY€GßØ�8Ô/°	Ó:Ð;¸G×<NÑ<NÓ<PÐQRÕ<S×<YÑ<YÓ<[Ð;\Ð]ˆÜ58¸³[À7ÈQÅ;Ô5Nˆ6�-�G˜a•KÐ ×'Ñ'Ó)¨EÕ1ÐbÐTZÐ]bÕTbÐbr   c          	      ód   € V ^8„  d   QhR\         R\        R\        R,          R\         R,          /# rÌ  rÍ  )r   s   "r   r   r   m  s9   € ÷ Sñ S¤ð S¬4ð S¼#À½*ð SÔPSÐVZÕPZñ Sr   c                 óª  € \        W4      pV'       dp   V^ ,          p\        VP                  Ve   TM\        4      p\	        V4      ^8”  d   R\	        V4      ^,
           2MRpVP
                   V'       d   RV 2MR V 2# \        V 4      pV'       d   V \        9   d   V# \        WVR7      pV'       g   V# V'       d   V \        V 4       V 2# T# )r  r¹  r   r¸   rÛ  )
rº  rÂ   rr  r‡   rg   rž   rú  r  rÑ  rÿ  )r­   r�   rŽ   r¼  rB  rr  r½  rŠ  s   &&&     r   Úbuild_tool_labelr  m  sÂ   € Ü 	Ó0€FßØ�q•	ˆÜ˜eŸm™m¸Ò8K©WÔQfÓgˆÜ*-¨f«+¸¬/�"”S˜“[ 1•_Ð%Ñ&¸rˆØ—*‘*�¯w  ' ™m¸BÐ?À¸wÐGÐGÜ˜Ó#€Dß�	Ô3Ô3ØˆÜ  ¸'ÔB€GßØˆßAHˆdˆVÔ'¨	Ó2Ð3°G°9Ð=ÐRÈdÐRr   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   rJ  r   )r   r   )r   s   "r   r   r     s   € ÷ 7ñ 7œð 7¤ñ 7r   c                ó†   € \         P                  ! 4       \        \        P                  P	                  V 4      4      ,          # )zDResolve a possibly-relative filesystem path against the current cwd.)r   ÚcwdÚosrJ  Ú
expanduser©rJ  s   &r   Ú_resolved_pathr    s'   € ä�8Š8‹:œœRŸW™W×/Ñ/°Ó5Ó6Õ6Ð6r   c                ó>   € V ^8„  d   QhR\         R\        R,          /# )r   rJ  r   N©r   r   )r   s   "r   r   r   „  s   € ÷ ñ œð ¤#¨¥*ñ r   c                ól   €  V P                  RR7      #   \        \        \        \        3 d     R# i ; i)z@Return UTF-8 file content, or None for missing/unreadable files.z	utf-8-sig)ÚencodingN)Ú	read_textÚFileNotFoundErrorÚIsADirectoryErrorÚUnicodeDecodeErrorÚOSErrorr  s   &r   Ú_snapshot_textr!  „  s5   € ðØ�~‰~ {ˆ~Ó3Ð3øÜÔ0Ô2DÄgÐNô Úðús   ‚ ”3²3c                ó0   € V ^8„  d   QhR\         R\        /# r  r  )r   s   "r   r   r   Œ  s   € ÷ ñ œTð ¤cñ r   c                óÎ   €  \        V P                  4       P                  \        P                  ! 4       P                  4       4      4      #   \
         d    \        T 4      u # i ; i)z2Prefer cwd-relative paths in diffs when available.)r   ÚresolveÚrelative_tor   r  r?   r  s   &r   Ú_display_diff_pathr&  Œ  sK   € ðÜ�4—<‘<“>×-Ñ-¬d¯hªh«j×.@Ñ.@Ó.BÓCÓDÐDøÜô Ü�4‹yÒðús   ‚AA ÁA$Á#A$c                óF   € V ^8„  d   QhR\         R\        \        ,          /# r  )r    rx   r   )r   s   "r   r   r   ”  s"   € ÷ Kñ K¤dð K¬t´D­zñ Kr   c                ó   € V P                  R4      pV P                  R4      pV'       d	   V'       g   . # ^ RIHpHp VR8X  d    V! W P                  R4      4      R,          .# V! V4      pV'       g   . # \	        VR,          4      pV P                  R4      pVR	8X  dB   \        VP                  R
4      4       Uu. uF  qˆP                  4       '       g   K  VNK  	  up# V'       d   VR9   d
   Wg,          .# VR9   d   VR,          .# . # u upi )z7Resolve skill_manage write targets to filesystem paths.r\  rX  )Ú_find_skillÚ_resolve_skill_dirÚcreaterZ  zSKILL.mdrJ  r­  ÚdeleteÚ*>   ÚeditrL  rK  Úremove_file>   r.  rL  )r!   Útools.skill_manager_toolr)  r*  r   ÚsortedÚrglobÚis_file)	r�   r\  rX  r)  r*  ÚexistingÚ	skill_dirr­  rJ  s	   &        r   Ú_resolve_skill_manage_pathsr6  ”  së   € à�X‰X�hÓ€FØ�8‰8�FÓ€DßŸØˆ	ßHà�ÔÙ" 4¯©°*Ó)=Ó>ÀÕKÐLÐLÙ˜4Ó €HßØˆ	Ü�X˜fÕ%Ó&€IØ—‘˜Ó%€IØ�ÔÜ!'¨	¯©¸Ó(<Ô!=ÓPÑ!=˜ÇÁÇ—�Ñ!=ÑPÐPß�VÐMÔMØÕ%Ð&Ð&Ø'-Ð1BÔ'BˆI˜
Õ"Ð#ÐJÈÐJùò Qs   Â;DÃDc          	      óz   € V ^8„  d   QhR\         R\        R,          R\         R,          R\        \        ,          /# ©r   r­   Úfunction_argsNÚtask_idr   )r   r    rx   r   )r   s   "r   r   r   ª  s:   € ÷ 2ñ 2¬ð 2¼TÀD½[ð 2ÔSVÐY]ÕS]ð 2ÔimÔnrÕisñ 2r   c                ó   € \        V\        4      '       g   . # V R8X  d   \        V4      # V R9   d   VP                  R4      MRpV'       d.   Ve*   ^ RIHpHp V! V4      R8w  d   . # \        V! W24      4      .# V'       d   \        V4      .# . # )z9Resolve local filesystem targets for write-capable tools.r`  rJ  N)Ú_resolve_path_for_taskÚ_terminal_env_type_for_taskÚlocal>   rL  rK  )	r   r    r6  r!   Útools.file_tools_pathsr<  r=  r   r  )r­   r9  r:  rJ  r<  r=  s   &&&   r   Ú_resolve_local_edit_pathsr@  ª  sŠ   € ä�m¤T×*Ò*Øˆ	Ø�NÔ"Ü*¨=Ó9Ð9Ø(1Ð5LÔ(Lˆ=×Ñ˜VÔ$ÐRV€Dß�Ò#ß^ñ ' wÓ/°7Ô:ØˆIÜÑ+¨DÓ:Ó;Ð<Ð<ß%)ŒN˜4Ó Ð!Ð1¨rÐ1r   r:  c          	      ór   € V ^8„  d   QhR\         R\        R,          R\         R,          R\        R,          /# r8  ©r   r    rs   )r   s   "r   r   r   ¼  s?   € ÷ fñ fÜðfÜ#'¨$¥;ðfÜ<?À$½Jðfä˜Õñfr   c          
     ó–   € \        WV4      pV'       g   R# \        Y3 Uu/ uF  p\        V4      \        V4      bK  	  upR7      # u upi )z.Capture before-state for local write previews.N)rv   rw   )r@  rs   r   r!  )r­   r9  r:  rv   rJ  s   &&$  r   Úcapture_local_edit_snapshotrD  ¼  sG   € ô & iÀÓH€EßÙÜ 5Ð^cÓ1dÑ^cÐVZ´#°d³)¼^ÈDÓ=QÒ2QÑ^cÑ1dÔeÐeùÒ1ds    A
c                ó>   € V ^8„  d   QhR\         R,          R\        /# )r   ÚresultNr   rË   )r   s   "r   r   r   Æ  s"   € ÷ Dñ Dœc D�jð D¬Tñ Dr   c                óÐ   € V '       d   \        V 4      MRp\        V\        4      '       d   VP                  R4      '       d   R# RV9   d   \	        VP                  R4      4      # R# )z?Conservatively detect whether a tool result represents success.NÚerrorFÚsuccessT)r
   r   r    r!   r�   )rF  r€  s   & r   Ú_result_succeededrJ  Æ  sN   € ç&,Œ?˜6Ô"°$€DÜ�dœD×!Ò! T§X¡X¨g×%6Ò%6ÙØ(1°TÔ(9Œ4�—‘˜Ó#Ó$ÐC¸tÐCr   c                óL   € V ^8„  d   QhR\         R,          R\        R,          /# )r   ÚsnapshotNr   )rs   r   )r   s   "r   r   r   Î  s$   € ÷ #ñ #Ô"3°dÕ":ð #¼sÀT½zñ #r   c           
     ó  € V '       g   R# . pV P                    F×  pV P                  P                  \        V4      4      \	        V4      rCW48X  d   K9  \        V4      pRP                  \        T;'       g    RP                  RR7      T;'       g    RP                  RR7      RV 2RV 2R7      4      pV'       g   K¦  TP                  VP                  R4      '       d   TMVR,           4       KÙ  	  RP                  V4      ;'       g    R# )	zHGenerate unified diff text from a stored before-state and current files.Nr   T)Úkeependsza/zb/)ÚfromfileÚtofiler•   )rv   rw   r!   r   r!  r&  r¹   r   r  râ   Úendswith)rL  ÚchunksrJ  rw   ÚafterÚdisplay_pathÚdiffs   &      r   Ú_diff_from_snapshotrV  Î  sá   € çÙØ€FØ—”ˆØ Ÿ™×+Ñ+¬C°«IÓ6¼ÀtÓ8L�ØŒ?ÙÜ)¨$Ó/ˆØ�w‰w”|Ø�\ˆ\�r×%Ñ%¨tÐ%Ó4°u·{°{À×6NÑ6NÐX\Ð6NÓ6]Ø˜,˜Ð(°2°l°^Ð1Dô
ó ˆ÷ ‰4Ø�M‰M $§-¡-°×"5Ò"5™$¸4À$½;ÖGñ ð �7‰7�6‹?×"Ð"˜dÐ"r   r9  rL  c                óŒ   € V ^8„  d   QhR\         R\         R,          R\        R,          R\        R,          R\         R,          /# ©r   r­   rF  Nr9  rL  r   rB  )r   s   "r   r   r   á  sG   € ÷ )ñ )Üð)Ü $�Jð)ä˜$•;ð)ä1BÀTÕ1Ið)ô 	ˆ4…Zñ)r   c               ó.  € V R8X  dk   V'       dc   \        V4      p\        V\        4      '       d   VP                  R4      MRp\        V\        4      '       d   VP                  4       '       d   V# V R9  g   \        V4      '       g   R# \        V4      # )z4Extract a unified diff from a file-edit tool result.rL  rU  N>   rL  rK  r`  )r
   r   r    r!   r   r"   rJ  rV  )r­   rF  r9  rL  r€  rU  s   &&$$  r   Úextract_edit_diffrZ  á  ss   € ð
 �GÔ§Ü˜vÓ&ˆÜ#-¨d´D×#9Ò#9ˆt�x‰x˜Ô¸tˆÜ�dœC× Ò  T§Z¡Z§\¢\ØˆKØÐ?Ô?ÔGXÐY_×G`ÒG`ÙÜ˜xÓ(Ð(r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Ú	diff_textr   rË   )r   s   "r   r   r   ð  s   € ÷ 	ñ 	¤ð 	´4ñ 	r   c                ó¼   € Ve	   V '       g   R#  \        R4      .V P                  R4      P                  4       O F  pV! V4       K  	  R#   \         d     R# i ; i)zFEmit rendered diff text through the CLI's prompt_toolkit-safe printer.Fzdisplay.diff.review_headerr•   T)r   r	  r  r?   )r\  Úprint_fnÚlines   && r   Ú_emit_inline_diffr`  ð  s[   € àÒŸyÙðÜÐ3Ó4Ð[°y×7GÑ7GÈÓ7M×7XÑ7XÓ7ZÓ[ˆDÙ�TŽNñ \áøÜô Úðús   �:A ÁAÁAc                óF   € V ^8„  d   QhR\         R\        \         ,          /# ©r   rU  r   rß   )r   s   "r   r   r      s   € ÷ ñ ¤cð ¬d´3­iñ r   c                ó|  a€ . pR;r#V P                  4        EF   oSP                  R4      '       d   SR,          P                  4       pK4  SP                  R4      '       dk   SR,          P                  4       pV'       g	   V'       dB   TP                  \	        4       R,           T;'       g    R RT;'       g    R \
         24       Kµ  \        V3R	 l\         4       R4      pV'       d.   VP                  \	        4       V,           S \
         24       EK  S'       g   EK  VP                  S4       EK#  	  V# )
z=Render unified diff lines in Hermes' inline transcript style.Nú--- :é   NNz+++ rB   za/?r®  zb/?c              3   ó^   <"  € T F"  w  rSP                  V4      '       g   K  Vx € K$  	  R # 5ir#  )rõ   )rU   ÚprefixÚcÚraw_lines   &  €r   rX   Ú._render_inline_unified_diff.<locals>.<genexpr>  s%   øé € ÐZÑ):™I˜F¸h×>QÑ>QÐRX×>Y—a’aÓ):ùs   ƒ-£
-)r  rõ   r"   râ   rq   Ú_ANSI_RESETr×  Ú_DIFF_LINE_COLORS)rU  ÚrenderedÚ	from_fileÚto_fileÚcolorri  s   &    @r   Ú_render_inline_unified_diffrq     sÿ   ø€ à€HØÐ€IØ—O‘O×%ˆØ×Ñ˜v×&Ò&Ø  �×*Ñ*Ó,ˆIÙØ×Ñ˜v×&Ò&Ø˜r•l×(Ñ(Ó*ˆGßŸGØ—‘¤:£<°Õ#7Ð"8¸×9KÐ9KÀeÐ8LÈEÐRY×RbÐRbÐ]bÐQcÔdoÐcpÐ qÔrÙÜÔZÕ):ÓZÐ\`ÓaˆßØ�O‰Oœz›|¨EÕ2Ð3°H°:¼k¸]ÐK×LßŠXØ�O‰O˜H×%ñ &ð €Or   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# rb  rß   )r   s   "r   r   r     s"   € ÷ Cñ C¤sð C¬t´C­yñ Cr   c                ó2  € . .pV P                  4        FR  pVP                  R4      '       d!   VR,          '       d   VP                  . 4       VR,          P                  V4       KT  	  V Uu. uF  q3'       g   K  RP                  V4      NK  	  up# u upi )z,Split a unified diff into per-file sections.rd  r•   rÑ   )r  rõ   râ   r¹   )rU  Úsectionsr_  Úsections   &   r   Ú_split_unified_diff_sectionsrv    sw   € à!# €HØ—‘Ö!ˆØ�?‰?˜6×"Ò" x°§|¤|Ø�O‰O˜BÔØ��×Ñ˜DÖ!ñ "ñ /7ÓB©h 7»'ÔˆD�I‰I�gÖ©hÑBÐBùÒBs   Á.	BÁ<BÚ	max_filesÚ	max_linesc          	      ó^   € V ^8„  d   QhR\         R\        R\        R\        \         ,          /# )r   rU  rw  rx  r   )r   r3   rx   )r   s   "r   r   r     s0   € ÷ ñ Ü
ðÜ ðÜFIðä	Œ#…Yñr   c          	     óþ  € \        V 4      p. p^ ;rV\        V4       Fú  w  rx\        V4      p	V\        V4      ,
          p
Wq8¼  g   V
^ 8:  d   V^,          pV\        V	4      ,          pKL  \        V	4      V
8:  d   VP	                  V	4       Ko  VP	                  V	RV
 4       V\        V	4      V
,
          ,          pV^\        ^ \        V4      V,
          ^,
          4      ,           ,          pW7^,           R  F  pV\        \        V4      4      ,          pK   	   M	  V'       g	   V'       dT   \        RVR7      pV'       d   V\        RVR7      ,          pVP                  \        4       R,           V \         24       V# )zCRender diff sections while capping file count and total line count.Nzdisplay.diff.omitted_linesrp  zdisplay.diff.omitted_filesrC   )
rv  r[   rq  rg   ÚextendrT   r   râ   rq   rk  )rU  rw  rx  rt  rm  Úomitted_filesÚomitted_linesÚidxru  Úsection_linesÚremaining_budgetÚleftoverÚsummarys   &$$          r   Ú!_summarize_rendered_diff_sectionsrƒ    sT  € ô ,¨DÓ1€HØ€HØ$%Ð%€MÜ! (Ö+‰ˆÜ3°GÓ<ˆØ$¤s¨8£}Õ4ÐØÔÐ/°1Ô4Ø˜QÕˆMØœS Ó/Õ/ˆMÙÜˆ}ÓÐ!1Ô1Ø�O‰O˜MÔ*ÙØ�‰˜Ð&7Ð'7Ð8Ô9Øœ˜]Ó+Ð.>Õ>Õ>ˆØ˜œS ¤C¨£M°CÕ$7¸!Õ$;Ó<Õ<Õ<ˆØ  q¥ Ó*ˆHØœSÔ!<¸XÓ!FÓGÕGŠMñ +áñ ,÷  ŸÜÐ0¸ÔFˆßØ”qÐ5¸]ÔKÕKˆGØ�‰œ:›<¨Õ/Ð0°°	¼+¸ÐGÔHØ€Or   r^  c          
      ó~   € V ^8„  d   QhR\         R\         R,          R\        R,          R\        R,          R\        /# rX  )r   r    rs   r�   )r   s   "r   r   r   >  sJ   € ÷ Bñ BÜðBÜ $�JðBä˜$•;ðBä1BÀTÕ1IðBô 
ñBr   c               óÜ   € \        WW#R7      pV'       g   R#  \        V4      p\        RP                  T4      T4      #   \         d"   p\        P	                  RT4        Rp?R# Rp?ii ; i)z?Render an edit diff inline without taking over the terminal UI.)r9  rL  Fz Could not render inline diff: %sNr•   )rZ  rƒ  r?   rî  rï  r`  r¹   )r­   rF  r9  rL  r^  rU  Úrendered_linesrð  s   &&$$$   r   Úrender_edit_diff_with_deltar‡  >  sa   € ô
 ˜Y¸mÔ_€DßÙðÜ:¸4Ó@ˆô ˜TŸY™Y ~Ó6¸ÓAÐAøô ô Ü�‰Ð7¸Ô=Ýûðús   ™? ¿A+Á
A&Á&A+c                   óü  a € ] tR tRt o RtR]! R4      R]! R4      R]! R4      R	]! R
4      R]! R4      R]! R4      R]! R4      R]! R4      R]! R4      /	t. R2Ot. R3Ot. R4Ot	]
V 3R lR l4       t]! R 4      t]! R 4      t]V 3R lR l4       t]! R 4      tR5V 3R lR lltR6V 3R lR  llt]V 3R! lR" l4       tV 3R# lR$ ltR% tR& tV 3R' lR( ltV 3R) lR* ltV 3R+ lR, ltR7V 3R- lR. lltR/ tR0 tR1tV tR# )8ÚKawaiiSpinneriP  zJAnimated spinner with kawaii faces for CLI feedback during tool execution.Údotsu   â ‹â ™â ¹â ¸â ¼â ´â ¦â §â ‡â �Úbounceu   â �â ‚â „â¡€â¢€â  â �â ˆÚgrowu*   â–�â–‚â–ƒâ–„â–…â–†â–‡â–ˆâ–‡â–†â–…â–„â–ƒâ–‚Úarrowsu   â†�â†–â†‘â†—â†’â†˜â†“â†™Ústaru   âœ¶âœ·âœ¸âœ¹âœºâœ¹âœ¸âœ·Úmoonu    ðŸŒ‘ðŸŒ’ðŸŒ“ðŸŒ”ðŸŒ•ðŸŒ–ðŸŒ—ðŸŒ˜Úpulseu   â—œâ— â—�â—žâ—¡â—ŸÚbrainu   ðŸ§ ðŸ’­ðŸ’¡âœ¨ðŸ’«ðŸŒŸðŸ’¡ðŸ’­Úsparkleu   â�ºËš*âœ§âœ¦âœ§*Ëšc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   rl   rn   r   rß   )r   ry   s   "€r   r   ÚKawaiiSpinner.__annotate__h  s"   ø€ ÷ ñ ¡ð ©tð ¹ñ r   c                óž   €  \        4       pV'       d   VP                  P                  V . 4      MR;'       g    T#   \         d    Tu # i ; i)zPReturn the active skin's ``spinner[key]`` list, or *fallback* when absent/empty.N)r@   Úspinnerr!   r?   )rl   rn   rk   s   && r   Ú_skin_spinner_listÚ KawaiiSpinner._skin_spinner_listg  sE   € ð	Ü“;ˆDß15�D—L‘L×$Ñ$ S¨"Ô-¸4×LÐLÀHÐLøÜô 	ØŠOð	ús   ‚6< ¹< ¼AÁAc                ó:   € V P                  R V P                  4      # )Úwaiting_faces)r—  ÚKAWAII_WAITING©Úclss   &r   r˜   ÚKawaiiSpinner.<lambda>p  s   € °×0FÑ0FÀÐX[×XjÑXjÔ0kr   c                ó:   € V P                  R V P                  4      # )Úthinking_faces)r—  ÚKAWAII_THINKINGrœ  s   &r   r˜   rž  q  s   € °×1GÑ1GÐHXÐZ]×ZmÑZmÔ1nr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r^   )rx   r   )r   ry   s   "€r   r   r”  s  s   ø€ ÷ ^ñ ^©©S­	ñ ^r   c                óä   € \        R 4      P                  R4       Uu. uF*  qP                  4       '       g   K  VP                  4       NK,  	  ppV'       d   VR .8w  d   V# V P                  # u upi )zdisplay.thinking_verbsÚ,)r   rº   r"   ÚTHINKING_VERBS)r�  rW   Úverbss   &  r   Ú_catalog_thinking_verbsÚ%KawaiiSpinner._catalog_thinking_verbsr  s[   € ä$%Ð&>Ó$?×$EÑ$EÀcÔ$JÓXÑ$J˜qÏgÉgÏi”�—‘–Ñ$JˆÐXß %Ð,DÐ+EÔ"EˆuÐ]È3×K]ÑK]Ð]ùò Ys
   �A-¹A-c                óB   € V P                  R V P                  4       4      # )Úthinking_verbs)r—  r§  rœ  s   &r   r˜   rž  w  s   € °×1GÑ1GÐHXÐZ]×ZuÑZuÓZwÔ1xr   Nc                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   r©  Úspinner_typer&   )r   ry   s   "€r   r   r”  y  s   ø€ ÷ ñ ¡ð ¹ñ r   c                óð   € Wn         V P                  P                  W P                  R ,          4      V n        RV n        R;V n        V n        ^ ;V n        V n        W0n	        \        P                  V n        R# )rŠ  FN)r©  ÚSPINNERSr!   Úspinner_framesÚrunningÚthreadÚ
start_timeÚ	frame_idxÚlast_line_lenÚ	_print_fnÚsysÚstdoutÚ_out)Úselfr©  r¬  r^  s   &&&&r   Ú__init__ÚKawaiiSpinner.__init__y  s[   € ØŒØ"Ÿm™m×/Ñ/°¿m¹mÈFÕ>SÓTˆÔØˆŒØ(,Ð,ˆŒ�d”oØ./Ð/ˆŒ˜Ô+Ø!ŒÜ—J‘JˆŽ	r   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r   rž   ÚendÚflushrË   )r   ry   s   "€r   r   r”  ‚  s"   ø€ ÷ ñ ™3ð ¡Sð ¹ñ r   c                ó*  € V P                   e    V P                  V4       R#  V P                  P                  W,           4       V'       d   V P                  P	                  4        R# R#   \         d     R# i ; i  \
        \        3 d     R# i ; i)zJWrite via print_fn when supplied, else to the stdout captured at creation.N)rµ  r?   r¸  Úwriter¾  r*   r   )r¹  rž   r½  r¾  s   &&&&r   Ú_writeÚKawaiiSpinner._write‚  s~   € à�>‰>Ò%ðØ—‘˜tÔ$ñ ð	Ø�I‰I�O‰O˜D�JÔ'ßØ—	‘	—‘Ö!ñ øô ô ØÙðûô œGÐ$ô 	Úð	ús#   �A+ ¤AA= Á+A:Á9A:Á=BÂBc                ó    <€ V ^8„  d   QhRS[ /# r^   r£   )r   ry   s   "€r   r   r”  ’  s   ø€ ÷ ñ ™ñ r   c                ó¤   €  \        V P                  R4      ;'       d    V P                  P                  4       #   \        \        3 d     R# i ; i)z@Check if output is a real terminal, safe against closed streams.ÚisattyF)Úhasattrr¸  rÅ  r*   r   ©r¹  s   &r   Ú_is_ttyÚKawaiiSpinner._is_tty‘  sD   € ð	Ü˜4Ÿ9™9 hÓ/×FÐF°D·I±I×4DÑ4DÓ4FÐFøÜœGÐ$ô 	Úð	ús   ‚: Ÿ: ºAÁAc                ó    <€ V ^8„  d   QhRS[ /# r^   r£   )r   ry   s   "€r   r   r”  ™  s   ø€ ÷ ñ ©ñ r   c                ó`   €  ^ RI Hp \        V P                  V4      #   \         d     R# i ; i)z©True for prompt_toolkit's StdoutProxy: it injects newlines around each flush so the
\r overwrite never lands, and the CLI drives its own TUI spinner widget in that mode.)ÚStdoutProxyF)Úprompt_toolkit.patch_stdoutrÌ  r   r¸  ÚImportError)r¹  rÌ  s   & r   Ú_is_patch_stdout_proxyÚ$KawaiiSpinner._is_patch_stdout_proxy™  s-   € ð	Ý?Ü˜dŸi™i¨Ó5Ð5øÜô 	Úð	ús   ‚ ž-¬-c                ó˜  € V P                   pV'       g)   V P                  \        R V P                  R7      RR7       V'       d   V P	                  4       '       d7   V P
                  '       d#   \        P                  ! V'       g   RMR4       K4  R# \        4       pV'       d   VP                  4       M. pV P
                  '       Edƒ   \        P                  ! R4      '       d   \        P                  ! R4       KG  V P                  V P                  \        V P                  4      ,          ,          pR\        P                  ! 4       V P                  ,
          R	 R
2pV'       d#   W0P                  \        V4      ,          ,          MRw  rgV'       d   RV RV RV P                   RV RV 2
MRV RV P                   RV 2pV P                  RV R\!        V P"                  \        V4      ,
          ^ 4      ,           2RRR7       \        V4      V n        V ;P                  ^,          un        \        P                  ! R4       EK•  R# )zdisplay.spinner.tool_line©r©  T©r¾  ç      à?gš™™™™™¹?NÚHERMES_SPINNER_PAUSEÚ(ú.1fús)r   ú  r¸   Ú©r½  r¾  g¸…ëQ¸¾?)r   r   )rÈ  rÁ  r   r©  rÏ  r°  ÚtimeÚsleepr@   Úget_spinner_wingsr  Úgetenvr¯  r³  rg   r²  rT   r´  )	r¹  Úttyrk   ÚwingsÚframeÚelapsedÚleftÚrightr_  s	   &        r   Ú_animateÚKawaiiSpinner._animate¢  s«  € Ø�l‰lˆçØ�K‰KœÐ5¸t¿|¹|ÔLÐTXˆKÔYç�d×1Ñ1×3Ò3Ø—,—,�,Ü—
’
§c™3¨sÖ3ÙÜ‹{ˆß,0�×&Ñ&Ô(°bˆØ�l�l‰lÜ�yŠyÐ/×0Ò0Ü—
’
˜3”ÙØ×'Ñ'¨¯©¼¸T×=PÑ=PÓ9QÕ(QÕRˆEØœ$Ÿ)š)›+¨¯©Õ7¸Ð<¸BÐ?ˆGß@E˜%§¡´°U³Õ ;Ö<È8‰KˆDßKP�R˜�v˜Q˜u˜g Q t§|¡| n°A°e°W¸A¸g¸YÑGÐXZÐ[`ÐZaÐabÐcg×coÑcoÐbpÐpqÐryÐqzÐV{ˆDØ�K‰K˜"˜T˜F 3¬¨T×-?Ñ-?Ä#ÀdÃ)Õ-KÈQÓ)OÕ#OÐ"PÐQÐWYÐaeˆKÔfÜ!$ T£ˆDÔØ�NŠN˜aÕ�NÜ�JŠJ�t×ñ r   c                óô   € V P                   '       d   R # R\        P                  ! 4       uV n         V n        \        P                  ! V P
                  RR7      V n        V P                  P                  4        R # )NT)r›  Údaemon)r°  rÜ  r²  Ú	threadingÚThreadræ  r±  ÚstartrÇ  s   &r   rì  ÚKawaiiSpinner.start»  sL   € Ø�<�<ˆ<ÙØ(,¬d¯iªi«kÐ%ˆŒ�d”oÜ×&Ò&¨d¯m©mÀDÔIˆŒØ�‰×ÑÖr   c                ó    <€ V ^8„  d   QhRS[ /# )r   Únew_messager&   )r   ry   s   "€r   r   r”  Â  s   ø€ ÷ #ñ #¡sñ #r   c                ó   € Wn         R # r#  rÒ  )r¹  rï  s   &&r   Úupdate_textÚKawaiiSpinner.update_textÂ  s   € Ø"Žr   c                ó    <€ V ^8„  d   QhRS[ /# r^   r&   )r   ry   s   "€r   r   r”  Å  s   ø€ ÷ 5ñ 5¡Cñ 5r   c                óJ   € R \        V P                  ^,           ^(4      ,          # )r¸   )rT   r´  rÇ  s   &r   Ú_clear_line_blanksÚ KawaiiSpinner._clear_line_blanksÅ  s   € Ø”S˜×+Ñ+¨aÕ/°Ó4Õ4Ð4r   c                ó    <€ V ^8„  d   QhRS[ /# )r   rž   r&   )r   ry   s   "€r   r   r”  È  s   ø€ ÷ mñ m¡ñ mr   c                ó‚   € T P                  V P                  '       d   RV P                  4        RV 2MRV 2RR7       R# )zšPrint a line above the spinner (next tick redraws it below). Works inside
redirect_stdout(devnull) because _write targets the stdout captured at creation.rÚ  z  rÙ  TrÓ  N)rÁ  r°  rõ  )r¹  rž   s   &&r   Úprint_aboveÚKawaiiSpinner.print_aboveÈ  s@   € ð 	�‰À$Ç,Ç,À,�b˜×0Ñ0Ó2Ð3°4¸°vÑ>ÐVXÐY]ÐX^ÐT_ÐgkˆÖlr   c                ó.   <€ V ^8„  d   QhRS[ R,          /# )r   Úfinal_messageNr&   )r   ry   s   "€r   r   r”  Í  s   ø€ ÷ 	Pñ 	P¡#¨¥*ñ 	Pr   c                óÌ  € R V n         V P                  '       d   V P                  P                  RR7       V P                  pV'       d'   V P	                  RV P                  4        R2RRR7       V'       dm   V P                  '       d,   R\        P                  ! 4       V P                  ,
          R R	2MRpT P	                  V'       d   R
V 2M\        RWR7      RR7       R# R# )FrÔ  )r�  rÚ  r   TrÛ  z (r×  rØ  rÙ  zdisplay.spinner.done_line)r©  rã  rÓ  N)	r°  r±  r¹   rÈ  rÁ  rõ  r²  rÜ  r   )r¹  rü  Úis_ttyrã  s   &&  r   re  ÚKawaiiSpinner.stopÍ  sº   € ØˆŒØ�;�;ˆ;Ø�K‰K×Ñ SÐÔ)Ø—‘ˆßØ�K‰K˜"˜T×4Ñ4Ó6Ð7°rÐ:ÀÈ$ˆKÔOßØDHÇOÇOÀO˜œ4Ÿ9š9›;¨¯©Õ8¸Ð=¸RÑ@ÐY[ˆGØ�K‰K·˜"˜]˜OÑ,¼AÐ>YÐcpô  =Cð  KOˆKö  Pñ r   c                ó&   € V P                  4        V # r#  )rì  rÇ  s   &r   Ú	__enter__ÚKawaiiSpinner.__enter__Ø  s   € Ø�
‰
ŒØˆr   c                ó&   € V P                  4        R # )F)re  )r¹  rð  s   &*r   Ú__exit__ÚKawaiiSpinner.__exit__Ü  s   € Ø�	‰	ŒÙr   )	r¸  rµ  r³  r´  r©  r°  r¯  r²  r±  )
u   (ï½¡â—•â€¿â—•ï½¡)u   (â—•â€¿â—•âœ¿)u   Ù©(â—•â€¿â—•ï½¡)Û¶u   (âœ¿â— â€¿â— )u   ( Ë˜â–½Ë˜)ã�£u   â™ª(Â´Îµ` )u   (â—•á´—â—•âœ¿)u   ãƒ¾(ï¼¾âˆ‡ï¼¾)u   (â‰§â—¡â‰¦)u
   (â˜…Ï‰â˜…))u   (ï½¡â€¢Ì�ï¸¿â€¢Ì€ï½¡)u	   (â—”_â—”)u	   (Â¬â€¿Â¬)u   ( â€¢_â€¢)>âŒ�â– -â– u   (âŒ�â– _â– )u   (Â´ï½¥_ï½¥`)u   â—‰_â—‰u	   (Â°ãƒ­Â°)u   ( Ë˜âŒ£Ë˜)â™¡u   ãƒ½(>âˆ€<â˜†)â˜†u   Ù©(à¹‘â�›á´—â�›à¹‘)Û¶u	   (âŠ™_âŠ™)u   (Â¬_Â¬)u   ( Í¡Â° ÍœÊ– Í¡Â°)u   à² _à² )Ú	ponderingÚcontemplatingÚmusingÚ
cogitatingÚ
ruminatingÚdeliberatingÚmullingÚ
reflectingÚ
processingÚ	reasoningÚ	analyzingÚ	computingÚsynthesizingÚformulatingÚbrainstorming)r   rŠ  N)r•   Fr#  ) r{   r|   r}   r~   r   rx   r®  r›  r¡  r¥  Ústaticmethodr—  ÚclassmethodÚget_waiting_facesÚget_thinking_facesr§  Úget_thinking_verbsrº  rÁ  ÚpropertyrÈ  rÏ  ræ  rì  rñ  rõ  rù  re  r  r  r�   r‚   rƒ   s   @r   r‰  r‰  P  sh  ø‡ € ÙTð 	‘Ð5Ó6¸Á$ÐGaÓBbÐdjÑlpð  r^ó  m_Ø‘$Ð1Ó2°F¹DÐA[Ó<\Ð^dÑfjð  lNó  gOØ‘Ð*Ó+¨W±dÐ;\Ó6]Ð_hÑjnð  pDó  kEð€Hò
€Nò€Oò€Nð ÷ó ðñ $Ñ$kÓlÐÙ$Ñ%nÓoÐØ÷^ó ð^ñ %Ñ%xÓyÐ÷ò ÷ò ð ÷ó ð÷ð òò2÷#ð #÷5ð 5÷mð m÷
	Pò 	Pò÷ð r   r‰  c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úmsgr   r&   )r   s   "r   r   r   è  s   € ÷ 3ñ 3”Sð 3œSñ 3r   c                óò   € V P                  4       p RV 9   dR   V P                  R4      ^,          P                  4       pRV9   d%   \        RVP                  R^4      R,          R7      p \	        V \
        4      # )zUShrink an error message for inline display (long 'File not found' paths -> filename).zFile not found:rÐ   zdisplay.failure.file_not_found)rX  rÑ   )r"   Ú	partitionr   rÒ   rÂ   Ú_ERROR_SUFFIX_MAX_LEN)r  Útails   & r   Ú_trim_errorr!  è  sd   € à
�)‰)‹+€CØ˜CÔØ�}‰}Ð.Ó/°Õ2×8Ñ8Ó:ˆØ�$Œ;ÜÐ4¸4¿;¹;ÀsÈAÓ;NÈrÕ;RÔSˆCÜ�sÔ1Ó2Ð2r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   r€  r   r_   )r   s   "r   r   r   ò  s   € ÷ ?ñ ?œ4ð ?¤Cñ ?r   c                óX  € \        V P                  R4      ;'       g%    V P                  R4      ;'       g    \        R4      4      P                  4       p\        V P                  R4      ;'       g    R4      P                  4       pV'       d   V RV 2MTpR\	        V\
        4       R2# )	uf   `` [<reason> â€” <retry_hint>]`` for a ``status: degraded`` terminal result (hint omitted when empty).ÚreasonrH  z,display.failure.terminal_backend_unavailableÚ
retry_hintr   u    â€” ú [Ú])r   r!   r   r"   rÂ   Ú_DEGRADED_SUFFIX_MAX_LEN)r€  r$  Úhintrž   s   &   r   Ú_degraded_suffixr*  ò  s�   € ä�—‘˜(Ó#×mÐm t§x¡x°Ó'8×mÐm¼AÐ>lÓ<mÓn×tÑtÓv€FÜˆt�x‰x˜Ó%×+Ð+¨Ó,×2Ñ2Ó4€Dß%)ˆfˆX�U˜4˜&Ñ!¨v€DØ”˜DÔ":Ó;Ð<¸AÐ>Ð>r   zROLLBACK FAILEDc                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r   r­   rF  r   )r   r   r�   )r   s   "r   r   r     s!   € ÷ :ñ :¤#ð :¬sð :´tñ :r   c                óì   € V \         9  d   R# \        V\        4      '       d   TM
\        V4      p\        V\        4      '       d   VP	                  R4      MTp\
        \        T;'       g    R4      9  # )z]True when a failed call of ``tool_name`` should render neutrally (see NEUTRAL_FAILURE_TOOLS).FrH  r   )ÚNEUTRAL_FAILURE_TOOLSr   r    r
   r!   Ú_UNSAFE_FAILURE_MARKERr   )r­   rF  r€  rH  s   &&  r   Úis_neutral_failurer0    sZ   € àÔ-Ô-Ùô   ¬×-Ò-‰6´?À6Ó3J€DÜ!+¨D´$×!7Ò!7ˆD�H‰H�WÔ¸V€EÜ!¬¨U¯[¨[°bÓ)9Ñ9Ð9r   c                ó^   € V ^8„  d   QhR\         R\        R\        \        \         3,          /# r,  )r   r   r2   r�   )r   s   "r   r   r     s*   € ÷ +ñ +¤Cð +´ð +¼¼tÄS¸yÕ9Iñ +r   c                óª  € Ve   \        W4      '       d   R# \        V\        4      '       d   TM
\        V4      p\	        V4      '       d   R# \        V\        4      '       d>   VP                  R4      '       d'   RR\        \        VR,          4      \        4       R23# V R8X  d›   \        V\        4      '       d   VP                  R	4      MRpVe   V^ 8X  d   R# VP                  R
4      R8X  d   R\        V4      3# VP                  R4      pRV'       d   R\        \        V4      4       R23# \        RVR7      3# \        V\        4      '       dÈ   VP                  R4      RJ pV R8X  d-   V'       d%   RVP                  RR4      9   d   R\        R4      3# VP                  R4      ;'       g    VP                  R4      pV'       d*   V'       g   RV9   d   RR\        \        V4      4       R23# \        V4      ;p'       d   RR\        V4       R23# R# \        V\        4      '       d   \        V4      '       d   R\        R4      3# R# )zPReturn ``(is_failure, suffix)`` for a tool result, e.g. ``(True, " [exit 1]")``.NFr   Úuser_summaryTr&  r'  rD  Ú	exit_codeÚstatusÚdegradedrH  zdisplay.failure.exit_code)r?  rI  rÂ  zexceed the limitzdisplay.failure.memory_fullr©  zdisplay.failure.generic)Fr   )r   r   r    r
   r   r!   rÂ   r   r(  r*  r!  r   r   r   )r­   rF  r€  r4  Úerr_msgÚfailedÚerrÚ	shape_errs   &&      r   Ú_detect_tool_failurer;    s  € à‚~Ô4°Y×GÒGØÐÜ ¬×-Ò-‰6´?À6Ó3J€Dô ˜D×!Ò!ØÐô �$œ×Ò $§(¡(¨>×":Ò":Ø�rœ+¤c¨$¨~Õ*>Ó&?ÔAYÓZÐ[Ð[\Ð]Ð]Ð]ð �JÔÜ-7¸¼d×-CÒ-C�D—H‘H˜[Ô)Èˆ	ØÒ 	¨Q¤ØÐØ�8‰8�HÓ Ô+ØÔ)¨$Ó/Ð/Ð/Ø—(‘(˜7Ó#ˆØ¿'�rœ+¤c¨'£lÓ3Ð4°AÐ6ÐuÐuÄqÐIdÐktÔGuÐuÐuä�$œ×ÒØ—‘˜)Ó$¨Ð-ˆà˜Ô §VÐ0BÀdÇhÁhÈwÐXZÓF[Ô0[ØœÐ8Ó9Ð9Ð9Ø�h‰h�wÓ×6Ð6 4§8¡8¨IÓ#6ˆß—F˜g¨œoØ˜2œk¬#¨c«(Ó3Ð4°AÐ6Ð6Ð6Ü+¨DÓ1Ð1ˆ9Ö1Ø˜2œk¨)Ó4Ð5°QÐ7Ð7Ð7ð Ðä�&œ#×ÒÔ#5°f×#=Ò#=Ø”QÐ0Ó1Ð1Ð1ØÐr   c                ó0   € V ^8„  d   QhR\         R\         /# )r   r   r   r&   )r   s   "r   r   r   =  s   € ÷ Lñ L”ð Lœñ Lr   c                 ór   € V P                  R R4      P                  RR4      P                  R4      ^ ,          # )zhttps://r   zhttp://rÐ   )r   rº   )r   s   &r   Ú_domainr>  =  s0   € Ø�;‰;�z 2Ó&×.Ñ.¨y¸"Ó=×CÑCÀCÓHÈÕKÐKr   c                ó$   € V ^8„  d   QhR\         /# r^   r&   )r   s   "r   r   r   A  s   € ÷ 6ñ 6”cñ 6r   c                ó4   € \        \        V 4      \        4      # )z<Tail-truncate to the configured preview cap (0 = unlimited).)rÂ   r   r‡   )rù   s   &r   Ú_cute_truncrA  A  s   € ä”s˜1“vÔ4Ó5Ð5r   c                ó$   € V ^8„  d   QhR\         /# r^   r&   )r   s   "r   r   r   F  s   € ÷ Cñ C”Sñ Cr   c                óž   € \        V 4      p \        pV'       d   \        V 4      V8:  d   V # V^8:  d
   RV,          # RW^,
          ) R ,           # )zMHead-truncate a path to the configured preview cap, keeping the filename end.rÀ   r“   N)r   r‡   rg   )rå   r½   s   & r   Ú
_cute_pathrD  F  sG   € äˆA‹€AÜ!€Eß”C˜“F˜e”OØˆØ 1œ*ˆ3��;ÐB¨%°!¸aµi°L°MÐ2BÕ*BÐBr   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltR tV3R ltRtVt	V ;t
# )Ú_CuteRowiO  u¬   A rendered completion row that also keeps its emoji, verb and detail, so the CLI's glyph
layout can rebuild the row without re-parsing the padded ``â”Š emoji verb`` string.c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ /# )r   rž   rì  rŠ  Údetailr&   )r   ry   s   "€r   r   Ú_CuteRow.__annotate__W  s)   ø€ ÷ ñ ™3ð ¡sð ±#ð ¹sñ r   c                ól   <€ \         SV `  W4      pVP                  4       W4uVn        Vn        Vn        V# r#  )ÚsuperÚ__new__r"   rì  rŠ  rH  )r�  rž   rì  rŠ  rH  ÚrowÚ	__class__s   &&&&& €r   rL  Ú_CuteRow.__new__W  s0   ø€ Ü‰g‰o˜cÓ(ˆØ*/¯+©+«-¸Ð'ˆŒ	�3”8˜SœZØˆ
r   c                ó&   € \         \        V 4      33# r#  r&   rÇ  s   &r   Ú
__reduce__Ú_CuteRow.__reduce__\  s   € Ü”c˜$“i�\Ð"Ð"r   c                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r   rì  rŠ  rH  r&   )r   ry   s   "€r   r   rI  O  s)   ø‡ ‚ ñ �Jñ	 ñ
 �Iñ ñ �Kò r   rM   )r{   r|   r}   r~   r   rL  rQ  r€   r�   r‚   Ú__classcell__)rN  ry   s   @@r   rF  rF  O  s!   ù‡ € ñ[÷ó ò
#÷ … r   rF  c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r   rì  rŠ  rH  r   r&   )r   s   "r   r   r   `  s.   € ÷ Mñ M”Sð M¤ð M¬Sð M¼#ñ Mr   c                óL   € \        RV 24      p\        RV  RVR RV 2WV4      # )ub   ``â”Š {emoji} {verb:9} {detail}`` -- verb column from ``display.cute.verb.<verb>`` (9 cells wide).zdisplay.cute.verb.õ   â”Š r¸   Ú9)r   rF  )rì  rŠ  rH  rB  s   &&& r   Ú	_cute_rowrY  `  s8   € äÐ" 4 &Ð)Ó*€EÜ�d˜5˜'  5¨ )¨1¨V¨HÐ5°uÀVÓLÐLr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r­   r�   r   )r   r    rF  )r   s   "r   r   r   f  s&   € ÷ Yñ Y¤#ð Y¬Tð Y´hñ Yr   c                ó�   € \        \        W4      ;'       g    R4      p\        V 4      p\        RV RV R,          R RV 2W0V4      # )z¢The row for a tool with no dedicated renderer: its registered (or skin) emoji, its name, and
its preview. One source for both layouts, so their icons can't drift.r   rW  r¸   ºNé	   NrX  )rA  rÑ  r´   rF  )r­   r�   rH  rì  s   &&  r   Ú_cute_fallback_rowr^  f  sP   € ô Ô+¨IÓ<×BÐBÀÓC€FÜ˜9Ó%€EÜ�d˜5˜'  9¨R¥=°Ð"3°1°V°HÐ=¸uÐQWÓXÐXr   Úis_errorFc                ód   € V ^8„  d   QhR\         R\        R,          R\         R,          R\        /# )r   r­   r�   NrF  r_  )r   r    r�   )r   s   "r   r   r   n  s1   € ÷ 3ñ 3¤#ð 3¬T°D­[ð 3Ä#ÈÅ*ð 3Ôbfñ 3r   c          	     ó†  €  \        W4      ;'       g    T;'       g    / p\        W4      w  rEV'       d   TMV'       d   RMRp\        W4      pV'       dº   \        \	        V4      Y$'       d   TMR4      pV U	u. uF  q™;'       g    RNK  	  p
p	Ve   \        V4      '       g   WjR&   \        Wz4       UUu. uFO  w  r¼VP                  \        VP                  4      VP                  '       d   \        VP                  4      MRV3NKQ  	  upp# \        P                  V 4      pV'       d	   V! W4      MRp\        V\        4      '       d   TM
\        W4      pVP                  VP                   VP"                  V3.# u up	i u uppi   \$         d,    \&        P)                  RT RR7       R\+        T 4      RR3.u # i ; i)u  ``[(emoji, verb, detail, failure), ...]`` for one completed call: the parts the ``â”Š`` line
uses, without its padding. ``failure`` is None for a row that succeeded, else that row's
suffix (``" [exit 1]"``, possibly ``""``); batch calls mark the entry that failed.r   NzTool row parts failed for %sT)Úexc_infoõ   âš¡rÑ   )r/  r;  rº  Ú_bridge_row_suffixesrg   ÚanyÚziprì  rA  rž   rr  Ú_CUTE_LINESr!   r   rF  r^  rŠ  rH  r?   rî  rï  r   )r­   r�   rF  r_  Ú
is_failureÚsuffixÚcall_failurer¼  Úsuffixesrù   ÚmarksÚlbÚmarkÚrenderrM  s   &&&$           r   Úget_tool_row_partsrp  n  s{  € ð3Ü+¨IÓ<×JÐJÀ×JÐJÈˆÜ1°)ÓDÑˆ
ß!+‘v¿±"ÀdˆÜ# IÓ4ˆßÜ+¬C°«K¸Î:ÁÐ[]Ó^ˆHÙ(0Ó1© 1—Y�Y˜$’Y©ˆEÐ1ØÒ'´°H·²Ø(�b‘	ä$'¨Ô$6ô8Ù$6™˜ð —X‘Xœ{¨2¯7©7Ó3ÐPR×PZ×PZÐPZ´[ÀÇÁÔ5LÐ`bÐdhÓiÙ$6ò8ð 8ä—‘ Ó+ˆß&,‰f�TÔ"°$ˆÜ ¤X×.Ò.‰cÔ4FÀyÓ4WˆØ—‘˜CŸH™H c§j¡j°,Ð?Ð@Ð@ùò 2ùó8øô ô 3Ü�‰Ð3°YÈˆÔNØœ˜I›¨¨DÐ1Ð2Ò2ð3úsS   ‚F
 ”	F
 ž!F
 Á :F
 Á:E?ÂE?Â)F
 Â7AFÄF
 ÄF
 Ä-AF
 Å?F
 Æ
3G Æ?G c                ó0   € V ^8„  d   QhR\         R\        /# ©r   Úar   r_   )r   s   "r   r   r   ‡  s   € ÷ Mñ Mœð M¤cñ Mr   c           	      óŠ  € V P                  R . 4      pV'       d+   \        \        V\        4      '       d
   V^ ,          MT4      MRpV'       g   \	        RR\        R4      4      # \        V\        4      '       d&   \        V4      ^8”  d   R\        V4      ^,
           2MRp\	        RR\        \        V4      4       V 24      # )rH  r   u   ðŸ“„Úfetchzdisplay.cute.fetch_pagesr¹  )	r!   r#   r   rx   rY  r   rg   rA  r>  )rs  Ú_rrH  r   r½  s   &&   r   Ú_cute_web_extractrw  ‡  sš   € Ø�5‰5�˜Ó€DßGKŒ,¤*¨T´4×"8Ò"8�t˜A–w¸dÔ
CÐQS€CßÜ˜ ¬!Ð,FÓ*GÓHÐHÜ",¨T´4×"8Ò"8¼SÀ»YÈ¼]ˆb”�T“˜1•�ÑÐPR€EÜ�V˜W¬´W¸S³\Ó)BÐ(CÀEÀ7Ð&KÓLÐLr   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   �  s   € ÷ -ñ -”tð -¬ñ -r   c                 ó8  € V P                  R 4      p^ ;r4 V'       d&   \        V4      ;'       g    / P                  R/ 4      M/ pVP                  R^ 4      VP                  R^ 4      rC\        RWCR7      pVf   V^ 8”  d   TM
\        R4      pMpV P                  RR4      '       d3   V^ 8”  d   V^ 8”  d   \        R	WCR7      M\        R
\	        V4      R7      pM&V^ 8”  d
   V^ 8”  d   TM\        R\	        V4      R7      p\        RRV4      #   \         d     L°i ; i)rˆ  r‚  ÚtotalÚ	completedzdisplay.cute.todo_progress)Údonerz  zdisplay.cute.todo_readingr‰  Fz!display.cute.todo_update_progresszdisplay.cute.todo_update_countrp  zdisplay.cute.todo_countu   ðŸ“‹Úplan)r!   r
   r?   r   rg   rY  )rs  rF  r‹  rz  r|  r‚  ÚprogressrH  s   &&      r   Ú_cute_todo_listr  �  s  € Ø—‘�g“€IØÐ€EðßHN”? 6Ó*×0Ð0¨b×5Ñ5°iÀÔDÐTVˆØ—k‘k '¨1Ó-¨w¯{©{¸;ÈÓ/Jˆtô Ð-°DÔF€HØÒØ" QœY‘¬AÐ.IÓ,J‰Ø	
�‰ˆw˜×	Ò	ØTYÐ\]ÔT]ÐbfÐijÔbj”!Ð7¸dÕPÜÐ9ÄÀYÃÔPñ 	ð # QœY¨4°!¬8‘¼Ð;TÔ\_Ð`iÓ\jÔ9kˆÜ�V˜V VÓ,Ð,øô ô Ùðús   –D °8D ÄDÄDc                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   £  s   € ÷ 4ñ 4”Dð 4¤ñ 4r   c                 ó€  € V P                  R R4      V P                  RR4      r2VR8X  d.   \        RRRV R\        V P                  R	R4      4       R
24      # VR9   dL   V P                  R4      ;'       g    \        R4      p\        RRVR8X  d   RMR V R\        V4       R
24      # \        RR\	        V4      4      # )r\  r8  r›  r   rœ  u   ðŸ§ rÂ  r�  rž  rŸ  r×   r   r¡  r¢  r  r£  r¤  )r!   rY  rA  r   r   )rs  rv  r\  r›  r¥  s   &&   r   Ú_cute_memoryr‚  £  sÅ   € Ø—U‘U˜8 SÓ)¨1¯5©5°¸2Ó+>ˆFØ�„Ü˜ ¨Q¨v¨h°d¼;ÀqÇuÁuÈYÐXZÓG[Ó;\Ð:]Ð]_Ð+`ÓaÐaØÐ/Ô/Ø�e‰e�JÓ×HÐH¤1Ð%GÓ#HˆÜ˜ °V¸xÔ5G©cÈSÐ-QÐRXÐQYÐY]Ô^iÐjmÓ^nÐ]oÐoqÐ+rÓsÐsÜ�V˜X¤s¨6£{Ó3Ð3r   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   ­  s   € ÷ :ñ :œð :¤Sñ :r   c                 óº   € V P                  R R4      V P                  R4      r2V'       d   V'       d   V RV 2M\        V4      MTp\        RR\        V4      4      # )rX  r   r­  r®  õ   ðŸ“šÚskill)r!   r   rY  rA  )rs  rv  rB  r­  s   &&  r   Ú_cute_skill_viewr‡  ­  sN   € Ø—u‘u˜V RÓ(¨!¯%©%°Ó*<ˆ9ßIR¯5�ˆw�e˜I˜;Ñ'´c¸)´nÐX]€EÜ�V˜W¤k°%Ó&8Ó9Ð9r   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   ³  s   € ÷ Gñ G”Tð G¤#ñ Gr   c           
      ó  € V P                  R R4      pVR8X  dµ   V P                  R4      ;'       g,    V P                  R4      '       d   V P                  R4      .M. pV P                  R4      ;'       g7    V'       d
   V^ ,          MR;'       g    V P                  R\        R4      4      p\        R	R
\        R\        V4      R7      4      # VR8X  d   \        R	R
\        R4      4      # \        R	R
V RV P                  RR4       24      # )r\  r8  r+  Úskillsr†  rX  NrS  zdisplay.cute.cron_task_fallbacku   â�°Úcronzdisplay.cute.cron_create)rB  rx   zdisplay.cute.cron_listingr¸   Újob_idr   )r!   r   rY  rA  )rs  rv  r\  rŠ  rB  s   &&   r   Ú_cute_cronjobr�  ³  sß   € Ø�U‰U�8˜SÓ!€FØ�ÔØ—‘�x“×PÐP¸¿¹¸w¿º a§e¡e¨G£nÑ%5ÈRˆØ—‘�f“×yÐy¯v &¨¦)¸4×yÐyÀAÇEÁEÈ(ÔTUÐVwÓTxÓDyˆÜ˜ ¬Ð*DÌKÐX]ÓL^Ô(_Ó`Ð`Ø�ÔÜ˜ ¬Ð*EÓ(FÓGÐGÜ�U˜F v h¨a°·±°hÀÓ0CÐ/DÐ$EÓFÐFr   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   ¾  s   € ÷ Zñ Zœ$ð Z¤sñ Zr   c                 óÐ   € V P                  R R4      P                  4       p\        RR\        V'       d*   VP	                  \        ^
4      4      ^ ,          4      4      # R4      4      # )r?  r   u   ðŸ��Úexec)r!   r"   rY  rA  rº   Úchr)rs  rv  r?  s   && r   Ú_cute_execute_coder’  ¾  sO   € Ø�5‰5�˜Ó×"Ñ"Ó$€DÜ�V˜V¤[Ï4°·±¼CÀ»GÓ1DÀQÕ1GÓ%XÓYÐYÐUWÓ%XÓYÐYr   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   Ã  s   € ÷ yñ yœ$ð y¤sñ yr   c                 ó°   € \        V 4      p\        R RVf<   \        \        \	        V P                  RR4      ;'       g    R4      4      4      4      # T4      # )õ   ðŸŒ�Úbrowserr?  r   )rC  rY  rA  r»   r   r!   )rs  rv  rB  s   && r   Ú_cute_browser_execr—  Ã  sM   € ä$ QÓ'€EÜ�V˜YÐ_dÒ_l¬´H¼SÀÇÁÀvÈrÓAR×AXÐAXÐVXÓ=YÓ4ZÓ([ÓxÐxÐrwÓxÐxr   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   É  s   € ÷ 	Iñ 	I”dð 	I¤3ñ 	Ir   c           
      óÆ  € \        V 4      pV P                  R 4      pVe   \        RR\        V4      4      # V'       d   \	        V\
        4      '       di   \        V^R7      p\        V'       d   RP                  V4      M
\        R4      4      p\        RR\        V4      ;'       g    \        V4       RV 24      # \        RR\        V P                  RR4      4      4      # )	r1  u   ðŸ”€Údelegaterm  rn  zdisplay.cute.delegate_parallelzx: r5  r   )
rf  r!   rY  rA  r   rx   r:  r¹   r   rg   )rs  rv  rq  r1  ro  Újoineds   &&    r   Ú_cute_delegaterœ  É  sµ   € Ü-¨aÓ0€NØ�E‰E�'‹N€EØÒ!Ü˜ ¬[¸Ó-HÓIÐIß”˜E¤4×(Ò(Ü$ U¸Ô<ˆÜ·%˜UŸZ™Z¨Ô.¼QÐ?_Ó=`ÓaˆÜ˜ ´°E³
×0HÐ0H¼cÀ%»jÐ/IÈÈVÈHÐ-UÓVÐVÜ�V˜Z¬°Q·U±U¸6À2Ó5FÓ)GÓHÐHr   c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   Õ  s   € ÷ sñ sœDð s¬ñ sr   c                 ó¦   € V P                  R R4      V P                  RR4      R,          r2\        RRVR8X  d   \        R4      4      # V R	V 24      # )
r\  r8  r  r   :Né   Nu   âš™ï¸� Úprocrx   zdisplay.cute.process_listr¸   )r!   rY  r   )rs  rv  r\  r‚  s   &&  r   Ú_cute_process_manager¡  Õ  sY   € Ø—%‘%˜ #Ó&¨¯©¨l¸BÓ(?ÀÕ(DˆCÜ�Y È&ÐTZÔJZ¬Ð*EÓ(FÓrÐrÐciÐbjÐjkÐloÐkpÐ`qÓrÐrr   Údownõ   â†“Úupu   â†‘rå  u   â†’rä  u   â†�c                ó0   € V ^8„  d   QhR\         R\        /# rr  r_   )r   s   "r   r   r   Ý  s   € ÷ Rñ R”Dð R¤ñ Rr   c                 ó¶   € V P                  R R4      pV\        9   d   \        RV 24      M
\        V4      p\	        \        P                  VR4       R2RV4      # )Ú	directionr¢  zdisplay.cute.scroll.r£  r¸   Úscroll)r!   Ú_SCROLL_ARROWSr   r   rY  )rs  rv  r§  rB  s   &&  r   Ú_cute_scrollrª  Ý  sX   € Ø—‘�k 6Ó*€IØ5>Ä.Ô5PŒAÐ$ Y KÐ0Ô1ÔVYÐZcÓVd€EÜœ×*Ñ*¨9°eÓ<Ð=¸QÐ?ÀÈ5ÓQÐQr   c           
      óN   € \        R R\        V P                  RR4      4      4      # )õ   ðŸ”�r  rF  r   ©rY  rA  r!   ©rs  rG   s   &&r   r˜   r˜   å  s   € œy¨°¼;ÀqÇuÁuÈWÐVXÓGYÓ;ZÔ[r   c           
      óv   € \        R R\        \        RV 4      ;'       g    V P                  RR4      4      4      # )u   ðŸ’»rD  rð   r   ©rY  rA  rÑ  r!   r®  s   &&r   r˜   r˜   ç  sF   € œY v¨z¼;ÔGYÐZdÐfgÓGh÷  HAð  HAÐlm×lqÑlqÐr{Ð}ó  mAó  <Bô  Cr   c           
      óv   € \        R R\        \        RV 4      ;'       g    V P                  RR4      4      4      # )u   ðŸ“–ÚreadrI  rJ  r   r°  r®  s   &&r   r˜   r˜   é  s4   € œi¨°¼ÔDVÐWbÐdeÓDf×D{ÐD{Ðjk×joÑjoÐpvÐxzÓj{Ó8|Ô}r   c           
      óN   € \        R R\        V P                  RR4      4      4      # )u   âœ�ï¸� rÀ  rJ  r   ©rY  rD  r!   r®  s   &&r   r˜   r˜   ê  s   € œy¨°G¼ZÈÏÉÈfÐVXÓHYÓ=ZÔ[r   c           
      óN   € \        R R\        V P                  RR4      4      4      # )u   ðŸ”§rL  rJ  r   r´  r®  s   &&r   r˜   r˜   ë  s   € œ) F¨G´ZÀÇÁÀfÈbÓ@QÓ5RÔSr   c           
      ó€   € \        R V P                  RR4      R8X  d   RMR\        V P                  RR4      4      4      # )u   ðŸ”Žr›  rŸ  ÚfilesÚfindÚgreprN  r   ©rY  r!   rA  r®  s   &&r   r˜   r˜   ì  sT   € ¤¨6¸Q¿U¹UÀ8ÈYÓ=WÐ[bÔ=b±6ÐhnÔp{Ð|}÷  }Bñ  }Bð  CLð  NPó  }Qó  qRô  "Sr   c                 ó`   € \        R R\        \        V P                  RR4      4      4      4      # )r•  Únavigater   r   )rY  rA  r>  r!   r®  s   &&r   r˜   r˜   í  s'   € ¤Y¨v°zÄ;ÌwÐWX×W\ÑW\Ð]bÐdfÓWgÓOhÓCiÔ%jr   Úbrowser_snapshotc           	      óp   € \        R R\        V P                  R4      '       d   R4      4      # R4      4      # )u   ðŸ“¸rL  Úfullzdisplay.cute.snapshot_fullzdisplay.cute.snapshot_compact©rY  r   r!   r®  s   &&r   r˜   r˜   î  s@   € ¤Y¨v°zÄ1Ðef×ejÑejÐkq×erÒerÐEaó  DYô  &Zð  yXó  DYô  &Zr   c           
      óN   € \        R R\        V P                  RR4      4      4      # )u   ðŸ‘†ÚclickrQ  r8  ©rY  r   r!   r®  s   &&r   r˜   r˜   ï  s   € ¤)¨F°G¼SÀÇÁÀuÈcÓARÓ=SÔ"Tr   c                 óV   € \        R RR\        V P                  RR4      4       R24      # )õ   âŒ¨ï¸� Útyper×   rž   r   r­  r®  s   &&r   r˜   r˜   ð  s*   € ¤¨9°fÀÄ;ÈqÏuÉuÐU[Ð]_ÓO`ÓCaÐBbÐbdÐ>eÔ!fr   Úbrowser_scrollÚbrowser_backc                 ó   € \        R R4      # )u   â—€ï¸� Úback)rY  r®  s   &&r   r˜   r˜   ò  s   € ¤¨9°fÔ!=r   Úbrowser_pressc           
      óN   € \        R R\        V P                  RR4      4      4      # )rÅ  Úpressrl   r8  rÃ  r®  s   &&r   r˜   r˜   ó  s   € ¤)¨I°wÄÀAÇEÁEÈ%ÐQTÓDUÓ@VÔ"Wr   Úbrowser_get_imagesc                 ó.   € \        R R\        R4      4      # )u   ðŸ–¼ï¸� Úimageszdisplay.cute.images_extracting©rY  r   r®  s   &&r   r˜   r˜   ô  s   € ¤y°¸XÄqÐIiÓGjÔ'kr   Úbrowser_visionc                 ó.   € \        R R\        R4      4      # )õ   ðŸ‘�ï¸� Úvisionz"display.cute.vision_analyzing_pagerÑ  r®  s   &&r   r˜   r˜   õ  s   € ¤9¨Z¸Ä1ÐEiÓCjÔ#kr   c                 óV   € \        R RR\        V P                  RR4      4       R24      # )r¬  Úrecallr×   rF  r   r­  r®  s   &&r   r˜   r˜   ÷  s-   € ¤9¨V°XÀÄKÐPQ×PUÑPUÐV]Ð_aÓPbÓDcÐCdÐdfÐ?gÔ#hr   c           
      óv   € \        R R\        RV P                  R4      ;'       g    \        R4      R7      4      # )r…  rŠ  zdisplay.cute.skills_listrZ  zdisplay.cute.skills_all)rZ  rÀ  r®  s   &&r   r˜   r˜   ù  sG   € ¤	¨&°(¼AÐ>XÐcd×chÑchÐisÓct÷  dUð  dUÔxyð  {Tó  yUô  =Vô  !Wr   c           
      óN   € \        R R\        V P                  RR4      4      4      # )u   ðŸŽ¨r+  rS  r   r­  r®  s   &&r   r˜   r˜   û  s   € ¤9¨V°X¼{È1Ï5É5ÐQYÐ[]ÓK^Ó?_Ô#`r   c           
      óN   € \        R R\        V P                  RR4      4      4      # )u   ðŸ”ŠÚspeakrž   r   r­  r®  s   &&r   r˜   r˜   ü  s   € ¤9¨V°W¼kÈ!Ï%É%ÐPVÐXZÓJ[Ó>\Ô#]r   c           
      óN   € \        R R\        V P                  RR4      4      4      # )rÔ  rÕ  rV  r   r­  r®  s   &&r   r˜   r˜   ý  s   € ¤9¨Z¸Ä;ÈqÏuÉuÐU_ÐacÓOdÓCeÔ#fr   c                 óz   € \        R RV P                  RR4       R\        V P                  RR4      4       R24      # )u   ðŸ“¨Úsendr›  r8  rž  r©  r   r×   rº  r®  s   &&r   r˜   r˜   þ  s?   € ¤¨6°6¸a¿e¹eÀHÈcÓ>RÐ=SÐSWÔXcÐde×diÑdiÐjsÐuwÓdxÓXyÐWzÐz|Ð;}Ô!~r   c                ó`   € V ^8„  d   QhR\         R\        R\        \         ,          R,          /# )r   r­   r�   r   Nré  )r   s   "r   r   r     s/   € ÷ añ a¤ð a¬Dð a´T¼#µYÀÕ5Eñ ar   c                 óø   € \        W4      pV'       g   R # V Uu. uFT  pRVP                   R\        VP                  4       VP                  '       d   R\        VP                  4       2MR 2NKV  	  up# u upi )NrW  r¸   rÙ  r   )rº  rì  rA  rž   rr  )r­   r�   r¼  rB  s   &&  r   Ú_cute_bridge_rowsrá    s{   € Ü 	Ó0€FßÙáY_óaÙY_ÐPUð �5—;‘;�-˜q¤¨U¯Z©ZÓ!8Ð 9Ø49·M·M°M�”K §¡Ó.Ð/Ñ0ÀrÐJóLÙY_ñað aùò as   šAA7zcalls\[(\d+)\]c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úentryr   r   )r   s   "r   r   r     s   € ÷ Hñ H¤ð H¬ñ Hr   c                 óÎ  € \        V \        4      '       g   R # V P                  R4      p\        V\        4      '       dT   R\        \	        VP                  R4      ;'       g%    VP                  R4      ;'       g    \        R4      4      4       R2# V'       g   V P                  R4      RJ g   R # \        \	        V P                  R	4      ;'       g    R 4      V 4      ^,          # )
r   rH  r&  r©  r?  zdisplay.failure.generic_wordr'  rI  FrX  )r   r    r!   r!  r   r   r;  )rã  rH  s   & r   Ú_entry_failure_suffixrå    s¯   € Ü�eœT×"Ò"ÙØ�I‰I�gÓ€EÜ�%œ×ÒØ”K¤ E§I¡I¨iÓ$8×$rÐ$r¸E¿I¹IÀfÓ<M×$rÐ$rÔQRÐSqÓQrÓ sÓtÐuÐuvÐwÐwß�U—Y‘Y˜yÓ)¨UÓ2ÙÜ¤ E§I¡I¨fÓ$5×$;Ð$;¸Ó <¸eÓDÀQÕGÐGr   c          	      ó^   € V ^8„  d   QhR\         R\        R\        R\        \        ,          /# )r   ÚrowsrF  Úcall_suffixr   )r3   r   r   rx   )r   s   "r   r   r     s,   € ÷ ñ œsð ¬Cð ¼cð ÄdÌ3Åiñ r   c                 ó¤  € R .V ,          p\        V\        4      '       d   TM
\        V4      p\        V\        4      '       d   VP                  R4      MRp\        V\        4      '       dl   \        VRV  4       FY  w  rg\        V4      pV'       g   K  VP                  R4      p	Yƒ\        V	\        4      '       d   ^ T	u;8:  d   V 8  d   M MT	MT&   K[  	  V'       dq   \        V4      '       g`   \        P                  V4      p
V
'       d   \        V
P                  ^4      4      MV ^,
          pY#^ Tu;8:  d   V 8  d   M MTMV ^,
          &   V# )r   ÚresultsNÚindex)r   r    r
   r!   rx   r[   rå  r3   re  Ú_BRIDGE_CALL_INDEX_REr  r—   )rç  rF  rè  rk  r€  ÚentriesÚpositionrã  ri  rë  rþ   Únameds   &&&         r   rd  rd    sü   € Øˆt�d�{€HÜ ¬×-Ò-‰6´?À6Ó3J€DÜ%/°´d×%;Ò%;ˆd�h‰h�yÔ!À€GÜ�'œ4× Ò Ü(¨°°$¨Ö8‰OˆHÜ*¨5Ó1ˆFßÙØ—I‘I˜gÓ&ˆEØ\bœj¨´×4Ò4¸¸eÖ9JÀd×9J‘UÐPXÓYñ  9÷ œ3˜xŸ=š=Ü%×,Ñ,¨[Ó9ˆß',”�E—K‘K “NÔ#°$¸µ(ˆØ=H˜!˜uÖ+ t×+‘°¸µÑ:Ø€Or   c          
      ób   € V ^8„  d   QhR\         R\        R\        R\         R,          R\         /# ©r   r­   r�   ÚdurationrF  Nr   ©r   r    Úfloat)r   s   "r   r   r   .  s>   € ÷ jñ j¤cð j´ð jÄð jÔPSÐVZÕPZð jÔfiñ jr   c                 ó®  a
€ \        W4      ;'       g    Tp\        W4      w  rE\        P                  V 4      p\	        W4      pVf,   V'       d	   V! W4      M
\        W4      pV.V'       d   TMR.r—M\        \        V4      Y4'       d   TMR4      p	. VR R OVR,           RVR R2Np\        4       o
RP                  V
3R l\        Wy4       4       4      # )Nr   rÙ  r×  rù   z
  c              3   óV   <"  € T F  w  rV V 2P                  R S^4      x € K   	  R# 5i)r©   N)r   )rU   rM  ri  rg  s   &  €r   rX   Ú)_get_cute_tool_message.<locals>.<genexpr>:  s0   øé € ÐiÑUhÁkÀc˜#˜˜v˜hÐ'×/Ñ/°°v¸q×AÐAÓUhùs   ƒ&)rÑ   )r/  r;  rg  r!   rá  r^  rd  rg   r«   r¹   rf  )r­   r�   rò  rF  rh  Úfailure_suffixro  rç  Úbodyrk  rg  s   &&&&      @r   Ú_get_cute_tool_messagerú  .  sÆ   ø€ Ü'¨	Ó8×@Ð@¸D€DÜ!5°iÓ!HÑ€JÜ�_‰_˜YÓ'€FÜ˜YÓ-€DØ‚|ß'-‰v�dÔ#Ô3EÀiÓ3VˆØ˜·J¡.ÀBÐ!G‰hä'¬¨D«	°6ÎZ¹>Ð]_Ó`ˆØ7ˆT�#�2ˆYÐ7˜4 �8˜* B x° n°AÐ6Ð7€DÜ!Ó#€FØ�;‰;ÔiÔUXÐY]ÔUhÓiÓiÐir   c          
      ób   € V ^8„  d   QhR\         R\        R\        R\         R,          R\         /# rñ  ró  )r   s   "r   r   r   =  s<   € ÷ Zñ Z¤Sð Z´ð ZÄð ZÌsÐUYÍzð ZÔehñ Zr   c                óX  €  \        WW#R7      #   \         d�   p\        P                  RY4       \	        T \
        4      '       d   T '       d
   T R,          M
\        R4      p\	        T\        \        34      '       d   TR R2M
\        R4      p\        RTR	 TR
7      u Rp?# Rp?ii ; i)zCRender a completion label without letting cosmetic failures escape.)rF  z'Tool completion label failed for %s: %sr\  zdisplay.cute.fallback_tool_namer×  rù   zdisplay.cute.fallback_donezdisplay.cute.completedrX  )r  rò  N)	rú  r?   rî  rï  r   r   r   r3   rô  )r­   r�   rò  rF  rð  Ú	safe_nameÚsafe_durations   &&&&   r   Úget_cute_tool_messagerÿ  =  s‘   € ðZÜ% i°xÔOÐOøÜô ZÜ�‰Ð>À	ÔOÜ%/°	¼3×%?Ò%?ÇI�I˜b–MÔSTÐUvÓSwˆ	Ü.8¸ÄCÌÀ<×.PÒ.P˜8 C˜.¨Ñ*ÔVWÐXtÓVuˆÜÐ)°9¸Q°-È=ÔYÕYûð	Zús!   ‚ �B)š3B$ÁAB$ÂB)Â$B)c                ó¸  € V ^8„  d   Qh/ ^ \         9   d"   \        \        \        3,          R,          ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d   \
        \        ,          ;R&   ^\         9   d   \
        \        ,          ;R&   ^\         9   d   \
        \        ,          ;R&   ^\         9   d   \
        \        ,          ;R&   # )	r   Nrb   r‡   r¥   rá  r  rþ  ræ  )Ú__conditional_annotations__r    r   r3   r�   Ú	frozenset)r   s   "r   r   r      s¼   € ÷ ñ ÷x 2Ò 1”Tœ#œs˜(•^ dÕ*Ñ 1ñy÷f Ò ”sÑ ñg÷h #Ò "”tÑ "ñi÷pò ”)œC•.ñ ñq÷L VÒ Uœ	¤#�Ñ UñM÷P VÒ Uœ9¤S�>Ñ UñQ÷T dÒ cœ)¤C�.Ñ còUr   )Ú
banner_dim)é–   r  r  )Úsession_label)é´   é    éÿ   )Úsession_border)éx   r
  éŒ   )Úui_errorz#ef5350r  z"[38;2;255;255;255;48;2;120;20;20m)Úui_okz#4caf50r5   z![38;2;255;255;255;48;2;20;90;20m)rc  >   rÀ   Ú:ÚcdÚsetÚpopdÚtrueÚfalseÚpushdÚunsetÚexportÚsource>   ÚwcrÎ   Úsortr   Úuniq)éP   )rF  rž   rð   rJ  rX  rS  r?  r5  r#  >   rL  rÂ  rÄ  rD  rI  rÁ  rW  rE  rK  rY  rG  r-  r]  rM  r`  rP  r_  r[  rR  rÅ  rT  Úvideo_generaterU  rO  >   rÈ  rÉ  rÊ  )Nrc  )é1   ))z@@rC   )r  rD   )r�  rE   )r¸   rA   )r   )£r  r   Úloggingr  rý   r¶  rê  rÜ  Údataclassesr   r   r   Údifflibr   Úpathlibr   Útypingr   r   Úurllib.parser	   Úutilsr
   Ú
agent.i18nr   Úagent.redactr   Ú agent.tool_result_classificationr   r   r   r   Ú	getLoggerr{   rî  rk  Ú_MAX_INLINE_DIFF_FILESÚ_MAX_INLINE_DIFF_LINESr#   r/   r:   r@   rb   rc   re   rN   r\   rq   rs   r‡   r¥   rˆ   r‹   Úcompilerœ   r    r¦   r«   r´   r»   rÂ   rÅ   rÈ   r  rê   rÓ   rÛ   ræ   rí   rú   r  r  r  r  r  r$  r/  r:  rC  rÖ  rØ  rf  rj  rs  r„  rŒ  r”  r˜  r¦  rª  r¯  r³  r¿  rÏ  rÑ  r»  rÝ  r  rá  rã  r  rþ  ræ  rç  rò  rº  r÷  rú  rÿ  r  r  r  r  r!  r&  r6  r@  rD  rJ  rV  rZ  r`  rl  rq  rv  rƒ  r‡  r‰  r  r(  r!  r*  r.  r/  r0  r;  r>  rA  rD  r   rF  rY  r^  rp  rw  r  r‚  r‡  r�  r’  r—  rœ  r¡  r©  rª  rg  rá  rì  rå  rd  rú  rÿ  r   )r  s   @r   Ú<module>r,     sú  øð÷ó
 Û 	Û 	Û 
Û Û ß 1Ñ 1Ý  Ý ß  Ý !å !Ý Ý .÷`ó `ð 
×	Ò	˜8Ó	$€à€ØÐ ØÐ õ;õ_õ=òð .2Ð Ó 1ð
 
Ñ*¨FÑ4VØ
Ñ/ð€ð ÑPØ
ÑKð€õ%õ6õ
ð, ÷@ð @ó ð@ð Ð Ó Ø"Ð Ó "õ7õ!ð
 —*’*˜XÓ&€õ"õ*õ/÷
ð 
õ"õ
Cõ9ñ
 �$Ô÷ð ó ðó mÐ Û?Ð õ3õõ,õ#õ&õ$6õ!õ"]õ@õ*gõõ,õk÷Oð OðØ�	ðØ'¨ðØ2?ÀðØITÐV\ðà�&ðà! 6ðà+9¸9ðàFXÐZ_ðð �Uðð +¨Fðð 5EÀhðð QaÐbhðð �jð	ð #/°ð	ð 9FÀzð	ð TdÐemð	ð
 �Fðð
 +¨F°OÀVØ�Fñ€ñ `Ð õõSõWõ3õHõõuõõIõ
/õTõð Ð)¨?Ð<RØÐ-¨{Ð<NØ‘˜yÓ)¨>¹>È&Ó;QØÐ# X¨ÀÐPeØÐ% yÐ2BØñ  DØÑ% kÓ2ØÑ'¨Ó6ØÑ)¨/Ó:ð
Ð ÷:ð :õ >õ@ñ  $-ó .ó $Ð ó õUñ
 *3°MÐCSÐ3TÓ)UÐ Ó Uá,5°|À^Ð6TÓ,UÐ Ó Uá+4Ó5bÓ+cÐ Ó cõ7õ
!õR÷Mð Mõ
Dõ~õ
/÷
cð c÷&Sð Sõ$7õ
õõK÷,2ð 2ð$fØIM÷fõDõ#ð&)à!%ð)àLP÷)õ	ñ RÐ õõ*CðØ#9ðØLb÷ð>Bà!%ðBàLPðBà[_÷B÷$Nñ Nðf Ð àÐ õ3õ?ñ " >Ð"2Ó3Ð ð +Ð õ:õ+õ\Lõ6õ
Cô#ˆsô #÷"Mð MõYò3Ðin÷ 3ð 3õ2Mõ-õ&4õ:õGõZõ
yõ	Iösñ
 ™%¡¡u©g±u¹fÁeÐL€÷RðØÒ[ðàÐ$ðð ò  Cðð Ð*ð	ð
 Ò}ðð Ò[ðð ÒSðð ò  Sðð Òjðñ ò  Zðð ÒTðð Òfðñ �lðñ Ò=ðñ ÒWðñ  Òkð!ñ" Òkð#ð$ �ØÒhØˆlØò  WØÐ"ØÒ`ØÒ]ØÒfØÒ~Ø�mØÐ&ØÐ&Ø�^ñ=€÷Dað Ÿ
š
Ñ#4Ó5Ð ÷H÷÷$jò j÷Zô Zr   