
    i                     
   d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZ  ed      Zd	a ed
       G d d             ZddZdddedee   ded   dedz  ddf
dZdedefdZdeeef   fdZg dZy)zRegistry for thinking managers.    )	dataclass)import_module)AnyDictType)register_thinking_schema)RegistryRegistryEntryRegistryError)ThinkingManagerBasethinking_modeFT)slotsc                   L    e Zd ZU eed<   ee   ed<   ed   ed<   dZedz  ed<   y)ThinkingRegistrationname
config_clsr   manager_clsNsummary)__name__
__module____qualname__str__annotations__r   r   r        Q/Users/bowang/.openclaw/workspace/ChatDev/runtime/node/agent/thinking/registry.pyr   r      s+    
IS	+,,GS4Zr   r   returnNc                  ,    t         st        d       da y y )Nz,runtime.node.agent.thinking.builtin_thinkingT)_BUILTINS_LOADEDr   r   r   r   _ensure_builtins_loadedr       s    DE r   )r   r   r   r   r   r   c                    | t         j                         v rt        d|  d      t        | |||      }t         j	                  | |       t        | ||       y )NzThinking mode 'z' already registered)r   r   r   r   )target)r   r   )thinking_registrynamesr   r   registerr   )r   r   r   r   entrys        r   register_thinking_moder'      s[      &&((odV3GHII dz{dklEtE2Tj'Jr   c                     t                t        j                  |       }|j                         }t	        |t
              st        d|  d      |S )NzEntry 'z' is not a ThinkingRegistration)r    r#   getload
isinstancer   r   )r   r&   registrations      r   get_thinking_registrationr-   +   sI    ,006E::<Ll$89gdV+JKLLr   c                      t                t        j                         D  ci c]  \  } }| |j                          c}} S c c}} w )N)r    r#   itemsr*   )r   r&   s     r   iter_thinking_registrationsr0   4   s:    2C2I2I2KL2K;4D%**,2KLLLs   A)r#   r   r'   r-   r0   )r   N)__doc__dataclassesr   	importlibr   typingr   r   r   schema_registryr   utils.registryr	   r
   r   ,runtime.node.agent.thinking.thinking_managerr   r#   r   r   r    r   r'   r-   r0   __all__r   r   r   <module>r9      s    % ! # " " 4 A A L_-  
    K
K S	K +,	K
 4ZK 
KC ,@ MT#/C*C%D M
r   