+
    lHàj0a  ã                  óÌ  € R t ^ RIHt ^ RIt^ RIt^RIHt ]P                  ! ]4      t	Rt
^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 RRR3RR RRR3/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- R. ltR/ R0 ltR1 R2 ltR3 tR4 R5 lt R6 R7 lt!R8 R9 lt"R: t#R; t$R< t%R= t&R> t'R? t(R@ t)RA t*RB t+RC],]-3RD],]-3RE],]-3RF],]-3RG])].3RH],]-3RI])].3RJ],]*3RK])]+3RL])]+3RM])]+3RN])]+3RO],]*3RP],]*3RQ],]/3RR],]-3RS],]-3RT],]-3RU],]-3RV])]033t1RW RX lt2RY RZ lt3R[]$R\3R]]#R\3R^]%R_3R`]&R\3RaRb R3Rc]'R3Rd](R3/t4RiRe Rf llt5Rg Rh lt6R# )jzÔTool lifecycle callbacks (tool.start/complete/progress events), verbose-text capping/redaction, todo-state
projection. Bodies are rebound onto server.py's globals (method_ctx.bind_module) and reference them bare.)ÚannotationsN)Úbind_moduleiè  c               ó    € V ^8„  d   QhRRRR/# ©é   ÚtextÚstrÚreturn© )Úformats   "Ú>/home/ubuntu/.hermes/hermes-agent/tui_gateway/tool_progress.pyÚ__annotate__r      s   € ÷ @ñ @ ð @¨ñ @ó    c                óz  € \        V 4      \        8:  d   V P                  R 4      \        8  d   V # \        V 4      \        R P	                  V P                  R 4      \        ) R 4      4      ,
          p\        V\        V 4      \        ,
          4      pW!8”  d>   V P                  R V4      p^ Tu;8:  d   \        V 4      ^,
          8  d   M M	V^,           pWR P                  4       p\        ^ \        V 4      \        V4      ,
          4      pV RV P                  R 4      pV'       d	   V RV R2MV R2pRV RV 2# )Ú
Nz	 lines / z charsz[showing verbose tail; omitted z]
)	ÚlenÚ_TUI_VERBOSE_TEXT_MAX_CHARSÚcountÚ_TUI_VERBOSE_TEXT_MAX_LINESÚjoinÚsplitÚmaxÚfindÚlstrip)r   Ú
line_startÚstartÚ
next_breakÚtailÚomitted_charsÚomitted_linesÚomitteds   &       r   Ú_cap_tui_verbose_textr!      s  € Ü
ˆ4ƒyÔ/Ô/°D·J±J¸tÓ4DÔGbÔ4bØˆä�T“œS §¡¨4¯:©:°dÓ+;Ô=XÐ<XÐ<YÐ+ZÓ![Ó\Õ\€JÜ�
œC ›IÔ(CÕCÓD€EØÔØ—Y‘Y˜t UÓ+ˆ
Ø�
Ö*œS ›Y¨�]×*Ø •NˆEØ�ˆ<×ÑÓ €DÜ˜œ3˜t›9¤s¨4£yÕ0Ó1€MØ˜˜%�L×&Ñ& tÓ,€MßBO��˜y¨¨°vÑ>ÐXeÐWfÐflÐUm€GØ,¨W¨I°S¸¸Ð?Ð?r   c               ó    € V ^8„  d   QhRRRR/# r   r
   )r   s   "r   r   r   *   s   € ÷ +ñ + 3ð +¨3ñ +r   c                óp   €  ^ RI Hp V! \        V 4      RR7      p\	        T4      #   \         d     R# i ; i)é    )Úredact_sensitive_textT)ÚforceÚ )Úagent.redactr%   r   Ú	Exceptionr!   )r   r%   Úredacteds   &  r   Ú_redact_tui_verbose_textr+   *   s;   € ðÝ6Ù(¬¨T«¸$Ô?ˆô ! Ó*Ð*øô ô Úðús   ‚& ¦5´5c               ó   € V ^8„  d   QhRR/# )r   r	   r   r
   )r   s   "r   r   r   3   s   € ÷ )ñ ) sñ )r   c                óX   €  V ! 4       p\        V4      #   \          d    T! 4       p Li ; i)zCRedacted+capped ``render()``; ``fallback()`` when rendering raises.)r)   r+   )ÚrenderÚfallbackÚraws   && r   Ú_verbose_textr1   3   s3   € ðÙ‹hˆô $ CÓ(Ð(øô ô Ù‹jŠðús   ‚ ”)¨)c               ó    € V ^8„  d   QhRRRR/# )r   ÚargsÚdictr	   r   r
   )r   s   "r   r   r   <   s   € ÷ }ñ }˜$ð } 3ñ }r   c                ó,   a € \        V 3R  lV 3R l4      # )c                 óT   <€ \         P                  ! S ;'       g    / ^R\        R7      # )r   F)ÚindentÚensure_asciiÚdefault)ÚjsonÚdumpsr   ©r3   s   €r   Ú<lambda>Ú!_tool_args_text.<locals>.<lambda>=   s   ø€ ¤§¢¨D¯J¨J°B¸qÈuÔ^aÕ!br   c                 ó.   <€ \        S ;'       g    / 4      # ©N©r   r<   s   €r   r=   r>   =   s   ø€ ÔloÐpt×pzÐpzÐxzÔl{r   ©r1   r<   s   fr   Ú_tool_args_textrC   <   s   ø€ ÜÔbÔd{Ó|Ð|r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚresultÚobjectr	   r   r
   )r   s   "r   r   r   @   s   € ÷ 6ñ 6˜fð 6¨ñ 6r   c                ó0   a € V 3R  lp\        VV 3R l4      # )c                 ó    <€ ^ RI Hp  V ! S4      # )r$   )Ú_multimodal_text_summary)Úagent.tool_dispatch_helpersrI   )rI   rE   s    €r   r.   Ú!_tool_result_text.<locals>.renderA   s   ø€ ÝHÙ'¨Ó/Ð/r   c                 ó   <€ \        S 4      # r@   rA   )rE   s   €r   r=   Ú#_tool_result_text.<locals>.<lambda>E   s	   ø€ ¬¨V¬r   rB   )rE   r.   s   f r   Ú_tool_result_textrN   @   s   ø€ õ0ô ˜Ô!4Ó5Ð5r   c               ó    € V ^8„  d   QhRRRR/# )r   Úsecondsúfloat | Noner	   r   r
   )r   s   "r   r   r   H   s   € ÷ 6ñ 6 ð 6°ñ 6r   c                óª   € V f   R# V ^
