§
    ÷žyjJ)  ã                  óv   — d Z ddlmZ ddlZddlZdd„Zdd„Zdd„Zdd„Zd d„Z	d!d„Z
d"d„Zd d„Zd#d„Zd$d„ZdS )%u8  ``hermes lsp`` CLI subcommand.

Subcommands:

- ``status`` â€” show service state, configured servers, install status.
- ``install <server_id>`` â€” eagerly install one server's binary.
- ``install-all`` â€” try to install every server with a known recipe.
- ``restart`` â€” tear down running clients so the next edit re-spawns.
- ``which <server_id>`` â€” print the resolved binary path for one server.
- ``list`` â€” print the registry of supported servers.

The handlers are kept here (rather than in
``hermes_cli/main.py``) so the LSP module ships self-contained.
é    )ÚannotationsNÚ
subparsersúargparse._SubParsersActionÚreturnÚNonec                ó˜  — |                       ddd¬¦  «        }|                     d¬¦  «        }|                      dd¬	¦  «        }|                     d
dd¬¦  «         |                      dd¬	¦  «        }|                     ddd¬¦  «         |                      dd¬	¦  «        }|                     dd¬	¦  «         |                      dd¬	¦  «        }|                     ddd¬¦  «         |                      dd¬	¦  «         |                      dd¬	¦  «        }|                     dd¬	¦  «         |                     t          ¬¦  «         d S )!z?Wire the ``hermes lsp`` subcommand tree into the main argparse.Úlspz#Language Server Protocol managementzUManage the LSP layer that powers post-write semantic diagnostics in write_file/patch.)ÚhelpÚdescriptionÚlsp_command)ÚdestÚstatuszShow LSP service status)r
   z--jsonÚ
store_truezEmit machine-readable JSON)Úactionr
   ÚlistzList supported language serversz--installed-onlyz5Only show servers whose binary is currently availableÚinstallzInstall a server binaryÚserverzServer id (e.g. pyright, gopls)úinstall-allz5Install every server with a known auto-install recipez--include-manualz8Even attempt servers marked manual-install (best effort)Úrestartz3Tear down running LSP clients (next edit re-spawns)ÚwhichzPrint binary path for a serverz	Server id)ÚfuncN)Ú
add_parserÚadd_subparsersÚadd_argumentÚset_defaultsÚrun_lsp_command)r   ÚparserÚsubÚ
sub_statusÚsub_listÚsub_installÚsub_install_allÚ	sub_whichs           ú3/home/ragecks/.hermes/hermes-agent/agent/lsp/cli.pyÚregister_subparserr%      s¡  € à×"Ò"ØØ2ð/ð	 #ñ ô €Fð ×
Ò
 ]Ð
Ñ
3Ô
3€Cà—’ Ð/H�ÑIÔI€JØ×ÒØ˜Ð,Hð ñ ô ð ð �~Š~˜fÐ+Lˆ~ÑMÔM€HØ×ÒØØØDð ñ ô ð ð —.’. Ð1J�.ÑKÔK€KØ×Ò˜XÐ,MÐÑNÔNÐNà—n’nØØDð %ñ ô €Oð × Ò ØØØGð !ñ ô ð ð ‡N‚NØØBð ñ ô ð ð
 —’˜wÐ-M�ÑNÔN€IØ×Ò˜8¨+ÐÑ6Ô6Ð6à
×Ò�_ÐÑ-Ô-Ð-Ð-Ð-ó    Úargsúargparse.NamespaceÚintc                óþ  — t          | dd¦  «        pd}	 |dk    rt          t          | dd¦  «        ¦  «        S |dk    rt          t          | dd¦  «        ¦  «        S |dk    rt          | j        ¦  «        S |d	k    rt          t          | d
d¦  «        ¦  «        S |dk    rt          ¦   «         S |dk    rt          | j        ¦  «        S t          j	         
                    d|› d�¦  «         dS # t          $ r Y dS w xY w)z5Top-level dispatcher for ``hermes lsp <subcommand>``.r   Nr   ÚjsonFr   Úinstalled_onlyr   r   Úinclude_manualr   r   zunknown lsp subcommand: Ú
