
    !\i                         d Z ddlmZmZ ddl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  ej                  e      Z G d	 d
e      Zy)zBase agent class    )ABCabstractmethod)Session)OptionalN)AgentRunRepository)	RunStatus)datetimec                   d    e Zd ZdZdedefdZdefdZdde	d	e
e   d
e
e   fdZede	fd       Zy)	BaseAgentzBase class for all agentsdb
agent_namec                 N    || _         || _        t        |      | _        d | _        y )N)r   r   r   run_repocurrent_run)selfr   r   s      /app/app/agents/base.py__init__zBaseAgent.__init__   s$    $*2.*.    returnc                 L   | j                   j                  | j                        }|j                  | _        | j                   j                  |j                  t        j                         t        j                  d| j                   d|j                          |j                  S )zStart a new agent runzStarted  run )
r   creater   idr   update_statusr   RUNNINGloggerinfo)r   runs     r   	start_runzBaseAgent.start_run   so    mm""4??366##CFFI,=,=>ht/uSVVH=>vvr   Nsuccesserrorlogsc                 :   | j                   sy|rt        j                  nt        j                  }| j                  j                  | j                   |||       t        j                  d| j                   d| j                    d|j                          d| _         y)zFinish the current runN)r!   r"   z	Finished r   z with status )
r   r   	COMPLETEDFAILEDr   r   r   r   r   value)r   r    r!   r"   statuss        r   
finish_runzBaseAgent.finish_run   s    (/$$Y5E5E##D$4$4fEPT#Ui0d6F6F5G}U[UaUaTbcdr   c                      y)zExecute the agent's main logicN )r   s    r   r   zBaseAgent.run(   s     	r   )TNN)__name__
__module____qualname____doc__r   strr   intr   boolr   r(   r   r   r*   r   r   r   r      sd    #/7 / /3  $  hsm  RZ[^R_   T  r   r   )r.   abcr   r   sqlalchemy.ormr   typingr   logging-app.core.db.repositories.agent_run_repositoryr   app.core.db.models.agent_runr   r	   	getLoggerr+   r   r   r*   r   r   <module>r9      s;     # "   L 2 			8	$ r   