
    g6j                    |    d Z ddlmZ ddlmZmZ ddlmZ ddlZddlm	Z	 ddl
mZ ddlmZmZmZmZ  G d	 d
      Zy)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_idc                  8    e Zd ZdddZd	dZd
dZddZdddZy)WorkspaceAgentClassNc                    || _         y N)db)selfr   s     R/var/www/pie360backend.cl/public_html/app/backend/classes/workspace_agent_class.py__init__zWorkspaceAgentClass.__init__   s	        c                    t         j                  j                  d      }t         j                  j	                         }| d| dS )N/z/trigger)r   workspace_agent_api_baserstripworkspace_agent_idstrip)r   baseagent_ids      r   _trigger_urlz WorkspaceAgentClass._trigger_url   s?    0077<..446q
(++r   c                   t         j                  }|sddddS 	 t        j                  | j	                         d| ddd|id	
      }	 |j                         }|j                  s!dd|j                   d|j                  |ddS ddd|j                  |ddS # t        j
                  $ r}dd| ddcY d }~S d }~ww xY w# t        $ r d|j                  xs di}Y w xY w)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okr,   )r   
user_inputtokenresponseexcr-   s         r   trigger_chatz 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.B<6C<CC"!C"c                R   t               }t        |      }d }|j                         rX	 t        d |j	                         D        d      }|r3t        j                  |t        j                        j                         }d|t        j                  |dgdS # t        $ r d }Y %w xY w)Nc              3  r   K   | ]/  }|j                         s|j                         j                   1 y wr   )is_filestatst_mtime).0fs     r   	<genexpr>z2WorkspaceAgentClass.list_agents.<locals>.<genexpr>S   s$     P1AIIKQVVX&&Ps   77r   )default)tzr/   )idname	updatedAtr!   r.   )r
   r	   existsmaxiterdirr   fromtimestampr   utc	isoformatOSErrorr   workspace_agent_name)r   r   folder
updated_atlatests        r   list_agentszWorkspaceAgentClass.list_agentsL   s    #%h'
==?"P0@P !)!7!78<<!P!Z!Z!\J
   #$99!+	
 		
  "!
"s   AB B&%B&c                d    t        |      }t        |      }d|t        t        |            |ddS )Nr/   )r   rS   filesrJ   )r   storage_list_filesstrr	   )r   r   aidrX   s       r   
list_fileszWorkspaceAgentClass.list_filesf   s;    x("3'l3/0
 	
r   r   )r   zSession | NonereturnNone)r]   rZ   )r8   rZ   r]   dict[str, Any])r]   r_   )r   z
str | Noner]   r_   )__name__
__module____qualname__r   r   r<   rV   r\    r   r   r   r      s    ,
-
^
4

r   r   )__doc__
__future__r   r   r   typingr   r2   sqlalchemy.ormr   app.backend.core.configr   )app.backend.utils.agent_workspace_storager	   r
   r   rY   r   r   rc   r   r   <module>rj      s0    R " '   " , \
 \
r   