8  d   V R R2# V ^<8  d   \        V 4       R2# \        \        V 4      ^<4      w  rV'       d	   V RV R2# V R2# )Nr'   z.1fÚszm Úm)ÚroundÚdivmod)rP   ÚminsÚsecss   &  r   Ú_fmt_tool_durationrY   H   sk   € Ø‚ÙØ�„|Ø˜#�˜aÐ Ð Ø�„|Ü˜“.Ð! Ð#Ð#Üœ˜g›¨Ó+�J€Dß!%ˆdˆV�2�d�V˜1ÐÐ5¨d¨V°1¨:Ð5r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚobjrF   Úpathr   r	   z
int | Noner
   )r   s   "r   r   r   S   s!   € ÷ 7ñ 7�Vð 7 Cð 7¨Jñ 7r   c                ó²   € T pV F-  p\        V\        4      '       g    R # VP                  V4      pK/  	  \        V\        4      '       d   \	        V4      # R # r@   )Ú
isinstancer4   ÚgetÚlistr   )r[   r\   ÚcurÚkeys   &*  r   Ú_count_listrc   S   sK   € Ø
€CÛˆÜ˜#œt×$Ò$ÚØ�g‰g�c‹lŠñ ô " #¤t×,Ò,Œ3ˆs‹8Ð6°$Ð6r   Ú
web_searchc                ó   € \        V R R4      # )ÚdataÚweb©rc   ©Úds   &r   r=   r=   ^   s   € œ[¨¨F°EÔ:r   ÚDidÚsearchÚsearchesÚweb_extractc                óD   € \        V R 4      ;'       g    \        V RR 4      # )Úresultsrf   rh   ri   s   &r   r=   r=   _   s    € œk¨!¨YÓ7×\Ð\¼;ÀqÈ&ÐR[Ó;\Ð\r   Ú	ExtractedÚpageÚpagesc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Únamer   rE   Ú
duration_srQ   r	   ú
str | Noner
   )r   s   "r   r   r   c   s.   € ÷ cñ c˜ð c Sð c°lð cÀzñ cr   c                óö  €  \         P                  ! V4      p\        V\        4      '       g   R # \        V4      pV'       d   RV 2MRp\        VP                  R4      ;'       g    R4      P                  4       pV'       d   V V 2# \        P                  V 4      pV'       d   V^ ,          ! V4      MR pVe+   V^,           RT RV^8X  d
   V^,          MV^,           V 2# R #   \         d    R p Lßi ; i)Nz in r'   Úfallback_warningÚ )
r:   Úloadsr)   r^   r4   rY   r   r_   ÚstripÚ_SUMMARY_COUNTERS)	ru   rE   rv   rf   ÚdurÚsuffixÚwarningÚentryÚns	   &&&      r   Ú_tool_summaryrƒ   c   sè   € ðÜ�zŠz˜&Ó!ˆô �dœD×!Ò!ÙÜ
˜ZÓ
(€Cß ˆt�C�5‰\ b€FÜ�$—(‘(Ð-Ó.×4Ð4°"Ó5×;Ñ;Ó=€GßØ�˜6˜(Ð#Ð#Ü×!Ñ! $Ó'€EßˆˆaŽ�Œ T€AØKLÊ=ˆe�A�hˆZ�q˜˜˜1¨¨a¬˜U 1žX°U¸1µXÐ>¸v¸hÐGÐbÐ^bÐbøô ô ØŠðús   ‚C( Ã(C8Ã7C8c               ó    € V ^8„  d   QhRRRR/# )r   ÚvaluerF   r	   údict | Noner
   )r   s   "r   r   r   t   s   € ÷ 2ñ 2 ð 2¨Kñ 2r   c                ó\  € \        V \        4      '       d&   \        V P                  R4      \        4      '       g   R#  \	        ^ \        V P                  R4      ;'       g    ^ 4      4      p\        T R,          4      pT'       g
   T^ 8X  d   R# RTRT/#   \        \        3 d     R# i ; i)zCReturn a client-safe full todo snapshot or ``None`` when malformed.ÚtodosNÚrevision)r^   r4   r_   r`   r   ÚintÚ	TypeErrorÚ
ValueError)r…   r‰   rˆ   s   &  r   Ú_normalize_todo_stater�   t   s”   € ä�eœT×"Ò"¬*°U·Y±Y¸wÓ5GÌ×*NÒ*NÙðÜ�qœ#˜eŸi™i¨
Ó3×8Ð8°qÓ9Ó:ˆô ��w•Ó €E÷ �X ”]ÙØ�U˜J¨Ð1Ð1øô ”zÐ"ô Úðús   ¿"B Á"B ÂB+Â*B+c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úsessionr4   Ústater†   r	   ÚNoner
   )r   s   "r   r   r   „   s!   € ÷ &ñ &˜tð &¨Kð &¸Dñ &r   c                ó�   € Ve   \        V P                  R4      4      MRpVe"   Ve   VR,          VR,          8¼  d   WR&   R# R# R# )z=Keep the newest snapshot on the session (revision-monotonic).NÚ
