
    sIj                        S SK r S SKJrJrJrJrJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJrJrJr  \" S
S/S9r\R7                  S5      \" \5      4S\4S jj5       r\R7                  S5      \" \5      4S\S\4S jj5       r\R?                  S5      \" S5      \" S5      \" \5      4S\S\ S\S\S\4
S jj5       r!\R?                  S5      \" \5      4S\S\S\4S jj5       r"\R7                  S5      \" \5      4S\S\4S jj5       r#\RI                  S5      \" \5      4S\S\S\4S jj5       r%\R7                  S 5      \" \5      4S\4S! jj5       r&\R?                  S 5      \" \5      4S\S\4S" jj5       r'\RQ                  S5      \" \5      4S\S\4S# jj5       r)\R7                  S$5      \" S5      \" \5      4S\S%\S\4S& jj5       r*\R?                  S'5      \" \5      4S\S\S\4S( jj5       r+\R?                  S)5      \" S5      \" S*5      \" \5      4S\S+\,\   S,\S\4S- jj5       r-\RQ                  S$5      \" SS.S/9\" \5      4S\S%\S\4S0 jj5       r.g)1    N)	APIRouterDependsFileFormQuery
UploadFilestatus)StreamingResponse)Session)AgentV2ChatClass)AgentV2Class)	api_errorapi_response)get_db)AgentV2ChatRequestAgentV2CreateFolderRequestAgentV2CreateRequestz	/agent-v2AgentV2)prefixtagsz/documents/catalogdbc                 f    [        U 5      R                  5       n[        UR                  S/ 5      S9$ Ndatar   )r   list_catalog_documentsr   getr   results     MC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\agent_v2.pylist_catalog_documents_v2r!      s+    "446FVZZ344    z%/agents/{agent_id}/document-templatesagent_idc                    [        U5      R                  U 5      nUR                  S5      S:X  a8  [        UR                  S[        R
                  5      UR                  SS5      S9$ [        UR                  S/ 5      S9$ 	Nr	   errorhttp_statusmessageErrorstatus_coder(   r   r   )r   list_document_templatesr   r   r	   HTTP_404_NOT_FOUNDr   r#   r   r   s      r    list_agent_document_templatesr/      so    "55h?Fzz(w&

=&2K2KLJJy'2
 	
 VZZ344r"   z3/agents/{agent_id}/document-templates/{document_id}. document_idfiledocument_namec                   #    UR                  5       I S h  vN n[        U5      R                  U UUUUR                  =(       d    S5      nUR	                  S5      S:X  a8  [        UR	                  S[        R                  5      UR	                  SS5      S9$ [        UR	                  SS5      UR	                  S	5      S
9$  N7f)Nzformato.docxr	   r&   r'   r(   r)   r*   OKr   r(   r   )	readr   save_document_templatefilenamer   r   r	   HTTP_400_BAD_REQUESTr   )r#   r1   r2   r3   r   r   r   s          r    upload_agent_document_templater;   (   s      D"44'F zz(w&

=&2M2MNJJy'2
 	
 

9d ;&**VBTUU s   CCB,Cz/agents/{agent_id}/chatbodyc                    ^ ^^^ TR                    Vs/ s H  o3R                  UR                  S.PM     snmU UUU4S jn[        U" 5       SSSSS.S9$ s  snf )	N)rolecontentc            	   3      >#    [        T5      n U R                  TTR                  TR                  TR                  TR
                  TS9 H  nS[        R                  " USS9 S3v   M      g 7f)N)
student_idstudent_rutr1   historyzdata: F)ensure_asciiz

)r   stream_chatr(   rA   rB   r1   jsondumps)chateventr#   r<   r   rC   s     r    event_stream#chat_agent_v2.<locals>.event_streamH   sm     #%%LL(((( & 
E 4::e%@AFF
s   A+A.ztext/event-streamzno-cachez
keep-aliveno)zCache-Control
ConnectionzX-Accel-Buffering)
media_typeheaders)rC   r>   r?   r
   )r#   r<   r   mrJ   rC   s   ```  @r    chat_agent_v2rQ   @   sa     @D||L|!1995|LG
G 
G &'&!%
  Ms   "Az/agents/{agent_id}c                     [        U5      R                  U 5      nUR                  S5      S:X  a8  [        UR                  S[        R
                  5      UR                  SS5      S9$ [        UR                  S5      S9$ r%   )r   	get_agentr   r   r	   r-   r   r.   s      r    get_agent_v2rT   _   sm    "''1Fzz(w&

=&2K2KLJJy'2
 	
 VZZ/00r"   c                 L   [        U5      R                  XR                  UR                  5      nUR	                  S5      S:X  a8  [        UR	                  S[        R                  5      UR	                  SS5      S9$ [        UR	                  SS5      UR	                  S5      S	9$ 
Nr	   r&   r'   r(   r)   r*   r5   r   r6   )	r   update_agentnamerole_instructionsr   r   r	   r:   r   r#   r<   r   r   s       r    update_agent_v2r[   j   s    "**8YY@V@VWFzz(w&

=&2M2MNJJy'2
 	
 

