+
    lHàjlk  ã                  ó¦  € R t ^ RIHt ^ RIt^RIHt ^ RIHt ]P                  ! R4      t	R R lt
R R	 ltR
 R ltR R ltR R lt]! 0 RKm4      t]! 0 RLm4      t]! RR04      tR R ltR R ltR R ltRR/R R llt]P                  ! R4      t]P                  ! R4      t]P                  ! R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+ lt R, R- lt!R.t"R/ R0 lt#RMt$]! 0 RNm4      t%R1RRR/R2 R3 llt&R4 R5 lt'R6 R7 lt(R8RR9R/R: R; llt)R< R= lt*R> R? lt+R@ RA lt,RORB RC llt-^ðt.^t/RDt0RE RF lt1RPRG RH llt2RI RJ lt3R# )QzÕSession history/message shaping: image-ref messages, content coercion, history->wire messages, in-flight
turn tracking and turn-failure detail. Bodies are rebound onto server.py's globals (method_ctx.bind_module).)ÚannotationsN)Úbind_module)ÚSTEER_DISPLAY_KINDuq   (^|\n)\[Triggering message id: `[^`\n]*` â€” use as `message_id` for reply/react/pin via the discord tools\.\]\n*c               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚnameÚstrÚargsÚdictÚreturnú
list[dict]© )Úformats   "Ú@/home/ubuntu/.hermes/hermes-agent/tui_gateway/session_history.pyÚ__annotate__r      s&   € ÷ Nñ N˜sð N¨$ð N°:ñ Nó    c                ób   € ^ RI Hp V! W4       Uu. uF  q3P                  4       NK  	  up# u upi )é    )Útool_labels_for_call)Úagent.displayr   Ú
as_payload)r   r	   r   Úlabels   &&  r   Ú_bridged_tool_labelsr      s+   € Ý2á,@ÀÔ,LÓMÑ,L 5×ÑÖÑ,LÑMÐMùÒMs   ‘,c               ó    € V ^8„  d   QhRRRR/# )r   ÚagentÚAnyr   ztuple[str, str]r   )r   s   "r   r   r      s   € ÷ xñ x¨#ð x°/ñ xr   c                ó‚   € ^ RI HpHp \        V RR4      ;'       g    V! 4       \        V RR4      ;'       g    V! 4       3# )zBReturn the live provider/model, falling back before agent startup.)Ú_read_main_modelÚ_read_main_providerÚproviderÚ Úmodel)Úagent.auxiliary_clientr   r   Úgetattr)r   r   r   s   &  r   Ú_active_image_routing_identityr$      s<   € çLÜ�E˜: rÓ*×CÐCÑ.AÓ.CÄWÈUÐT[Ð]_ÓE`×EvÐEvÑdtÓdvÐwÐwr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   Ú	user_textr   Úimage_pathsú	list[str]r   r   )r   s   "r   r   r      s!   € ÷ 4ñ 4¨ð 4¸)ð 4Èñ 4r   c                ó°   € RP                  R \        \        V4       4       4      pT ;'       g    RpV'       d   V'       d   V RV 2# T# T;'       g    R# )uô  Reference attached images by path so the agent analyzes them in-loop with ``vision_analyze``: pre-
analyzing with the auxiliary vision model blocked submit 60-90s/photo and poisoned auto-titles.

