
    6j^                        S r SSKJr  SSKJrJ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JrJrJrJr   " S	 S
5      rg)uL   Lógica de negocio: Workspace Agent (trigger ChatGPT + listado de archivos).    )annotations)datetimetimezone)AnyN)Session)settings)agent_folderdefault_agent_idlist_agent_filesresolve_agent_idsave_uploaded_bytesc                  l    \ rS rSrS
SS jjrSS jrSS jrSS jrS
SS jjr S
       SS jjr	S	r
g)WorkspaceAgentClass   Nc                    Xl         g Ndb)selfr   s     [C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\workspace_agent_class.py__init__WorkspaceAgentClass.__init__   s        c                    [         R                  R                  S5      n[         R                  R	                  5       nU SU S3$ )N/z/trigger)r   workspace_agent_api_baserstripworkspace_agent_idstrip)r   baseagent_ids      r   _trigger_url WorkspaceAgentClass._trigger_url   s?    0077<..446q
(++r   c                   [         R                  nU(       d  SSSS.$  [        R                  " U R	                  5       SU 3SS.SU0S	S
9n UR                  5       nUR                  (       d!  SSUR                   3SUR                  US.S.$ SSSUR                  US.S.$ ! [        R
                   a  nSSU 3SS.s S nA$ S nAff = f! [         a    SUR                  =(       d    S0n Nf = f)Nerroru7   AGENT_ACCESS_TOKEN no está configurado en el servidor.i  statusmessagehttp_statuszBearer zapplication/json)AuthorizationzContent-Typeinput<   )headersjsontimeoutz$Error al llamar al Workspace Agent: i  raw u   Workspace Agent devolvió HTTP )status_codebody)r'   r(   r)   datasuccessz Trigger ejecutado correctamente.   )r   agent_access_tokenrequestspostr"   RequestExceptionr.   
ValueErrortextokr2   )r   
user_inputtokenresponseexcr3   s         r   trigger_chat WorkspaceAgentClass.trigger_chat   s!   ++!T" 	}}!!#'.ug%6$6 z*H"	0==?D {{!<X=Q=Q<RS"(0(<(<dK	   9$,$8$8$G	
 	
+ (( 	!A#G" 	  	08==.B/D	0s/   -B# C #C
7C?C
C
!C10C1c                ^   [        5       n[        U5      nS nUR                  5       (       aX   [        S UR	                  5        5       SS9nU(       a1  [
        R                  " U[        R                  S9R                  5       nSU[        R                  US./S.$ ! [         a    S n N&f = f)Nc              3     #    U  H5  oR                  5       (       d  M  UR                  5       R                  v   M7     g 7fr   )is_filestatst_mtime).0fs     r   	<genexpr>2WorkspaceAgentClass.list_agents.<locals>.<genexpr>T   s'     P0@1IIK&QVVX&&0@s   ?!?r   )default)tzr5   )idname	updatedAtr'   r4   )r
   r	   existsmaxiterdirr   fromtimestampr   utc	isoformatOSErrorr   workspace_agent_name)r   r!   folder
updated_atlatests        r   list_agentsWorkspaceAgentClass.list_agentsM   s    #%h'
==??"P0@P !)!7!78<<!P!Z!Z!\J
   #$99!+	
 		
  "!
"s   AB B,+B,c                d    [        U5      n[        U5      nSU[        [        U5      5      US.S.$ )Nr5   )r!   r[   filesrR   )r   storage_list_filesstrr	   )r   r!   aidra   s       r   
list_filesWorkspaceAgentClass.list_filesg   s;    x("3'l3/0
 	
r   c                    U(       d  SSSS.$ U=(       d    SR                  5       nU(       d  SSSS.$ [        X4U5      nSSUS	.$ )
Nr%   u   El archivo está vacío.i  r&   r1   zfilename es obligatorio.r5   zArchivo guardado.)r'   r(   r4   )r   r   )r   filenamer4   r!   rP   results         r   upload_fileWorkspaceAgentClass.upload_files   s`     !5" 
 B%%'!5" 
 %XT:#0CVTTr   r   r   )r   zSession | NonereturnNone)rl   rc   )r>   rc   rl   dict[str, Any])rl   rn   )r!   
str | Nonerl   rn   )rh   rc   r4   bytesr!   ro   rl   rn   )__name__
__module____qualname____firstlineno__r   r"   rB   r^   re   rj   __static_attributes__ r   r   r   r      sW    ,
-
^
4

   $	UU U 	U
 
U Ur   r   )__doc__
__future__r   r   r   typingr   r8   sqlalchemy.ormr   app.backend.core.configr   )app.backend.utils.agent_workspace_storager	   r
   r   rb   r   r   r   rv   r   r   <module>r}      s2    R " '   " , rU rUr   