todo_stater‰   )r�   r_   )r�   r�   Úcacheds   && r   Ú_cache_todo_stater•   „   sJ   € àAFÒARÔ" 7§;¡;¨|Ó#<Ô=ÐX\€FØÒ˜fšn°°jÕ0AÀVÈJÕEWÔ0WØ %�Óñ 1XÑr   c               ó    € V ^8„  d   QhRRRR/# )r   r�   r4   r	   r†   r
   )r   s   "r   r   r   ‹   s   € ÷ ñ  ð ¨+ñ r   c                ón  € \        V P                  R4      4      pRp\        \        V P                  R4      RR4      RR4      p\        V4      '       d    \        V! 4       4      pVe   Ve   VR	,          VR	,          8¼  d   TpVe   WR&   V#   \         d    \
        P                  RRR7        LMi ; i)
zBReturn the newest live/cached todo snapshot for a runtime session.r“   NÚagentÚ_todo_storeÚsnapshotzfailed to read live todo stateT©Úexc_infor‰   )r�   r_   ÚgetattrÚcallabler)   ÚloggerÚdebug)r�   r”   Úliverš   s   &   r   Ú_session_todo_stater¢   ‹   s±   € ä" 7§;¡;¨|Ó#<Ó=€FØ€DÜ”w˜wŸ{™{¨7Ó3°]ÀDÓIÈ:ÐW[Ó\€HÜ�×Òð	JÜ(©«Ó4ˆDð Ò˜Vš^¨t°JÕ/?À6È*ÕCUÔ/UØˆØÒØ &�ÑØ€Møô ô 	JÜ�L‰LÐ9ÀDˆLÖIð	Jús   ÁB Â"B4Â3B4c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpayloadr4   r�   r	   r
   )r   s   "r   r   r   œ   s!   € ÷ ñ  ð ¨tð ¸ñ r   c                ó,   € \        V4      pVe   W R&   V # )z=Attach the authoritative todo snapshot to a session response.r“   )r¢   )r¤   r�   r�   s   && r   Ú_attach_todo_stater¦   œ   s   € ä Ó(€EØÒØ %�ÑØ€Nr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
session_idr   r	   r†   r
   )r   s   "r   r   r   ¤   s   € ÷ ñ ¨ð °ñ r   c                óf  € ^ RI Hp \        V RR4      p\        V4      '       g   R#  V! V4      p\	        V\
        4      '       d   \        V4      V8”  d   R# \        \        P                  ! V4      4      #   \        \        3 d     R# \         d    \        P                  RRR7        R# i ; i)zHCold-resume Todo snapshot without the REST page or model-history limits.)ÚMAX_TODO_RESULT_CHARSÚget_latest_todo_resultNz#failed to read persisted todo stateTr›   )Útools.todo_toolrª   r�   rž   r^   r   r   r�   r:   r{   r‹   rŒ   r)   rŸ   r    )Údbr¨   rª   ÚgetterÚcontents   &&   r   Ú_todo_state_from_dbr°   ¤   s”   € å5Ü�RÐ1°4Ó8€FÜ�F×ÒÙð	Ù˜Ó$ˆÜ˜'¤3×'Ò'¬3¨w«<Ð:OÔ+OÙÜ$¤T§Z¢Z°Ó%8Ó9Ð9øÜ”zÐ"ô ÚÜô Ü�‰Ð:ÀTˆÔJÚðús#   ¨.A7 ÁA7 Á7B0ÂB0ÂB0Â/B0c               ó   € V ^8„  d   QhRR/# )r   r	   r†   r
   )r   s   "r   r   r   ¶   s   € ÷ ñ ¨ñ r   c           	     ó–  € \        V \        4      '       d	   V '       g   R#  ^ RIHpHp V  UUu0 uF�  p\        V\
        4      '       g   K  VP                  R4      ;'       g    .  FU  p\        V\
        4      '       g   K  VP                  R4      '       g   K4  V! V4      '       g   KD  VP                  R4      kKW  	  K‘  	  pppV'       g   R# \        V 4       F¨  p\        V\
        4      '       d-   VP                  R4      R8w  g   VP                  R4      V9  d   KG  VP                  RR	4      p\        V\        4      '       d   \        V4      V8”  g   R
