
    im                     r   d Z ddlmZmZmZmZ ddlZddlmZm	Z	 ddl
mZmZ ddlmZ ddlmZ ddlmZmZ  ed	d
g      Z G d de      Z G d de      Zdeeeef      dz  deeef   dz  fdZej3                  d      dedeeef   fd       Zej3                  d      dedeeef   fd       ZdgZy)z:FastAPI router for dynamic configuration schema endpoints.    )AnyDictListMappingN)	APIRouterHTTPException)	BaseModelField)load_design_from_mapping)ConfigErrorbuild_schema_responseSchemaResolutionErrorz/api/configzconfig-schema)prefixtagsc                   B    e Zd ZU  edd      Zeeeef      dz  e	d<   y)SchemaRequestNzZBreadcrumb path starting from DesignConfig, e.g. [{"node":"DesignConfig","field":"graph"}])defaultdescriptionbreadcrumbs)
__name__
__module____qualname__r
   r   r   r   strr   __annotations__     H/Users/bowang/.openclaw/workspace/ChatDev/server/config_schema_router.pyr   r      s,    27x3Kgc3h'(4/ r   r   c                   ,    e Zd ZU  edd      Zeed<   y)SchemaValidateRequest.zFull YAML/JSON content)r   documentN)r   r   r   r
   r!   r   r   r   r   r   r    r       s    #+CDHcDr   r    r   returnc                 >    | sy 	 t        |       S # t        $ r Y y w xY w)Nr   )r   s    r   _resolve_schemar$      s*    $[11  s   
 	z/schemarequestc                     	 t        | j                        S # t        $ r}t        ddt	        |      i      |d }~ww xY w)N  messagestatus_codedetail)r   r   r   r   r   )r%   excs     r   
get_schemar-   %   sD    T$W%8%899  TYC4IJPSSTs    	>9>z/schema/validatec                    	 t        j                  | j                        }t        |t              st	        dddi      	 t        |       d
t        | j                        dS # t         j                  $ r}t	        ddt        |      d      |d }~ww xY w# t        $ r7}dt        |      |j                  t        | j                        d	cY d }~S d }~ww xY w)Ni  invalid_yaml)r(   errorr)   r'   r(   document_root_not_mappingF)validr0   pathschemaT)r2   r4   )yaml	safe_loadr!   	YAMLErrorr   r   
isinstancer   r   r   r3   r$   r   )r%   parsedr,   s      r   validate_documentr:   -   s    m 0 01 fg&Y@[4\]]
 ( !'"5"56 ! >> mY\]`Ya4bcillm  
XHH%g&9&9:	
 	

s5   A$ B $B7BB	C",CCCrouter)__doc__typingr   r   r   r   r5   fastapir   r   pydanticr	   r
   entity.config_loaderr   entity.configsr   utils.schema_exporterr   r   r;   r   r    r   r$   postr-   r:   __all__r   r   r   <module>rE      s    @ + +  , % 9 & N 
-.?	@I EM Egc3h&7!84!? DcNUYDY  YT T$sCx. T T  4 c3h  !2 *r   