é   é‚   )ÚgetattrÚ_cmd_statusÚ	_cmd_listÚ_cmd_installr   Ú_cmd_install_allÚ_cmd_restartÚ
_cmd_whichÚsysÚstderrÚwriteÚKeyboardInterrupt)r'   r   s     r$   r   r   E   s  € å
�$˜ tÑ
,Ô
,Ð
8°€CðØ�(Š?ˆ?Ý�w t¨V°UÑ;Ô;Ñ<Ô<Ð<Ø�&Š=ˆ=Ý�W TÐ+;¸UÑCÔCÑDÔDÐDØ�)ÒÐÝ ¤Ñ,Ô,Ð,Ø�-ÒÐÝ#¥G¨DÐ2BÀEÑ$JÔ$JÑKÔKÐKØ�)ÒÐÝ‘>”>Ð!Ø�'Š>ˆ>Ý˜dœkÑ*Ô*Ð*ÝŒ
×ÒÐ;°CÐ;Ð;Ð;Ñ<Ô<Ð<ØˆqøÝð ð ð Øˆsˆsðøøøs4   •#C. ¹#C. ÁC. Á7#C. ÂC. Â/C. Ã	#C. Ã.
C<Ã;C<Ú	emit_jsonÚboolc                óÈ  ‡— ddl m} ddlm} ddlmŠ  |¦   «         }|d u}|�|                     ¦   «         nddi}| rNdd l}|ˆfd„|D ¦   «         dœ}t          j	         
                    |                     |d	¬
¦  «        dz   ¦  «         dS g }|                     d¦  «         |                     d¦  «         |                     d|                     dd¦  «        › �¦  «         |�r¬|                     d|                     d¦  «        › �¦  «         |                     d|                     d¦  «        › d�¦  «         |                     d|                     d¦  «        › �¦  «         |                     d¦  «        pg }	|	r]|                     dt          |	¦  «        › �¦  «         |	D ]4}
|                     d|
d         d›d|
d         d›d|
d         › �¦  «         Œ5n|                     d ¦  «         |                     d!¦  «        pg }|rB|                     d"t          |¦  «        › �¦  «         |D ]}|                     d|› �¦  «         Œ|                     d#¦  «        pg }|r+|                     d$d%                     |¦  «        › �¦  «         t!          ¦   «         }|r\|                     d&¦  «         |                     d'¦  «         |                     d(¦  «         |D ]}|                     d)|› �¦  «         Œ|                     d&¦  «         |                     d*¦  «         |                     d+¦  «         |D ]ì}t#          |j        ¦  «        } ‰|¦  «        }d,d-d.d/œ                     |d0¦  «        }d%                     t'          |j        ¦  «        d d1…         ¦  «        }t          |j        ¦  «        d1k    r|d2t          |j        ¦  «        d1z
  › d3�z  }|                     d4|› d0|j        d5›d6|d7›d8|› �¦  «         |j        r|                     d9|j        › �¦  «         Œít          j	         
                    d                     |¦  «        dz   ¦  «         dS ):Nr   )Úget_service©ÚSERVERS©Údetect_statusÚenabledFc           
     óŒ   •— g | ]@}|j         t          |j        ¦  «        |j         ‰t	          |j         ¦  «        ¦  «        d œ‘ŒAS ))Ú	server_idÚ