This used to pre-analyze every image with the auxiliary vision model *before* the turn was dispatched
(``_enrich_with_attached_images``): serial blocking calls on the submit path â€” 60-90s per large photo â€”
with failures silently swallowed and an interrupt during the window killing the turn with zero API calls
(#83291). It also prepended the vision description to the first user message, poisoning session
auto-titles (#82339). The CLI never gates turn dispatch on vision like this, which is why the same
message was seconds there and minutes on desktop.
ú

c              3  óv   "  € T F/  qP                  4       '       g   K  R VP                   RV R2x € K1  	  R# 5i)z[The user attached an image: z<]
[Examine it with the vision_analyze tool using image_url: Ú]N)Úexistsr   )Ú.0Úps   & r   Ú	<genexpr>Ú+_build_image_ref_message.<locals>.<genexpr>)   s8   é € ð á'ˆA¯8©8¯:ô 	rÐ
'¨¯© xÐ/lÐmnÐloÐopÕqÛ'ùs   ‚9ž9r    úWhat do you see in this image?)ÚjoinÚmapÚPath)r'   r(   ÚprefixÚtexts   &&  r   Ú_build_image_ref_messager9      s]   € ð �[‰[ñ ä”T˜;Ô'óó €Fð �?ˆ?˜€Dßß(,�&�˜˜d˜VÐ$Ð8°&Ð8Ø×3Ð3Ð3Ð3r   c               ó$   € V ^8„  d   QhRRRRRR/# r&   r   )r   s   "r   r   r   3   s"   € ÷ 	/ñ 	/°cð 	/È	ð 	/ÐVYñ 	/r   c                ó”   a€ ^ RI Ho T ;'       g    RpRP                  V3R lV 4       4      pV'       g   V# V'       d   V RV 2# T# )a  Persisted form of the user's message: ``@image:<path>`` directives (the desktop renders them as
images); ``_build_image_ref_message``'s ``image_url:`` hint is model-only, never persisted. Caption
first, directives last: session previews are the first 60 chars of the first user message.©Úformat_reference_valuer    Ú
c              3  ó|   <"  € T F1  p\        V4      P                  4       '       g   K$  R S! V4       2x € K3  	  R# 5i©ú@image:N)r6   r.   ©r/   r0   r=   s   & €r   r1   Ú9_build_persist_message_with_image_refs.<locals>.<genexpr>9   s4   øé € ÐdÁK¸qÔSWÐXYÓSZ×SaÑSa×ScÔ:�wÑ5°aÓ8Ð9Õ:ÃKùs   ƒ!<©<)Úagent.context_referencesr=   r4   )r'   r(   r8   Úrefsr=   s   &&  @r   Ú&_build_persist_message_with_image_refsrF   3   sH   ø€ õ @Ø�?ˆ?˜€DØ�9‰9ÔdÁKÓdÓd€DßØˆß $ˆdˆV�2�d�VÐÐ.¨$Ð.r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r'   r   r(   r)   Úrun_messager   r   r   )r   s   "r   r   r   ?   s0   € ÷ Bñ B¨3ð B¸Yð BÐUXð BÐ]`ñ Br   c                óâ   € \        W4      p\        V\        4      '       g   V# V Uu. uF3  p\        V\        4      '       d   VP	                  R4      R8X  d   K1  VNK5  	  ppRRRV/.VO# u upi )a  Shape the persisted user turn like the model payload: ``_flush_messages_to_session_db`` ignores a
plain-string override for a list (native-vision) payload, so swap only the text part for the
``@image:`` form, keep image parts, drop API-only text parts (barge-in note).Útyper8   )rF   Ú
isinstanceÚlistr
   Úget)r'   r(   rH   Úpersist_textr0   Úimage_partss   &&&   r   Ú_build_persist_user_messagerP   ?   sq   € ô :¸)ÓQ€LÜ�k¤4×(Ò(ØÐÙ)Óc™k˜´*¸QÄ×2EÒ2EÈ!Ï%É%ÐPVË-Ð[aÑJa—1�1™k€KÐcØ�V˜V \Ð2ÐA°[ÐAÐAùò ds   ¨.A,ÁA,Úinput_audioÚaudioc               ó    € V ^8„  d   QhRRRR/# )r   Úpartr
   r   r   r   )r   s   "r   r   r   O   s   € ÷ ;ñ ; $ð ;¨3ñ ;r   c                ó¦   € V P                  R4      p\        V\        4      '       d   VP                  R4      p\        V\        4      '       d   V# R# )zFThe URL carried by an image part (``image_url`` dict or str), else "".Ú	image_urlÚurlr    )rM   rK   r
   r   )rT   rV   s   & r   Ú_history_part_image_urlrX   O   sB   € à—‘˜Ó%€IÜ�)œT×"Ò"Ø—M‘M %Ó(ˆ	Ü" 9¬c×2Ò2ˆ9Ð:¸Ð:r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcontentr
   Ú
image_urlsÚboolr   r   r   )r   s   "r   r   r   W   s!   € ÷ "ñ " ð "°Tð "¸cñ "r   c               ó˜  € V P                  R4      pV\        9   d>   \        V P                  R4      ;'       g    V P                  R4      ;'       g    R4      # V\        9   d    V'       d   \	        V 4      MR;'       g    R# V\
        9   d   R# V'       d   RV R2# RV 9   d%   \        V P                  R4      ;'       g    R4      # R	# )
z:Placeholder/text rendering of one structured content dict.rJ   r8   rZ   r    z[image]z[audio]Ú[r-   z[structured content])rM   Ú_HISTORY_TEXT_KINDSr   Ú_HISTORY_IMAGE_KINDSrX   Ú_HISTORY_AUDIO_KINDS)rZ   r[   Úkinds   &$ r   Ú_history_dict_textrc   W   s«   € à�;‰;�vÓ€DØÔ"Ô"Ü�7—;‘;˜vÓ&×FÐF¨'¯+©+°iÓ*@×FÐFÀBÓGÐGØÔ#Ô#ß4>Ô'¨Ô0ÀB×TÐTÈ9ÐTØÔ#Ô#ÙßØ�4�&˜ˆ{ÐØ�ÔÜ�7—;‘;˜vÓ&×,Ð,¨"Ó-Ð-Ù!r   c               ó    € V ^8„  d   QhRRRR/# )r   rZ   r   r   r   r   )r   s   "r   r   r   g   s   € ÷ 3ñ 3 3ð 3¨3ñ 3r   c                óÔ   € \        V \        4      '       d    R P                  R R V  4        4       4      # \        V \        4      '       d   \	        V RR7      # V f   R# \        V 4      # )r>   c              3  ó8   "  € T F  q'       g   K  Vx € K  	  R # 5i©Nr   )r/   Úts   & r   r1   Ú(_content_display_text.<locals>.<genexpr>i   s   é € ÐcÑ$]˜qÓabŸšÓ$]ùs   ‚	�
c              3  óT   "  € T F  p\        V4      P                  4       x € K   	  R # 5irg   ©Ú_content_display_textÚstrip©r/   rT   s   & r   r1   ri   i   s$   é € Ð$]ÑU\ÈTÔ%:¸4Ó%@×%FÑ%F×%HÐ%HÓU\ùs   ‚&(F©r[   r    )rK   rL   r4   r
   rc   r   ©rZ   s   &r   rl   rl   g   sX   € Ü�'œ4× Ò Ø�y‰yÑcÑ$]ÑU\Ô$]ÓcÓcÐcÜ�'œ4× Ò Ü! '°eÔ<Ð<Ø’ˆ2Ð2¤c¨'£lÐ2r   r[   Tc               ó$   € V ^8„  d   QhRRRRRR/# )r   rZ   r   r[   r\   r   r   r   )r   s   "r   r   r   o   s!   € ÷ 3ñ 3 #ð 3°dð 3Àcñ 3r   c               óž  € \        V \        4      '       Ed   . pV  Fë  p\        V\        4      '       g<   \        V\        4      '       dX   \        VP	                  R4      \        4      '       d3   TP                  \        V\        4      '       d   TMVR,          4       K†  \        V\        4      '       g   Kž  VP	                  R4      '       g   K·  \        W1R7      pTP                  VR,          \        9   d   TMRV 24       Kí  	  RP                  V4      # \        V \        4      '       d   \        WR7      # V f   R# \        V 4      # )uô  Render ``message['content']`` (str, parts list, or one structured dict) as a plain string. Image parts
keep their URL inline so the desktop's ``extractEmbeddedImages`` and the resume payload agree with the
cached message (else the inline image flashed, then vanished); other shapes become a placeholder.
``image_urls=False`` renders ``[image]`` instead â€” the ``inline_images=false`` read (#116511): a remote
client reads a transcript in kilobytes instead of re-transmitting every stored attachment.r8   rJ   ro   r>   r    )	rK   rL   r   r
   rM   Úappendrc   r_   r4   )rZ   r[   ÚchunksrT   Úrendereds   &$   r   Ú_coerce_message_textrv   o   sò   € ô �'œ4× Ó ØˆÛˆDÜ˜$¤×$Ò$¬°D¼$×)?Ò)?ÄJÈtÏxÉxÐX^ÓO_Ôad×DeÒDeØ—‘¤j°´s×&;Ò&;™dÀÀfÅÖNÜ˜D¤$×'Ô'¨D¯H©H°V×,<Ô,<Ü-¨dÔJ�Ø—‘¨$¨v­,Ô:MÔ*M™hÐUWÐX`ÐWaÐSbÖcñ ð �w‰w�v‹ÐÜ�'œ4× Ò Ü! 'ÔAÐAØ’ˆ2Ð2¤c¨'£lÐ2r   z!\[Image attached at: ([^\n\]]+)\]z,data:image/[^;,]+;base64,([A-Za-z0-9+/=]+)\Zz/@image:(`[^`\n]+`|\"[^\"\n]+\"|'[^'\n]+'|\S+)\Zz[screenshot]c               ó    € V ^8„  d   QhRRRR/# )r   r8   r   r   ztuple[str, int]r   )r   s   "r   r   r   �   s   € ÷ #ñ #°#ð #¸/ñ #r   c                ó¸   € V P                  R 4      p^ pV'       d.   VR,          \        8X  d   VP                  4        V^,          pK5  R P                  V4      V3# )r>   éÿÿÿÿ)ÚsplitÚ_SCREENSHOT_PLACEHOLDERÚpopr4   )r8   ÚlinesÚcounts   &  r   Ú'_strip_trailing_screenshot_placeholdersr   �   sJ   € Ø�J‰J�tÓ€EØ€Eß
