Ë
    ãß²jk  ã                   óô   — d Z ddlZddlmZmZ ddlmZmZ dZdddddœZ		 	 d!d	e
d
ee
   dee
   dee
   dee   de
fd„Zdddd ee«      ddœdddœdddœdddœdœg dœdœZ ej                  dded„ d¬ «       y)"aÖ  Persistent element annotations in the Hermes desktop GUI's in-app browser.

Unlike ``drive_preview``'s self-retiring marks, an annotation outlines an element
(or, with ``hold``, the whole visible field) until removed. Annotations bind to
elements, not coordinates: they ride scrolls and vanish with their element, so
navigation clears them. Same ``preview.act`` bridge as ``drive_preview`` (the
renderer resolves refs and owns the overlay). ``desktop_ui`` toolset only.
é    N)ÚCallableÚOptional)ÚregistryÚ
tool_error)ÚaddÚholdÚremoveÚclearÚpinr   ÚunpinÚactionÚrefÚselectorÚlabelÚcallbackÚreturnc                 ó–  — |€t        d«      S | xs dj                  «       j                  «       }|t        vr"t        ddj	                  t        «      › d�«      S |dv r|s|st        |› d�«      S |d	v}d
t
        |   fd|r|ndfd|r|ndfd|ff}|D ��	ci c]  \  }}	|	€Œ	||	“Œ }
}}		  ||
«      }|st        d«      S 	 t        j                  t        j                  |«      d¬«      S c c}	}w # t        $ r}t        d|› �«      cY d}~S d}~ww xY w# t        t        f$ r% t        j                  dt        |«      id¬«      cY S w xY w)z8Put one annotation up, take one down, or clear them all.Nz=annotate_preview is only available in the Hermes desktop app.r   zaction must be one of: z, ú.)r   r	   zY needs a ref from drive_preview action='elements' (e.g. 'btn-sign-in') or a CSS selector.)r
   r   r   r   r   Útextz'Failed to annotate the in-app browser: zYThe annotation timed out, or no GUI window answered. Open a page with open_preview first.F)Úensure_ascii)r   ÚstripÚlowerÚACTIONSÚjoinÚWIREÚ	ExceptionÚjsonÚdumpsÚloadsÚ	TypeErrorÚ
ValueErrorÚstr)r   r   r   r   r   ÚverbÚtargetedÚfieldsÚnameÚvalÚpayloadÚrawÚexcs                ú@/home/ubuntu/.hermes/hermes-agent/tools/annotate_preview_tool.pyÚannotate_preview_toolr,      s~  € ð
 ÐÜÐYÓZÐZØŠO�e×"Ñ"Ó$×*Ñ*Ó,€DØ”7ÑÜÐ3°D·I±I¼gÓ4FÐ3GÀqÐIÓJÐJØÐ Ñ ©#±Ü˜T˜FÐ"{Ð|Ó}Ð}àÐ,Ð,€HØœ˜d™Ð$ u±X©cÀ4Ð&HÈ:ÑckÑW_ÐquÐJvÐyð  BGð  yHð  I€FØ*0×D™Y˜T 3°C±Oˆt�S‰yÐD€GÑDðKÙ�wÓˆñ ÜÐuÓvÐvðBÜ�z‰zœ$Ÿ*™* S›/¸Ô>Ð>ùó Eøô ò KÜÐCÀCÀ5ÐIÓJÕJûðKûô ”zÐ"ò BÜ�z‰z˜6¤3 s£8Ð,¸5ÔAÒAðBús<   Â
C*Â!C*Â*C0 Ã )D Ã0	DÃ9DÄDÄDÄ1EÅEÚannotate_previewuñ  Highlight elements on the preview-pane page, lastingly (drive_preview's own marks fade; annotations stay until removed) â€” point at findings, flag what you're about to change, keep your place. Use the refs from drive_preview action='elements'. add: outline one element (optional short label â€” a word or two, drawn on the page). hold: freeze the whole visible field, every element outlined and named. remove/clear: take one/all down. Marks follow their element on scroll; navigation clears them.ÚobjectÚstringzDefaults to 'add'.)ÚtypeÚenumÚdescriptionz Ref from drive_preview elements.)r0   r2   z"CSS selector fallback. Prefer ref.z"Optional caption, e.g. 'cheapest'.)r   r   r   r   )r0   Ú
propertiesÚrequired)r&   r2   Ú
parametersÚ
desktop_uic           	      óº   — t        | j                  dd«      | j                  d«      | j                  d«      | j                  d«      |j                  d«      ¬«      S )Nr   r   r   r   r   r   )r   r   r   r   r   )r,   Úget)ÚargsÚkws     r+   ú<lambda>r;   [   sI   € Ô4Ø�x‰x˜ %Ó(Ø�H‰H�U‹OØ—‘˜*Ó%Ø�h‰h�wÓØ—‘˜
Ó#ô € ó    u   ðŸ”–)r&   ÚtoolsetÚschemaÚhandlerÚemoji)r   NNNN)Ú__doc__r   Útypingr   r   Útools.registryr   r   r   r   r"   r,   ÚlistÚANNOTATE_PREVIEW_SCHEMAÚregister© r<   r+   ú<module>rH      s
  ðñó ß %ç /à
,€ð ˜f°À'ÑJ€ð OSØ@DñBØðBØ& s™mðBØ>FÀs¹mðBà�C‰=ðBà+3°HÑ+=ðBð 	óBð: ð	*ð ð !Ù˜W›Ø3ñð !ØAñð
 !ØCñð
 !ØCññ
ð& ñ+ñ#Ð ðL €× Ñ Ø	ØØ"ñð ör<   