extensionsr   Úbinary_status)rF   r   rG   r   Ú_recipe_pkg_for)Ú.0ÚsrC   s     €r$   ú
<listcomp>z_cmd_status.<locals>.<listcomp>h   s`   ø€ ð ð ð ð ð "#¤Ý"& q¤|Ñ"4Ô"4Ø#$¤=Ø%2 ]µ?À1Ä;Ñ3OÔ3OÑ%PÔ%Pð	ð ðð ð r&   )ÚserviceÚregistryr/   )Úindentr.   zLSP Servicez===========z  enabled:         z  wait_mode:       Ú	wait_modez  wait_timeout:    Úwait_timeoutrK   z  install_strategy:Úinstall_strategyÚclientsz  active clients:  z    - rF   Ú20sz state=ÚstateÚ10sz root=Úworkspace_rootz  active clients:  noneÚbrokenz  broken pairs:    Údisabled_serversz  disabled in cfg: z, Ú zBackend warningsz================z  ! zRegistered Serversz==================u   âœ“õ   Â·ú?)Ú	installedÚmissingzmanual-onlyÚ é   u   , â€¦ (+ú)ú  Ú24sú [Ú11sú] z      )Ú	agent.lspr?   Úagent.lsp.serversrA   Úagent.lsp.installrC   Ú
get_statusr+   r8   Ústdoutr:   ÚdumpsÚappendÚgetÚlenÚjoinÚ_backend_warningsrI   rF   r   rG   r   )r<   r?   rA   ÚsvcÚservice_activeÚinfor+   ÚpayloadÚoutrS   ÚcrX   ÚbÚdisabledÚbackend_warningsÚlinerK   Úpkgr   ÚmarkerÚext_summaryrC   s                        @r$   r2   r2   [   s  ø€ Ø%Ð%Ð%Ð%Ð%Ð%Ø)Ð)Ð)Ð)Ð)Ð)Ø/Ð/Ð/Ð/Ð/Ð/à
ˆ+‰-Œ-€CØ �_€NØ"˜ˆ3�>Š>ÑÔÐ°YÀÐ4F€Dàð Øˆˆˆàðð ð ð ð !ðñ ô ð
ð 
ˆõ 	Œ
×Ò˜Ÿš G°A˜Ñ6Ô6¸Ñ=Ñ>Ô>Ð>Øˆqà
€CØ‡J‚Jˆ}ÑÔÐØ‡J‚Jˆ}ÑÔÐØ‡J‚JÐA T§X¢X¨i¸Ñ%?Ô%?ÐAÐAÑBÔBÐBØñ DØ�
Š
Ð@¨¯ª°+Ñ)>Ô)>Ð@Ð@ÑAÔAÐAØ�
Š
ÐD¨¯ª°.Ñ)AÔ)AÐDÐDÐDÑEÔEÐEØ�
Š
ÐG¨¯ªÐ2DÑ)EÔ)EÐGÐGÑHÔHÐHØ—(’(˜9Ñ%Ô%Ð+¨ˆØð 	2Ø�JŠJÐ;­S°©\¬\Ð;Ð;Ñ<Ô<Ð<Øð ð �Ø—
’
Øc˜Q˜{œ^ÐcÐcÐc¸¸'¼
ÐcÐcÐcÈaÐP`ÔNaÐcÐcñô ð ð ðð
 �JŠJÐ0Ñ1Ô1Ð1Ø—’˜(Ñ#Ô#Ð) rˆØð 	)Ø�JŠJÐ:­S°©[¬[Ð:Ð:Ñ;Ô;Ð;Øð )ð )�Ø—
’
˜< A˜<˜<Ñ(Ô(Ð(Ð(Ø—8’8Ð.Ñ/Ô/Ð5°2ˆØð 	DØ�JŠJÐB¨T¯YªY°xÑ-@Ô-@ÐBÐBÑCÔCÐCõ
 )Ñ*Ô*ÐØð &Ø�
Š
�2‰ŒˆØ�
Š
Ð%Ñ&Ô&Ð&Ø�
Š
Ð%Ñ&Ô&Ð&Ø$ð 	&ð 	&ˆDØ�JŠJ�}˜d�}�}Ñ%Ô%Ð%Ð%Ø‡J‚Jˆr�N„N€NØ‡J‚JÐ#Ñ$Ô$Ð$Ø‡J‚JÐ#Ñ$Ô$Ð$Øð 1ð 1ˆÝ˜aœkÑ*Ô*ˆØ�˜sÑ#Ô#ˆàØØð
ð 
÷ Š#ˆf�cÑ
Ô
ð	 	ð
 —i’i¥ Q¤\Ñ 2Ô 2°2°A°2Ô 6Ñ7Ô7ˆÝˆqŒ|ÑÔ˜qÒ Ð ØÐ>¥c¨!¬,Ñ&7Ô&7¸!Ñ&;Ð>Ð>Ð>Ñ>ˆKØ�
Š
ØH�ÐHÐH˜!œ+ÐHÐHÐH¨VÐHÐHÐH¸;ÐHÐHñ	
ô 	
ð 	
ð Œ=ð 	1Ø�JŠJÐ/ ¤Ð/Ð/Ñ0Ô0Ð0øÝ„J×Ò�T—Y’Y˜s‘^”^ dÑ*Ñ+Ô+Ð+Øˆ1r&   r,   c           
     ó  — ddl m} ddlm} |D ]q}t	          |j        ¦  «        } ||¦  «        }| r|dk    rŒ*t          j                             |j        d›d|d›dd	 	                    |j
        ¦  «        › d
