+
    iHàjk  ã                   óÆ   € R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ]R 4       tRR/R	 R
 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/R R lltR# )zâDisplay-only Codex commentary projection shared by REST and gateway history.

Provider items and the stored reasoning string remain untouched for model replay.
Only the projected fields may be used for public transcript text.
N)Úcontextmanager)ÚAny)Úredact_sensitive_text)Úreset_hermes_home_overrideÚset_hermes_home_override)Úis_truthy_valuec              #   ó˜   "  € V e   \        \        V 4      4      MR p R x € Ve   \        V4       R # R #   Te   \        T4       i i ; i5i©N)r   Ústrr   )ÚhomeÚtokens   & Ú=/home/ubuntu/.hermes/hermes-agent/agent/history_commentary.pyÚ_owning_homer      sI   é € à37Ò3CÔ$¤S¨£YÔ/È€Eð.ÛàÒÜ& uÖ-ñ øˆ5ÒÜ& uÕ-ð üs   ‚A
ž5 ¢A
µAÁA
Ústrip_thinkingc                ó0   € V ^8„  d   QhR\         R\         /# )é   ÚtextÚreturn)r
   )Úformats   "r   Ú__annotate__r      s   € ÷ Bñ BœSð B¼Sñ Bó    c               óz   a€ Vf   ^ RI Ho V3R lpV! V 4      P                  4       pV'       d   \        V4      # T# )zCUse the same think stripping and secret redaction as live delivery.)Ústrip_think_blocksc                 ó   <€ S! R V 4      # r	   © )Úvaluer   s   &€r   Ú<lambda>Ú$visible_commentary.<locals>.<lambda>   s   ø€ Ñ'9¸$ÀÔ'Fr   )Úagent.agent_runtime_helpersr   Ústripr   )r   r   Úvisibler   s   &$ @r   Úvisible_commentaryr!      s7   ø€ àÒÝBäFˆá˜TÓ"×(Ñ(Ó*€Gß-4Ô  Ó)ÐA¸'ÐAr   c                óv   € V ^8„  d   QhR\         R\        \        R,          ,          R\        \        ,          /# )r   ÚmessageÚphasesNr   )ÚdictÚ	frozensetr
   Úlist)r   s   "r   r   r   %   s.   € ÷ !ñ !¤$ð !´	¼#À½*Õ0Eð !Ì$ÌsÍ)ñ !r   c                 ó,  € V P                  R 4      p\        V\        4      '       d    \        P                  ! V4      p\        V\        4      '       g   . # . pV EF  p\        V\        4      '       d-   VP                  R4      R8w  g   VP                  R4      R8w  d   KH  VP                  R4      VP                  R4      reVe   \        V\        4      '       g   K…  \        V\        4      '       d   VP                  4       P                  4       MRpWq9  g   \        V\        4      '       g   KÙ  RP                  R	 V 4       4      P                  4       pV'       g   EK
  VP                  V4       EK  	  V#   \
        \        3 d    . u # i ; i)
Úcodex_message_itemsÚtyper#   ÚroleÚ	assistantÚphaseÚcontentNÚ c              3   ó   "  € T F„  p\        V\        4      '       g   K  VP                  R 4      R8X  g   K3  \        VP                  R4      \        4      '       g   KZ  VR,          P	                  4       '       g   Ky  VR,          x € K†  	  R# 5i)r*   Úoutput_textr   N)Ú
isinstancer%   Úgetr
   r   )Ú.0Úparts   & r   Ú	<genexpr>Ú'_phase_message_items.<locals>.<genexpr><   sr   é € ð 
á�Ü˜$¤×%ô ð —‘˜Ó  MÑ1ô ô ˜4Ÿ8™8 FÓ+¬S×1ô	 ð
 �V•×"Ñ"×$ô ˆD��LŠLÛùs   ‚BŸB·"BÁBÁ=B)r3   r2   r
   ÚjsonÚloadsÚ	TypeErrorÚ
