
    Wi                     P    d Z ddlZddlmZmZmZmZmZ  G d d      Zda	defdZ
y)u   Skill注册表    N)DictListOptionalTupleAnyc                   r    e Zd ZdZd ZdededdfdZdedee   fdZ	d	edee
eef      fd
Zdee   fdZy)SkillRegistryu,   Skill注册表 - 管理所有可用的Skillsc                      i | _         g | _        y )N)skillstriggersselfs    7/home/jang/Projects/ai-researcher/src/agent/registry.py__init__zSkillRegistry.__init__	   s    &(:<    nameskillreturnNc           
         || j                   |<   t        |d      rr|j                  D ]D  }| j                  j                  |d   ||j	                  dd      |j	                  di       f       F | j                  j                  d d       y	y	)
u   注册Skillr   patternpriorityr   match_configc                     | d   S )N    )xs    r   <lambda>z(SkillRegistry.register.<locals>.<lambda>   s
    QqT r   T)keyreverseN)r   hasattrr   appendgetsort)r   r   r   triggers       r   registerzSkillRegistry.register   s    !D 5*% >> $$I&KK
A.KK3	&  MM>4@ &r   c                 8    | j                   j                  |      S )u   获取Skill)r   r"   )r   r   s     r   r"   zSkillRegistry.get   s    {{t$$r   queryc                     | j                   D ]a  \  }}}}|j                  dd      st        j                  nd}t        j                  |||      sD|| j
                  j                  |      fc S  y)uj   
        匹配查询到对应的Skill

        Returns:
            (skill_name, skill) 或 None
        case_sensitiveTr   N)r   r"   re
IGNORECASEsearchr   )r   r'   r   
skill_namer   configflagss          r   matchzSkillRegistry.match!   sg     6:]] 	?1GZ6)/4Dd)KBMMQREyy%/!4;;??:#>>>	? r   c                 H    t        | j                  j                               S )u   列出所有Skill名称)listr   keysr   s    r   list_skillszSkillRegistry.list_skills.   s    DKK$$&''r   )__name__
__module____qualname____doc__r   strr   r%   r   r"   r   r0   r   r4   r   r   r   r	   r	      so    6=AS A A A % % %3 8E#s(O#< (T#Y (r   r	   r   c                  .    t         
t               a t         S )u&   获取全局Skill注册表（单例）)	_registryr	   r   r   r   get_registryr<   7   s     !O	r   )r8   r*   typingr   r   r   r   r   r	   r;   r<   r   r   r   <module>r>      s/     	 3 3*( *(\ 	m r   