�¦  «         ŒrdS )Nr   r@   rB   r]   rc   rd   re   rf   ú,r.   )rh   rA   ri   rC   rI   rF   r8   rk   r:   rp   rG   )r,   rA   rC   rK   r|   r   s         r$   r3   r3   °   sÀ   € Ø)Ð)Ð)Ð)Ð)Ð)Ø/Ð/Ð/Ð/Ð/Ð/àð 
ð 
ˆÝ˜aœkÑ*Ô*ˆØ�˜sÑ#Ô#ˆØð 	˜f¨Ò3Ð3ØÝŒ
×ÒØŒ{ÐJÐJÐJ &ÐJÐJÐJ°·²¸¼Ñ0FÔ0FÐJÐJÐJñ	
ô 	
ð 	
ð 	
ð ˆ1r&   rF   Ústrc                óz  — ddl m}m}m} t	          | ¦  «        } ||¦  «        }|dk    r$t
          j                             | › d�¦  «         dS t
          j                             d| › d|› d�¦  «         t
          j                             ¦   «           ||d¦  «        }|€w| 	                    |¦  «        }|r<| 	                    d	¦  «        d
k    r#t
          j
                             | › d�¦  «         n"t
          j
                             | › d�¦  «         dS t
          j                             d|› d�¦  «         dS )Nr   ©Útry_installÚINSTALL_RECIPESrC   r]   ú already installed
zinstalling ú (pkg=z) ...
ÚautoÚstrategyÚmanualz<: this server requires a manual install. See documentation.
z: install failed (see logs).
é   zinstalled: r.   )ri   r„   r…   rC   rI   r8   rk   r:   Úflushrn   r9   )rF   r„   r…   rC   r|   Ú
pre_statusÚbin_pathÚrecipes           r$   r4   r4   ¿   sp  € ØMÐMÐMÐMÐMÐMÐMÐMÐMÐMÝ
˜)Ñ
$Ô
$€CØ�˜sÑ#Ô#€JØ�[Ò Ð ÝŒ
×Ò˜IÐ;Ð;Ð;Ñ<Ô<Ð<ØˆqÝ„J×ÒÐ@ 9Ð@Ð@°CÐ@Ð@Ð@ÑAÔAÐAÝ„J×ÒÑÔÐØˆ{˜3 Ñ'Ô'€HØÐØ ×$Ò$ SÑ)Ô)ˆØð 	K�f—j’j Ñ,Ô,°Ò8Ð8ÝŒJ×ÒØð (ð (ð (ñô ð ð õ
 ŒJ×Ò 	ÐIÐIÐIÑJÔJÐJØˆqÝ„J×ÒÐ/ 8Ð/Ð/Ð/Ñ0Ô0Ð0Øˆ1r&   r-   c                ór  — ddl m} ddlm}m}m} d}|D �] }t          |j        ¦  «        }|                     |¦  «        }|€Œ/|                     d¦  «        dk    r| sŒK ||¦  «        dk    r*t          j
                             d|j        d›d	�¦  «         Œ„t          j
                             d
|j        › d|› d�¦  «         t          j
                             ¦   «           ||d¦  «        }	|	r$t          j
                             d|	› d�¦  «         Œÿt          j
                             d¦  «         d}�Œ"|S )Nr   r@   rƒ   r‰   rŠ   r]   rb   rc   r†   z  installing r‡   z) ... rˆ   zok (z)
zFAILED
r‹   )rh   rA   ri   r„   r…   rC   rI   rF   rn   r8   rk   r:   rŒ   )
r-   rA   r„   r…   rC   ÚrcrK   r|   r�   Úpaths
             r$   r5   r5   ×   sn  € Ø)Ð)Ð)Ð)Ð)Ð)ØMÐMÐMÐMÐMÐMÐMÐMÐMÐMà	