V9  d   Kˆ   \        \        P                  ! V4      4      u # 	  R# u uppi   \         d     KÂ  i ; i  \         d    \        P                  RRR7        R# i ; i)zôLatest todo snapshot from a loaded transcript, for resume paths that answer before an AIAgent (and
its live TodoStore) exists: the newest tool result paired with an assistant Todo-tool call (aliases and
the ``tool_call`` bridge included) IS it.N)rª   Úis_todo_tool_callÚ
tool_callsÚidÚroleÚtoolÚtool_call_idr¯   r'   z"todos"z(failed to derive todo state from historyTr›   )r^   r`   r¬   rª   r³   r4   r_   Úreversedr   r   r�   r:   r{   r)   rŸ   r    )Úhistoryrª   r³   ÚmsgÚcallÚtodo_call_idsr¯   s   &      r   Ú_todo_state_from_historyr¾   ¶   s}  € ô �gœt×$Ò$¯GÙðßLñ ô
á�¤*¨S´$×"7ô àŸ™ Ó-×3Ð3°Ò3�Ü˜$¤×%ô ð +/¯(©(°4¯.ô ñ >OÈt×=Tô ˆD�H‰H�TŽNá3ñ Ùð 	ñ 
÷ ÙÜ˜GÖ$ˆCÜ˜c¤4×(Ò(¨C¯G©G°F«O¸vÔ,EÈÏÉÐQ_ÓI`ÐhuÔIuÙØ—g‘g˜i¨Ó,ˆGÜ˜g¤s×+Ò+¬s°7«|Ð>SÔ/SÐW`ÐhoÔWoÙðÜ,¬T¯ZªZ¸Ó-@ÓAÒAñ %ñ ùó%
øô  ô Úðûô ô Ü�‰Ð?È$ˆÔOÚðúsq   ¢F" ¯F
ÁF
Á$F
ÂF
ÂF
Â+F
ÃF" ÃBF" Å%FÆF" ÆF" Æ
F" ÆFÆF" ÆFÆF" Æ""GÇGc               ó    € V ^8„  d   QhRRRR/# )r   rE   rF   r	   Úboolr
   )r   s   "r   r   r   Ö   s   € ÷ ]ñ ] Fð ]¨tñ ]r   c                óB  € \        V \        4      '       d	   V '       g   R#  \        P                  ! V 4      p\        T\
        4      '       g   R# TP                  R4      RJ g   TP                  R4      RJ d   R# TP                  R4      p\        T\        4      '       d"   \        TP                  4       4      '       d   R# TP                  R4      p\        T\        4      ;'       d#    T^ 8g  ;'       d    \        T\        4      '       * #   \         d     R# i ; i)zLA failed call the user still has to see. Display policy must not swallow it.FÚsuccessÚokTÚerrorÚ	exit_code)
r^   r   r:   r{   r)   r4   r_   rÀ   r|   rŠ   )rE   rf   rÄ   rÅ   s   &   r   Ú_tool_result_needs_userrÆ   Ö   sÚ   € ä�fœc×"Ò"¯&ÙðÜ�zŠz˜&Ó!ˆô �dœD×!Ò!ÙØ‡x�x�	Ó˜eÓ# t§x¡x°£~¸Ó'>ÙØ�H‰H�WÓ€EÜ�%œ×Ò¤$ u§{¡{£}×"5Ò"5Ùð —‘˜Ó%€IÜ�i¤Ó%×\Ð\¨)°q©.×\Ð\ÄÈIÔW[ÓA\Ô=\Ð\øô ô Úðús   ¢D ÄDÄDc               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   r   r3   r4   r	   zlist[dict] | Noner
   )r   s   "r   r   r   ë   s'   € ÷ Vñ V�sð V $ð VÐ+<ñ Vr   c                óv   € ^ RI Hp V! W4       Uu. uF  q3P                  4       NK  	  up;'       g    R# u upi )r$   )Útool_labels_for_callN)Úagent.displayrÉ   Ú
as_payload)ru   r3   rÉ   Úlabels   &&  r   Ú_tool_labelsrÍ   ë   s4   € Ý2á,@ÀÔ,LÓMÑ,L 5×ÑÖÑ,LÑM×UÐUÐQUÐUùÒMs   ‘6c               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   r   r3   r4   r	   rÀ   r
   )r   s   "r   r   r   ñ   s&   € ÷ 	Jñ 	J Cð 	J¨tð 	J¸ñ 	Jr   c                ób  a€ ^ RI Ho V R8X  g   S! V 4      '       d   R# V R8w  g   \        V\        4      '       g   R# \        VP	                  R4      \
        4      '       d   VP	                  R4      MV.p\        ;QJ d    V3R lV 4       F  '       g   K   R# 	  R# ! V3R lV 4       4      # )r$   )Úis_connector_nameÚmanage_connectionsTÚ	tool_callFÚcallsc              3  óº   <"  € T FP  p\        V\        4      ;'       d4    VP                  R 4      R8H  ;'       g    S! VP                  R 4      4      x € KR  	  R# 5i)ru   rÑ   N)r^   r4   r_   )Ú.0r¼   rÐ   s   & €r   Ú	<genexpr>Ú,_connector_tool_lifecycle.<locals>.<genexpr>ù   s[   øé € ð JÙCH¸4ô ˜$¤Ó%÷ 7ð 7¨4¯8©8°FÓ+;Ð?SÑ+S÷ ,6ð ,6Ù# D§H¡H¨VÓ$4Ó5ô7ÛCHùs   ƒAŸA» A)Útools.connectorsrÐ   r^   r4   r_   r`   Úany)ru   r3   rÓ   rÐ   s   && @r   Ú_connector_tool_lifecyclerÚ   ñ   sž   ø€ Ý2àÐ#Ô#Ñ'8¸×'>Ò'>ÙØˆ{Ô¤*¨T´4×"8Ò"8ÙÜ!+¨D¯H©H°WÓ,=¼t×!DÒ!DˆD�H‰H�WÔÈ4È&€Eß‹3ô JÙCHóJ�3Œ3ð JŠ3ð Jˆ3ô JÙCHóJó Jð Jr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úsidr   ru   r3   r4   r	   rÀ   r
   )r   s   "r   r   r   ý   s.   € ÷ eñ e sð e°#ð e¸Tð eÀdñ er   c                óÊ   € \        W4      '       g   R # \        P                  4       pVRJ;'       d2    \        P                  V 4      VJ;'       g    VP                  RR 4      # )FNÚ
