
    i                         U d Z ddlZddlmZ dZeedf         ed<   dZeeeedf         ef         df         ed<   d	hd
 eD             z  Z	dee         fdZ
defdZdS )a  Detect whether the process is being invoked by an AI coding agent.

Detection is based on environment variables that AI agents set in their shell
sessions.  ``AI_AGENT`` and ``AGENT`` are treated as a universal standard (any
tool can set it); the remaining checks are tool-specific and ordered by
prevalence.

Inspired by ``@vercel/detect-agent`` (https://github.com/vercel/vercel/tree/main/packages/detect-agent).
    N)Optional)AI_AGENTAGENT._STANDARD_AGENT_VARS)))ANTIGRAVITY_AGENTantigravity))AUGMENT_AGENTzaugment-cli))CLINE_ACTIVEcline))CLAUDE_CODE_IS_COWORKcowork))
CLAUDECODECLAUDE_CODEzclaude-code))CODEX_SANDBOXCODEX_CICODEX_THREAD_IDcodex))CURSOR_TRACE_IDcursor))CURSOR_AGENTz
cursor-cli))
GEMINI_CLIgemini))COPILOT_MODELCOPILOT_ALLOW_ALLCOPILOT_GITHUB_TOKENzgithub-copilot))GOOSE_TERMINALgoose))OPENCLAW_SHELLopenclaw))OPENCODE_CLIENTopencode))PI_CODING_AGENTpi))REPL_IDreplit))
ROO_ACTIVEzroo-code))TRAE_AI_SHELL_IDtrae_TOOL_AGENTSdevinc                     h | ]\  }}|S  r,   ).0_agents      d/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/huggingface_hub/utils/_detect_agent.py	<setcomp>r1   7   s    @@@xq%U@@@    returnc                     t           D ]W} t          j                            | d                                                                          }|r|t          v r|ndc S Xt          D ]"\  }}t          d |D                       r|c S #dS )a!  Return the name of the detected AI agent or ``None``.

    Checks environment variables in priority order and returns on the first
    match.  When ``AI_AGENT`` or ``AGENT`` is set, the value is checked against
    known agent names, unrecognized values are returned as ``"unknown"``.
     unknownc              3   T   K   | ]#}t           j                            |          V  $d S )N)osenvironget)r-   vars     r0   	<genexpr>zdetect_agent.<locals>.<genexpr>G   s0      77srz~~c""777777r2   N)	r   r8   r9   r:   striplower_KNOWN_AGENTSr)   any)r;   nameenv_vars
agent_names       r0   detect_agentrD   :   s     $ @ @z~~c2&&,,..4466 	@=0044i???	@ !-  *77h77777 		 4r2   c                  "    t                      duS )zFReturn ``True`` if the process is being invoked by an AI coding agent.N)rD   r,   r2   r0   is_agentrF   M   s    >>%%r2   )__doc__r8   typingr   r   tuplestr__annotations__r)   r?   rD   boolrF   r,   r2   r0   <module>rM      s      
			       )> eCHo = = =9eE%S/3./45   ( 	@@<@@@@hsm    &&$ & & & & & &r2   