Ë
    ïñþi³  ã                  ó¶   — d Z ddlmZ ddlZddlZddlmZmZ  ej                  e	«      Z
 ej                  d«      ZdZe G d„ d«      «       Zdd	„Zdd
„Zdd„Zy)a»  Tool name validation utilities according to SEP-986.

Tool names SHOULD be between 1 and 128 characters in length (inclusive).
Tool names are case-sensitive.
Allowed characters: uppercase and lowercase ASCII letters (A-Z, a-z),
digits (0-9), underscore (_), dash (-), and dot (.).
Tool names SHOULD NOT contain spaces, commas, or other special characters.

See: https://modelcontextprotocol.io/specification/2025-11-25/server/tools#tool-names
é    )ÚannotationsN)Ú	dataclassÚfieldz^[A-Za-z0-9._-]{1,128}$zPhttps://modelcontextprotocol.io/specification/2025-11-25/server/tools#tool-namesc                  ó:   — e Zd ZU dZded<    ed„ ¬«      Zded<   y)	ÚToolNameValidationResultzÆResult of tool name validation.

    Attributes:
        is_valid: Whether the tool name conforms to SEP-986 requirements.
        warnings: List of warning messages for non-conforming aspects.
    ÚboolÚis_validc                 ó   — g S ©N© r   ó    ú_/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/mcp/shared/tool_name_validation.pyú<lambda>z!ToolNameValidationResult.<lambda>%   s   € ¸€ r   )Údefault_factoryú	list[str]ÚwarningsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r   r      s   … ñð ƒNÙ±
Ô;€HˆiÔ;r   r   c                ó  — g }| st        ddg¬«      S t        | «      dkD  rt        ddt        | «      › d�g¬«      S d| v r|j                  d«       d	| v r|j                  d
«       | j                  d«      s| j	                  d«      r|j                  d«       | j                  d«      s| j	                  d«      r|j                  d«       t
        j                  | «      s™g }t        «       }| D ]@  }t        j                  d|«      rŒ||vsŒ|j                  |«       |j                  |«       ŒB |j                  ddj                  d„ |D «       «      › �«       |j                  d«       t        d|¬«      S t        d|¬«      S )zÓValidate a tool name according to the SEP-986 specification.

    Args:
        name: The tool name to validate.

    Returns:
        ToolNameValidationResult containing validation status and any warnings.
    FzTool name cannot be empty)r	   r   é€   z=Tool name exceeds maximum length of 128 characters (current: ú)ú z9Tool name contains spaces, which may cause parsing issuesú,z9Tool name contains commas, which may cause parsing issuesú-zUTool name starts or ends with a dash, which may cause parsing issues in some contextsú.zTTool name starts or ends with a dot, which may cause parsing issues in some contextsz[A-Za-z0-9._-]z'Tool name contains invalid characters: z, c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   )Úrepr)Ú.0Úcs     r   ú	<genexpr>z%validate_tool_name.<locals>.<genexpr>Y   s   è ø€ ÒKkÐXYÌDÐQRÏGÑKkùs   ‚zLAllowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)T)r   ÚlenÚappendÚ
startswithÚendswithÚTOOL_NAME_REGEXÚmatchÚsetÚreÚaddÚjoin)Únamer   Úinvalid_charsÚseenÚchars        r   Úvalidate_tool_namer2   (   su  € ð €Hñ Ü'ØØ1Ð2ô
ð 	
ô ˆ4ƒy�3‚Ü'ØØUÔVYÐZ^ÓV_ÐU`Ð`aÐbÐcô
ð 	
ð ˆd�{Ø�‰ÐSÔTà
ˆd�{Ø�‰ÐSÔTð ‡��sÔ˜tŸ}™}¨SÔ1Ø�‰ÐoÔpà‡��sÔ˜tŸ}™}¨SÔ1Ø�‰ÐnÔoô × Ñ  Ô&à#%ˆÜ›ˆØò 	ˆDÜ—8‘8Ð-¨tÕ4¸ÀTÒ9IØ×$Ñ$ TÔ*Ø—‘˜•ð	ð
 	�‰ÐAÀ$Ç)Á)ÑKkÐ]jÔKkÓBkÐAlÐmÔnØ�‰ÐfÔgä'°ÀÔJÐJä#¨T¸HÔEÐEr   c                ó  — |syt         j                  d| › d�«       |D ]  }t         j                  d|› �«       Œ t         j                  d«       t         j                  d«       t         j                  dt        › d�«       y)	z§Log warnings for non-conforming tool names.

    Args:
        name: The tool name that triggered the warnings.
        warnings: List of warning messages to log.
    Nz"Tool name validation warning for "z":z  - zHTool registration will proceed, but this may cause compatibility issues.zKConsider updating the tool name to conform to the MCP tool naming standard.zSee SEP-986 (z) for more details.)ÚloggerÚwarningÚSEP_986_URL)r.   r   r5   s      r   Úissue_tool_name_warningr7   a   sr   € ñ Øä
‡N�NÐ7¸°v¸RÐ@ÔAØò )ˆÜ�‰˜˜g˜YÐ'Õ(ð)ä
‡N�NÐ]Ô^Ü
‡N�NÐ`ÔaÜ
‡N�N�]¤; -Ð/BÐCÕDr   c                ó\   — t        | «      }t        | |j                  «       |j                  S )aC  Validate a tool name and issue warnings for non-conforming names.

    This is the primary entry point for tool name validation. It validates
    the name and logs any warnings via the logging module.

    Args:
        name: The tool name to validate.

    Returns:
        True if the name is valid, False otherwise.
    )r2   r7   r   r	   )r.   Úresults     r   Úvalidate_and_warn_tool_namer:   s   s&   € ô   Ó%€FÜ˜D &§/¡/Ô2Ø�?‰?Ðr   )r.   ÚstrÚreturnr   )r.   r;   r   r   r<   ÚNone)r.   r;   r<   r   )r   Ú
__future__r   Úloggingr+   Údataclassesr   r   Ú	getLoggerr   r4   Úcompiler(   r6   r   r2   r7   r:   r   r   r   ú<module>rC      sp   ðñ	õ #ã Û 	ß (à	ˆ×	Ñ	˜8Ó	$€ð �"—*‘*Ð7Ó8€ð a€ð ÷	<ð 	<ó ð	<ó6FórEô$r   