�E˜"•IÔ!8Ô8Ø�	‰	ŒØ��
ŠØ�9‰9�UÓ˜UÐ"Ð"r   c               ó    € V ^8„  d   QhRRRR/# )r   rZ   r   r   ú
str | Noner   )r   s   "r   r   r   –   s   € ÷ =ñ = cð =¨jñ =r   c                óF
  a€ \        V \        4      '       d.   \        V 4      ^8  g   \        V ^ ,          \        4      '       g   R# V ^ ,          pVP	                  R4      R8w  g&   \        VP	                  R4      \
        4      '       g   R# VR,          p^ RIHo RV9   dÖ   VP                  R^4      w  r4V'       d   VR8X  d   R# \        V4      w  rERV,           P                  R4       Uu. uF  p\        P                  V4      NK  	  pp\        V4      '       g   R# V Uu. uF  qˆ^,          NK  	  p	pV^ \        V	4      39  d   R# VR	,           RP                  V3R
 lV	 4       4      ,           p
EM;\        V4      w  rµVP                  4       pV Uu. uF  qfP                  R4      '       g   K  VNK  	  ppV Uu. uF  p\         P                  V4      NK  	  ppV'       d&   \        V4      '       d   V\        V4      ) R V8w  d   R# V Uu. uF,  qˆ^,          ^ ,          R9   d   V^,          ^R MV^,          NK.  	  p	p\"        ;QJ d(    V3R l\%        W—4       4       F  '       g   K   RM	  RM! V3R l\%        W—4       4       4      '       d   R# V^ \        V	4      39  d   R# Tp
^ RIp^ RIp^ RIHp ^ RIHp ^ RIHp ^ RIHp V ^^\        V	4      ,            p\        V4      \        V	4      8w  g3   \        V 4      ^\        V	4      ,           ^\        V	4      ,           39  d   R# \        V 4      ^\        V	4      ,           8”  d†   ^ RIHp V R,          p\        V\        4      '       d_   VP	                  R4      R8w  gI   \        VP	                  R4      \
        4      '       d$   V! VR,          4      P?                  4       '       d   R# \%        V	V4       Fù  w  ppV! V4      PA                  4       '       d-   \        V\        4      '       d   VP	                  R4      R8w  d    R# \B        P                  \E        V4      4      pV'       d-   \        V^,          4      V^,           ^,          ^,          8”  d    R#  V! V! V4      4      w  ppVPF                  V8”  g.   VPI                  4       VPK                  V^,          RR7      8w  d    R# Kû  	  V
# u upi u upi u upi u upi u upi   \L        \N        TPP                  T3 d      R# i ; i)zTProject verified native-vision images as refs without changing stored/model content.NrJ   r8   r<   z