9d ;&**VBTUUr"   z/agentsc                 f    [        U 5      R                  5       n[        UR                  S/ 5      S9$ r   )r   list_agentsr   r   r   s     r    list_agents_v2r^   u   s+    "))+FVZZ344r"   c                 j   [        U5      R                  U R                  U R                  5      nUR	                  S5      S:X  a8  [        UR	                  S[        R                  5      UR	                  SS5      S9$ [        [        R                  UR	                  SS5      UR	                  S5      S	9$ )
Nr	   r&   r'   r(   r)   r*   r5   r   )r+   r(   r   )
r   create_agentrX   rY   r   r   r	   r:   r   HTTP_201_CREATED)r<   r   r   s      r    create_agent_v2rb   {   s    "**499d6L6LMFzz(w&

=&2M2MNJJy'2
 	
 ++

9d+ZZ r"   c                    [        U5      R                  U 5      nUR                  S5      S:X  a8  [        UR                  S[        R
                  5      UR                  SS5      S9$ [        UR                  SS5      S9$ 	Nr	   r&   r'   r(   r)   r*   r5   )r(   )r   delete_agentr   r   r	   r-   r   r.   s      r    delete_agent_v2rf      so    "**84Fzz(w&

=&2K2KLJJy'2
 	
 

9d ;<<r"   z/agents/{agent_id}/filespathc                     [        U5      R                  X5      nUR                  S5      S:X  a8  [        UR                  S[        R
                  5      UR                  SS5      S9$ [        UR                  S5      S9$ r%   )r   
list_filesr   r   r	   r-   r   r#   rg   r   r   s       r    list_agent_files_v2rk      so     "((8Fzz(w&

=&2K2KLJJy'2
 	
 VZZ/00r"   z/agents/{agent_id}/files/folderc                 L   [        U5      R                  XR                  UR                  5      nUR	                  S5      S:X  a8  [        UR	                  S[        R                  5      UR	                  SS5      S9$ [        UR	                  SS5      UR	                  S5      S	9$ rV   )	r   create_folderrX   parent_pathr   r   r	   r:   r   rZ   s       r    create_agent_folder_v2ro      s     "++HiiAQAQRFzz(w&

=&2M2MNJJy'2
 	
 

9d ;&**VBTUUr"   z/agents/{agent_id}/files/uploadz[]filesrelative_pathsc                   #     [         R                  " U5      n[        U[        5      (       d  [        [        R
                  SS9$ / n[        U5       H`  u  pgUR                  5       I S h  vN n[        U[        U5      :  a  XF   OUR                  =(       d    S5      n	UR                  X45        Mb     [        U5      R                  X5      n
U
R!                  S5      S:X  a8  [        U
R!                  S[        R
                  5      U
R!                  SS5      S9$ [#        U
R!                  SS	5      U
R!                  S
5      S9$ ! [         R                   a    [        [        R
                  SS9s $ f = f GN7f)Nz&relative_paths debe ser un JSON array.r*   archivor	   r&   r'   r(   r)   r5   r   r6   )rF   loadsJSONDecodeErrorr   r	   r:   
isinstancelist	enumerater7   strlenr9   appendr   upload_filesr   r   )r#   rp   rq   r   pathspayloadindexuploadr   relr   s              r    upload_agent_files_v2r      sE    


>* eT""33<
 	

 (*G"5)[[]"%#e*"4%,&//:VYW{# *
 "**8=Fzz(w&

=&2M2MNJJy'2
 	
 

9d ;&**VBTUU/  
33<
 	

 #s5   E=E AE=,E:-CE=,E74E=6E77E=   )
min_lengthc                    [        U5      R                  X5      nUR                  S5      S:X  a8  [        UR                  S[        R
                  5      UR                  SS5      S9$ [        UR                  SS5      S9$ rd   )r   delete_filer   r   r	   r:   r   rj   s       r    delete_agent_file_v2r      sq     "))(9Fzz(w&

=&2M2MNJJy'2
 	
 

9d ;<<r"   )/rF   fastapir   r   r   r   r   r   r	   fastapi.responsesr
   sqlalchemy.ormr   'app.backend.classes.agent_v2_chat_classr   "app.backend.classes.agent_v2_classr   app.backend.core.responsesr   r   app.backend.db.databaser   app.backend.schemas.agent_v2r   r   r   agent_v2r   r!   ry   r/   postintr;   rQ   rT   putr[   r^   rb   deleterf   rk   ro   rw   r   r    r"   r    <module>r      s    M M M / " D ; > *  
 
"#,3FO 5' 5 $5
 
56?Fv 5C 5W 5 75 
DE Cyb&/VVV V 	V
 	V FV. 
() &/
 	 *< 
"#.5fo 13 1G 1 $1 
"#MTU[_ Vc V)= V7 V $V 
i!( 5w 5 5
 
y>Efo . G   
%&18 =c =w = '= 
() b	&/11
1 	1 *1 
01 &/VV
$V 	V 2V 
01 #3it*&/	VV
V V 		V 2VD 
+, ca(&/==
= 	= -=r"   