
    6j	              	          S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  Sr\" S	S
\\" SS9SS9rSS jr\R!                  5         S         SS jj5       rS rg)uD   MCP del Workspace Agent — guardar análisis JSON en files/agents/.    )annotationsN)FastMCP)TransportSecuritySettings)settings)agent_workspace_storagez/mcpzPIE360 Agent StorageTF)enable_dns_rebinding_protectionu   PIE360: única herramienta save_agent_analisis_json — guarda el análisis del informe como JSON. Word (.docx) final: subir con conector Google Drive, NO al servidor. Nunca PDF como entrega final.)namestateless_httpstreamable_http_pathtransport_securityinstructionsc                ~    [         R                  (       d  g U (       a   U [         R                  :w  a  [        S5      eg g )Nu   Secret inválido.)r   
mcp_secret
ValueError)secrets    ZC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\services\agent_workspace_mcp.py_check_secretr      s1    &H///,-- 0v    c                   [        U5        UR                  5       (       d  [        S5      e [        R                  " U5      n[        U[        5      (       d  [        S5      e[        R                  " U5      n[        R                  " X`U5      n[        UR                  5       5      US'   U$ ! [        R
                   a  n[        SU 35      UeSnAff = f)u  Guarda el análisis/redacción del informe como JSON en files/agents/{agent_id}/.

payload_json debe ser un objeto JSON válido (string). Esquema recomendado:
{
  "tipo_informe": "psicopedagogico" | "familia",
  "estudiante": {"nombre": "...", "curso": "..."},
  "docx_filename": "InformeFamilia_2E-NOMBRE APELLIDO.docx",
  "secciones": {"titulo_seccion": "texto redactado", ...},
  "notas": "opcional"
}

La respuesta incluye ok, filename, size_bytes y path si el guardado fue exitoso.
u#   payload_json no puede estar vacío.u!   payload_json no es JSON válido: Nz,payload_json debe ser un objeto JSON (dict).keys)r   stripr   jsonloadsJSONDecodeError
isinstancedictstorageresolve_agent_idsave_json_payloadlistr   )filenamepayload_jsonagent_idr   payloadexcaidresults           r   save_agent_analisis_jsonr(   &   s    ( &>??M**\* gt$$GHH

"
"8
,C&&sg>F',,.)F6NM  M<SEBCLMs   B. .CCCc                 *    [         R                  5       $ )u;   Starlette app del MCP (interno /mcp → público /api/mcp).)workspace_mcpstreamable_http_app r   r   get_mcp_asgi_appr-   I   s    ,,..r   )r   strreturnNone) r1   )
r!   r.   r"   r.   r#   r.   r   r.   r/   r   )__doc__
__future__r   r   mcp.server.fastmcpr   mcp.server.transport_securityr   app.backend.core.configr   app.backend.utilsr   r   MCP_HTTP_PATHr*   r   toolr(   r-   r,   r   r   <module>r:      s    J "  & C , @ 	&0(-	(.  	  	
 
 D/r   