[Image attached at: r3   z[Image attached at: r>   r+   c              3  ó:   <"  € T F  pR S! V4       2x € K  	  R# 5ir@   r   rB   s   & €r   r1   Ú+_user_image_display_text.<locals>.<genexpr>ª   s#   øé € Ð0fÑ`eÐ[\°7Ñ;QÐRSÓ;TÐ:UÕ1VÓ`eùó   ƒrA   c              3  óL   <"  € T F  w  rS! V4      V^,          8g  x € K  	  R# 5i)é   Nr   )r/   r0   Úmatchr=   s   &  €r   r1   r„   ³   s$   øé € ÐYÑEX¹¸Ñ% aÓ(¨E°!­HÖ4ÓEXùs   ƒ!$TF)r6   )ÚHTTPException)Ú_fs_regular_file)Ú_FS_DATA_URL_MAX_BYTES)Úsanitize_contextrV   )Úvalidate)Ú`Ú"Ú'ry   ))rK   rL   Úlenr
   rM   r   rD   r=   rz   r   Ú_IMAGE_HINT_REÚ	fullmatchÚallr4   Ú
splitlinesÚ
startswithÚ_IMAGE_REF_REÚanyÚzipÚbase64ÚbinasciiÚpathlibr6   Úfastapir‰   Úhermes_cli.web_routers.filesrŠ   Úhermes_cli.web_serverr‹   Úagent.memory_contextrŒ   rm   Úis_absoluteÚ_IMAGE_DATA_RErX   Úst_sizeÚ
read_bytesÚ	b64decodeÚOSErrorÚ
ValueErrorÚError)rZ   Ú	text_partr8   ÚcaptionÚhintsÚplaceholdersÚlineÚmatchesrˆ   ÚpathsÚ	projectedÚbodyr}   Ú	ref_linesrš   r›   r6   r‰   rŠ   r‹   rO   rŒ   ÚmemoryÚpathrT   ÚtargetÚstr=   s   &                          @r   Ú_user_image_display_textr·   –   s8  ø€ ä�gœt×$Ò$¬¨G«°qÔ(8Ä
È7ÐSTÍ:ÔW[×@\Ò@\ÙØ˜•
€IØ‡}�}�VÓ Ô&¬j¸¿¹ÀvÓ9NÔPS×.TÒ.TÙØ�VÕ€DÝ?Ø! TÔ)ØŸ™Ð$>ÀÓB‰ˆß˜'Ð%EÔEÙÜEÀeÓLÑˆØ?UÐX]Õ?]×>dÑ>dÐeiÔ>jÓkÑ>j°d”>×+Ñ+¨DÖ1Ñ>jˆÐkÜ�7�|Š|ÙÙ'.Ó/¡w˜e�q—�¡wˆÐ/Ø ¤3 u£:˜Ô.ÙØ˜fÕ$ t§y¡yÔ0fÑ`eÓ0fÓ'fÕfŠ	äDÀTÓJÑˆØ—‘Ó!ˆÙ&+ÓJ¡e˜d¯©¸y×/I—T�T¡eˆ	ÐJÙ=FÓG¹Y°T”=×*Ñ*¨4Ö0¹YˆÐGßœc 'Ÿlšl¨e´S¸³\°M°NÐ.CÀyÔ.PÙÙ]dÓeÑ]dÐTY¨¥8¨A¥;°/Ô#A��q•˜!˜B‘ÀuÈQÅxÒOÑ]dˆÐeß‹3ÔYÄSÈÔEXÓY�3�3Š3ÔYÄSÈÔEXÓY×YÒYÙØ ¤3 u£:˜Ô.ÙØˆ	ãÛÝÝ%Ý=Ý<Ø˜!˜A¤ E£
�NÐ+€KÜ
ˆ;Óœ3˜u›:Ô%¬¨W«¸aÄ#ÀeÃ*½nÈaÔRUÐV[ÓR\ÍnÐ=]Ô)]ÙÜ
ˆ7ƒ|�aœ#˜e›*•nÔ$Ý9Ø˜•ˆÜ˜&¤$×'Ò'¨6¯:©:°fÓ+=ÀÔ+GÌzÐZ`×ZdÑZdÐekÓZlÔnq×OrÒOrñ  wGð  HNð  OUõ  HVó  wW÷  w]ñ  w]÷  w_ò  w_ÙÜ˜% Ö-‰
ˆˆdÙ�D‹z×%Ñ%×'Ò'¬z¸$Ä×/EÒ/EÈÏÉÐRXÓIYÐ]hÔIhÚÜ×(Ñ(Ô)@ÀÓ)FÓGˆßœ˜E !�H›Ð*@À1Õ*DÈÕ)JÈaÕ(OÔOÚð	Ù)©$¨t«*Ó5‰JˆF�BØ�z‰zÐ2Ô2°f×6GÑ6GÓ6IÈV×M]ÑM]Ð^cÐdeÕ^fÐquÐM]ÓMvÔ6vÚñ 7wñ .ð Ðùò_ lùò 0ùò KùÚGùò føô> œ X§^¡^°]ÐCô 	Ûð	ús7   Ã/S%Ä&S*ÆS/Æ6S/ÇS4È2S9ÒAS>Ó>T ÔT c               ó    € V ^8„  d   QhRRRR/# )r   rT   r
   r   r\   r   )r   s   "r   r   r   Ö   s   € ÷ _ñ _ $ð _¨4ñ _r   c                óœ   € V P                  R 4      pV\        9   ;'       g,    VRJ ;'       d     \        V P                  R4      \        4      # )rJ   Nr8   )rM   r_   rK   r   )rT   rb   s   & r   Ú_history_text_only_partrº   Ö   sB   € Ø�8‰8�FÓ€DØÔ&Ñ&×^Ð^¨4°4¨<×+]Ð+]¼JÀtÇxÁxÐPVÓGWÔY\Ó<]Ð^r   c               ó    € V ^8„  d   QhRRRR/# )r   rZ   r   r   r\   r   )r   s   "r   r   r   Û   s   € ÷ vñ v¨ð v°ñ vr   c                óH  € \        V \        4      '       dH   \        V 4      ;'       d5    \        ;QJ d    R V  4       F  '       d   K   R# 	  R# ! R V  4       4      # \        V \        \
        \        34      ;'       g$    \        V \        4      ;'       d    \        V 4      # )zGTrue when a busy submit carries only plain text, not attachments/media.c              3  ó˜   "  € T F@  p\        V\        4      ;'       g$    \        V\        4      ;'       d    \        V4      x € KB  	  R # 5irg   )rK   r   r
   rº   rn   s   & r   r1   Ú-_is_text_only_busy_payload.<locals>.<genexpr>Þ   s=   é € ð %
ÙlsÐdhŒJ�tœSÓ!×_Ð_¤j°´tÓ&<×&^Ð&^ÔAXÐY]ÓA^Ô_Ólsùs   ‚A
žA
¶A
FT)	rK   rL   r\   r”   r   ÚintÚfloatr
   rº   rp   s   &r   Ú_is_text_only_busy_payloadrÁ   Û   sŽ   € ä�'œ4× Ò Ü�G‹}÷ 
ð 
§£ñ %
Ùlsó%
§¤ð 	
¢ð 	
 ñ %
Ùlsó%
ó "
ð 	
ô �g¤¤S¬%Ð0Ó1×uÐu´jÀÌ$Ó6O×6tÐ6tÔTkÐlsÓTtÐur   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úroler�   r8   r   r   r\   r   )r   s   "r   r   r   ä   s&   € ÷ Cñ C Jð C°cð C¸dñ Cr   c                óZ   € V R8H  ;'       d     VP                  4       P                  R4      # )uò  Gateway notices (model-switch, personality) persist as role=user ``[System: â€¦]`` rows so strict providers
accept them mid-history; they must never render as a user bubble. Filtering in this one projection hides
them everywhere (raw marker stays in ``session["history"]``) and keeps the desktop's user ordinals stable.