_finalized)rÚ   Ú_current_runtime_session_recordr_   Ú	_sessions)rÜ   ru   r3   Úowners   &&& r   Ú_connector_lifecycle_is_stalerâ   ý   sS   € Ü$ T×0Ò0ÙÜ+×/Ñ/Ó1€EØ˜Ð×dÐd¤)§-¡-°Ó"4¸EÐ"A×"cÐ"cÀUÇYÁYÈ|Ð]bÓEcÐdr   c                óú  € \        W#4      '       g   \        WV4      # ^ RIHp ^ RIHp V! V4      p\        ;_uu_ 4        \        WV4      '       d    RRR4       R# \        P                  V4      ;'       g    / P                  R4      pVf   \        4       ;'       g    \        pRRR4       \        WV4      pV! V4       ^ RIHp	 V	! V\        4       XP                  V4       R#   + '       g   i     LJ; i)r$   )Úconnector_ui_payload)Ú_stamp_eventNÚ	transport)Úproject_room_member_activity)rÚ   Ú_emitÚtui_gateway.connector_payloadrä   Útui_gateway.event_replayrå   Ú_sessions_lockrâ   rà   r_   Úcurrent_transportÚ_stdio_transportÚ_event_frameÚ'tui_gateway.hosted_room_member_activityrç   Úwrite)
ÚeventrÜ   ru   r3   r¤   rä   rå   ræ   Úframerç   s
   &&&&&     r   Ú_emit_tool_lifecycleró     s¾   € Ü$ T×0Ò0Ü�U Ó)Ð)ÝBÝ5á" 7Ó+€G÷ 
ŽÜ(¨°D×9Ò9Ø÷ 
‰ô —]‘] 3Ó'×-Ð-¨2×2Ñ2°;Ó?ˆ	ØÒÜ)Ó+×?Ð?Ô/?ˆI÷ 
ô ˜ WÓ-€EÙ�ÔÝTÙ  ¬	Ô2Ø‡O�O�EÖ÷ 
�ús   Á C*ÁC*Á:&C*Â!C*Ã*C:	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rÜ   r   r¸   ru   r3   r4   r
   )r   s   "r   r   r     s.   € ÷ Eñ E˜ð E¨3ð E°cð EÀñ Er   c           	     ón  € \        WV4      '       d   R # \        P                  V 4      pVeÛ   \        P	                  \
        4      ;_uu_ 4        ^ RIHp VP                  R4      ;'       g'    \        VP                  R4      RR 4      ;'       g    T pV! W#VR7      pVe   WtP                  R/ 4      V&   R R R 4       \        P                  4       VP                  R/ 4      V&   VP                  R/ 4      P                  VR 4       \        V 4      '       g#   \        V4      '       g   \        W#4      '       dh   R	VR
