
    ɢi                     ~   d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dlmZmZ d d	lmZmZmZmZmZ  e j<                  e      Z  ed
dg      Z!e!jE                  d      d        Z#e!jI                  d      defd       Z%e!jI                  d      defd       Z&e!jI                  d      defd       Z'e!jI                  d      defd       Z( G d de      Z)e!jI                  d       ee      fde)defd       Z*e!jI                  d      de+de,fd       Z-y)     N)	APIRouterDepends)JSONResponse)	BaseModelField)Optional)Session)get_db)
get_moduleget_mcp_tool_definitions)ValuationInputValidatorInput
ThemeInputBlueprintInputOrchestratorInputz/api/aura-core	aura_core)prefixtagsz/toolsc                  F    t               } t        | t        |       d      S )N)toolscountcontent)r   r   len)r   s    6/sites/domain-asset-master/app/routes/aura_core_api.py
list_toolsr      s    $&E%#e* EFF    z
/blueprintpayloadc                 x    t        d      } || j                               }t        |j                               S )N	blueprintr   r   
model_dumpr   to_mcp_responser   fnresults      r   api_blueprintr'   #   3    	K	 B""$%F 6 6 899r   z
/valuationc                 x    t        d      } || j                               }t        |j                               S )N	valuationr   r!   r$   s      r   api_valuationr+   *   r(   r   z/themec                 x    t        d      } || j                               }t        |j                               S )Nthemer   r!   r$   s      r   	api_themer.   1   s3    	G	B""$%F 6 6 899r   z
/validatorc                 x    t        d      } || j                               }t        |j                               S )N	validatorr   r!   r$   s      r   api_validatorr1   8   r(   r   c                   l    e Zd ZU  ee      Zeed<    edd      Zeed<    edd      Z	e
e   ed	<   y)
OrchestrateRequest)default_factoryconfigFz"Save assembled package to database)defaultdescriptionpersistNz4Domain ID for persistence (required if persist=True)	domain_id)__name__
__module____qualname__r   r   r5   __annotations__r8   boolr9   r   int r   r   r3   r3   ?   s;     %6G HFH%5YZGTZ$T?uvIx}vr   r3   z/orchestratedbc           	         t        d      }g d}|D cg c]  }|| j                  j                  vs| }}| j                  j                  | j                  j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  d|| j                  j                  r&| j                  j                  j                  dg       ng dd}|d   r@t        |d         dkD  r/|d   d   }t        |t              r|j                  dd      nd|d	<    ||      }|j                         }	| j                  r]|j                   rQ| j"                  Edd
lm}
 	  |
|| j"                  | j                  j                  |j(                        }d|	d<   ||	d<   t3        |	      S c c}w # t*        $ r2}t,        j/                  d       d|	d<   t1        |      |	d<   Y d }~Gd }~ww xY w)Norchestrator)r    r*   contextr-   r0   )primary	secondaryaccentniches )domaindepthmoodbrand_colorsskip_stagesrH   nicher   namerO   )save_package_from_orchestrator)rA   r9   domain_nameorchestrator_outputT	persisted
package_idz%Failed to persist orchestrator outputFpersist_errorr   )r   r5   stagesrJ   rK   rL   rE   rF   rG   analysisgetr   
isinstancedictr#   r8   okr9   app.services.aura_core_bridgerQ   output	Exceptionlogger	exceptionstrr   )r   rA   r%   
all_stagessrN   orch_configfirst_nicher&   responserQ   pkg_ides                r   api_orchestraterj   E   s   	N	#BLJ(KAW^^5J5J,J1KKK..''%%##~~-- 11nn++

 #?F~~?V?V'..))--h;\^K 8[%:!;a!?!(+A.>HVZ>[{vr:acG_F%%'H699):):)FP	/3!++#NN11$*MM	F %)H[!%+H\" ))K L@  	/DE$)H[!(+AH_%	/s"   GG>G 	H(HHz/run/{tool_name}	tool_namec                     t        |       }|t        ddd|  dd      S  ||      }t        |j                               S )Ni  FzTool 'z' not found)r\   error)status_coder   r   )r   r   r#   )rk   r   r%   r&   s       r   api_run_toolro   q   sQ    	I	B	z VI;k+JK
 	
 [F 6 6 899r   ).loggingfastapir   r   fastapi.responsesr   pydanticr   r   typingr   sqlalchemy.ormr	   app.databaser
   aura_core.valuation.enginer   aura_core.validator.engineaura_core.theme.engineaura_core.blueprint.engineaura_core.orchestrator.engineaura_core.module_contractr   r   aura_core.typesr   r   r   r   r   	getLoggerr:   r`   routerrY   r   postr'   r+   r.   r1   r3   rj   rb   r[   ro   r@   r   r   <module>r      sv    & * %  "  ! !  ! $ J  
		8	$	*+	? HG G
 \:> : : \:> : : X:z : : \:> : :w w ^?Fv (*/ (*W (* (*V  :C :$ : !:r   