It also removes the stored marker from the payload the desktop reconciles against, so it can no longer
shift user-message ordinals and duplicate the optimistic prompt (#67603).
Úuserz[System:)Úlstripr–   )rÃ   r8   s   &&r   Ú_is_display_hidden_markerrÇ   ä   s'   € ð �6‰>×BÐB˜dŸk™k›m×6Ñ6°zÓBÐBr   c               ó    € V ^8„  d   QhRRRR/# )r   Úcontent_textr   r   r   )r   s   "r   r   r   ï   s   € ÷ Hñ H¨Sð H°Sñ Hr   c                ó0   € \        V RR7      ;'       g    R# )ud   The invocation a slash-skill-expanded turn came from, else "" â€” UIs render ``/work fix the leak``.Ú )Ú	separatorr    )Údescribe_skill_invocation)rÉ   s   &r   Ú_skill_scaffold_projectionrÎ   ï   s   € ä$ \¸SÔA×GÐGÀRÐGr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r8   r   Útask_idr   r   )r   s   "r   r   r   ô   s!   € ÷ ñ ¨cð ¸Cð ÀCñ r   c                ót  € T ;'       g    RP                  4       P                  R4      w  r#pVP                  R4      '       g   V #  ^ RIHpHp V! VP                  R4      RR7      pVf   V # V! WtP                  4       VR7      ;'       g    T #   \         d    \        P                  RRR	7       T u # i ; i)
zµInverse of :func:`_skill_scaffold_projection`: rewind/regenerate hands back the projected invocation,
and re-running it verbatim would drop the skill. Unchanged when not resolvable.r    rË   Ú/)Úbuild_skill_invocation_messageÚresolve_skill_command_keyT)Úinteractive)rÐ   z$skill re-expansion failed for replay)Úexc_info)
rm   Ú	partitionr–   Úagent.skill_commandsrÓ   rÔ   rÆ   Ú	ExceptionÚloggerÚdebug)r8   rÐ   ÚheadÚ_ÚargrÓ   rÔ   Úcmd_keys   &&      r   Ú#_expand_skill_invocation_for_replayrà   ô   s§   € ð —J�J˜B×%Ñ%Ó'×1Ñ1°#Ó6�L€DˆSØ�?‰?˜3×ÒØˆðßbÙ+¨D¯K©K¸Ó,<È$ÔOˆØ’ˆtÐ{Ñ-KÈG×U^ÑU^ÓU`ÐjqÔ-r×-zÐ-zÐvzÐ{øÜô Ü�‰Ð;ÀdˆÔKØŠðús   Á&B Á.B ÂB Â$B7Â6B7z8[System note: Your previous turn was interrupted mid-runc               ó$   € V ^8„  d   QhRRRRRR/# )r   rÃ   r   r8   r   r�   r   )r   s   "r   r   r     s&   € ÷ pñ p˜sð p¨#ð p°*ñ pr   c                óš   € ^ RI Hp V! W4      ;p'       d   V# V R8X  d,   VP                  4       P                  \        4      '       d   R# R# )zÕDisplay type of a synthetic row persisted untyped: new rows are typed at turn start (``persist_user_display_kind``);
this prefix sniff migrates rows already on disk (a turn killed mid-run never reached the stamp).)Ú untyped_failed_turn_display_kindrÅ   Úauto_continueN)Úagent.turn_failure_copyrã   rÆ   r–   Ú_AUTO_CONTINUE_NOTE_PREFIX)rÃ   r8   rã   Úfailed_turns   &&  r   Ú_legacy_display_kindrè     sG   € õ Iá6°tÓBÐB€{ÖBØÐØ" fœn°·±³×1IÑ1IÔJd×1eÒ1eˆ?ÐoÐkoÐor   Úprofile_homec               ó$   € V ^8„  d   QhRRRRRR/# )r   Úhistoryr   r[   r\   r   r   )r   s   "r   r   r     s-   € ÷ MCñ MC *ð MCÐPTð MCÐ`jñ MCr   c               ó	  a€ ^ RI Hp . p/ pV  EF?  o\        S\        4      '       g   K  \	        S4      oSf   K-  SP                  R4      pV\        9  g   SP                  R4      R8X  d   Ka  VR8X  d   \        SP                  R4      4      MRpVf   \        SP                  R4      VR7      p\        Wg4      '       d   K·  VR8X  d   \        P                  R	V4      pVR
8X  d¡   SP                  R4      '       dŠ   SR,           F|  pVP                  R/ 4      VP                  RR4      r©V
'       g   K0  V	P                  R4      '       g   KI   \        P                  V	P                  RR4      4      pV	R,          V3WZ&   K~  	  VR8X  d3   SP                  R4      \         8X  d   ^ RIHp V! S4      ;'       g    TpVR8X  dô   TP                  SP                  R4      ;'       g    RR%4      w  rÞT;'       g    SP                  R4      ;'       g    RpT;'       g    / p\'        Wû4      pTP)                  RRRVR\+        Wû4      /VR&9   d   RSP                  R4      /M/ CR' Uu/ uF"  pSP                  V4      f   K  VSV,          bK$  	  upCV'       d   RV/M/ CV'       d   RV/M/ C4       EK®  VR
8H  ;'       dC    \,        ;QJ d#    V3R l\.         4       F  '       g   K   RM	  RM! V3R l\.         4       4      pVP1                  4       '       g   V'       g   EK  RVRV/pSP                  R4      p\        V\2        \4        34      '       d   V^ 8”  d   \5        V4      VR&   SP                  R4      e   SR,          VR &   VR8X  d   \7        V4      MRpV'       d   VP9                  VR!R"7       VR
8X  d    VP9                  V3R# l\.         4       4       SP                  R4      ;'       g    \;        Wg4      pV'       d   VVR&   SP                  R4      '       d   SR,          VR&   VP)                  V4       EKB  	  V! WAR$7      #   \        P                  \        3 d    / p ELi ; iu upi )(zÎ``image_urls=False`` is the ``inline_images=false`` projection (#116511): image parts render ``[image]``
so a remote client's history read stays kilobytes instead of re-transmitting every stored attachment.)Úproject_history_commentaryNrÃ   Údisplay_kindÚhiddenrÅ   rZ   ro   z\1Ú	assistantÚ
tool_callsÚfunctionÚidr    r   Ú	argumentsz{})Ú _extract_steer_text_from_messageÚtoolÚtool_call_idÚ	tool_nameÚcontextÚ	timestampÚdisplay_metadatar	   Úlabelsc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irg   ©rM   ©r/   ÚkeyÚms   & €r   r1   Ú'_history_to_messages.<locals>.<genexpr>Q  s   øé € Ð:pÑQoÈ#¸1¿5¹5À¿:¸:ÓQoùs   ƒ!TFr8   Ú_row_idÚrow_idÚskill_invocation)r8   rî   c              3  ód   <"  € T F%  pSP                  V4      f   K  VSV,          3x € K'  	  R # 5irg   rþ   rÿ   s   & €r   r1   r  b  s,   øé € ÐiÑ0N¨ÐRS×RWÑRWÐX[ÓR\”}˜˜Q˜s�V•}Ó0Nùs   ƒ0�0)Úhome©NN>   ÚpatchÚ
write_fileÚskill_manage)r÷   rú   rû   )Úagent.history_commentaryrí   rK   r
   Ú&project_compaction_message_for_displayrM   Ú_HISTORY_ROLESr·   rv   rÇ   Ú_DISCORD_TRIGGERING_NOTE_REÚsubÚjsonÚloadsÚJSONDecodeErrorÚ	TypeErrorr   Úagent.conversation_compressionrõ   r   rs   Ú	_tool_ctxr˜   Ú_HISTORY_ASSISTANT_DETAIL_KEYSrm   r¿   rÀ   rÎ   Úupdaterè   )rë   ré   r[   rí   ÚmessagesÚtool_call_argsrÃ   rÉ   ÚtcÚfnÚtc_idr	   rõ   Útc_nameÚtc_argsr   rü   r   Úhas_assistant_detailÚmsgÚtsÚ
invocationrî   r  s   &$$                    @r   Ú_history_to_messagesr$    sÿ  ø€ õ Dà€HØ€NÜˆÜ˜!œT×"Ò"ÙÜ2°1Ó5ˆØŠ9ÙØ�u‰u�V‹}ˆà”~Ô%¨¯©¨~Ó)>À(Ô)JÙØEIÈVÄ^Ô/°·±°iÓ0@ÔAÐY]ˆØÒÜ/°·±°iÓ0@ÈZÔXˆLÜ$ T×8Ò8ÙØ�6Œ>Ü6×:Ñ:¸5À,ÓOˆLØ�;Ô 1§5¡5¨×#6Ò#6Ø˜—o�o�ØŸF™F :¨rÓ2°B·F±F¸4ÀÓ4D�Eß‘5˜RŸV™V FŸ^œ^ð"Ü#Ÿz™z¨"¯&©&°¸dÓ*CÓD˜ð .0°­Z¸Ð,>�NÓ)ñ &ð �6Œ>˜aŸe™e NÓ3Ô7IÔIåWÙ;¸AÓ>×NÐNÀ,ˆLØ�6Œ>Ø-×1Ñ1°!·%±%¸Ó2G×2MÐ2MÈ2È|Ó\ÑˆGØ×:Ð:˜aŸe™e KÓ0×:Ð:°FˆDØ—=�=˜bˆDä)¨$Ó5ˆFØ�O‰O˜V V¨V°T¸9ÄiÐPTÓF[ð kð BFÐIpÔAp ¨A¯E©E°)Ó,<Ñ =Ðvxðkñ 8ió  ;Ñ7h°Ø#$§5¡5¨£:ô !,  Q s¥V¢Ñ7hñ  ;ð	k÷ 37 ¨¡¸Bðk÷ [aÀXÈvÑDVÐfhðkô lò à# {Ñ2×pÐp·s³sÔ:pÕQoÓ:p·s·s²sÔ:pÕQoÓ:pÓ7pÐØ×!Ñ!×#Ò#×,@ÚØ�t˜V \Ð2ˆð �U‰U�;ÓˆÜ�bœ3¤˜,×'Ò'¨B°¬FÜ$ R›yˆC�Ñà�5‰5�ÓÒ'Ø˜i�LˆC�‰MàAEÈÄÔ/°Ô=ÐUWˆ
ßØ�J‰J˜JÐ5GˆJÔHØ�;ÔØ�J‰JÔiÕ0NÓiÔià—u‘u˜^Ó,×XÐXÔ0DÀTÓ0XˆßØ".ˆC�ÑØ�5‰5Ð#×$Ò$Ø&'Ð(:Õ&;ˆCÐ"Ñ#Ø�‰˜×ñK ñL & hÔBÐBøô_ !×0Ñ0´)Ð<ô "Ø!›ð"üò" ;s   Å%QÉ-Q?ÊQ?ÑQ<Ñ;Q<c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer   r   r   r   )r   s   "r   r   r   m  s   € ÷ ñ  ð ¨
ñ r   c                óä  € . p\        V \        4      '       d   T MR FÏ  p\        V\        4      '       d   VP                  R 4      R9  d   K1  VP                  R4      f   VP                  R4      MVP                  R4      p\        V\        4      '       g   K~  VP                  4       '       g   K–  R VR ,          RV/pVP                  R4      R8X  d   RVR&   VP                  V4       KÑ  	  V# )rÃ   rZ   r8   rî   rï   r   )rÅ   rð   Úsystem)rK   rL   r
   rM   r   rm   rs   )r&  rë   ÚitemrZ   Úrows   &    r   Ú_coerce_seed_historyr+  m  sÄ   € Ø€GÜ# E¬4×0Ò0‘°bÒ8ˆÜ˜$¤×%Ò%¨¯©°&Ó)9ÐA`Ô)`ÙØ&*§h¡h¨yÓ&9Ò&A�$—(‘(˜6Ô"ÀtÇxÁxÐPYÓGZˆÜ�gœs×#Ô#¨¯©¯¬Ø˜4 �<¨°GÐ<ˆCð �x‰x˜Ó'¨8Ô3Ø&.��NÑ#Ø�N‰N˜3Öñ 9ð €Nr   c               ó    € V ^8„  d   QhRRRR/# )r   r&  r   r   r   r   )r   s   "r   r   r   ~  s   € ÷ 0ñ 0˜#ð 0 #ñ 0r   c                ó4   € \        V 4      P                  4       # rg   rk   )r&  s   &r   Ú_inflight_textr.  ~  s   € Ü  Ó'×-Ñ-Ó/Ð/r   rî   rû   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   Úsessionr
   r8   r   rî   r�   rû   zdict | Noner   ÚNoner   )r   s   "r   r   r   ‚  s6   € ÷ $ñ $Øð$Øð$Ø/9ð$à!ð$ð 
ñ$r   c               óÀ   € \         P                  4       pR RRVRRRVR\        V4      /pV'       d   W%R&   \        V\        4      '       d   \        V4      VR&   WPR	&   R
# )rð   r    Ú
started_atÚ	streamingTÚ
updated_atrÅ   rî   rû   Úinflight_turnN)Útimer.  rK   r
   )r0  r8   rî   rû   ÚnowÚturns   &&$$  r   Ú_start_inflight_turnr:  ‚  se   € ô �)‰)‹+€Cà�R˜ s¨K¸¸|ÈSØ”˜tÓ$ð€D÷ Ø+ˆ^ÑÜÐ"¤D×)Ò)Ü#'Ð(8Ó#9ˆÐÑ Ø#ˆOÓr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r0  r
   Údeltar   r   r1  r   )r   s   "r   r   r   ’  s!   € ÷ $ñ $ Dð $°ð $¸ñ $r   c                ó(  € Vf   RM
\        V4      pV'       g   R # V P                  R4      p\        V\        4      '       g	   RRRRRR/pTP	                  VP                  R4      ;'       g    R V 2R\
        P                  4       R7       W0R&   R # )Nr    r6  rð   r4  TrÅ   )rð   r4  r5  )r   rM   rK   r
   r  r7  )r0  r<  r8   r9  s   &&  r   Ú_append_inflight_deltar>  ’  sƒ   € Ø’‰2¤C¨£J€DßÙØ�;‰;�Ó'€DÜ�dœD×!Ò!Ø˜R ¨d°F¸BÐ?ˆØ‡K�K˜TŸX™X kÓ2×8Ð8°bÐ9¸$¸Ð@ÈDÔ]a×]fÑ]fÓ]h€KÔiØ#ˆOÓr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r0  r
   r8   r   r   r1  r   )r   s   "r   r   r   �  s!   € ÷ $ñ $¨ð $°Sð $¸Tñ $r   c                ó¨  € \        V4      pV P                  R4      pV'       d   \        V\        4      '       g   R# \        V4      p. VP                  R4      ;'       g    . OVNVR&   . VP                  R4      ;'       g    . O\	        \        VP                  R4      ;'       g    R4      4      NVR&   \        P                  4       VR&   W0R&   R# )u‘   Record an accepted mid-turn correction on the live turn â€” appended, never written over ``user``,
so a resuming client can rebuild BOTH bubbles.r6  NÚcorrectionsÚcorrection_offsetsrð   r    r5  )r.  rM   rK   r
   r‘   r   r7  )r0  r8   Ú
correctionr9  s   &&  r   Ú_record_inflight_correctionrD  �  s½   € ô   Ó%€JØ�;‰;�Ó'€DßœZ¨¬d×3Ò3Ùô �‹:€DØH˜TŸX™X mÓ4×:Ð:¸ÐH¸ZÐH€DˆÑØ!q D§H¡HÐ-AÓ$B×$HÐ$HÀbÐ!qÌ3ÌsÐSW×S[ÑS[Ð\gÓSh×SnÐSnÐlnÓOoÓKpÐ!q€DÐ	ÑÜŸ™›€DˆÑØ#ˆOÓr   c               ó    € V ^8„  d   QhRRRR/# )r   r0  r
   r   r1  r   )r   s   "r   r   r   ­  s   € ÷ *ñ * $ð *¨4ñ *r   c                ó4   € R V R&   V P                  RR 4       R # )Nr6  Ú_submit_user_row)r|   )r0  s   &r   Ú_clear_inflight_turnrH  ­  s   € Ø#€GˆOÑð ‡K�KÐ" DÖ)r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r0  r
   Úerrorr   Úerror_surfacezOptional[dict]r   r1  r   )r   s   "r   r   r   ´  s)   € ÷ *ñ * ð *¨cð *À.ð *Ð\`ñ *r   c                óŠ  € \        V\        4      '       g   \        V4      M'\        V4      ;'       g    \        V4      P                  p\
        P                  4       pV P                  R4      p\        V\        4      '       g	   RRRRRV/pTP                  \        VP                  R4      ;'       g    R4      \        VP                  R4      ;'       g    R4      T;'       g    RRRR	7       V'       d   \        V4      VR
&   MVP                  R
R4       VP                  RVR7       WPR&   V P                  RR4       R# )aD  Mark the in-flight turn terminal-error but keep it replayable: a failure's terminal frame can be lost on
WS disconnect and the turn may never have been committed, so the snapshot lets ``session.resume`` replay
prompt, partial text and error. Lives until the next turn starts or the session closes. Caller holds history_lock.r6  rð   r    rÅ   r3  zturn failedrJ  T)rð   rÅ   rJ  ÚstatusÚrecoverablerK  NF)r4  r5  rG  )
rK   ÚBaseExceptionr   rJ   Ú__name__r7  rM   r
   r  r|   )r0  rJ  rK  Úmessager8  r9  s   &&&   r   Ú_fail_inflight_turnrR  ´  s	  € ô !+¨5´-× @Ò @Œc�%ŒjÄsÈ5Ãz×GiÐGiÔUYÐZ_ÓU`×UiÑUi€GÜ