ValueErrorr'   r%   r   ÚlowerÚjoinÚappend)	r#   r$   ÚitemsÚresultÚitemr-   r.   Únormalized_phaser   s	   &&       r   Ú_phase_message_itemsrC   %   sI  € Ø�K‰KÐ-Ó.€EÜ�%œ×Òð	Ü—J’J˜uÓ%ˆEô �eœT×"Ò"Øˆ	Ø€FÜˆä˜4¤×&Ò&Ø�x‰x˜Ó 9Ô,Ø�x‰x˜Ó ;Ô.áØŸ™ 'Ó*¨D¯H©H°YÓ,?ˆwØÒ¤Z°´s×%;Ò%;ÙÜ4>¸uÄc×4JÒ4J˜5Ÿ;™;›=×.Ñ.Ô0ÐPTÐØÔ)´¸GÄT×1JÒ1JÙØ�w‰wñ 
áó
ó 
÷ ‰%‹'ð 	÷ Š4Ø�M‰M˜$×ñ- ð. €Møô9 œ:Ð&ô 	ØŠIð	ús   ©E= Å=FÆFc                óF   € V ^8„  d   QhR\         R\        \        ,          /# ©r   r#   r   ©r%   r'   r
   )r   s   "r   r   r   I   s"   € ÷ Dñ Dœtð D¬¬S­	ñ Dr   c                 ó.   € \        V \        R 04      4      # )Ú
commentary©rC   r&   ©r#   s   &r   Ú_commentary_itemsrK   I   s   € Ü ¬°L°>Ó)BÓCÐCr   c                óF   € V ^8„  d   QhR\         R\        \        ,          /# rE   rF   )r   s   "r   r   r   M   s"   € ÷ Uñ Uœ$ð U¤4¬¥9ñ Ur   c                 ó0   € \        V \        0 Rm4      4      # )Úfinal>   NrN   Úfinal_answerrI   rJ   s   &r   Ú_final_itemsrP   M   s   € ä ¬Ò3RÓ)SÓTÐTr   c                óR   € V ^8„  d   QhR\         R\        \         ,          R\         /# )r   Ú	reasoningrH   r   )r
   r'   )r   s   "r   r   r   R   s%   € ÷ ñ ¬Sð ¼dÄ3½ið ÌCñ r   c                ó  € T p\        \        V4      \        RR7       Fë  p^ pVP                  W44      ;p^ 8¼  g   K  V\        V4      ,           pV^ 8X  g   W%^,
          ,          R8X  dž   V\        V4      8X  g   W&,          R8X  d�   VRV W&R r‡VP	                  R4      VP                  R4      r©VP                  R4      '       g   VP                  R4      '       d   RMRpY™'       d   V
'       d   TMR,           V
,           p^ pKä  TpKè  	  V# )au  Omit exact whole-line public segments from a display copy, not source data.

Current normalization separates parts with two newlines; older rows may
have one. If a private segment happens to be identical, origin is ambiguous:
omit both occurrences rather than leaking the public text or choosing the
wrong one. Surrounding reasoning is retained in its original line style.
T)ÚkeyÚreverseÚ
Nz

r/   )ÚsortedÚsetÚlenÚfindÚrstripÚlstripÚendswithÚ
startswith)rR   rH   Ú	remainingr   Úsearch_fromÚatÚendÚbeforeÚafterÚprefixÚsuffixÚ	separators   &&          r   Ú_without_flattened_commentaryrh   R   sô   € ð €IÜ”s˜:“¬C¸×>ˆØˆØ—^‘^ DÓ6Ð6ˆr¸1Ö<Ø”s˜4“y•.ˆCØ�a”˜9¨!¥VÕ,°Ô4Ø”s˜9“~Ô%¨­¸4Ô)?à )¨#¨2 °	¸$°˜Ø!'§¡¨tÓ!4°e·l±lÀ4Ó6H˜ð —‘ v×.Ò.°%×2BÑ2BÀ6×2JÒ2Jñ àð ð
 #¶6¿f¡iÈ"ÕMÐPVÕV�	Ø’à!’ñ# ?ð$ Ðr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   r#   Úenabledr   )r%   Úbool)r   s   "r   r   r   p   s!   € ÷ %ñ %œ$ð %¬Dð %´Tñ %r   c          	      ó   a€ V P                  R 4      R8w  g   V P                  R4      R8X  d   V # \        V 4      pV'       g   V # \        V 4      p. VR&   V'       d+   V Uu. uF  p\        V4      ;p'       g   K  VNK  	  upVR&   V P                  R4      ;'       g5    V P                  R4      ;'       g    V P                  R4      ;'       g    Rp\	        V\
        4      '       d   \        Wb4      VR	&   V P                  R
V P                  RV P                  R4      4      4      o\	        S\
        4      '       dË   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d‹   \        V 4      pV'       d%   SP                  4       RP                  V4      8X  gT   \        S4      VR