€BØð ñ ˆÝ˜aœkÑ*Ô*ˆØ ×$Ò$ SÑ)Ô)ˆØˆ>ØØ�:Š:�jÑ!Ô! XÒ-Ð-°nÐ-ØØˆ=˜ÑÔ Ò,Ð,ÝŒJ×ÒÐG !¤+ÐGÐGÐGÐGÑHÔHÐHØÝŒ
×ÒÐG¨¬ÐGÐG¸CÐGÐGÐGÑHÔHÐHÝŒ
×ÒÑÔÐØˆ{˜3 Ñ'Ô'ˆØð 	ÝŒJ×ÒÐ- DÐ-Ð-Ð-Ñ.Ô.Ð.Ð.åŒJ×Ò˜ZÑ(Ô(Ð(ØˆB‰BØ€Ir&   c                 ód   — ddl m}   | ¦   «          t          j                             d¦  «         dS )Nr   ©Úshutdown_servicez7LSP service shut down. Next edit will respawn clients.
)rg   r•   r8   rk   r:   r”   s    r$   r6   r6   ñ   s?   € Ø*Ð*Ð*Ð*Ð*Ð*àÐÑÔÐÝ„J×ÒÐOÑPÔPÐPØˆ1r&   c                ó  — ddl m}m} |                     | ¦  «        }|pi                      d| ¦  «        } ||¦  «        }|r$t          j                             |dz   ¦  «         dS t          j                             | › d�¦  «         dS )Nr   )r…   Ú_existing_binaryÚbinr.   z: not installed
r‹   )ri   r…   r—   rn   r8   rk   r:   r9   )rF   r…   r—   r�   Úbin_nameÚresolveds         r$   r7   r7   ù   s¡   € ØCÐCÐCÐCÐCÐCÐCÐCà× Ò  Ñ+Ô+€FØ�˜"×!Ò! %¨Ñ3Ô3€HØÐ Ñ)Ô)€HØð ÝŒ
×Ò˜ D™Ñ)Ô)Ð)ØˆqÝ„J×Ò˜	Ð4Ð4Ð4Ñ5Ô5Ð5Øˆ1r&   c                ó<   — dddddœ}|                      | | ¦  «        S )z?Map a registry ``server_id`` to its install-recipe package key.z@vue/language-serverz@astrojs/language-serverz!dockerfile-language-server-nodejsztypescript-language-server)zvue-language-serverzastro-language-serverzdockerfile-lsÚ
typescript)rn   )rF   Úaliasess     r$   rI   rI     s2   € ð  6Ø!;Ø<Ø2ð	ð €Gð �;Š;�y )Ñ,Ô,Ð,r&   r   c                 ó�   — ddl } ddlm} g } |d¦  «        du}|r*|                      d¦  «        €|                     d¦  «         |S )uä  Return human-readable notes about LSP backend tools that are missing
    in a way that won't surface elsewhere.

    Some language servers ship as thin wrappers around an external CLI for
    actual diagnostics â€” they spawn cleanly but never emit any errors when
    the sidecar binary isn't on PATH.  bash-language-server / shellcheck
    is the load-bearing example.

    Returned strings are short, actionable, and include the install
    suggestion across common platforms.
    r   N)r—   zbash-language-serverÚ
shellchecku‘   bash-language-server is installed but shellcheck is missing â€” diagnostics will be empty (apt: shellcheck, brew: shellcheck, scoop: shellcheck).)Úshutilri   r—   r   rm   )Ú_shutilr—   ÚnotesÚbash_installeds       r$   rq   rq     sx   € ð ÐÐÐØ2Ð2Ð2Ð2Ð2Ð2Ø€EØ%Ð%Ð&<Ñ=Ô=ÀTÐI€NØð 
˜'Ÿ-š-¨Ñ5Ô5Ð=Ø�Šð"ñ	
ô 	
ð 	
ð
 €Lr&   )r   r   r   r   )r'   r(   r   r)   )r<   r=   r   r)   )r,   r=   r   r)   )rF   r�   r   r)   )r-   r=   r   r)   )r   r)   )rF   r�   r   r�   )r   r   )Ú__doc__Ú
__future__r   Úargparser8   r%   r   r2   r3   r4   r5   r6   r7   rI   rq   © r&   r$   ú<module>r¨      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
ð-.ð -.ð -.ð -.ð`ð ð ð ð,Rð Rð Rð Rðjð ð ð ðð ð ð ð0ð ð ð ð4ð ð ð ð
ð 
ð 
ð 
ð-ð -ð -ð -ðð ð ð ð ð r&   