�)‰)‹+€CØ�;‰;�Ó'€DÜ�dœD×!Ò!Ø˜R ¨¨\¸3Ð?ˆØ‡K�KÜ�d—h‘h˜{Ó+×1Ð1¨rÓ2¼¸T¿X¹XÀfÓ=M×=SÐ=SÐQSÓ9TØ×&Ð&˜¨wÀDð ô ÷ Ü $ ]Ó 3ˆˆ_Òà�‰� $Ô'Ø‡K�K˜%¨C€KÔ0Ø#ˆOÑð ‡K�KÐ" DÖ)r   i   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rQ  r   Úpromptr   r   r   )r   s   "r   r   r   Ó  s!   € ÷ ñ  ð ¨Sð °Sñ r   c                ó†  aa	€ V '       d	   V'       g   V # RP                  \        V4      P                  4       4      R\         p\        o	\        V4      S	8  g   \        V 4      S	8  d   V # \        \        V4      S	,
          ^,           4       Uu0 uF  q2W3S	,            kK  	  pp\        P                  V4      ^R oSV8w  d=   VP                  VV	3R l\        \        S4      S	,
          ^,           4       4       4       . p^ \        V 4      rcW6S	,
          8:  d€   WVS	,            V9   dN   VS	,           pWv8  d*   WS	,
          ^,           V^,            V9   d   V^,          pK/  VP                  R4       TpKj  VP                  W,          4       V^,          pKŒ  VP                  WR 4       RP                  V4      # u upi )a@  Blank runs of the submitted prompt that ``message`` quotes back: secret redaction is pattern-based and a
