+
    lHàjü
  ã                   ó€   a € R t0 t R t^ RIt^ RIt^ RIt/ t] ^ k ]P                  ! 4       t^ÈtRt	R R lt
RR R lltR# )	ur  skill_view repeat-view dedup registry: per-task cache of (resolved skill name, file_path) ->
digest of the skill_view result served. A repeat view whose result is byte-identical returns a short
stub â€” the earlier tool result already carries the content verbatim. Content digests need no file
timestamps, so a same-size rewrite in one coarse mtime tick (or on a host whose clock disagrees with
the filesystem's) is never mistaken for "unchanged". Cleared via ``reset_skill_view_dedup()`` on
context compression AND on a committed proactive tool-result prune, because both replace the
original content with a one-line marker.
Nuâ   Skill content unchanged since it was loaded earlier in this conversation â€” refer to the earlier skill_view result; it is still current and complete. (Re-issued after context compression, this returns the full content again.)c                óJ   € V ^8„  d   QhR\         R\        R\        R,          /# )é   ÚpayloadÚresultÚreturnN)ÚdictÚstr)Úformats   "Ú</home/ubuntu/.hermes/hermes-agent/tools/skills_tool_dedup.pyÚ__annotate__r      s&   € ÷ ñ ¼ð Äcð ÌcÐTXÍjñ ó    c                óü  € V '       d.   VP                  R4      '       g   VP                  R4      R8X  d   R# \        VP                  R4      ;'       g    T4      pYR;'       g    R3p\        P                  ! VP	                  R4      4      P                  4       p\        ;_uu_ 4        \        P                  \        V 4      / 4      pVP                  V4      V8X  d?   \        P                  ! RRR	R
RTRT;'       g    RRRRRR\        /RR7      uuRRR4       # VP                  VR4       WxV&   \        V4      \        8”  d   V\        \!        V4      4       K+   RRR4       R#   + '       g   i     R# ; i)z¬The "unchanged" stub when this task was already served exactly ``result`` for this skill
file; otherwise record ``result``'s digest and return None (serve the full result).Úsetup_neededÚreadiness_statusNÚnameÚ zutf-8ÚsuccessTÚstatusÚ	unchangedÚfilezSKILL.mdÚdedupÚcontent_returnedFÚmessage)Úensure_ascii)Úgetr   ÚhashlibÚsha256ÚencodeÚ	hexdigestÚ_skill_view_tracker_lockÚ_skill_view_trackerÚ
setdefaultÚjsonÚdumpsÚ_SKILL_VIEW_DEDUP_MESSAGEÚpopÚlenÚ_SKILL_VIEW_DEDUP_CAPÚnextÚiter)	Útask_idr   Ú	file_pathr   r   ÚresolvedÚkeyÚdigestÚcaches	   &&&&&    r
   Údedup_skill_viewr0      s<  € ÷
 �w—{‘{ >×2Ò2Ø�{‰{Ð-Ó.°.Ô@ÙÜ�7—;‘;˜vÓ&×.Ð.¨$Ó/€HØ—_�_ "Ð
%€CÜ�^Š^˜FŸM™M¨'Ó2Ó3×=Ñ=Ó?€Fß	!Ö	!Ü#×.Ñ.¬s°7«|¸RÓ@ˆØ�9‰9�S‹>˜VÔ#Ü—:’:Ø˜4 ¨;¸ÀØ˜	×/Ð/ Z°¸$Ð@RÐTYØÔ4ð6ð EJôK÷ 
"Ò	!ð 	�	‰	�#�tÔØˆc‰
Ü�%‹jÔ0Ô0Ø”dœ4 ›;Ó'Ò(ð 1÷ 
"ñ ÷ 
"Ö	!ñ ús   Â*AE*Ä E*ÄAE*Å*E;	c                ó6   € V ^8„  d   QhR\         R,          RR/# )r   r*   Nr   )r   )r	   s   "r
   r   r   2   s   € ÷ 8ñ 8¤C¨$¥Jð 8¸$ñ 8r   c                óÌ   € \         ;_uu_ 4        V f   \        P                  4        M\        P                  \	        V 4      R4       RRR4       R#   + '       g   i     R# ; i)zVClear the dedup cache (all tasks when task_id is None); called on context compression.N)r   r    Úclearr%   r   )r*   s   &r
   Úreset_skill_view_dedupr4   2   s<   € ç	!Ö	!ØŠ?Ü×%Ñ%Õ'ä×#Ñ#¤C¨£L°$Ô7÷	 
"×	!×	!Ò	!ús   �9AÁA#	c                ó„   € V ^8„  d   Qh/ ^ \         9   d,   \        \        \        \        \        3,          3,          ;R&   # )r   r    )Ú__conditional_annotations__r   r   Útuple)r	   s   "r
   r   r      s1   € ÷ ñ ÷ 6Ò 5”Tœ#œt¤E¬3 JÕ/Ð/Õ0Ñ 5òr   )N)r6   Ú__doc__r   r"   Ú	threadingr    ÚLockr   r'   r$   r0   r4   r   )r6   s   @r
   Ú<module>r;      sK   øðöó Û Û à35Ð Ó 5Ø$Ÿ>š>Ó+Ð ØÐ ð'ð õ÷28ñ 8r   