
    if	                     t    d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZ e G d de             Zy)	z Configuration for literal nodes.    )	dataclass)MappingAny)
BaseConfigConfigErrorConfigFieldSpec
EnumOptionoptional_strrequire_mappingrequire_str)MessageRolec                      e Zd ZU dZdZeed<   ej                  Z	eed<   e
deeef   dedd fd       Zdd
Z eddddd       eddddej                  j                   ej                  j                   ej"                  j                   g eej                  j                   d       eej"                  j                   d      gd      dZy	)LiteralNodeConfigz:Config describing the literal payload emitted by the node. contentroledatapathreturnc                   t        ||      }t        |d|      }|st        d| d      t        |d|      }t        j
                  }|rn|j                         j                         }|t        j
                  j                  t        j                  j                  fvrt        d| d      t	        |      } | |||      S )Nr   content cannot be empty.contentr   "role must be 'user' or 'assistant'.role)r   r   r   )
r   r   r   r
   r   USERstriplowervalue	ASSISTANT)clsr   r   mappingr   
role_valuer   
normalizeds           H/Users/bowang/.openclaw/workspace/ChatDev/entity/configs/node/literal.py	from_dictzLiteralNodeConfig.from_dict   s    !$-gy$77D69JKK!'648
#))+113J+"2"2"8"8+:O:O:U:U!VV!"F4&PUWWz*D7D99    Nc                     | j                   st        d| j                   d      | j                  t        j
                  t        j                  fvrt        d| j                   d      y )Nr   r   r   r   )r   r   r   r   r   r   r   )selfs    r$   validatezLiteralNodeConfig.validate*   s_    ||7DII;h9OPP99[--{/D/DEEBtyykQVDWXX Fr&   zLiteral ContenttextTz.Plain text emitted whenever the node executes.)namedisplay_name	type_hintrequireddescriptionzMessage RolestrFuser)r   label	assistantzNSelect whether the literal message should appear as a user or assistant entry.)r+   r,   r-   r.   defaultenumenum_optionsr/   )r   r   )r   N)__name__
__module____qualname____doc__r   r0   __annotations__r   r   r   classmethodr   r   r%   r)   r   r   r   r	   FIELD_SPECS r&   r$   r   r      s    DGS#((D+(:WS#X. : :AT : : Y #*H
  '$$**""((+*?*?*E*EF!1!1!7!7vF!6!6!<!<KP i
Kr&   r   N)r:   dataclassesr   typingr   r   entity.configs.baser   r   r   r	   r
   r   r   entity.messagesr   r   r>   r&   r$   <module>rC      s=    & !    ( 2
 2 2r&   