+
    lHàj¡  ã                   óÎ  € R t ^ RIt^ RIHtHt ^ RIHt ^ RIHtH	t	 ^ RI
Ht R2tR3tR4t]! ]4      tR5R R lltRR	R
RRRRR/RRRRR/RRRRR/RRRR]! ]4      RR///tRRRRRRR	R
RRRR]! ]4      RR/RRRR]! ]4      RR/RRRRR/RRRRR/RRRRR /RRRR]! ]4      RR!/R"RR#R$]RR%/R&RRR]! ]4      RR'/R(RR)RR*//	R+R.//tR, R- lt]P,                  ! RR.]]R/ R0R17       R# )6a¬  Guided tour (highlight + narrate UI elements) in the Hermes desktop GUI: ``start`` with no
steps runs the app's own built-in tour (``preset`` quick or full); for a custom one the agent
discovers targets (``action="targets"``), then highlights one step at a time (``show``) or hands
over a step list the user pages (``start`` + ``steps``). Round-trips through the gateway
blocking-prompt bridge (``tour.request``/``tour.respond``) so the agent learns whether the
selector matched. Registered in ``desktop_ui`` and hidden from the model when tours are off: a
tour covers the whole screen, so "off" must mean the model is never told the tool exists rather
than offered a call that fails.N)ÚCallableÚOptional)Ú
desktop_ui)ÚregistryÚ
tool_error)Ú
TourPresetc                ób  € V ^8„  d   QhR\         R\        \         ,          R\        \         ,          R\        \         ,          R\        \         ,          R\        \         ,          R\        \        ,          R\        \        ,          R	\        \         ,          R
\        \        ,          R\         /# )é   ÚactionÚsurfaceÚselectorÚtitleÚtextÚsideÚstepsÚ
step_indexÚpresetÚcallbackÚreturn)Ústrr   ÚlistÚintr   )Úformats   "Ú4/home/ubuntu/.hermes/hermes-agent/tools/tour_tool.pyÚ__annotate__r      s�   € ÷ .Bñ .B”cð .B¬´#­ð .BÌÔRUÍð .BÜœc•]ð.BÜ19¼#µð.BÜMUÔVYÍ]ð.Bäœd•^ð.Bä8@Ä½ð.Bô œs•mð.Bô 7?¼xÕ6Hð.Bô UXñ.Bó    c
                óX  € V	f   \        R4      # T ;'       g    RP                  4       P                  4       p
V
\        9  d#   \        RRP	                  \        4       R24      # T;'       g    RP                  4       P                  4       pV\
        9  d#   \        RRP	                  \
        4       R24      # Ve.   V\        9  d#   \        R	RP	                  \        4       R24      # Ve.   V\        9  d#   \        R
RP	                  \        4       R24      # Ve   Ve   \        R4      # V
R8X  d$   V'       g   V'       g   V'       g   \        R4      # V
R8X  d   Vf   VR8w  d   \        R4      # V
R8X  dÃ   Ve¿   \        V\        4      '       d	   V'       g   \        R4      # \        V4       F†  w  rÍ\        V\        4      '       g   \        RV R24      u # VP                  R4      '       d   KE  VP                  R4      '       d   K^  VP                  R4      '       d   Kw  \        RV R24      u # 	  RV
RVRVRVRVRVRVRVRV/	p T	! VP                  4        UUu/ uF  w  ppVf   K  VVbK  	  upp4      pT'       g   \        R4      #  \        P                   ! \        P"                  ! T4      RR 7      # u uppi   \         d   p\        RT 24      u Rp?# Rp?ii ; i  \$        \&        3 d'    \        P                   ! R\)        T4      /RR 7      u # i ; i)!zHDispatch one tour action to the desktop renderer and return its outcome.Nz1tour is only available in the Hermes desktop app.Ú zaction must be one of: z, Ú.Úappzsurface must be one of: zside must be one of: zpreset must be one of: z=preset picks a built-in tour; pass steps or preset, not both.Úshowz:show needs a selector (and/or title/text for the popover).ÚstartzGThe built-in tour runs on surface='app'; pass steps for a preview tour.zGstart needs a non-empty steps array, or no steps for the built-in tour.zsteps[z] must be an object.r   r   r   z%] needs a selector and/or title/text.r
   r   r   r   r   r   zTour action failed: zsThe tour request timed out, or no GUI window answered. For surface='preview' open a page in the preview pane first.F)Úensure_ascii)r   ÚstripÚlowerÚACTIONSÚjoinÚSURFACESÚSIDESÚPRESETSÚ
isinstancer   Ú	enumerateÚdictÚgetÚitemsÚ	ExceptionÚjsonÚdumpsÚloadsÚ	TypeErrorÚ
ValueErrorr   )r
   r   r   r   r   r   r   r   r   r   ÚverbÚwhereÚiÚstepÚfieldsÚkeyÚvalÚrawÚexcs   &&&&&&&&&&         r   Ú	tour_toolr>      sÔ  € ð
 ÒÜÐMÓNÐNØ�LˆL�b×ÑÓ!×'Ñ'Ó)€DØ”7ÔÜÐ3°D·I±I¼gÓ4FÐ3GÀqÐIÓJÐJØ×Ð˜×$Ñ$Ó&×,Ñ,Ó.€EØ”HÔÜÐ4°T·Y±Y¼xÓ5HÐ4IÈÐKÓLÐLØÒ˜D¬Ô-ÜÐ1°$·)±)¼EÓ2BÐ1CÀ1ÐEÓFÐFØÒ˜f¬GÔ3ÜÐ3°D·I±I¼gÓ4FÐ3GÀqÐIÓJÐJØÒ˜eÒ/ÜÐYÓZÐZàˆv„~Ÿx¯5·DÜÐVÓWÐWàˆw„˜5š=¨U°e¬^ÜÐcÓdÐdØˆw„˜5Ò,Ü˜%¤×&Ò&¯eÜÐgÓhÐhÜ  Ö'‰GˆAÜ˜d¤D×)Ò)Ü! F¨1¨#Ð-AÐ"BÓCÒCØ—H‘H˜Z×(Ô(¨D¯H©H°W×,=Ô,=ÀÇÁÈ&×AQÔAQÜ! F¨1¨#Ð-RÐ"SÓTÒTñ	 (ð
 ˜˜i¨°