VR\        W#4      /p\!        W#4      ;p	e   W˜R&   V'       d   W8R&   \#        V 4      '       d   \%        V4      ;p
'       d   W¨R&   \'        RWW84       R # R #   + '       g   i     Lõ; i)N)Úcapture_local_edit_snapshotÚsession_keyr˜   r¨   )Útask_idÚedit_snapshotsÚtool_started_atÚtool_result_metadataÚtool_idru   ÚcontextÚlabelsr3   Ú	args_textz
tool.start)râ   rà   r_   Ú
contextlibÚsuppressr)   rÊ   rö   r�   Ú
setdefaultÚtimeÚpopÚ_tool_progress_enabledÚ_tool_lifecycle_required_for_uirÚ   Ú	_tool_ctxrÍ   Ú_session_verboserC   ró   )rÜ   r¸   ru   r3   r�   rö   rø   rš   r¤   rþ   rÿ   s   &&&&       r   Ú_on_tool_startr	    sv  € Ü$ S°×5Ò5ÙÜ�m‰m˜CÓ €GØÒÜ× Ñ ¤×+Õ+ÝAØ—k‘k -Ó0×lÐl´G¸G¿K¹KÈÓ<PÐR^Ð`dÓ4e×lÐlÐilˆGÙ2°4ÀwÔOˆHØÒ#ØIQ×"Ñ"Ð#3°RÓ8¸ÑF÷ ,ô CGÇ)Á)Ã+ˆ×ÑÐ,¨bÓ1°,Ñ?ð 	×ÑÐ1°2Ó6×:Ñ:¸<ÈÔNÜ˜s×#Ò#Ô'FÀt×'LÒ'LÜ(¨×4Ò4Ø&/°¸vÀtÈYÔXaÐbfÓXmÐ%nˆÜ" 4Ó.Ð.ˆFÒ;Ø &�HÑ÷ Ø"�F‰OÜ˜C× Ò ´?À4Ó3HÐ&H iÖ&HØ#,�KÑ Ü˜\¨3°dÖDñ 5÷ ,×+ús   ÁAF$Â%F$Æ$F4	c               ó0   € V ^8„  d   QhRRRRRRRRRRRR/# )	r   rÜ   r   r¸   ru   r3   r4   rE   r	   r
   )r   s   "r   r   r   7  sA   € ÷ Bñ B sð B¸#ð BÀSð BÐPTð BÐ^að BÐfjñ Br   c           
     ó´  € \         P                  V 4      pVe#   VP                  R/ 4      P                  VR4      MRp/ p\        P                  \        4      ;_uu_ 4        ^ RIHp . p	V! W$W6V	P                  R7      '       d   RP                  V	4      VR&   RRR4       Ve   WuP                  R/ 4      V&   V'       d   RV/# / #   + '       g   i     L6; i)zàNon-emitting preview preparation for the canonical tool-result append.

Retain the exact preview for the post-flush event, including an empty preview
for failed/no-op edits. A cold client reads the same sidecar from SQLite.
Nrù   )Úrender_edit_diff_with_delta)Úfunction_argsrš   Úprint_fnr   Úinline_diffrû   )rà   r_   r  r  r   r  r)   rÊ   r  Úappendr   )
rÜ   r¸   ru   r3   rE   r�   rš   Úmetadatar  Úrendereds
   &&&&&     r   Ú_prepare_tool_result_metadatar  7  sÀ   € ô �m‰m˜CÓ €GØSZÒSfˆw×!Ñ!Ð"2°BÓ7×;Ñ;¸LÈ$ÔOÐlp€HØ€HÜ	×	Ñ	œY×	'Õ	'Ý=Ø ˆÙ& tÀ4Ðem×etÑet×uÓuØ&*§i¡i°Ó&9ˆH�]Ñ#÷	 
(ð
 ÒØGO×ÑÐ1°2Ó6°|ÑDß19Ð" HÐ-ÐA¸rÐA÷ 
(×	'ús   Á!8CÃC	c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r   rÜ   r   r¸   ru   r3   r4   rE   r
   )r   s   "r   r   r   J  s7   € ÷ /Nñ /N˜3ð /N¨cð /N¸ð /NÀDð /NÐRUñ /Nr   c                óö  € \         P                  V 4      pVe   VP                  R/ 4      M/ pVP                  VR 4      p\	        WV4      '       d   R # RVRVRV/p\        W#4      ;p	e   W˜R&   Vf0   \        WW#V4      P                  R/ 4      pVP                  VR 4       VP                  V4       Ve#   VP                  R/ 4      P                  VR 4      MR p
V
'       d   \        P                  4       V
,
          MR pVe   W¸R&    \        P                  ! V4      VR&   \        W$V4      pV'       d   WÈR	&   \        V 4      '       d   \        V4      ;p'       d   WØR
&   ^ RIHp V! V4      '       d   \#        VP                  R4      4      MR pVe!   VP                  V4       Ve   \%        W_4       ^ RIHp \+        V 4      '       gg   VP                  R4      '       gP   \-        V4      '       g?   V! V4      '       g1   \/        W#4      '       g    \1        V4      '       d   V! W$4      '       g   \3        RWW84       Ve   \5        RW4       Ve   \7        WRR7       R # R #   \         d	    YHR&    ELUi ; i)Nrû   rü   ru   r3   rþ   rú   rv   rE   ÚsummaryÚresult_text)Úis_todo_tool_name)Úis_neutral_failurer  ztool.completeztodo.updatedT)Úonly_if_changed)rà   r_   r  r  râ   rÍ   r  Úupdater  r:   r{   r)   rƒ   r  rN   r¬   r  r�   r•   rÊ   r  r  r  rÚ   rÆ   ró   rè   Ú!_publish_session_control_snapshot)rÜ   r¸   ru   r3   rE   r�   Úpreparedr  r¤   rþ   Ú
started_atrv   r  r  r  r“   r  s   &&&&&            r   Ú_on_tool_completer  J  s8  € Ü�m‰m˜CÓ €GØAHÒATˆw×!Ñ!Ð"8¸"Ô=ÐZ\€Hà�|‰|˜L¨$Ó/€HÜ$ S°×5Ò5ÙØ˜,¨°°f¸dÐC€GÜ˜tÓ*Ð*ˆÒ7Ø"�ÑØÒä0°ÀDÐPVÓW×[Ñ[Ð\rÐtvÓwˆØ�‰�\ 4Ô(Ø‡N�N�8ÔØV]ÒVi�×#Ñ#Ð$5°rÓ:×>Ñ>¸|ÈTÔRÐos€Jß-7”—‘“˜zÖ)¸T€JØÒØ *�Ñð#Ü ŸJšJ vÓ.ˆ�Ñô ˜D¨*Ó5€GßØ$�	ÑÜ˜×ÒÔ1BÀ6Ó1JÐ"J +Ö"JØ!,�ÑÝ1áARÐSW×AXÒAXÔ& w§{¡{°8Ó'<Ô=Ð^b€JØÒØ�‰�zÔ"ØÒÜ˜gÔ2Ý0Ü˜s×#Ò# w§{¡{°=×'AÒ'AÔEdÐei×EjÒEjÙ  ×&Ò&Ô*CÀD×*OÒ*OÜ'¨×/Ò/Ñ8JÈ4×8XÒ8XÜ˜_¨c¸ÔGð ÒÜˆn˜cÔ.ð ÒÜ)¨#È×Mñ øô3 ô #Ø"�Ôð#ús   Ä	I% É%I8É7I8c           	     ó^   € \        V 4      '       d   ^ RIHp \        RW! WV4      4       R# R# )r$   )Útool_progress_payloadútool.progressN)r  Úagent.tool_progress_relayr!  rè   )rÜ   ru   ÚpreviewÚkwr!  s   &&&& r   Ú_progress_tool_progressr&  €  s)   € ä˜c×"Ò"ÝCÜˆo˜sÐ$9¸$ÈÓ$LÖMñ #r   c                óÔ  € VP                  R 4      p\        V\        4      '       d¼   \        V 4      '       d©   \	        RT R\        VP                  R4      ;'       g    R4      R\        V4      R\        VP                  R4      ;'       g    R4      RVP                  R. 4       Uu. uF  p\        V4      NK  	  upR	\        VP                  R	R
4      4      /4       R# R# R# u upi )Úrisk_metadataútool.output_riskrü   r¸   r'   ru   ÚriskÚlowÚfindingsr*   FN)r_   r^   r4   r  rè   r   rÀ   )rÜ   ru   r$  r%  r  Úitems   &&&&  r   Ú_progress_output_riskr.  ‡  sË   € à�v‰v�oÓ&€HÜ�(œD×!Ò!Ô&<¸S×&AÒ&AÜÐ  #Ø”s˜2Ÿ6™6 .Ó1×7Ð7°RÓ8¸&Ä#ÀdÃ)ÈVÔUXÐYa×YeÑYeÐflÓYm×YvÐYvÐqvÓUwØ¨x¯|©|¸JÈÔ/KÓLÑ/K tœ˜TžÑ/KÑLÈjÔZ^Ð_g×_kÑ_kÐlvÐx}Ó_~ÓZð(
ö 	ñ 'BÑ!ùò Ms   Â(C%c                óŠ   € \        V 4      '       g   R # \        RT R\        V4      /\        V 4      '       d   RR/M/ C4       R # )Núreasoning.availabler   ÚverboseT)Ú_session_show_reasoningrè   r   r  ©rÜ   ru   r$  r%  s   &&&&r   Ú_progress_reasoningr4  ‘  s?   € Ü" 3×'Ò'ÙÜ	Ð
  v¬s°7«|Ð&tÔUeÐfi×UjÒUjÀÈDÑ@QÐprÐ&tÖur   c                óÜ   € \        V 4      '       g   R # R\        V4      R\        T;'       g    R4      /pR F$  w  rVVP                  V4      f   K  W5,          WF&   K&  	  \        RW4       R # )NrÌ   r   r'   úmoa.reference))Ú	moa_indexÚindex)Ú	moa_countr   )r2  r   r_   rè   )rÜ   ru   r$  r%  Úref_payloadrb   Úouts   &&&&   r   Ú_progress_moa_referencer<  —  s_   € ä" 3×'Ò'Ùà&-¬s°4«y¸&Ä#ÀgÇmÀmÐQSÓBTÐ%U€KÛD‰ˆØ�6‰6�#‹;Ô"Ø!�wˆKÓñ Eô 
ˆ/˜3Ö,r   c                óî   € VP                  R 4      VP                  R4      rT\        V 4      '       d	   Ve   Vf   R# \        RT R\        T;'       g    R4      R\	        V4      R\	        V4      /4       R# )Úmoa_refs_doneÚmoa_refs_totalNúmoa.progressrÌ   r'   Ú	refs_doneÚ
refs_total)r_   r2  rè   r   rŠ   )rÜ   ru   r$  r%  rA  rB  s   &&&&  r   Ú_progress_moa_progressrC  £  sc   € àŸF™F ?Ó3°R·V±VÐ<LÓ5MˆzÜ" 3×'Ò'¨9Ò+<À
Ò@RÙÜ	ˆ.˜# ¬¨T¯Z¨Z°R«¸+ÄsÈ9Ã~ÐWcÔehÐisÓetÐuÖvr   c                ó"  € VP                  R 4      pV'       d   \        V 4      '       g   R# R\        V4      /pR F-  w  rgVP                  V4      f   K  \        W6,          4      WW&   K/  	  V'       d   \        V4      VR&   \	        RW4       R# )Ú	moa_phaseNÚphaseÚ
aggregatorú	moa.phase))r>  rA  )r?  rB  )r_   r2  r   rŠ   rè   )rÜ   ru   r$  r%  rF  Úphase_payloadrb   r;  s   &&&&    r   Ú_progress_moa_phaserJ  «  su   € à�F‰F�;Ó€EßÔ/°×4Ò4ÙØ(/´°U³Ð'<€MÛV‰ˆØ�6‰6�#‹;Ô"Ü!$ R¥W£ˆMÓñ W÷ Ü&)¨$£iˆ�lÑ#Ü	ˆ+�sÖ*r   c                ó
   € V R J# r@   r
   ©Úvs   &r   Ú	_not_nonerN  ¹  s   € Ø�Dˆ=Ðr   c                óB   € V  Uu. uF  p\        V4      NK  	  up# u upi r@   rA   )rM  Úxs   & r   Ú	_str_listrQ  ½  s   € ÙÓ™A�qŒC�ŽF™AÑÐùÒs   …c                óJ   €  \        V 4      #   \        \        3 d     R# i ; i)z\Per-branch token/api rollups tolerate junk from older emitters: unparsable -> field omitted.N)rŠ   r‹   rŒ   rL  s   &r   Ú_int_or_skiprS  Á  s'   € ðÜ�1‹vˆøÜ”zÐ"ô Úðús   ‚
 �"¡"Úsubagent_idÚ	parent_idÚchild_session_idÚdelegation_idÚdepthÚmodelÚ
tool_countÚtoolsetsÚinput_tokensÚoutput_tokensÚreasoning_tokensÚ	api_callsÚ
files_readÚfiles_writtenÚoutput_tailÚ	tool_namer   Ústatusr  Úduration_secondsc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
r   Ú
event_typer   ru   rw   r%  r4   Úshow_reasoningrÀ   r	   r
   )r   s   "r   r   r   ×  s1   € ÷ ñ  #ð ¨Zð Àdð Ð_cð Ðhlñ r   c          
     ó  € R \        VP                  R 4      ;'       g    R4      R\        VP                  R4      ;'       g    ^4      R\        VP                  R4      ;'       g    ^ 4      /p/ VCRVRV/Cp\         F=  w  rxp	V! VP                  V4      4      '       g   K%  V	! Wg,          4      p
V
f   K9  W¥V&   K?  	  V R8X  d   V'       g   VP	                  RR4       V'       d$   V R8X  d   \        V4      VR	&   \        V4      VR&   V# )
Úgoalr'   Ú
task_countÚ
task_indexrc  r   Nzsubagent.thinkingzsubagent.toolÚtool_preview)r   r_   rŠ   Ú_SUBAGENT_FIELDSr  )rg  ru   r$  r%  rh  r¤   Úsourcerb   ÚpresentÚcoerceÚvals   &&&&$      r   Ú_subagent_payloadrs  ×  s  € Ø”s˜2Ÿ6™6 &›>×/Ð/¨RÓ0°,ÄÀBÇFÁFÈ<ÓDX×D]ÐD]Ð\]Ó@^Ð`lÔnqÐrt×rxÑrxð  zFó  sG÷  sLð  sLð  KLó  oMð  N€GØ7�Ð7�K  v¨wÑ7€Fß 0Ñˆ�fÙ�6—:‘:˜c“?×#Ô#Ù˜�Ó%ˆCØŒØ"˜“ñ	 !1ð Ð(Ô(·Ø�‰�F˜DÔ!ß�: Ô0Ü"% g£,ˆ�ÑÜ˜g›,ˆ�‰Ø€Nr   c               ó    € V ^8„  d   QhRRRR/# )r   rÜ   r   ru   r
   )r   s   "r   r   r   é  s   € ÷ 