provider 4xx echoing the request carries private prose matching no pattern. Any ``_TURN_PROMPT_ECHO_WINDOW``+
char run shared with the prompt (or its JSON-escaped form) becomes ``<prompt>``; shingles keep it linear.rË   Nc              3  ó:   <"  € T F  pSWS,            x € K  	  R # 5irg   r   )r/   ÚiÚescapedÚwindows   & €€r   r1   Ú%_strip_prompt_echo.<locals>.<genexpr>à  s   øé € ÐXÑ7W°!˜  f¥*Õ-Ó7Wùr…   z<prompt>r    ry   )r4   r   rz   Ú_TURN_PROMPT_ECHO_MAX_PROMPTÚ_TURN_PROMPT_ECHO_WINDOWr‘   Úranger  Údumpsr  rs   )
rQ  rT  ÚneedlerW  ÚshinglesÚoutÚnÚjrX  rY  s
   &&      @@r   Ú_strip_prompt_echord  Ó  sl  ù€ ÷ Ÿ&ØˆØ�X‰X”c˜&“k×'Ñ'Ó)Ó*Ð+HÔ,HÐI€FÜ%€FÜ
ˆ6ƒ{�VÔœs 7›|¨fÔ4ØˆÜ.3´C¸³KÀ&Õ4HÈ1Õ4LÔ.MÓNÑ.M¨�q˜V�Ó$Ñ.M€HÐNÜ�j‰j˜Ó   2Ð&€GØ�&ÔØ�‰ÕX´u¼SÀ»\ÈFÕ=RÐUVÕ=VÔ7WÓXÔXØ€CØŒc�'‹l€qØ
�6�zŒ/Ø�Q˜•ZÐ  HÔ,Ø�F•
ˆAØ”%˜G¨¥J°¥N°1°qµ5Ð9¸XÔEØ�Q•’Ø�J‰J�zÔ"ØŠAà�J‰J�w•zÔ"Ø��FŠAØ‡J�Jˆw�rˆ{ÔØ�7‰7�3‹<Ðùò# Os   ÂF>c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rJ  r   ÚreasonrT  r   r   r   )r   s   "r   r   r   ñ  s)   € ÷ !<ñ !< ð !<¨Sð !<Àð !<ÐPSñ !<r   c                ó¨  € \        T;'       g    R4      P                  4       p\        T ;'       g    R4      P                  4       p\        V \        4      '       d    T;'       g    \	        V 4      P
                  pV'       g   V'       g   R#  ^ RIHp V! VRR7      pRP                  VP                  4       4      p\        WB4      p\        V4      \        8”  d   VR\         R,           pV'       d/   R	P                  RP                  VP                  4       4      4      MRpYd'       d   R
V: 2,           # R,           #   \         d    Rp L±i ; i)aÍ  Why a turn failed, for the ``tui turn finished`` bookend: ``""`` when nothing to say, else a fragment with
its own leading space. ``redact_sensitive_text`` removes credentials; ``_strip_prompt_echo`` removes a 4xx
body quoting ``prompt`` back. This record may gain failure detail, never the user's own content.

86865 added the bookend to trace compression rotations, so it logs identities and a coarse ``status``
and deliberately logs no content. 89117 is what the missing cause costs: a report consisting of two
lines reading ``status=error error_retained=True duration=0.9s`` with no way to tell a provider 4xx from
a budget wall from a crashed finalizer. The returned-error path -- the one a 0.9 s failure almost always
takes -- emits no other log line at all; only the exception path prints to stderr, which is why the
quiet failures are the ones that get filed. See #86865, #89117.
Content discipline follows #86865's, and it takes two separate steps because it is two separate
contracts. It does nothing about a 4xx body that quotes the request back, because ordinary private prose
is not pattern-shaped -- so ``_strip_prompt_echo`` removes that separately, using the submitted
``prompt`` itself as the thing to look for.
r    )Úredact_sensitive_textT)Úforcez<unredactable>rË   Nu   â€¦z failure_reason={}z cause=)r   rm   rK   rO  rJ   rP  Úagent.redactrh  rÙ   r4   rz   rd  r‘   Ú_TURN_FAILURE_DETAIL_LIMITr   )rJ  rf  rT  Úreason_textrQ  rh  ra  s   &&&    r   Ú_turn_failure_detailrm  ñ  s  € ô  �f—l�l Ó#×)Ñ)Ó+€KÜ�%—+�+˜2Ó×$Ñ$Ó&€GÜ�%œ×'Ò'Ø×1Ð1œT %›[×1Ñ1ˆßŸ;Ùð#Ý6Ù'¨°tÔ<ˆð �h‰h�w—}‘}“Ó'€Gä  Ó1€GÜ
ˆ7ƒ|Ô0Ô0ØÐ5Ô5Ð6¸ÕAˆßHSÐ
×
%Ñ
% c§h¡h¨{×/@Ñ/@Ó/BÓ&CÔ
DÐY[€CØ®7�G˜G™;Ð'Õ;Ð;¸Õ;Ð;øô ô #Ø"Šð#ús   ÂE ÅEÅEc               ó   € V ^8„  d   QhRR/# )r   r   r1  r   )r   s   "r   r   r     s   € ÷ 0ñ 0˜ñ 0r   c                ó2   € \        \        4       V RR7       R# )zQPublish this module's helpers + handlers onto ``server``, rebound to its globals.)ÚskipN)rÝ   )r   Úglobals)Úservers   &r   Úregisterrs    s   € ä”“	˜6¨×/r   >   r8   Ú
input_textÚoutput_text>   ÚimagerV   Úinput_image)Ú	reasoningÚreasoning_contentÚreasoning_detailsÚcodex_reasoning_itemsÚcodex_message_items>   rö   rÅ   r(  rð   rg   r  )4Ú__doc__Ú
__future__r   ÚreÚ
method_ctxr   Úagent.prompt_builderr   Úcompiler  r   r$   r9   rF   rP   Ú	frozensetr_   r`   ra   rX   rc   rl   rv   r’   r¢   r—   r{   r   r·   rº   rÁ   rÇ   rÎ   rà   ræ   rè   r  r  r$  r+  r.  r:  r>  rD  rH  rR  rk  r\  r[  rd  rm  rs  r   r   r   Ú<module>r„     sƒ  ðñpõ #ã 	å #Ý 3ð !ŸjšjØxóÐ õ
Nõxõ4õ*	/õBñ  Ò EÓFÐ Ù Ò!FÓGÐ Ù  -°Ð!9Ó:Ð õ;õ"õ 3ð3¸T÷ 3ð( —’Ð@ÓA€Ø—’ÐKÓL€Ø—
’
ÐMÓN€ð
 )Ð õ#õ=õ@_õ
võCõHõ
ð" XÐ õpð"Ð ñ ÒBÓC€ðMC¸dð MCÐW[÷ MCõ`õ"0ð$Ø<@ð$à$(÷$õ $õ$õ *÷*ð0 !Ð àÐ à$Ð õ÷<!<÷H0r   