¸HÀgÈuØ�d˜F D¨'°5¸,È
ÐT\Ð^dðf€Fð8Ù°·±´ÔS±¡X S¨#À3œ˜˜Sš±ÒSÓTˆ÷ Üð Yó Zð 	ZðBÜ�zŠzœ$Ÿ*š* S›/¸Ô>Ð>ùó TøÜô 8ÜÐ0°°Ð6Ó7Õ7ûð8ûô ”zÐ"ô BÜ�zŠz˜6¤3 s£8Ð,¸5ÔAÒAðBúsH   ÉK É)	K
É7K
É>K Ê+K2 ËK ËK/ËK*Ë$K/Ë*K/Ë24L)Ì(L)ÚtypeÚobjectÚ
propertiesr   ÚstringÚdescriptionz0Element to highlight; omit = centered narration.r   zPopover title.r   zPopover body.r   Úenumz!Popover side; omit to auto-place.ÚnameÚgui_touruà  Guided tour in the desktop GUI: dim the screen, highlight an element, attach a titled popover. Surfaces: 'app' (Hermes itself) or 'preview' (the page in the preview pane). A general look around the app is ONE call: action='start' with no steps runs the app's built-in tour (preset 'quick' or 'full', default full). For a custom tour, call action='targets' first â€” prefer targets marked stable:true (their selectors survive re-renders); re-scan if one stops matching. Then narrate with action='show' (one highlight per call, replaces the last â€” pair each with a chat message) or hand over with action='start' + steps (user gets Next/Prev; 'next'/'prev' also page it). 'stop' clears. Use for how-does-X-work / where-is-Y walkthroughs.Ú
parametersr
   zCstart alone runs the built-in tour; targets first for custom steps.r   z'app' (default) or 'preview'.zGshow: selector from targets (prefer stable). Omit = centered narration.zshow: popover title.zshow: popover body.z'show: popover side; omit to auto-place.r   Úarrayr.   z1start: ordered steps; omit for the built-in tour.r   z9start without steps: 'quick' (four essentials) or 'full'.r   Úintegerzstart: 0-indexed first step.Úrequiredc                ó$   € V ^8„  d   QhR\         /# )r	   r   )Úbool)r   s   "r   r   r   š   s   € ÷ Añ AœTñ Ar   c                 ó2   € \         P                  ! RRR7      # )uH   The user's Settings â†’ Appearance switch. On unless they turned it off.Úin_app_toursT)Údefault)r   Úuser_enabled© r   r   Úcheck_tours_enabledrR   š   s   € ä×"Ò" >¸4Ô@Ð@r   r   c                 ó¦   € \        RR V P                  R R4      RVP                  R4      /R Uu/ uF  q"V P                  V4      bK  	  upB # u upi )r
   r   r   rQ   )r   r   r   r   r   r   r   r   )r>   r-   )ÚargsÚkwÚks   &, r   Ú<lambda>rW   ¡   s_   € œyñ  >Ø�x‰x˜ "Ó%ð >Ø02·±°zÓ0Bð >ñ$<ó =ñ $<˜aˆd�h‰h�q‹kŠ>ñ $<ñ =ò >ùò=s   ¯Au   ðŸ§­)rE   ÚtoolsetÚschemaÚcheck_fnÚhandlerÚemoji)Útargetsr    r!   ÚnextÚprevÚstop)r   Úpreview)ÚtopÚrightÚbottomÚleft)
r   NNNNNNNNN)Ú__doc__r0   Útypingr   r   Útoolsr   Útools.registryr   r   Útools.tour_presetsr   r%   r'   r(   Útupler)   r>   r   Ú_STEP_SCHEMAÚTOUR_SCHEMArR   ÚregisterrQ   r   r   Ú<module>ro      sß  ðñ#ó ß %å ß /Ý )à
>€Ø€Ø*€ñ �
Ó
€÷.Bðd ˆHØØØ�HØÐMð
ð 	�&˜( MÐ3CÐDØ�˜ =°/ÐBØØ�HØ‘D˜“KØÐ>ð
ðð€ð$ ˆJð ð	5ð Ø�ØØØ˜Ø™˜W›ØÐdðð
 Ø˜Ø™˜X›ØÐ>ðð
 Ø˜ØÐhðð �f˜h¨Ð7MÐNØ�V˜X }Ð6KÐLØØ˜Ø™˜U›ØÐHðð
 Ø˜Ø˜ØÐRðð
 Ø˜Ø™˜W›ØÐZðð
 Ø˜	ØÐ=ððA$
ðJ 	�X�JðO(ð'<€õ~Að
 	× Ò Ø	˜\°+ÐH[ñ>ð ÷r   