Sñ 
S˜Cð 
S sñ 
Sr   c                óØ   € \        WAW#\        \        V 4      4      R 7      pVR8w  d   \        W@V4       \        P                  V 4      ;pe   \        WEVP                  R4      4       R# R# ))rh  zsubagent.textNÚprofile_home)rs  rÀ   r2  rè   rà   r_   Ú_mirror_subagent_to_child)rÜ   ru   r$  r%  rg  r¤   Úparents   &&&&&  r   Ú_progress_subagentry  é  s^   € Ü 
°'ÌdÔSjÐknÓSoÓNpÔq€Gð �_Ô$Üˆj˜wÔ'ô —-‘- Ó$Ð$ˆÒ1Ü! *°v·z±zÀ.Ó7QÖRñ 2r   r)  ru   r"  r0  r$  r6  úmoa.aggregatingc           	     óF   € \        R T R\        T;'       g    R4      /4      # )rz  rG  r'   )rè   r   r3  s   &&&&r   r=   r=   ÿ  s%   € ´uÐ=NÐPSÐVbÔdgÐhl×hrÐhrÐprÓdsÐUtÔ7ur   r@  rH  c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   rÜ   r   rg  ru   rw   r$  Ú_argsr†   r
   )r   s   "r   r   r     s4   € ÷ -ñ -Ø	ð-Øð-Ø%/ð-ØAKð-àñ-r   c                óð   € VR 8X  d   V'       d   R# VP                  R4      '       d   \        WW5V4      # \        P                  VR4      w  rgVe%   Ve   RVRV/V,          '       d   V! WW54       R# R# R# )ztool.startedNz	subagent.ru   r$  )NN)Ú
