
    (Gj<              !         U d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
mZmZmZmZmZmZ ddlmZ  ej        d          Zi 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d d!d"d#d"i d$d"d%d"d&d'd(d'd)d*d+d*d,d*d-d*d.d*d/d*d0d1d2d1d3d4d5d4d6d4d7d8d9d:i d;d<d=d<d>d?d@d?dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdNdPdQdRdQdSdQdTdUdVdUi dWdXdYdZd[d\d]d^d_d`dad^dbd^dcdddedfdgdfdhdidjdidkdldmdndodndpdqdrdqdsdtdtdtduZdvedw<   e G dx dy                      Ze G dz d{                      Ze G d| d}                      ZddZddZdd dZd!dZd"dZd!dZd!dZ d!dZ!d!dZ"da#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!dZ.d!dZ/d!dZ0d!dZ1d!dZ2d!dZ3d!dZ4d!dZ5d!dZ6d!dZ7d!dZ8da9d#dZ:d!dZ;d$dZ<d%dZ=d&dZ>d&dZ?d&dZ@d&dZAd&dZBd&dZCd'dZDd'dZEd&dZFd&dZGd&dZHd'dZId&dZJd&dZKd&dZLd&dZMd&dZNd'dZOd&dZPd&dÄZQd&dĄZRd&dńZSd&dƄZTd&dǄZU edde>edʬ˦           edde?eddάϦ           edde?e6dҬ˦           edde?e7dլ˦           edde?e8dج˦           edde@e d۬˦           eddeAe!dެ˦           eddeCe"d˦           eddeDe$d˦           eddeEe%d˦           eddeFe&d˦           eddeGe'd˦           eddeHe(d˦           eddeIe)d˦           eddeJe*d˦           edLdeKe+d˦           eddeLe,d˦           edldeMe-d˦           eddeNe.d ˦           eddeOe/d˦           eddePe0d˦           ed\dd e1d	˦           ed
deQe2d˦           edJdeRe3d˦           eddeSe4d˦           eddeTe5d˦           edtdeUe;d˦          gZVded<   d(dZWddZXg dZYdS ()  u  Server registry — per-language LSP server definitions.

Each :class:`ServerDef` knows how to:

- match a file by extension (or basename for extensionless files like
  ``Dockerfile``),
- resolve a project root from a file path (often via
  :func:`agent.lsp.workspace.nearest_root`),
- assemble the spawn command (binary, args, env, cwd),
- compute LSP ``initializationOptions``.

Auto-installation is a separate concern handled by
:mod:`agent.lsp.install`.  This module describes WHAT to spawn; the
install module makes the binary appear on PATH if it isn't there.

The full set of servers ships with the package, but most are only
*invoked* when the user actually edits a file in that language.  This
keeps cold-start fast — we don't probe binaries until needed.
    )annotationsN)	dataclassfield)AnyCallableDictListOptionalSequenceTuplenearest_rootzagent.lsp.servers.pypython.pyi.ts
typescript.tsxtypescriptreact.js
javascript.jsxjavascriptreact.mjs.cjs.mts.cts.vuevue.sveltesvelte.astroastro.gogo.rsrustz.rbrubyz.rakez.gemspecz.ru.cc.h.cccpp.cpp.cxx.hh.hpp.hxxz.cscsharpz.csxz.fsfsharpz.fsiz.fsxz.swiftswift.javajava.ktkotlin.kts.yamlyaml.yml.jsonjsonz.jsoncjsonc.lualua.phpphp.prismaprisma.dartdart.mlocaml.mli.shshellscript.bash.zsh.tf	terraform.tfvarsz.texlatexz.bibbibtex.gleamgleam.cljclojure.cljsclojurescript.cljc.edn.nixnixz.typtypstz.typc.hshaskell.lhs.jljulia.exelixir.exs.zigzig.zon
dockerfile
powershell).dockerfile.ps1.psm1.psd1Dict[str, str]LANGUAGE_BY_EXTc                      e Zd ZU dZded<   ded<   ded<    ee          Zded	<    ee          Zd
ed<   dZ	ded<   dS )	SpawnSpeca/  The result of resolving a server for a file.

    Returned by :meth:`ServerDef.resolve` when a server is applicable
    to a file.  ``None`` is returned instead when the server should
    be skipped (binary missing and auto-install disabled, project
    marker not found, exclude marker hit, etc.).
    z	List[str]commandstrworkspace_rootcwddefault_factoryrq   envzDict[str, Any]initialization_optionsFboolseed_diagnostics_on_first_pushN)
__name__
__module____qualname____doc____annotations__r   dictr{   r|   r~        7/home/rurouni/.hermes/hermes-agent/agent/lsp/servers.pyrt   rt   o   s           HHH%555C5555-2U4-H-H-HHHHH+0"000000r   rt   c                  `    e Zd ZU dZded<   ded<   ded<   ded	<   d
Zded<   dZded<   ddZdS )	ServerDefa  Definition of one language server.

    The :func:`resolve_root` callable receives the absolute file path
    plus the workspace root (git worktree) and returns either the
    project-specific root for this server (e.g. the directory
    containing ``pyproject.toml``) or ``None`` to skip.

    The :func:`build_spawn` callable receives the resolved root and
    returns a :class:`SpawnSpec` (or ``None`` if the binary can't be
    found and auto-install isn't configured).
    rv   	server_idzTuple[str, ...]
extensionsz#Callable[[str, str], Optional[str]]resolve_rootz5Callable[[str, 'ServerContext'], Optional[SpawnSpec]]build_spawnFr}   seed_first_push description	file_pathreturnc                2    t          |          }|| j        v S )z2Return True iff this server handles ``file_path``.)_file_ext_or_basenamer   )selfr   exts      r   matcheszServerDef.matches   s    #I..do%%r   N)r   rv   r   r}   )r   r   r   r   r   r   r   r   r   r   r   r   r      s         
 
 NNN5555FFFF!O!!!!K& & & & & &r   r   c                      e Zd ZU dZded<   dZded<    ee          Zded<    ee          Z	d	ed
<    ee          Z
ded<   dS )ServerContexta  Context passed into :meth:`ServerDef.build_spawn`.

    Carries the user's auto-install policy, any user-overridden
    binary paths, and helpers the spawn builder needs.  All fields
    are optional; defaults yield "auto-install allowed, no overrides".
    rv   rw   autoinstall_strategyry   zDict[str, List[str]]binary_overrideszDict[str, Dict[str, str]]env_overrideszDict[str, Dict[str, Any]]init_overridesN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s           """""-2U4-H-H-HHHHH/4uT/J/J/JMJJJJ05d0K0K0KNKKKKKKr   r   pathrv   r   c                    t           j                            |           }t           j                            |          \  }}|r|                                S |S )u  Return the lower-cased extension OR full basename for extensionless files.

    Mirrors OpenCode's ``path.parse(file).ext || file`` — files like
    ``Dockerfile`` or ``Makefile`` match by basename, while normal
    files match by extension (``.py``, ``.ts``).
    )osr   basenamesplitextlower)r   base_rootr   s       r   r   r      sM     7D!!D!!$''JE3
 yy{{Kr   namesOptional[str]c                 D    | D ]}t          j        |          }|r|c S dS )z8Return the full path of the first command found on PATH.N)shutilwhich)r   nr   s      r   _whichr      s9      |A 	KKK	4r   r   r   	workspacemarkersSequence[str]excludesc                    t          | |||rt          j                            |          nd          }|;|r9t          | ||rt          j                            |          nd          }|dS |S |p|S )zCommon pattern: try ``nearest_root``, fall back to workspace root.

    Returns ``None`` if an exclude marker matches first (server gated off).
    N)r   ceiling)r   )r   r   r   dirname)r   r   r   r   foundrechecks         r   _root_or_workspacer      s    
 .7A	***T	  E }}
 2;EBGOOI...
 
 

 4Ir   rootctxOptional[SpawnSpec]c           	     b   t          |d          pt          dd          }|ddlm}  |d|j                  }|d S t
          j                            |          }|dv r^t
          j                            t
          j        	                    |          d          }t
          j        
                    |          r|}i }t          |           }|rd|i|d<   d|j        v r |                    |j        d                    t          |dg| | |j                            di           |	          S )
Npyrightzpyright-langserverr   try_install>   pyright.exer   
pythonPathr   --stdioru   rw   rx   r{   r|   )_resolve_overrider   agent.lsp.installr   r   r   r   r   joinr   exists_detect_pythonr   updatert   r   get)r   r   bin_pathr   r   siblinginitpys           r   _spawn_pyrightr      sP    i00 Fi5 5H 111111;y#*>??47H%%D)))',,rwx88:NOO7>>'"" 	HD 
		B	 ,&+XC&&&C&y12229%!!)R00#   r   c                   g }t           j                            d          r%|                    t           j        d                    |                    t           j                            | d          t           j                            | d          g           |D ]L}dD ]G}t           j                            ||          }t           j                            |          r|c c S HMd S )NVIRTUAL_ENVz.venvvenv)z
bin/pythonzbin/python3zScripts/python.exe)r   environr   appendextendr   r   r   )r   
candidatesvsubps        r   r   r     s    J	z~~m$$ 5"*]3444rw||D'22BGLLv4N4NOPPP  F 	 	CQ$$Aw~~a   	 4r   c           
        t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di           d          S )Nr   ztypescript-language-serverr   r   r   T)ru   rw   rx   r{   r|   r~   	r   r   r   r   r   rt   r   r   r   r   r   r   r   s       r   _spawn_typescriptr     s     l33[v>Z7[7[H111111;;S=QRR49%!!,33"155lBGG'+   r   c           
        t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |g| | |j                            di           |j                            di                     S )Ngoplsr   r   r   r   r   s       r   _spawn_goplsr   &  s     g..A&//H111111;w(<==4
!!'2.."155grBB   r   c           
        t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |g| | |j                            di           |j                            di                     S )Nrust-analyzerr   r   r   r   r   s       r   _spawn_rust_analyzerr   6  s     o66Q&:Q:QH111111;0DEE4
!!/266"155orJJ   r   c           
        t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |ddg| | |j                            di           |j                            di                     S )Nclangdr   r   z--background-indexz--clang-tidyr   r   r   s       r   _spawn_clangdr   F  s     h//C6(3C3CH111111;x)=>>4/@!!(B//"155hCC   r   Fc           
     n   t          |d          pt          d          }|ddlm}  |d|j                  }|d S t
          s+t          d          dat                              d           t          |dg| | |j	        
                    di           |j        
                    di                     S )	Nbash-language-serverr   r   
shellcheckTu   bash-language-server: shellcheck not found on PATH — diagnostics will be empty until shellcheck is installed (apt: shellcheck, brew: shellcheck, scoop: shellcheck).startr   )r   r   r   r   r   _BASH_SHELLCHECK_WARNEDloggerwarningrt   r   r   r   r   s       r   _spawn_bash_lsr   Y  s     &<==_H^A_A_H111111;5s7KLL4 # 
vl';';'C"&F	
 	
 	

 7#!!"8"=="1556LbQQ   r   c           
     
   t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di                     S )Nyaml-language-serverr   r   r   r   r   r   s       r   _spawn_yaml_lsr   u  s     &<==_H^A_A_H111111;5s7KLL49%!!"8"=="1556LbQQ   r   c           
        t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |g| | |j                            di           |j                            di                     S )Nlua-language-serverr   r   r   r   r   s       r   _spawn_lua_lsr     s     &;<<]G\@]@]H111111;4c6JKK4
!!"7<<"1556KRPP   r   c           	     @   t          |d          pt          d          }|ddlm}  |d|j                  }|d S dddii}|                    |j                            di                      t          |dg| | |j	                            di           |          S )	Nintelephenser   r   	telemetryenabledFr   r   )
r   r   r   r   r   r   r   r   rt   r   )r   r   r   r   r   s        r   _spawn_intelephenser     s     n55O9O9OH111111;~s/CDD4)U+,DKK"&&~r::;;;9%!!."55#   r   c           
         t          |d          pt          d          }|d S t          |g| | |j                            di           |j                            di                     S )N	ocaml-lspocamllspr   r   r   rt   r   r   r   r   r   r   s      r   _spawn_ocamllspr     sw     k22HfZ6H6HHt
!!+r22"155k2FF   r   c           
     
   t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di                     S )Ndockerfile-lszdocker-langserverr   r   z!dockerfile-language-server-nodejsr   r   r   r   s       r   _spawn_dockerfile_lsr    s     o66U&AT:U:UH111111;BCDXYY49%!!/266"155orJJ   r   c           	        t          |d          pt          d          }|d S ddddi}|                    |j                            di                      t          |dg| | |j                            di           |          S )Nterraform-lsexperimentalFeaturesT)prefillRequiredFieldsvalidateOnSaveserver   )r   r   r   r   r   rt   r   )r   r   r   r   s       r   _spawn_terraform_lsr    s     n55O9O9OHt%)"!
 !
D 	KK"&&~r::;;;7#!!."55#   r   c           
         t          |d          pt          d          }|d S t          |ddg| | |j                            di           |j                            di                     S )NrH   language-server--lspr   r   r   s      r   _spawn_dartr    s{     f--?Ht,g6!!&"--"155fbAA   r   c           
         t          |d          pt          dd          }|d S t          |dg| | |j                            di           |j                            di                     S )Nhaskell-language-serverzhaskell-language-server-wrapperr  r   r   r   s      r   _spawn_haskell_lsr    s     &?@@ F)+DE EH t7#!!";R@@"1556OQSTT   r   c           
         t          |d          pt          d          }|d S t          |ddddg| | |j                            di           |j                            di                     S )Nrd   z--startup-file=noz--history-file=noz-ez!using LanguageServer; runserver()r   r   r   s      r   _spawn_juliar    s     g..A&//Ht/
 !!'2.."155grBB   r   c           
         t          |d          pt          d          }|d S t          |dg| | |j                            di           |j                            di                     S )Nclojure-lsplistenr   r   r   s      r   _spawn_clojure_lspr    sz     m44M}8M8MHt8$!!-44"155mRHH   r   c           
         t          |d          pt          d          }|d S t          |g| | |j                            di           |j                            di                     S )Nnixdr   r   r   s      r   _spawn_nixdr    su     f--?Ht
!!&"--"155fbAA   r   c           
         t          |d          pt          d          }|d S t          |g| | |j                            di           |j                            di                     S )Nzlsr   r   r   s      r   
_spawn_zlsr  !  su     e,,=uHt
!!%,,"155eR@@   r   c           
         t          |d          pt          d          }|d S t          |dg| | |j                            di           |j                            di                     S )NrV   lspr   r   r   s      r   _spawn_gleamr  .  sx     g..A&//Ht5!!!'2.."155grBB   r   c           
         t          |d          pt          dd          }|d S t          |g| | |j                            di           |j                            di                     S )N	elixir-lszlanguage_server.shr   r   r   s      r   _spawn_elixir_lsr!  ;  sz     k22_f[J^6_6_Ht
!!+r22"155k2FF   r   c           
         t          |d          pt          d          }|d S t          |dg| | |j                            di           |j                            di                     S )NrF   r
  r   r   r   s      r   _spawn_prismar#  H  s{     h//C6(3C3CHt,-!!(B//"155hCC   r   c           
         t          |d          pt          d          }|d S t          |g| | |j                            di           |j                            di                     S )Nkotlin-language-serverr   r   r   s      r   _spawn_kotlin_lsr&  U  s     &>?? 6 D DH t
!!":B??"1556NPRSS   r   c           
         t          |d          pt          d          }|d S t          |g| | |j                            di           |j                            di                     S )Njdtlsr   r   r   s      r   _spawn_jdtlsr)  d  sw     !g..A&//Ht
!!'2.."155grBB   r   c           
     
   t          |d          pt          d          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di                     S )Nvue-language-serverr   r   z@vue/language-serverr   r   r   r   s       r   
_spawn_vuer,  t  s     &;<< A AH 111111;5s7KLL49%!!"7<<"1556KRPP   r   c           
        t          |d          pt          dd          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di                     S )Nsvelte-language-serversvelteserverr   r   r   r   r   r   s       r   _spawn_svelter0    s     &>?? 60D DH 111111;79MNN49%!!":B??"1556NPRSS   r   c           
        t          |d          pt          dd          }|ddlm}  |d|j                  }|d S t          |dg| | |j                            di           |j                            di                     S )Nastro-language-serverzastro-lsr   r   z@astrojs/language-serverr   r   r   r   s       r   _spawn_astror3    s     &=>> &+C CH 111111;93;OPP49%!!"92>>"1556MrRR   r   c                F   g }| j                             d          }|r#|d         r|                    |d                    | j                            di           }t	          |t
                    r=|                    d          r(|                    t          |d                              t          j                            d          }|r|                    |           t          j                            d          p<t          j	        
                    t          j	                            d          d          }|                    t          j	        
                    |dd	                     |D ]}|st          j	        
                    |d	d
          }t          j	                            |          r|c S t          j	        
                    |d
          }t          j	                            |          r!t          j	                            |          c S dS )u  Locate the PowerShellEditorServices module bundle directory.

    PSES ships as a GitHub release zip (not an npm/go/pip package), so
    there's no auto-install recipe — the user downloads it and points us
    at the extracted bundle.  Resolution order:

    1. ``command`` override in config (``lsp.servers.powershell.command``) —
       the FIRST element is treated as the bundle path when it's a
       directory.  This is the documented config knob.
    2. ``init_overrides["powershell"]["bundlePath"]``.
    3. ``PSES_BUNDLE_PATH`` env var.
    4. ``<HERMES_HOME>/lsp/PowerShellEditorServices`` staging dir (where a
       user-run unzip would naturally land).

    Returns the bundle directory containing ``PowerShellEditorServices/``,
    or ``None`` when it can't be found.
    rl   r   
bundlePathPSES_BUNDLE_PATHHERMES_HOME~.hermesr  PowerShellEditorServicesStart-EditorServices.ps1N)r   r   r   r   
isinstancer   rv   r   r   r   r   
expanduserisfiler   )	r   r   overrider   env_pathhomecandstart_scriptinners	            r   _find_pses_bundlerE    s   $ J#''55H 'HQK '(1+&&&!!,33D$ 3$((<"8"8 3#d<011222z~~011H $(###:>>-(( BGLL
3- -D bgll40JKKLLL ) ) 	w||,.H
 
 7>>,'' 	KKKT#=>>7>>%   	)7??4(((((	)4r   c                   t          dd          }|dS t          |          }|%t          sdat                              d           dS t
          j                            |dd          }t
          j                            t                      dt          j	                     d	          }t
          j                            t                      d
          }d| d| d| d| d	}t          |dddddd|g| | |j                            di           d |j                            di                                           D                       S )uZ  Spawn PowerShellEditorServices over stdio.

    Unlike the single-binary servers, PSES is a PowerShell module driven
    by a bootstrap script.  We need both a PowerShell host (``pwsh`` for
    PowerShell 7+, or Windows ``powershell``) and the PSES module bundle.
    The bundle is manual-install (release zip) — see ``_find_pses_bundle``.
    pwshrl   NTa1  powershell: pwsh found but the PowerShellEditorServices bundle is missing. Download the release zip from https://github.com/PowerShell/PowerShellEditorServices/releases, extract it, and either set lsp.servers.powershell.command to the bundle path or unzip it to <HERMES_HOME>/lsp/PowerShellEditorServices.r:  r;  zpses-session-r>   zpses.logz& 'z' -BundledModulesPath 'z' -LogPath 'z' -SessionDetailsPath 'z|' -FeatureFlags @() -AdditionalModules @() -HostName Hermes -HostProfileId hermes -HostVersion 1.0.0 -Stdio -LogLevel Normalz-NoLogoz
-NoProfilez-NonInteractivez-ExecutionPolicyBypassz-Commandc                &    i | ]\  }}|d k    ||S )r5  r   ).0kr   s      r   
<dictcomp>z(_spawn_powershell_es.<locals>.<dictcomp>  s3      
  
  
1L   q   r   r   )r   rE  _PSES_BUNDLE_WARNEDr   r   r   r   r   hermes_lsp_session_dirgetpidrt   r   r   r   items)r   r   rG  bundlerC  session_pathlog_pathrD  s           r   _spawn_powershell_esrT    s    &,''D|ts##F~" 		"&NN>   t7<<*,F L 7<<  "D")++"D"D"D L w||244jAAH	#l 	# 	# &	# 	#	# 	# !-	# 	# 	# 
 	
 !!,33 
  
*..|R@@FFHH 
  
  
   r   c                 ,   t           j                            d          p<t           j                            t           j                            d          d          } t           j                            | dd          }t          j        |d           |S )z?Return (and create) the dir for PSES session/log scratch files.r7  r8  r9  r  psesT)exist_ok)r   r   r   r   r   r=  makedirs)rA  ds     r   rN  rN    st    :>>-(( BGLL
3- -D 	T5&))AKD!!!!Hr   r   c                    | j                             |          }|r5|d         r-t          j                            |d                   r|d         S dS )z%User can pin a binary path in config.r   N)r   r   r   r   r   )r   r   r?  s      r   r   r   '  sS    #''	22H HQK BGNN8A;$?$? {4r   c                (    t          | |g d          S )N)zpyproject.tomlzsetup.pyz	setup.cfgzrequirements.txtPipfilezpyrightconfig.jsonr   r   r   s     r   _root_pythonr_  4  s#    hhh  r   c                0    t          | |g dddg          S )N)zpackage-lock.jsonz	bun.lockbzbun.lockzpnpm-lock.yamlz	yarn.lockzpackage.jsonztsconfig.jsonz	deno.jsonz
deno.jsonc)r   r]  r^  s     r   _root_typescriptra  <  s8    	
 	
 	
 |,   r   c                (    t          | |g d          S )N)zgo.workzgo.modzgo.sumr]  r^  s     r   _root_gorc  M  s#    '''  r   c                (    t          | |ddg          S )Nz
Cargo.tomlz
Cargo.lockr]  r^  s     r   
_root_rustre  U  s    i\<4PQQQr   c                &    t          | |dg          S )NGemfiler]  r^  s     r   
_root_rubyrh  Y  s    iYK@@@r   c                (    t          | |g d          S )N)zcompile_commands.jsonzcompile_flags.txtz.clangdr]  r^  s     r   _root_clangdrj  ]  s#    AAA  r   c                    |S Nr   r^  s     r   
_root_bashrm  e      r   c                    |S rl  r   r^  s     r   
_root_yamlrp  i  rn  r   c                (    t          | |g d          S )N)z.luarc.jsonz.luarc.jsoncz.luacheckrcz.stylua.tomlzstylua.tomlzselene.tomlz
selene.ymlr]  r^  s     r   	_root_luarr  m  s#    rrr  r   c                (    t          | |g d          S )N)zcomposer.jsonzcomposer.lockz.php-versionr]  r^  s     r   	_root_phprt  u  s    i4f4f4fgggr   c                (    t          | |g d          S )N)zdune-projectzdune-workspacez.merlinopamr]  r^  s     r   _root_ocamlrw  y  s    i4i4i4ijjjr   c                    |S rl  r   r^  s     r   _root_dockerry  }  rn  r   c                (    t          | |ddg          S )Nz.terraform.lock.hclzterraform.tfstater]  r^  s     r   _root_terraformr{    s    i5JL_4`aaar   c                (    t          | |ddg          S )Nzpubspec.yamlzanalysis_options.yamlr]  r^  s     r   
_root_dartr}    s    i^E\4]^^^r   c                (    t          | |g d          S )N)z
stack.yamlzcabal.projectzhie.yamlr]  r^  s     r   _root_haskellr    s    i4_4_4_```r   c                (    t          | |ddg          S )NzProject.tomlzManifest.tomlr]  r^  s     r   _root_juliar    s    i^_4UVVVr   c                (    t          | |g d          S )N)zdeps.ednzproject.cljzshadow-cljs.ednzbb.ednz
build.bootr]  r^  s     r   _root_clojurer    s"    9ddd  r   c                ,    t          | dg          }|p|S )Nz	flake.nixr   )r   r   r   s      r   	_root_nixr    s    [M22EIr   c                &    t          | |dg          S )Nz	build.zigr]  r^  s     r   	_root_zigr    s    i[MBBBr   c                (    t          | |ddg          S )Nzmix.exszmix.lockr]  r^  s     r   _root_elixirr    s    iY
4KLLLr   c                (    t          | |ddg          S )Nzschema.prismazprisma/schema.prismar]  r^  s     r   _root_prismar    s!    90FG  r   c                (    t          | |g d          S )N)settings.gradlezsettings.gradle.ktsbuild.gradlebuild.gradle.ktspom.xmlr]  r^  s     r   _root_kotlinr    s#    aaa  r   c                (    t          | |g d          S )N)r  r  r  z.projectz
.classpathr  r]  r^  s     r   
_root_javar    s#    ddd  r   c                &    t          | |dg          S )NzPSScriptAnalyzerSettings.psd1r]  r^  s     r   _root_powershellr    s"    
 	()  r   r   )r   r   u   Python — Microsoft pyright)r   r   r   r   r   )r   r   r   r   r   r   r   r   Tu4   JavaScript/TypeScript — typescript-language-server)r   r   r   r   r   r   r+  )r   u   Vue.js — @vue/language-serverr.  )r    u!   Svelte — svelte-language-serverr2  )r"   u"   Astro — @astrojs/language-serverr   )r$   u   Go — goplsr   )r&   u   Rust — rust-analyzerr   )r)   r.   r,   r/   r+   r0   r1   r2   u   C/C++ — clangdr   )rL   rN   rO   z.kshu   Bash — bash-language-serverr   )r;   r=   u   YAML — yaml-language-serverr   )rA   u   Lua — lua-language-serverr   )rC   u   PHP — intelephenser   )rI   rK   u   OCaml — ocaml-lspr   )rm   
Dockerfileu0   Dockerfile — dockerfile-language-server-nodejsr  )rP   rR   u   Terraform — terraform-ls)rG   u!   Dart — built-in language serverr  )r`   rb   u#   Haskell — haskell-language-server)rc   u   Julia — LanguageServer.jlr  )rW   rY   r[   r\   u   Clojure — clojure-lspr  )r]   u   Nix — nixdr  )rh   rj   u   Zig — zls)rU   c                &    t          | |dg          S )Nz
gleam.tomlr]  )fpwss     r   <lambda>r  c  s    $6r2~$N$N r   u"   Gleam — built-in language serverr   )re   rg   u   Elixir — elixir-ls)rE   u#   Prisma — built-in language serverr%  )r8   r:   u!   Kotlin — kotlin-language-serverr(  )r6   u$   Java — Eclipse JDT Language Server)rn   ro   rp   u7   PowerShell — PowerShellEditorServices (manual bundle)zList[ServerDef]SERVERSOptional[ServerDef]c                L    t           D ]}|                    |           r|c S dS )z>Return the registry entry that handles ``file_path``, or None.N)r  r   )r   srvs     r   find_server_for_filer    s8      ;;y!! 	JJJ	4r   c                V    t          |           }t                              |d          S )z:Return the LSP languageId to send in didOpen for ``path``.	plaintext)r   rr   r   )r   r   s     r   language_id_forr    s%    

%
%CsK000r   )r   r   rt   r  r  r  rr   )r   rv   r   rv   )r   rv   r   r   )r   )
r   rv   r   rv   r   r   r   r   r   r   )r   rv   r   r   r   r   )r   rv   r   r   )r   r   r   r   )r   rv   )r   r   r   rv   r   r   )r   rv   r   rv   r   r   )r   rv   r   rv   r   rv   )r   rv   r   r  )Zr   
__future__r   loggingr   r   dataclassesr   r   typingr   r   r   r	   r
   r   r   agent.lsp.workspacer   	getLoggerr   rr   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r!  r#  r&  r)  r,  r0  r3  rM  rE  rT  rN  r   r_  ra  rc  re  rh  rj  rm  rp  rr  rt  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  __all__r   r   r   <module>r     s    & # " " " " "  				  ( ( ( ( ( ( ( ( G G G G G G G G G G G G G G G G G G , , , , , ,		.	/	/
I#	8I#
HI# 
<I# 	I#
 
<I# I# LI# LI# LI# LI# EI# xI# gI# 
4I# 
6I#  
6!I#" V#I# I#$ %I#& 
6'I#( 	#)I#* 	#+I#, 
5-I#. E/I#0 E1I#2 
53I#4 E5I#6 E7I#8 
89I#: H;I#< 
8=I#> H?I#@ HAI#B gCI#D VEI# I# I#F 
8GI#H HII#J VKI#L FMI#N VOI#P gQI#R ESI#T EUI#V xWI#X VYI#Z 
7[I#\ G]I#^ 
=_I#` ]aI#b McI#d 
;eI#f {gI# I# I#h GiI#j HkI#l gmI#n IoI#p _qI#r YsI#t IuI#v EwI#x GyI#z W{I#| 
9}I#~ II#@ 
7AI#B 
8CI#D HEI#F EGI#H EII# I#J  QI# I# I# I I I IX 1 1 1 1 1 1 1 1" & & & & & & & &4 L L L L L L L L(          @   @
 
 
 
   "                  8           $
 
 
 
       (
 
 
 
      &
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
          $   $   $  - - - -`= = = =@            "   R R R RA A A A            h h h hk k k k   b b b b_ _ _ _a a a aW W W W      
C C C CM M M M         	 	 	 	$ I"!"2   IQ%%J   I'%5   I*%!7   I)% 8   I "   I!(,   IM!!&   I(3"3   I($"3   I'!1   I '*   I" #)   I!0!(F   I %$'0   I7   I+""%9   I  1   I5"&-   I"   I#!   INN 8   I"!$*   I!!9   I*"!$7   I :   I-%(M  q    D   1 1 1 1  r   