&   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   . VR&   V# u upi )r+   r,   Údisplay_kindÚhiddenÚdisplay_commentaryrR   Úreasoning_contentÚreasoning_detailsr/   Údisplay_reasoningÚdisplay_contentr.   r   c              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir	   r   ©r4   r   r.   s   & €r   r6   Ú_project_one.<locals>.<genexpr>�   s   øé € Ð'HÁC¸D°®ÃCùs   ƒTFrV   c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir	   )r^   ru   s   & €r   r6   rv   “   s   øé € Ð<¹°�7×%Ñ% d×+Ð+»ùs   ƒ!)r3   rK   r%   r!   r2   r
   rh   ÚanyrP   r   r=   )	r#   rj   ÚrawÚ	projectedr   r5   rR   Úfinalsr.   s	   &$      @r   Ú_project_oner|   p   s´  ø€ Ø‡{�{�6Ó˜kÔ)¨W¯[©[¸Ó-HÈHÔ-TØˆÜ
˜GÓ
$€CßØˆÜ�W“€Ià&(€IÐ"Ñ#ßá ó+
Ù �TÔ-?ÀÓ-EÐ%E TÓ%E�DˆD™Sñ+
ˆ	Ð&Ñ'ð 	�‰�KÓ ÷ 	ð 	Ø�;‰;Ð*Ó+÷	ð 	à�;‰;Ð*Ó+÷	ð 	ð ð	 ô �)œS×!Ò!Ü)FÀyÓ)Vˆ	Ð%Ñ&ð �k‰kØ˜7Ÿ;™; y°'·+±+¸fÓ2EÓFó€Gô �'œ3×Ò§C£CÔ'HÁCÓ'H§C§C¢CÔ'HÁCÓ'H×$HÒ$HÜ˜gÓ&ˆß˜7Ÿ=™=›?¨d¯i©i¸Ó.?Ô?Ü+=¸gÓ+FˆIÐ'Ñ(ß‹sÔ<¹Ó<�s�sŠsÔ<¹Ó<×<Ò<Ø24�	Ð.Ñ/ØÐùò7+
s   Á!HÁ;Hr   c                óh   € V ^8„  d   QhR\         \        ,          R\        R\         \        ,          /# )r   Úmessagesr   r   )r'   r%   r   )r   s   "r   r   r   ˜   s*   € ÷ 
ñ 
¬¬d­ð 
¼cð 
ÌTÔRVÍZñ 
r   c          
     óD  € \         ;QJ d    R V  4       F  '       g   K   RM	  RM! R V  4       4      '       g   V # \        V4      ;_uu_ 4        ^ RIHp  V! 4       P	                  R4      ;'       g    / p\        VP	                  R4      RR7      ;'       d    \        VP	                  R4      RR7      pV  Uu. uF'  p\        V\        4      '       d   \        WTR	7      MTNK)  	  upuuR
R
R
4       #   \         d    Rp LMi ; iu upi   + '       g   i     R
# ; i)zGProject a batch inside the owning profile's config and redaction scope.c              3   ót   "  € T F.  p\        V\        4      ;'       d    VP                  R 4      x € K0  	  R# 5i)r)   N)r2   r%   r3   )r4   r#   s   & r   r6   Ú-project_history_commentary.<locals>.<genexpr>š   s3   é € ð áˆGô 	�7œDÓ!×HÐH g§k¡kÐ2GÓ&HÔHÛùs   ‚8ž8TF)Úload_configÚdisplayÚshow_commentary)ÚdefaultÚinterim_assistant_messages)rj   N)
rx   r   Úhermes_cli.configr‚   r3   r   Ú	Exceptionr2   r%   r|   )r~   r   r‚   rƒ   rj   r#   s   &$    r   Úproject_history_commentaryr‰   ˜   s  € ç‹3ñ áó�3�3Š3ñ áó÷ ò ð ˆÜ	�d×	Õ	Ý1ð	Ù!“m×'Ñ'¨	Ó2×8Ð8°bˆGÜ%Ø—‘Ð-Ó.¸ô÷ ð ä!Ø—‘Ð8Ó9À4ôð ñ $ó	
ñ $�ô ˜'¤4×(Ò(ô ˜Õ2àòñ $ñ	
÷ 
Ò	øô ô 	ØŠGð	üò
÷ 
×	Ð	úsC   ÁDÁAC6ÂC6Â8DÂ<-D	Ã)DÃ6DÄDÄDÄDÄD	)Ú__doc__r8   Ú
contextlibr   Útypingr   Úagent.redactr   Úhermes_constantsr   r   Úutilsr   r   r!   rC   rK   rP   rh   r|   r‰   r   r   r   Ú<module>r�      sn   ðñó Ý %Ý å .ß QÝ !ð ñ.ó ð.ðB°D÷ Bõ!õHDõUõ
õ<%ðP
ÀD÷ 
ñ 
r   