startswithry  Ú_PROGRESS_HANDLERSr_   )rÜ   rg  ru   r$  r}  Ú_kwargsÚhandlerÚrequiress   &&&&&,  r   Ú_on_tool_progressr„    s|   € ð �^Ô#¯Ùð ×Ñ˜[×)Ò)Ü! #¨W¸zÓJÐJô +×.Ñ.¨z¸<ÓHÑ€GØÒ Ò 0°V¸TÀ9ÈgÐ4VÐW_×4`Ô4`Ù�˜7Ö,ñ 5aÑr   c               ó   € V ^8„  d   QhRR/# )r   r	   r‘   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   Úglobals)Úservers   &r   Úregisterr‹    s   € ä”“	˜6¨×/r   )NNN)7Ú__doc__Ú
__future__r   r:   ÚloggingÚ
method_ctxr   Ú	getLoggerÚ__name__rŸ   r   r   r!   r+   r1   rC   rN   rY   rc   r}   rƒ   r�   r•   r¢   r¦   r°   r¾   rÆ   rÍ   rÚ   râ   ró   r	  r  r  r&  r.  r4  r<  rC  rJ  rN  rQ  rS  rÀ   r   rŠ   r`   Úfloatrn  rs  ry  r€  r„  r‹  r
   r   r   Ú<module>r“     sM  ðñmõ #ã Û å #ð 
×	Ò	˜8Ó	$€ð $Ð Ø Ð õ@õ"+õ)õ}õ6õ6õ7ð Ñ:¸EÀ8ÈZÐXØÑ\Ð^iÐkqÐszÐ{ðÐ õcõ"2õ &õõ"õõ$õ@]õ*Võ	Jõeòõ,Eõ:Bõ&/NòlNòòvò	-òwò+òòòð �D˜#Ð ¨d°CÐ 8Ð;MÈtÐUXÐ:YØ�d˜CÐ  7¨I°sÐ";¸gÀtÈSÐ=QÐT`ÐbkÐmpÐSqØ��yÐ! N°I¸|Ð#LÈÐ`iÐkwÐNxØ˜ LÐ1°KÀÈLÐ3YØ�4˜Ð# o°t¸YÐ%GÈ-ÐY]Ð_cÐIdØ�$˜Ð˜v t¨SÐ1°H¸dÀCÐ3HÈ9ÐVZÐ\_ÐJ`Ø˜ EÐ*ðÐ õõ$
Sð  Ð.°Ð7¸ÐKbÐdjÐJkØÐ/°Ð;ØÐ-¨vÐ6ð ÑuÐw{Ð|ØÐ+¨TÐ2°KÐBUÐW[ÐA\ð	Ð ÷-÷"0r   