
    i                         d Z ddlmZ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mZmZmZmZmZmZ e G d de             Ze G d	 d
e             Zy)zThinking configuration models.    )	dataclassreplace)AnyDictMapping)enum_options_from_values)SchemaLookupErrorget_thinking_schemaiter_thinking_schemas)
BaseConfigConfigErrorConfigFieldSpecChildKeyextend_pathrequire_mappingrequire_strc                   ^    e Zd ZU eed<   edeeef   dedd fd       Zd e	ddddd	
      iZ
y)ReflectionThinkingConfigreflection_promptdatapathreturnc                H    t        ||      }t        |d|      } | ||      S )Nr   )r   r   )r   r   )clsr   r   mappingprompts        I/Users/bowang/.openclaw/workspace/ChatDev/entity/configs/node/thinking.py	from_dictz"ReflectionThinkingConfig.from_dict   s*    !$-W&94@V$77    zReflection PromptstrTz-Prompt used for reflection in reflection modenamedisplay_name	type_hintrequireddescriptionN)__name__
__module____qualname__r    __annotations__classmethodr   r   r   r   FIELD_SPECS r   r   r   r      s[    8WS#X. 8 8A[ 8 8 	_$,G
Kr   r   c                        e Zd ZU eed<   dZedz  ed<   edeee	f   dedd fd       Z
 eddd	d
d       edddd
d      dZedeeee   f   fd       Zedeeef   f fd       Z xZS )ThinkingConfigtypeNconfigr   r   r   c                L   t        ||      }t        |d|      }	 t        |      }d|vs|d   t	        dt        |d            |j                  j                  |d   t        |d            } | |||      S # t        $ r }t	        d| dt        |d            |d }~ww xY w)Nr0   zunsupported thinking type ''r1   z%thinking config requires config block)r   )r0   r1   r   )r   r   r
   r	   r   r   
config_clsr   )r   r   r   r   thinking_typeschemaexc
config_objs           r   r   zThinkingConfig.from_dict*   s    !$-#GVT:	r(7F 7"gh&7&?E{SWYaGbcc&&001BUY[cId0e
jtDD ! 	r ;M?!LkZ^`fNghnqq	rs   A: :	B#BB#zThinking Moder    TzThinking mode typer!   zThinking Configurationobjectz Thinking mode configuration body)r0   r1   c                     t               j                         D ci c]  \  }}t        d|      |j                   c}}S c c}}w )Nr1   )fieldvalue)r   itemsr   r4   )r   r"   r6   s      r   child_routeszThinkingConfig.child_routesJ   sK     !6 7 = = ?
 ?f 840&2C2CC ?
 	
 
s   "Ac           	      0   t         |          }|j                  d      }|rmt               }t	        |j                               }|j                         D ci c]  \  }}||j                   }}}t        ||t        ||d            |d<   |S c c}}w )Nr0   T)preserve_label_case)enumenum_options)
superfield_specsgetr   listkeysr=   summaryr   r   )	r   specs	type_specregistrationsnamesr"   r6   descriptions	__class__s	           r   rD   zThinkingConfig.field_specsQ   s    #%IIf%	13M++-.EEREXEXEZ[EZ\T6D&..0EZL[#5e\_cdE&M
  \s   B)r'   r(   r)   r    r*   r1   r   r+   r   r   r   r   r,   dictr   r0   r>   r   rD   __classcell__)rN   s   @r   r/   r/   %   s    
I $FJ$EWS#X. E EAQ E E  (,
 "1:
K" 
T(D,<"<= 
 
 Do!56  r   r/   N)__doc__dataclassesr   r   typingr   r   r   entity.enum_optionsr   schema_registryr	   r
   r   entity.configs.baser   r   r   r   r   r   r   r   r/   r-   r   r   <module>rW      s`    $ * % % 8  ~ } } z  ( 8Z 8 8r   